From: <jim...@us...> - 2013-04-24 04:19:13
|
Revision: 3186 http://sourceforge.net/p/openlcb/svn/3186 Author: jimkueneman626 Date: 2013-04-24 04:19:09 +0000 (Wed, 24 Apr 2013) Log Message: ----------- - Added a PCER queuing mechanism and updated the Traction Protocol implementation to work correctly with PCERs - Updated OlcbCommander for OSX and Win32 to handle the new PCERs for the Traction Protocol Modified Paths: -------------- trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetDefines.mpas trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetNode.mpas trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetStateMachine.mpas trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppCallbacks.mpas trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppDefines.mpas trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/dsPIC33EP_NMRABusCommandStation.hex trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/dsPIC33EP_NMRABusCommandStation.mppds trunk/prototypes/mikroPascal/dsPIC33EP_NceBridge/NMRAnetAppDefines.mpas trunk/prototypes/mikroPascal/dsPIC33EP_XpressnetBridge/NMRAnetAppDefines.mpas trunk/prototypes/mikroPascal/dsPIC33FJ_Visual TFT_BasicThrottle/Throttle_Code/mikroPascal PRO for dsPIC/NMRAnetAppDefines.mpas trunk/scratchpads/jkueneman/OlcbCommander/Compiled_Binaries/i386-darwin/OlcbCommander trunk/scratchpads/jkueneman/OlcbCommander/Compiled_Binaries/i386-win32/OlcbCommander.exe Modified: trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetDefines.mpas =================================================================== --- trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetDefines.mpas 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetDefines.mpas 2013-04-24 04:19:09 UTC (rev 3186) @@ -102,6 +102,8 @@ type TConfigMemData = array[0..MAX_CONFIG_MEM_DATA-1] of Byte; + TConfigMemDataErrorStr = string[MAX_CONFIG_MEM_ERROR_STR_LEN]; + PConfigMemDataErrorStr = ^TConfigMemDataErrorStr; TConfigMemBuffer = record // This subset of a Common Buffer to hold the information from a Configuration Memory request after it decodes the Datagram and stores the information here in clear clean way State: Byte; // State of Buffer, see CBS_xxx constants @@ -116,7 +118,7 @@ DataOffset: Byte; // Allows Offsets to reads/writes in to the DataBytes array AckReply: Byte; // Reply to send back to the requesting node, allows telling the node the reply is pending and an estimated time ErrorCode: Word; // Error Code to reply to the requestor with - ErrorString: string[MAX_CONFIG_MEM_ERROR_STR_LEN]; // Error Code String (2 byte for target Alias, 2 bytes for error code) + ErrorString: PConfigMemDataErrorStr; // Error Code String (2 byte for target Alias, 2 bytes for error code) end; PConfigMemBuffer = ^TConfigMemBuffer; @@ -193,7 +195,6 @@ CONFIG_MEM_RESULT_REJECTED_NO_RESEND_MASK = $1000; CONFIG_MEM_RESULT_REJECTED_RESEND_MASK = $2000; - CONFIG_MEM_RESULT_REJECTED_TRANSPORT_ERROR_MASK = $4000; type TDatagram = array[0..MAX_DATAGRAM_LEN-1] of Byte; @@ -394,9 +395,10 @@ Info: TNodeInfo; // Information about a Node Login: TNMRAnetNodeLoginInfo; // Login Information MsgFlags: Byte; // Message Flags for messages passed to the Node through a simple set bit (no complex reply data needed like destination Alias), see the MF_xxxx flags - MsgUserFlags: Byte; // Message Flags for user apps to define AND handle in App Callbacks + MsgFlagsUserDefined: Byte; // Message Flags for user apps to define AND handle in App Callbacks EventsProducedFlags: array[0..MAX_EVENTS_PRODUCED_BIT_BYTES-1] of Byte; // Events Produced that need to be broadcast, each event occupies 2 bits (unknown, valid, invalid) EventsConsumedFlags: array[0..MAX_EVENTS_CONSUMED_BIT_BYTES-1] of Byte; // Events Produced that need to be broadcast, each event occupies 2 bits (unknown, valid, invalid) + PCER_Flags: array[0..MAX_PCER_BIT_BYTES-1] of Byte; // If bit is set then the index of the bit maps to the Produced Event and it requires a PCER sent for that event iStateMachine: Byte; // Statemachine index for the main bus login BaseBuffers: PBaseBuffer; // Head of a possible linked list of Messages Replies to service DatagramBuffers: PDatagramBuffer; // Head of a possible linked list of Datagrams to service Modified: trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetNode.mpas =================================================================== --- trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetNode.mpas 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetNode.mpas 2013-04-24 04:19:09 UTC (rev 3186) @@ -60,6 +60,12 @@ function NMRAnetNode_NextConsumerEventFlag(Node: PNMRAnetNode; var State: Byte): Integer; function NMRAnetNode_IsAnyConsumerEventSet(Node: PNMRAnetNode): Boolean; + procedure NMRAnetNode_SetPCER_Flags(Node: PNMRAnetNode); + procedure NMRAnetNode_SetPCER_Flag(Node: PNMRAnetNode; EventIndex: Integer; Clear: Boolean); + procedure NMRAnetNode_ClearPCER_Flags(Node: PNMRAnetNode); + function NMRAnetNode_NextPCER_Flag(Node: PNMRAnetNode): Integer; + function NMRAnetNode_IsAnyPCER_Set(Node: PNMRAnetNode): Boolean; + {$IFDEF PRINT_NODE} procedure NMRAnetNode_PrintRawNodeData; procedure NMRAnetNode_PrintAllocatedNodeData; @@ -808,9 +814,9 @@ // // ***************************************************************************** function NMRAnetNode_NextConsumerEventFlag(Node: PNMRAnetNode; var State: Byte): Integer; - var - i, j: Integer; - Temp: Byte; +var + i, j: Integer; + Temp: Byte; begin Result := -1; for i := 0 to MAX_EVENTS_CONSUMED_BIT_BYTES - 1 do @@ -856,4 +862,117 @@ end end; +// ***************************************************************************** +// function NMRAnetNode_SetPCER_Flags +// Parameters: +// Returns: +// +// Description: +// +// ***************************************************************************** +procedure NMRAnetNode_SetPCER_Flags(Node: PNMRAnetNode); +var + i: Integer; +begin + for i := 0 to MAX_PCER_BIT_BYTES - 1 do + Node^.PCER_Flags[i] := $FF +end; + +// ***************************************************************************** +// function NMRAnetNode_SetPCER_Flags +// Parameters: +// Returns: +// +// Description: +// +// ***************************************************************************** +procedure NMRAnetNode_SetPCER_Flag(Node: PNMRAnetNode; EventIndex: Integer; Clear: Boolean); +var + ByteOffset, {EventOffset} NormalizedIndex: Integer; + Mask: Byte; +begin + ByteOffset := EventIndex div 8; // There are 8 PCERs supported in each Byte + Mask := $01; + Mask := Mask shl (EventIndex mod 8); + if Clear then + begin + Mask := not Mask; + Node^.PCER_Flags[ByteOffset] := Node^.PCER_Flags[ByteOffset] and Mask; + end else + Node^.PCER_Flags[ByteOffset] := Node^.PCER_Flags[ByteOffset] or Mask; +end; + +// ***************************************************************************** +// function NMRAnetNode_ClearPCER_Flags +// Parameters: +// Returns: +// +// Description: +// +// ***************************************************************************** +procedure NMRAnetNode_ClearPCER_Flags(Node: PNMRAnetNode); +var + i: Integer; +begin + for i := 0 to MAX_PCER_BIT_BYTES - 1 do + Node^.PCER_Flags[i] := $00 +end; + + +// ***************************************************************************** +// function NMRAnetNode_NextPCER_Flag +// Parameters: +// Returns: +// +// Description: +// +// ***************************************************************************** +function NMRAnetNode_NextPCER_Flag(Node: PNMRAnetNode): Integer; +var + i, j: Integer; + Temp: Byte; +begin + Result := -1; + for i := 0 to MAX_PCER_BIT_BYTES - 1 do + begin + if Node^.PCER_Flags[i] <> 0 then + begin + Temp := Node^.PCER_Flags[i]; + for j := 0 to 7 do // Find the first non zero state in the byte + begin + if Temp and $01 <> 0 then + begin + Result := (i*8) + j; + NMRAnetNode_SetPCER_Flag(Node, Result, True); // Clear the flag + Exit; + end else + Temp := Temp shr 1; + end + end + end +end; + +// ***************************************************************************** +// function NMRAnetNode_IsAnyPCER_Set +// Parameters: +// Returns: +// +// Description: +// +// ***************************************************************************** +function NMRAnetNode_IsAnyPCER_Set(Node: PNMRAnetNode): Boolean; +var + i: Integer; +begin + Result := False; + for i := 0 to MAX_PCER_BIT_BYTES - 1 do + begin + if Node^.PCER_Flags[i] <> 0 then + begin + Result := True; + Break; + end + end +end; + end. \ No newline at end of file Modified: trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetStateMachine.mpas =================================================================== --- trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetStateMachine.mpas 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/Library/NMRAnet/NMRAnetStateMachine.mpas 2013-04-24 04:19:09 UTC (rev 3186) @@ -300,7 +300,7 @@ Node^.ConfigMemBuffers := nil; Node^.State := 0; Node^.MsgFlags := 0; - Node^.MsgUserFlags := 0; + Node^.MsgFlagsUserDefined := 0; Node^.ParentAlias := 0; Node^.ChildAlias := 0; if (NodeID_HI <> 0) and (NodeID_LO <> 0) then @@ -316,6 +316,8 @@ Node^.EventsConsumedFlags[i] := 0; for i := 0 to MAX_EVENTS_PRODUCED_BIT_BYTES - 1 do Node^.EventsProducedFlags[i] := 0; + for i := 0 to MAX_PCER_BIT_BYTES - 1 do + Node^.PCER_Flags[i] := 0; Node^.iStateMachine := STATE_NMRABUS_START; Node^.ParentAlias := nil; Node^.ChildAlias := nil; @@ -582,14 +584,15 @@ DatagramBuffer^.DataBytes[DataOffset] := Hi( ConfigMemBuffer^.ErrorCode); DatagramBuffer^.DataBytes[DataOffset+1] := Lo( ConfigMemBuffer^.ErrorCode); DatagramBuffer^.iByteCount := DataOffset + 2; - if ConfigMemBuffer^.ErrorString[0] <> #0 then + + if ConfigMemBuffer^.ErrorString^[0] <> #0 then begin DataOffset := DataOffset + 2; i := 0; while i < MAX_CONFIG_MEM_ERROR_STR_LEN do begin - DatagramBuffer^.DataBytes[DataOffset + i] := ConfigMemBuffer^.ErrorString[i]; - if ConfigMemBuffer^.ErrorString[i] = #0 then + DatagramBuffer^.DataBytes[DataOffset + i] := ConfigMemBuffer^.ErrorString^[i]; + if ConfigMemBuffer^.ErrorString^[i] = #0 then begin DatagramBuffer^.iByteCount := DataOffset + i + 1; Break; @@ -702,7 +705,7 @@ end; Exit; // Don't interleave Buffer Replies... end else - if Node^.MsgUserFlags <> 0 then + if Node^.MsgFlagsUserDefined <> 0 then begin AppCallback_UserMessageFlags(Node, CANBuffer, @DataBytes); end else @@ -919,6 +922,30 @@ end; end; + if NMRABusTxBufferAvailable then + begin + if NMRAnetNode_IsAnyPCER_Set(Node) then + begin + EventIndex := NMRAnetNode_NextPCER_Flag(Node); + if EventIndex > -1 then + begin + if NMRAnetNode_TestStateFlag(Node, NS_VIRTUAL) then + begin + {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_CONSUMED_EVENT} + DataBytesPtr := PCAN_DataBytes( @SUPPORTED_VNODE_EVENTS_PRODUCED[EventIndex]); + TransmitNMRABusLayerMsg(Node, CANBuffer, MTI_PC_EVENT_REPORT, 0, 8, DataBytesPtr, False); + {$ENDIF} + end else + begin + {$IFDEF SUPPORT_AT_LEAST_ONE_CONSUMED_EVENT} + DataBytesPtr := PCAN_DataBytes( @SUPPORTED_EVENTS_PRODUCED[EventIndex]); + TransmitNMRABusLayerMsg(Node, CANBuffer, MTI_PC_EVENT_REPORT, 0, 8, DataBytesPtr, False); + {$ENDIF} + end; + end + end + end; + // See if there is a Configuration Read/Write Buffer to service ConfigMemBuffer := NMRAnetUtilities_NextConfigMemBuffer(Node); if ConfigMemBuffer <> nil then @@ -1240,8 +1267,14 @@ begin // If the node is in the Permitted state than make sure the node sends all the flag it needs to. DoDeallocate := False; - if not NMRAnetNode_IsAnyConsumerEventSet(Node) and not NMRAnetNode_IsAnyProducerEventSet(Node) and (Node^.MsgFlags = 0) and (Node^.MsgUserFlags = 0) and (Node^.BaseBuffers = nil) and (Node^.DatagramBuffers = nil) then - DoDeallocate := TransmitCANLayerMsg(Node, CANBuffer, MTI_AMR); + if not NMRAnetNode_IsAnyConsumerEventSet(Node) then + if not NMRAnetNode_IsAnyProducerEventSet(Node) then + if not NMRAnetNode_IsAnyPCER_Set(Node) then + if (Node^.MsgFlags = 0) then + if (Node^.MsgFlagsUserDefined = 0) then + if (Node^.BaseBuffers = nil) then + if (Node^.DatagramBuffers = nil) then + DoDeallocate := TransmitCANLayerMsg(Node, CANBuffer, MTI_AMR); end else DoDeallocate := True; // If it is not in the Permitted state then we are not allowed to send a AMR so just free it Modified: trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppCallbacks.mpas =================================================================== --- trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppCallbacks.mpas 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppCallbacks.mpas 2013-04-24 04:19:09 UTC (rev 3186) @@ -639,6 +639,8 @@ end else begin // Trying to use Ops Mode while CS is in Service Output Mode = Error + ConfigMemBuffer^.ErrorCode := (CONFIG_MEM_RESULT_TERMINATE[0] shl 8) or CONFIG_MEM_RESULT_TERMINATE[1]; + ConfigMemBuffer^.ErrorString := @STR_INVALID_PROGRAMMING_METHOD; end; end else begin @@ -649,18 +651,8 @@ end else begin // Trying to use Service Mode while CS is in Main Line Mode = Error - - // CREATE A FUNCTION TO LOAD AND FORMAT THE ERROR INFORMATION::::>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - ConfigMemBuffer^.ErrorCode := (CONFIG_MEM_RESULT_TERMINATE[0] shl 8) or CONFIG_MEM_RESULT_TERMINATE[1]; - i := 0; - while i < MAX_CONFIG_MEM_ERROR_STR_LEN do - begin - ConfigMemBuffer^.ErrorString[i] := STR_INVALID_PROGRAMMING_METHOD[i]; - if STR_INVALID_PROGRAMMING_METHOD[i] = #0 then - Break; - Inc(i) - end; + ConfigMemBuffer^.ErrorString := @STR_INVALID_PROGRAMMING_METHOD; end end; ByteToStr((ConfigMemBuffer^.Address and $000007FF), s1); @@ -767,7 +759,7 @@ begin Address := (Event^[4] shl 8) or Event^[5]; if ProxyData^.Address = Address then - Node^.MsgUserFlags := Node^.MsgUserFlags or MSG_SEND_DCC_ADDRESS_ALLOCATED; + Node^.MsgFlagsUserDefined := Node^.MsgFlagsUserDefined or MSG_SEND_DCC_ADDRESS_ALLOCATED; end end end; @@ -997,9 +989,8 @@ DCC_ALLOCATE_ADDRESS : begin ProxyData^.State := ProxyData^.State or PS_DCC_ADDRESS_ALLOCATED; - Node^.MsgUserFlags := Node^.MsgUserFlags or MSG_SEND_DCC_ADDRESS_ALLOCATED; // Changed State so notify the system - SetProxyNodeProducerFlags(Node, EVENT_TRAIN_DCC_IDLE_INDEX); // Changed State so notify the system - SetProxyNodeProducerFlags(Node, EVENT_TRAIN_DCC_INUSE_INDEX); // Changed State so notify the system + Node^.MsgFlagsUserDefined := Node^.MsgFlagsUserDefined or MSG_SEND_DCC_ADDRESS_ALLOCATED; // Changed State so notify the system + NMRAnetNode_SetPCER_Flag(Node, EVENT_TRAIN_DCC_INUSE_INDEX, False); // Changed State so notify the system ProxyData^.SpeedSteps := CANBuffer^.DataBytes[4]; // TO DO: NEED TO WRITE TO CONFIGURATION ProxyData^.Address := Word ((CANBuffer^.DataBytes[5] shl 8)) or CANBuffer^.DataBytes[6]; // This is in NMRA DCC format for short/long address if CommandStationRamData.EnableAutoAllocateProxy = 0 then @@ -1008,9 +999,8 @@ DCC_DEALLOCATE_ADDRESS : begin ProxyData^.State := ProxyData^.State and not PS_DCC_ADDRESS_ALLOCATED; - Node^.MsgUserFlags := Node^.MsgUserFlags and not MSG_SEND_DCC_ADDRESS_ALLOCATED; // Changed State so notify the system - SetProxyNodeProducerFlags(Node, EVENT_TRAIN_DCC_IDLE_INDEX); // Changed State so notify the system - SetProxyNodeProducerFlags(Node, EVENT_TRAIN_DCC_INUSE_INDEX); // Changed State so notify the system + Node^.MsgFlagsUserDefined := Node^.MsgFlagsUserDefined and not MSG_SEND_DCC_ADDRESS_ALLOCATED; // Changed State so notify the system + NMRAnetNode_SetPCER_Flag(Node, EVENT_TRAIN_DCC_IDLE_INDEX, False); // Changed State so notify the system NMRAnetNode_MarkForRelease(Node); end; end; @@ -1040,7 +1030,7 @@ ProxyData := ExtractTrainProxyRamData(Node); // Handle the oddball DCC Address Event that can come and go - if Node^.MsgUserFlags and MSG_SEND_DCC_ADDRESS_ALLOCATED = MSG_SEND_DCC_ADDRESS_ALLOCATED then + if Node^.MsgFlagsUserDefined and MSG_SEND_DCC_ADDRESS_ALLOCATED = MSG_SEND_DCC_ADDRESS_ALLOCATED then begin DataBytesPtr^[0] := $06; DataBytesPtr^[1] := $01; @@ -1052,7 +1042,7 @@ DataBytesPtr^[7] := $01; if TransmitNMRABusLayerMsg(Node, CANBUffer, MTI_PRODUCER_IDENTIFIED_SET, 0, 8, DataBytesPtr, False) then begin - Node^.MsgUserFlags := Node^.MsgUserFlags and not MSG_SEND_DCC_ADDRESS_ALLOCATED; + Node^.MsgFlagsUserDefined := Node^.MsgFlagsUserDefined and not MSG_SEND_DCC_ADDRESS_ALLOCATED; Result := True; end end; Modified: trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppDefines.mpas =================================================================== --- trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppDefines.mpas 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/NMRAnetAppDefines.mpas 2013-04-24 04:19:09 UTC (rev 3186) @@ -836,7 +836,7 @@ // ************************************************************************************************************************************************************** MAX_EVENTS_CONSUMED_BIT_BYTES = 1; // Set to the number of BYTES required to hold the max number of Events Consumed between Physical and Virtual MULTIPLIED by 2 (2 bits for each Event, 0=do nothing; 1=respond set; 2= respond clear; 3= respond unknown) MAX_EVENTS_PRODUCED_BIT_BYTES = 1; // Set to the number of BYTES required to hold the max number of Events Produced between Physical and Virtual MULTIPLIED by 2 (2 bits for each Event, 0=do nothing; 1=respond set; 2= respond clear; 3= respond unknown) - + MAX_PCER_BIT_BYTES = 1; // Set to the number of BYTES required to hold the max number of PCERs of Physical/Virtual Events Produced (1 bit per Produced Event, signals that the indexed Event needs a PCER set for it) // ************************************************************************************************************************************************************** // Events for Physical Node (consumed and produced) // ************************************************************************************************************************************************************** @@ -850,18 +850,12 @@ SUPPORTED_EVENTS_CONSUMED: array[0..MAX_SUPPORTED_EVENTS_CONSUMED-1] of TEventID = ( ($01, $01, $00, $00, $00, $00, $FF, $FF) // EVENT_EMERGENCY_STOP ); - SUPPORTED_EVENTS_CONSUMED_MASKS: array[0..MAX_EVENTS_CONSUMED_BIT_BYTES-1] of Byte = ( - %00000011 // One Event Supported (remember 2 bits for each Event) - ); {$ENDIF} {$IFDEF SUPPORT_AT_LEAST_ONE_PRODUCED_EVENT} SUPPORTED_EVENTS_PRODUCED: array[0..MAX_SUPPORTED_EVENTS_PRODUCED-1] of TEventID = ( ($01, $01, $00, $00, $00, $00, $04, $01), // I am a Command Station ($01, $01, $00, $00, $00, $00, $FF, $FF) // EVENT_EMERGENCY_STOP ); - SUPPORTED_EVENTS_PRODUCED_MASKS: array[0..MAX_EVENTS_PRODUCED_BIT_BYTES-1] of Byte = ( - %00001111 // Two Events Supported (remember 2 bits for each Event) - ); {$ENDIF} // ************************************************************************************************************************************************************** @@ -877,9 +871,6 @@ SUPPORTED_VNODE_EVENTS_CONSUMED: array[0..MAX_VNODE_SUPPORTED_EVENTS_CONSUMED-1] of TEventID = ( ($01, $01, $00, $00, $00, $00, $FF, $FF) // EVENT_EMERGENCY_STOP ); - SUPPORTED_VNODE_EVENTS_CONSUMED_MASKS: array[0..MAX_EVENTS_CONSUMED_BIT_BYTES-1] of Byte = ( - %00000011 // One Events Supported (remember 2 bits for each Event) - ); {$ENDIF} {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_PRODUCED_EVENT} SUPPORTED_VNODE_EVENTS_PRODUCED: array[0..MAX_VNODE_SUPPORTED_EVENTS_PRODUCED-1] of TEventID = ( @@ -887,9 +878,6 @@ ($01, $01, $00, $00, $00, $00, $03, $04), // EVENT_TRAIN_DCC_IDLE ($01, $01, $00, $00, $00, $00, $03, $05) // EVENT_TRAIN_DCC_INUSE ); - SUPPORTED_VNODE_EVENTS_PRODUCED_MASKS: array[0..MAX_EVENTS_PRODUCED_BIT_BYTES-1] of Byte = ( - %00111111 // Threee Events Supported (remember 2 bits for each Event) - ); {$ENDIF} EVENT_TRAIN_INDEX = 0; // Shortcuts to identify these special Event Modified: trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/dsPIC33EP_NMRABusCommandStation.hex =================================================================== --- trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/dsPIC33EP_NMRABusCommandStation.hex 2013-04-24 03:56:36 UTC (rev 3185) +++ trunk/prototypes/mikroPascal/dsPIC33EP256_CommandStation/dsPIC33EP_NMRABusCommandStation.hex 2013-04-24 04:19:09 UTC (rev 3186) @@ -1,15 +1,15 @@ -:10000000C878040000000000A6780000F488000012 -:100010000000000016890000388900000000000080 +:10000000DA79040000000000B8790000068A0000D8 +:1000100000000000288A00004A8A0000000000005A :1000200000000000000000000000000000000000D0 -:10003000000000002E8B0000000000000000000007 -:1000400000000000BC8B0000088C000000000000D5 -:100050000000000000000000000000005A890000BD +:1000300000000000408C00000000000000000000F4 +:1000400000000000CE8C00001A8D000000000000AF +:100050000000000000000000000000006C8A0000AA :100060000000000000000000000000000000000090 :100070000000000000000000000000000000000080 :100080000000000000000000000000000000000070 -:1000900000000000000000000A8A000000000000CC +:1000900000000000000000001C8B000000000000B9 :1000A0000000000000000000000000000000000050 -:1000B000000000002C8A000000000000000000008A +:1000B000000000003E8B0000000000000000000077 :1000C0000000000000000000000000000000000030 :1000D0000000000000000000000000000000000020 :1000E0000000000000000000000000000000000010 @@ -62,4624 +62,4660 @@ :1003D000000000000000000000000000000000001D :1003E000000000000000000000000000000000000D :1003F00000000000000000000000000000000000FD -:10F19000CF192300F0FF270020A0B7002020200077 -:10F1A00032A0B700400020004420B7004E00FA0013 -:10F1B0008A1F78008B1F78008C1F78008D1F7800C5 -:10F1C000F1F12F0020042000108860000E2EEF00C7 -:10F1D0001E2EEF00008EA900048EA800A1F90700E2 -:10F1E0000C7020001D0020001A1020005B00200081 -:10F1F000E6F7070013F90700CBF70700EEF7070063 -:10F200001420EF0010F80700C0F80700042EA90032 -:10F21000140EA900142EA900148EA900002EA90016 -:10F22000100EA900102EA900108EA90015EEA8003E -:10F2300015CEA90011EEA90011CEA900E0004700EB -:10F2400030C5B3008058780040C7B30080587800BC -:10F2500010C6B3008058780020C7B30080587800EB -:10F2600040C7B3008058780090C6B300805878003B -:10F27000E0C6B3008058780070C6B30080587800AC -:10F2800000C2B3008058780010C3B30080587800E3 -:10F29000D0C0B30080587800A0C0B3008058780078 -:10F2A00000C0B30080587800600047000005780077 -:10F2B00020F2070021A8A80011E1A800DFF607004E -:10F2C00005E1A80007A02F000E20ED00FEFF3A0088 -:10F2D00000000000000000006DFD0700E000470096 -:10F2E00030C5B3008058780040C7B300805878001C -:10F2F00010C6B3008058780020C7B300805878004B -:10F3000040C7B3008058780090C6B300805878009A -:10F31000E0C6B3008058780070C6B300805878000B -:10F3200000C2B3008058780020C3B3008058780032 -:10F33000D0C0B30080587800A0C0B30080587800D7 -:10F3400000C0B300805878006000470000057800D6 -:10F35000F8F1070080042200104078006004E1000A -:10F360000220EF0001003A0002A0EE0050028100EE -:10F370006000E1000020EF000100360000A0EE0078 -:10F38000008060000900320084FD0700B3FD070023 -:10F390006000E10001003A00D6FD07005002810044 -:10F3A0000020ED005002890087FD070091FD070055 -:10F3B00030028900010020000100E10061073200F5 -:10F3C0003A02810060FB07009FF907000000E2009D -:10F3D0005C073200A3F90700C104220080487800CE -:10F3E00001C5B3000104E10001003A0055073700F0 -:10F3F000C00422009040780080C5B300000CE100FA -:10F4000004003A001620EF003A0281004CF9070090 -:10F410004C073700C00422009040780010C4B300AD -:10F42000000CE10001003A0005003700C004220092 -:10F430009040780010C6B300000CE10004003A00D0 -:10F4400056FD0700ABFD07005FFD07003D073700D5 -:10F45000C00422009040780040C4B300000CE100DA -:10F4600001003A0005003700C004220090407800F7 -:10F4700040C6B300000CE1000F003A0047FD070052 -:10F4800059F90700E00289006000E100080032003D -:10F49000EA0281004EC90700D0028900904078003E -:10F4A0000181FB00E10F200081006100014878002C -:10F4B00045FD070023073700C00422009040780074 -:10F4C00060C4B300000CE10001003A000500370001 -:10F4D000C00422009040780060C6B300000CE10038 -:10F4E00009003A002DFD07003FF90700E0028900FE -:10F4F0006000E10002003200EA028100C2D8070089 -:10F5000031FD07000F073700C0042200904078004B -:10F51000A0C5B300000CE10001003A00050037006F -:10F52000C004220090407800A0C7B300000CE100A6 -:10F5300003003A001420EF004FF9070001073700DD -:10F54000C00422009040780060C5B300000CE100C8 -:10F5500003003A00FAFF2F0070FA0700F90637009F -:10F56000C00422009040780060C7B300000CE100A6 -:10F5700003003A001420EF0068FA0700F106370094 -:10F58000C004220090407800D0C4B300000CE10019 -:10F5900001003A0005003700C004220090407800C6 -:10F5A000D0C6B300000CE10067003A000020EF0075 -:10F5B000C002890021032000800522001009B80044 -:10F5C000E005220082004000200220000080400070 -:10F5D0000C1423001005BE003AF907006E00470026 -:10F5E000F2C4B3000258780062C6B3000258780033 -:10F5F00062C6B3000258780032C7B30002587800E0 -:10F6000052C6B3000258780042C7B30002587800CF -:10F61000A2C3B3000258780002C2B30002587800B7 -:10F620000114230094C6070061BA2B0092C607009C -:10F63000800078000020EF00805878006E004700BE -:10F64000000578003BF1070011052000800522002D -:10F650001008E100040032001100200080052200A3 -:10F6600010884000D3FF37000020EF00C00289005F -:10F6700021032000800522001009B800E0052200C7 -:10F6800082004000E0022000008040000C142300B3 -:10F690001005BE000BF907006E00470022C5B3003D -:10F6A0000258780012C4B30002587800D2C4B300E4 -:10F6B0000258780002C2B30002587800F2C4B300C6 -:10F6C0000258780062C6B3000258780062C6B300E0 -:10F6D0000258780032C7B3000258780052C6B3000F -:10F6E0000258780042C7B30002587800A2C3B300A2 -:10F6F0000258780002C2B3000258780001142300B7 -:10F700005DC6070061BA2B005BC607008000780069 -:10F710000020EF00805878006E0047000005780058 -:10F7200004F1070011052000800522001008E10007 -:10F7300004003200110020008005220010884000E3 -:10F74000CBFF37007F063700C004220090407800CE -:10F7500090C3B300000CE10088003A008011230040 -:10F760000B142300104578007AC707006E0047008D -:10F77000F2C4B3000258780052C7B30002587800B0 -:10F7800042C7B3000258780002C7B300025878009D -:10F7900052C7B3000258780042C7B300025878003D -:10F7A00002C2B30002587800D2C4B30002587800F5 -:10F7B000F2C6B3000258780042C6B300025878007F -:10F7C00052C6B30002587800A2C3B30002587800B2 -:10F7D00002C2B300025878000114230026C60700B5 -:10F7E00061BA2B0024C60700800078000020EF00DB -:10F7F000805878006E00470000057800CDF00700C3 -:10F80000901123000B1423001045780051C7070006 -:10F810006E00470002C5B3000258780022C7B3004B -:10F8200002587800F2C6B3000258780072C6B300DE -:10F830000258780022C7B3000258780012C6B300FD -:10F8400002587800D2C6B30002587800D2C6B3007E -:10F850000258780092C6B30002587800E2C6B3009E -:10F860000258780072C6B3000258780002C2B30092 -:10F8700002587800D2C4B30002587800F2C6B30030 -:10F880000258780042C6B3000258780052C6B3004E -:10F8900002587800A2C3B3000258780002C2B30035 -:10F8A0000258780001142300F3C5070061BA2B0049 -:10F8B000F1C50700800078000020EF008058780034 -:10F8C0006E004700000578009AF00700A0112300A1 -:10F8D0000B142300104578001EC707006E00470078 -:10F8E00042C4B3000258780032C4B3000258780012 -:10F8F00032C4B3000258780002C2B3000258780044 -:10F9000022C4B3000258780052C7B30002587800EE -:10F9100032C7B3000258780002C2B3000258780020 -:10F92000D2C4B30002587800F2C6B300025878007F -:10F9300042C6B3000258780052C6B300025878009D -:10F94000A2C3B3000258780002C2B3000258780084 -:10F9500001142300C8C5070061BA2B00C6C5070003 -:10F96000800078000020EF00805878006E0047008B -:10F97000000578006FF00700F2053700C004220090 -:10F980009040780010C3B300000CE1008B013A00F6 -:10F99000A01023000B14230010457800EDC60700CB -:10F9A0006E00470032C5B30002587800D2C4B300DD -:10F9B0000258780002C2B3000258780022C5B30092 -:10F9C0000258780052C6B3000258780032C7B3001C -:10F9D0000258780052C7B30002587800C2C6B3007C -:10F9E0000258780042C7B30002587800A2C3B3009F -:10F9F0000258780002C2B3000258780001142300B4 -:10FA00009DC5070061BA2B009BC5070080007800E8 -:10FA10000020EF00805878006E0047000005780055 -:10FA200044F00700B01023000B14230010457800A9 -:10FA3000C8C607006E00470032C5B3000258780000 -:10FA4000D2C4B3000258780002C2B3000258780052 -:10FA500062C5B3000258780012C6B300025878009D -:10FA6000C2C6B3000258780052C7B30002587800EB -:10FA700052C6B30002587800A2C3B30002587800FF -:10FA800002C2B30002587800011423007AC50700AF -:10FA900061BA2B0078C50700800078000020EF00D5 -:10FAA000805878006E0047000005780021F00700BC -:10FAB000C01023000B14230010457800A5C60700D2 -:10FAC0006E00470032C5B30002587800D2C4B300BC -:10FAD0000258780002C2B3000258780022C5B30071 -:10FAE0000258780052C6B3000258780012C6B3001C -:10FAF0000258780042C6B3000258780072C5B300BD -:10FB00000258780022C7B3000258780092C6B300AA -:10FB10000258780042C7B3000258780052C6B300BA -:10FB200002587800A2C3B3000258780002C2B300A2 -:10FB300002587800011423004FC5070061BA2B005A -:10FB40004DC50700800078000020EF008058780045 -:10FB50006E00470000057800F6EF07000B14230045 -:10FB60007A8881007BC607006E00470032C5B3006B -:10FB700002587800D2C4B3000258780002C2B30021 -:10FB80000258780032C4B3000258780062C5B3004E -:10FB900002587800A2C3B3000258780002C2B30032 -:10FBA000025878000114230033C5070061BA2B0006 -:10FBB00031C50700800078000020EF0080587800F1 -:10FBC0006E00470000057800DAEF070000112300FF -:10FBD0000B142300104578005EC607006E00470036 -:10FBE00032C5B30002587800D2C4B300025878007E -:10FBF00002C2B3000258780032C5B3000258780040 -:10FC000052C6B3000258780022C7B30002587800E9 -:10FC100062C7B3000258780092C6B3000258780059 -:10FC200032C6B3000258780052C6B30002587800BA -:10FC3000D2C4B30002587800F2C6B300025878006C -:10FC400042C6B3000258780052C6B300025878008A -:10FC500042C5B3000258780092C7B300025878003A -:10FC600002C7B3000258780052C6B30002587800A9 -:10FC7000A2C3B3000258780002C2B3000258780051 -:10FC800001142300FCC4070061BA2B00FAC407006A -:10FC9000800078000020EF00805878006E00470058 -:10FCA00000057800A3EF0700101123000B142300B8 -:10FCB0001045780027C607006E00470032C5B30024 -:10FCC00002587800D2C4B3000258780002C2B300D0 -:10FCD0000258780062C4B30002587800C2C6B3006C -:10FCE0000258780012C6B3000258780072C6B300FA -:10FCF0000258780032C7B30002587800A2C3B3009C -:10FD00000258780002C2B3000258780001142300A0 -:10FD1000D9C4070061BA2B00D7C40700800078005F -:10FD20000020EF00805878006E0047000005780042 -:10FD300080EF0700201123000B14230010457800EA -:10FD400004C607006E00470032C5B30002587800B1 -:10FD5000D2C4B3000258780002C2B300025878003F -:10FD600092C6B3000258780032C5B300025878003A -:10FD700042C7B3000258780012C6B3000258780098 -:10FD800042C7B3000258780052C6B3000258780048 -:10FD9000D2C4B3000258780012C6B30002587800EB -:10FDA00032C6B3000258780082C6B3000258780009 -:10FDB00092C6B30002587800E2C6B3000258780039 -:10FDC00052C6B30002587800A2C3B30002587800AC -:10FDD00002C2B3000258780001142300A6C4070031 -:10FDE00061BA2B00A4C40700800078000020EF0057 -:10FDF000805878006E004700000578004DEF07003E -:10FE0000301123000B14230010457800D1C50700E2 -:10FE10006E00470032C5B30002587800D2C4B30068 -:10FE20000258780002C2B3000258780092C6B300AC -:10FE30000258780092C4B30002587800E2C6B300BA -:10FE40000258780032C7B3000258780042C7B300A6 -:10FE50000258780022C7B3000258780052C7B30096 -:10FE60000258780032C6B3000258780042C7B30087 -:10FE70000258780092C6B30002587800F2C6B30068 -:10FE800002587800E2C6B3000258780032C4B300CA -:10FE900002587800F2C6B3000258780052C7B30087 -:10FEA00002587800E2C6B3000258780042C7B30097 -:10FEB0000258780032C5B3000258780052C6B30029 -:10FEC00002587800E2C6B3000258780042C7B30077 -:10FED00002587800A2C3B3000258780002C2B300EF -:10FEE000025878000114230063C4070061BA2B0094 -:10FEF00061C40700800078000020EF00805878007F -:10FF00006E004700000578000AEF0700401123004B -:10FF10000B142300104578008EC507006E004700C3 -:10FF200032C5B30002587800D2C4B300025878003A -:10FF300002C2B3000258780022C5B300025878000C -:10FF400052C6B3000258780012C6B30002587800B7 -:10FF500042C6B3000258780092C4B3000258780039 -:10FF6000E2C6B3000258780042C6B30002587800D7 -:10FF700052C6B3000258780082C7B3000258780016 -:10FF8000A2C3B3000258780002C2B300025878003E -:10FF90000114230038C4070061BA2B0036C40700DF -:10FFA000800078000020EF00805878006E00470045 -:10FFB00000057800DFEE070062043700C00422006D -:10FFC0009040780020C3B300000CE10031013A00FA -:10FFD0000B1423007A028100CEC307006E00470095 -:10FFE00052C3B30002587800D2C6B300025878005A -:10FFF00032C7B3000258780002C2B300025878003A +:10F3B4004F122300F0FF270020A0B70020202000D8 +:10F3C40032A0B700400020004420B7004E00FA00ED +:10F3D4008A1F78008B1F78008C1F78008D1F78009F +:10F3E400F1F12F0020042000108860000E2EEF00A1 +:10F3F4001E2EEF00008EA900048EA800A1F90700BC +:10F404000C7020001D0020001A1020005B0020005A +:10F4140064F807008DF6070049F807006CF8070048 +:10F424001420EF008EF807003EF90700042EA9000F +:10F43400140EA900142EA900148EA900002EA900F0 +:10F44400100EA900102EA900108EA90015EEA80018 +:10F4540015CEA90011EEA90011CEA900E0004700C5 +:10F4640030C5B3008058780040C7B3008058780096 +:10F4740010C6B3008058780020C7B30080587800C5 +:10F4840040C7B3008058780090C6B3008058780015 +:10F49400E0C6B3008058780070C6B3008058780086 +:10F4A40000C2B3008058780010C3B30080587800BD +:10F4B400D0C0B30080587800A0C0B3008058780052 +:10F4C40000C0B30080587800600047000005780051 +:10F4D40020F2070021A8A80011E1A800E3F6070024 +:10F4E40005E1A80007A02F000E20ED00FEFF3A0062 +:10F4F40000000000000000006DFD0700E000470070 +:10F5040030C5B3008058780040C7B30080587800F5 +:10F5140010C6B3008058780020C7B3008058780024 +:10F5240040C7B3008058780090C6B3008058780074 +:10F53400E0C6B3008058780070C6B30080587800E5 +:10F5440000C2B3008058780020C3B300805878000C +:10F55400D0C0B30080587800A0C0B30080587800B1 +:10F5640000C0B300805878006000470000057800B0 +:10F57400F8F1070000FD2100104078006004E1006C +:10F584000220EF0001003A0002A0EE0090FE80008D +:10F594006000E1000020EF000100360000A0EE0052 +:10F5A400008060000900320084FD0700B3FD0700FD +:10F5B4006000E10001003A00D6FD070090FE8000E3 +:10F5C4000020ED0090FE880087FD070091FD0700F4 +:10F5D40070FE8800010020000100E1006107320094 +:10F5E4007AFE800060FB07009FF907000000E2003C +:10F5F4005C073200A3F9070041FD21008048780030 +:10F6040001C5B3000104E10001003A0055073700C9 +:10F6140040FD21009040780080C5B300000CE1005B +:10F6240004003A001620EF007AFE80004CF907002F +:10F634004C07370040FD21009040780010C4B3000F +:10F64400000CE10001003A000500370040FD2100F4 +:10F654009040780010C6B300000CE10004003A00AA +:10F6640056FD0700ABFD07005FFD07003D073700AF +:10F6740040FD21009040780040C4B300000CE1003C +:10F6840001003A000500370040FD21009040780059 +:10F6940040C6B300000CE1000F003A0047FD07002C +:10F6A40059F9070020FF88006000E10008003200DB +:10F6B4002AFF8000E3C8070010FF8800904078000C +:10F6C4000181FB00E10F2000810061000148780006 +:10F6D40045FD07002307370040FD210090407800D6 +:10F6E40060C4B300000CE10001003A0005003700DB +:10F6F40040FD21009040780060C6B300000CE1009A +:10F7040009003A002DFD07003FF9070020FF88009B +:10F714006000E100020032002AFF8000D2C9070025 +:10F7240031FD07000F07370040FD210090407800AD +:10F73400A0C5B300000CE10001003A000500370049 +:10F7440040FD210090407800A0C7B300000CE10008 +:10F7540003003A001420EF004FF9070001073700B7 +:10F7640040FD21009040780060C5B300000CE1002A +:10F7740003003A00FAFF2F0070FA0700F906370079 +:10F7840040FD21009040780060C7B300000CE10008 +:10F7940003003A001420EF0068FA0700F10637006E +:10F7A40040FD210090407800D0C4B300000CE1007B +:10F7B40001003A000500370040FD21009040780028 +:10F7C400D0C6B300000CE10067003A000020EF004F +:10F7D40000FF88002103200000FE21001009B8006A +:10F7E40060FE2100820040002002200000804000D2 +:10F7F4008C0C23001005BE003AF907006E00470088 +:10F80400F2C4B3000258780062C6B300025878000C +:10F8140062C6B3000258780032C7B30002587800B9 +:10F8240052C6B3000258780042C7B30002587800A9 +:10F83400A2C3B3000258780002C2B3000258780091 +:10F84400810C2300E0C7070061BA2B00DEC7070064 +:10F85400800078000020EF00805878006E00470098 +:10F86400000578003BF107001105200000FE21008F +:10F874001008E100040032001100200000FE210005 +:10F8840010884000D3FF37000020EF0000FF8800FD +:10F894002103200000FE21001009B80060FE2100B1 +:10F8A40082004000E0022000008040008C0C230015 +:10F8B4001005BE000BF907006E00470022C5B30017 +:10F8C4000258780012C4B30002587800D2C4B300BE +:10F8D4000258780002C2B30002587800F2C4B300A0 +:10F8E4000258780062C6B3000258780062C6B300BA +:10F8F4000258780032C7B3000258780052C6B300E9 +:10F904000258780042C7B30002587800A2C3B3007B +:10F914000258780002C2B30002587800810C230018 +:10F92400A9C7070061BA2B00A7C7070080007800A9 +:10F934000020EF00805878006E0047000005780032 +:10F9440004F107001105200000FE21001008E10069 +:10F95400040032001100200000FE21001088400045 +:10F96400CBFF37007F06370040FD21009040780030 +:10F9740090C3B300000CE10088003A00000A2300A1 +:10F984008B0C23001045780097C707006E004700D2 +:10F99400F2C4B3000258780052C7B300025878008A +:10F9A40042C7B3000258780002C7B3000258780077 +:10F9B40052C7B3000258780042C7B3000258780017 +:10F9C40002C2B30002587800D2C4B30002587800CF +:10F9D400F2C6B3000258780042C6B3000258780059 +:10F9E40052C6B30002587800A2C3B300025878008C +:10F9F40002C2B30002587800810C230072C70700CA +:10FA040061BA2B0070C70700800078000020EF0067 +:10FA1400805878006E00470000057800CDF007009C +:10FA2400100A23008B0C2300104578006EC70700D2 +:10FA34006E00470002C5B3000258780022C7B30025 +:10FA440002587800F2C6B3000258780072C6B300B8 +:10FA54000258780022C7B3000258780012C6B300D7 +:10FA640002587800D2C6B30002587800D2C6B30058 +:10FA74000258780092C6B30002587800E2C6B30078 +:10FA84000258780072C6B3000258780002C2B3006C +:10FA940002587800D2C4B30002587800F2C6B3000A +:10FAA4000258780042C6B3000258780052C6B30028 +:10FAB40002587800A2C3B3000258780002C2B3000F +:10FAC40002587800810C23003FC7070061BA2B005D +:10FAD4003DC70700800078000020EF0080587800C0 +:10FAE4006E004700000578009AF00700200A230002 +:10FAF4008B0C2300104578003BC707006E004700BD +:10FB040042C4B3000258780032C4B30002587800EB +:10FB140032C4B3000258780002C2B300025878001D +:10FB240022C4B3000258780052C7B30002587800C8 +:10FB340032C7B3000258780002C2B30002587800FA +:10FB4400D2C4B30002587800F2C6B3000258780059 +:10FB540042C6B3000258780052C6B3000258780077 +:10FB6400A2C3B3000258780002C2B300025878005E +:10FB7400810C230014C7070061BA2B0012C70700C9 +:10FB8400800078000020EF00805878006E00470065 +:10FB9400000578006FF00700F205370040FD2100F2 +:10FBA4009040780010C3B300000CE1008B013A00D0 +:10FBB400200923008B0C2300104578000AC7070096 +:10FBC4006E00470032C5B30002587800D2C4B300B7 +:10FBD4000258780002C2B3000258780022C5B3006C +:10FBE4000258780052C6B3000258780032C7B300F6 +:10FBF4000258780052C7B30002587800C2C6B30056 +:10FC04000258780042C7B30002587800A2C3B30078 +:10FC14000258780002C2B30002587800810C230015 +:10FC2400E9C6070061BA2B00E7C607008000780028 +:10FC34000020EF00805878006E004700000578002F +:10FC440044F00700300923008B0C23001045780092 +:10FC5400E5C607006E00470032C5B30002587800BD +:10FC6400D2C4B3000258780002C2B300025878002C +:10FC740062C5B3000258780012C6B3000258780077 +:10FC8400C2C6B3000258780052C7B30002587800C5 +:10FC940052C6B30002587800A2C3B30002587800D9 +:10FCA40002C2B30002587800810C2300C6C60700C4 +:10FCB40061BA2B00C4C60700800078000020EF0062 +:10FCC400805878006E0047000005780021F0070096 +:10FCD400400923008B0C230010457800C2C607009E +:10FCE4006E00470032C5B30002587800D2C4B30096 +:10FCF4000258780002C2B3000258780022C5B3004B +:10FD04000258780052C6B3000258780012C6B300F5 +:10FD14000258780042C6B3000258780072C5B30096 +:10FD24000258780022C7B3000258780092C6B30084 +:10FD34000258780042C7B3000258780052C6B30094 +:10FD440002587800A2C3B3000258780002C2B3007C +:10FD540002587800810C23009BC6070061BA2B006F +:10FD640099C60700800078000020EF0080587800D2 +:10FD74006E00470000057800F6EF07008B0C2300A7 +:10FD8400BA84810098C607006E00470032C5B300EC +:10FD940002587800D2C4B3000258780002C2B300FB +:10FDA4000258780032C4B3000258780062C5B30028 +:10FDB40002587800A2C3B3000258780002C2B3000C +:10FDC40002587800810C23007FC6070061BA2B001B +:10FDD4007DC60700800078000020EF00805878007E +:10FDE4006E00470000057800DAEF07008009230061 +:10FDF4008B0C2300104578007BC607006E0047007B +:10FE040032C5B30002587800D2C4B3000258780057 +:10FE140002C2B3000258780032C5B3000258780019 +:10FE240052C6B3000258780022C7B30002587800C3 +:10FE340062C7B3000258780092C6B3000258780033 +:10FE440032C6B3000258780052C6B3000258780094 +:10FE5400D2C4B30002587800F2C6B3000258780046 +:10FE640042C6B3000258780052C6B3000258780064 +:10FE740042C5B3000258780092C7B3000258780014 +:10FE840002C7B3000258780052C6B3000258780083 +:10FE9400A2C3B3000258780002C2B300025878002B +:10FEA400810C230048C6070061BA2B0046C6070030 +:10FEB400800078000020EF00805878006E00470032 +:10FEC40000057800A3EF0700900923008B0C2300A2 +:10FED4001045780044C607006E00470032C5B300E1 +:10FEE40002587800D2C4B3000258780002C2B300AA +:10FEF4000258780062C4B30002587800C2C6B30046 +:10FF04000258780012C6B3000258780072C6B300D3 +:10FF14000258780032C7B30002587800A2C3B30075 +:10FF24000258780002C2B30002587800810C230002 +:10FF340025C6070061BA2B0023C60700800078009D +:10FF44000020EF00805878006E004700000578001C +:10FF540080EF0700A00923008B0C230010457800D4 +:10FF640021C607006E00470032C5B300025878006E +:10FF7400D2C4B3000258780002C2B3000258780019 +:10FF840092C6B3000258780032C5B3000258780014 +:10FF940042C7B3000258780012C6B3000258780072 +:10FFA40042C7B3000258780052C6B3000258780022 +:10FFB400D2C4B3000258780012C6B30002587800C5 +:10FFC40032C6B3000258780082C6B30002587800E3 +:10FFD40092C6B30002587800E2C6B3000258780013 +:10FFE40052C6B30002587800A2C3B3000258780086 +:0CFFF40002C2B30002587800810C230008 :020000040001F9 -:1000000032C5B3000258780012C6B3000258780017 -:10001000D2C6B3000258780002C7B3000258780075 -:10002000C2C6B3000258780052C6B3000258780026 -:1000300002C2B3000258780032C4B30002587800FC -:10004000F2C6B3000258780052C7B30002587800D5 -:10005000E2C6B3000258780042C7B30002587800E5 -:1000600002C2B3000258780042C7B30002587800B9 -:10007000F2C6B3000258780002C2B30002587800FA -:1000800042C5B3000258780022C7B3000258780076 -:1000900092C6B3000258780072C6B30002587800C6 -:1000A00072C6B3000258780052C6B30002587800F6 -:1000B00022C7B30002587800A2C3B30002587800E8 -:1000C00002C2B3000258780001142300EAC30700FB -:1000D00061BA2B00E8C30700800078000020EF0021 -:1000E000805878006E0047000005780091EE070008 -:1000F0000B142300BA02810086C307006E0047007C -:10010000F2C4B3000258780062C7B3000258780006 -:1001100052C6B3000258780022C7B30002587800D4 -:1001200002C2B3000258780032C4B300025878000B -:1001300052C7B3000258780022C7B30002587800B3 -:1001400022C7B3000258780052C6B30002587800A4 -:10015000E2C6B3000258780042C7B30002587800E4 -:1001600002C2B3000258780032C4B30002587800CB -:10017000F2C6B3000258780052C7B30002587800A4 -:10018000E2C6B3000258780042C7B30002587800B4 -:1001900052C6B3000258780022C7B3000258780054 -:1001A000A2C3B3000258780002C2B300025878001C -:1001B00001142300B0C3070061BA2B00AEC30700CF -:1001C000800078000020EF00805878006E00470023 -:1001D0000005780057EE0700900281008000EB00D8 -:1001E000F9E6070082EB210053F0230030D007002E -:1001F0003234230033B523002DD007000C14230024 -:100200000005BE0068F607006E004700D2C4B300C8 -:100210000258780052C6B3000258780012C6B300E4 -:100220000258780032C7B3000258780052C7B300B2 -:100230000258780022C7B3000258780052C6B300B3 -:100240000258780042C6B3000258780002C2B300D8 -:100250000258780032C4B3000258780052C7B30085 -:100260000258780022C7B3000258780022C7B300B2 -:100270000258780052C6B30002587800E2C6B300B4 -:100280000258780042C7B30002587800A2C3B300F6 -:100290000258780002C2B30002587800011423000B -:1002A00075C3070012C4B3000258780061BA2B006E -:1002B00071C30700800078000020EF0080587800AC -:1002C0006E004700000578001AEE07000B142300AB -:1002D000EA88810087FA07006E00470092C4B300E5 -:1002E0000258780002C2B30002587800C2C4B300BA -:1002F0000258780052C6B3000258780062C7B300B3 -:100300000258780052C6B30002587800C2C6B30043 -:1003100002587800A2C3B3000258780002C2B300AA -:10032000025878000114230053C3070061BA2B0060 -:1003300051C30700800078000020EF00805878004B -:100340006E00470000057800FAED07000B1423004B -:10035000FA88810067FA07006E00470092C4B30074 -:100360000258780002C2B3000258780042C5B300B8 -:100370000258780092C6B30002587800D2C6B30083 -:100380000258780052C6B30002587800A2C3B300E6 -:100390000258780002C2B30002587800011423000A -:1003A00035C3070061BA2B0033C307008000780013 -:1003B0000020EF00805878006E00470000057800AC -:1003C000DCED0700001223000B1423001085FB0056 -:1003D00048FA07006E004700F2C4B30002587800E4 -:1003E00062C7B3000258780052C6B30002587800C2 -:1003F00022C7B30002587800C2C6B3000258780082 -:10040000F2C6B3000258780012C6B3000258780052 -:1004100042C6B3000258780042C4B30002587800C4 -:1004200052C6B3000258780042C7B30002587800A1 -:1004300052C6B3000258780032C6B30002587800A2 -:1004400042C7B3000258780052C6B3000258780081 -:1004500042C6B30002587800A2C3B3000258780025 -:1004600002C2B300025878000114230002C307003F -:1004700061BA2B0000C30700800078000020EF0065 -:10048000805878006E00470000057800A9ED07004D -:100490002C033700C00422009040780030C3B30022 -:1004A000000CE10001003A0026033700C0042200DE -:1004B0009040780040C3B300000CE10001003A0016 -:1004C00020033700C00422009040780050C3B300DE -:1004D000000CE100AD013A000B1423000A18800063 -:1004E0008CC207006E00470012C4B30002587800A7 -:1004F00042C4B3000258780032C4B30002587800F6 -:1005000002C3B30002587800A2C3B30002587800B7 -:1005100002C2B3000258780001142300D6C20700BB -:1005200061BA2B00D4C20700800078000020EF00E1 -:10053000805878006E004700000578007DED0700C8 -:100540000B1423001A18800072C207006E004700C7 -:1005500012C4B3000258780042C4B30002587800B5 -:1005600032C4B3000258780012C3B30002587800B6 -:10057000A2C3B3000258780002C2B3000258780048 -:1005800001142300BCC2070061BA2B00BAC20700E5 -:10059000800078000020EF00805878006E0047004F -:1005A0000005780063ED07000B1423002A18800073 -:1005B00058C207006E00470012C4B300025878000A -:1005C00042C4B3000258780032C4B3000258780025 -:1005D00022C3B30002587800A2C3B30002587800C7 -:1005E00002C2B3000258780001142300A2C207001F -:1005F00061BA2B00A0C20700800078000020EF0045 -:10060000805878006E0047000005780049ED07002B -:100610000B1423003A1880003EC207006E0047000A -:1006200012C4B3000258780042C4B30002587800E4 -:1006300032C4B3000258780032C3B30002587800C5 -:10064000A2C3B3000258780002C2B3000258780077 -:100650000114230088C2070061BA2B0086C207007C -:10066000800078000020EF00805878006E0047007E -:10067000000578002FED07000B1423004A188000B6 -:1006800024C207006E00470012C4B300025878006D -:1006900042C4B3000258780032C4B3000258780054 -:1006A00042C3B30002587800A2C3B30002587800D6 -:1006B00002C2B30002587800011423006EC2070082 -:1006C00061BA2B006CC20700800078000020EF00A8 -:1006D000805878006E0047000005780015ED07008F -:1006E0000B1423005A1880000AC207006E0047004E -:1006F00012C4B3000258780042C4B3000258780014 -:1007000032C4B3000258780052C3B30002587800D4 -:10071000A2C3B3000258780002C2B30002587800A6 -:100720000114230054C2070061BA2B0052C2070013 -:10073000800078000020EF00805878006E004700AD -:1007400000057800FBEC07000B1423006A188000FA -:10075000F0C107006E00470012C4B30002587800D1 -:1007600042C4B3000258780032C4B3000258780083 -:1007700062C3B30002587800A2C3B30002587800E5 -:1007800002C2B30002587800011423003AC20700E5 -:1007900061BA2B0038C20700800078000020EF000B -:1007A000805878006E00470000057800E1EC0700F3 -:1007B0000B1423007A188000D6C107006E00470092 -:1007C00012C4B3000258780042C4B3000258780043 -:1007D00032C4B3000258780072C3B30002587800E4 -:1007E000A2C3B3000258780002C2B30002587800D6 -:1007F0000114230020C2070061BA2B001EC20700AB -:10080000800078000020EF00805878006E004700DC -:1008100000057800C7EC07000B1423008A1880003D -:10082000BCC107006E00470012C4B3000258780034 -:1008300042C4B3000258780032C4B30002587800B2 -:1008400082C3B30002587800A2C3B30002587800F4 -:1008500002C2B300025878000114230006C2070048 -:1008600061BA2B0004C20700800078000020EF006E -:10087000805878006E00470000057800ADEC070056 -:100880000B1423009A188000A2C107006E004700D5 -:1008900012C4B3000258780042C4B3000258780072 -:1008A00032C4B3000258780092C3B30002587800F3 -:1008B000A2C3B3000258780002C2B3000258780005 -:1008C00001142300ECC1070061BA2B00EAC1070044 -:1008D000800078000020EF00805878006E0047000C -:1008E0000005780093EC07000B142300AA18800081 -:1008F00088C107006E00470012C4B3000258780098 -:1009000042C4B3000258780032C4B30002587800E1 -:1009100012C3B3000258780002C3B3000258780033 -:10092000A2C3B3000258780002C2B3000258780094 -:1009300001142300D0C1070061BA2B00CEC107000B -:10094000800078000020EF00805878006E0047009B -:100950000005780077EC07000B142300BA1880001C -:100960006CC107006E00470012C4B3000258780043 -:1009700042C4B3000258780032C4B3000258780071 -:1009800012C3B3000258780012C3B30002587800B3 -:10099000A2C3B3000258780002C2B3000258780024 -:1009A00001142300B4C1070061BA2B00B2C10700D3 -:1009B000800078000020EF00805878006E0047002B -:1009C000000578005BEC07000B142300CA188000B8 -:1009D00050C107006E00470012C4B30002587800EF -:1009E00042C4B3000258780032C4B3000258780001 -:1009F00012C3B3000258780022C3B3000258780033 -:100A0000A2C3B3000258780002C2B30002587800B3 -:100A10000114230098C1070061BA2B0096C107009A -:100A2000800078000020EF00805878006E004700BA -:100A3000000578003FEC07000B142300DA18800053 -:100A400034C107006E00470012C4B300025878009A -:100A500042C4B3000258780032C4B3000258780090 -:100A600012C3B3000258780032C3B30002587800B2 -:100A7000A2C3B3000258780002C2B3000258780043 -:100A8000011423007CC1070061BA2B007AC1070062 -:100A9000800078000020EF00805878006E0047004A -:100AA0000005780023EC07000B142300EA188000EF -:100AB00018C107006E00470012C4B3000258780046 -:100AC00042C4B3000258780032C4B3000258780020 -:100AD00012C3B3000258780042C3B3000258780032 -:100AE000A2C3B3000258780002C2B30002587800D3 -:100AF0000114230060C1070061BA2B005EC107002A -:100B0000800078000020EF00805878006E004700D9 -:100B10000005780007EC07000B142300FA1880008A -:100B2000FCC007006E00470012C4B30002587800F2 -:100B300042C4B3000258780032C4B30002587800AF -:100B400012C3B3000258780052C3B30002587800B1 -:100B5000A2C3B3000258780002C2B3000258780062 -:100B60000114230044C1070061BA2B0042C10700F1 -:100B7000800078000020EF00805878006E00470069 -:100B800000057800EBEB07006E013700C00422007F -:100B90009040780060C3B300000CE10069013A00A6 -:100BA0000B1423000A198000A3E007006E00470021 -:100BB00012C4B3000258780042C4B300025878004F -:100BC00012C3B3000258780032C4B3000258780050 -:100BD000F2C4B30002587800E2C4B30002587800AF -:100BE00012C3B30002587800A2C3B30002587800C1 -:100BF00002C2B3000258780002C3B3000258780062 -:100C000082C7B30002587800011423001AC10700FC -:100C100061BA2B0018C10700800078000020EF00A7 -:100C2000805878006E00470000057800C1EB07008F -:100C30000B1423001A1980007FE007006E004700A4 -:100C400012C4B3000258780042C4B30002587800BE -:100C500012C3B3000258780032C4B30002587800BF -:100C6000F2C4B30002587800E2C4B300025878001E -:100C700022C3B30002587800A2C3B3000258780020 -:100C800002C2B3000258780002C3B30002587800D1 -:100C900082C7B3000258780001142300F6C0070091 -:100CA00061BA2B00F4C00700800078000020EF003C -:100CB000805878006E004700000578009DEB070023 -:100CC0000B1423002A1980005BE007006E00470028 -:100CD00012C4B3000258780042C4B300025878002E -:100CE00012C3B3000258780032C4B300025878002F -:100CF000F2C4B30002587800E2C4B300025878008E -:100D000032C3B30002587800A2C3B300025878007F -:100D100002C2B3000258780002C3B3000258780040 -:100D200082C7B3000258780001142300D2C0070024 -:100D300061BA2B00D0C00700800078000020EF00CF -:100D4000805878006E0047000005780079EB0700B6 -:100D50000B1423009A19800037E007006E0047004B -:100D600012C4B3000258780042C4B300025878009D -:100D700012C3B3000258780032C4B300025878009E -:100D8000F2C4B30002587800E2C4B30002587800FD -:100D900042C3B30002587800A2C3B30002587800DF -:100DA00002C2B3000258780002C3B30002587800B0 -:100DB00082C7B3000258780001142300AEC00700B8 -:100DC00061BA2B00ACC00700800078000020EF0063 -:100DD000805878006E0047000005780055EB07004A -:100DE0000B1423003A19800013E007006E0047003F -:100DF00012C4B3000258780042C4B300025878000D -:100E000012C3B3000258780032C4B300025878000D -:100E100082C4B3000258780032C5B300025878008B -:100E200012C3B3000258780022C3B30002587800FE -:100E300032C3B30002587800A2C3B300025878004E -:100E400002C2B3000258780002C3B300025878000F -:100E500082C7B300025878000114230086C007003F -:100E600061BA2B0084C00700800078000020EF00EA -:100E7000805878006E004700000578002DEB0700D1 -:100E80000B1423004A198000EBDF07006E004700B7 -:100E900012C4B3000258780042C4B300025878006C -:100EA00012C3B3000258780032C4B300025878006D -:100EB00082C4B3000258780032C5B30002587800EB -:100EC00002C3B30002587800A2C3B30002587800EE -:100ED00002C2B3000258780002C3B300025878007F -:100EE00082C7B300025878000114230062C00700D3 -:100EF00061BA2B0060C00700800078000020EF007E -:100F0000805878006E0047000005780009EB070064 -:100F10000B1423007A198000C7DF07006E0047001A -:100F200012C4B3000258780042C4B30002587800DB -:100F300012C3B3000258780032C4B30002587800DC -:100F400032C5B3000258780032C5B30002587800A9 -:100F500082C4B30002587800A2C3B30002587800DC -:100F600002C2B3000258780002C3B30002587800EE -:100F700082C7B30002587800011423003EC0070066 -:100F800061BA2B003CC00700800078000020EF0011 -:100F9000805878006E00470000057800E5EA0700F9 -:100FA0000B1423008A198000A3DF07006E0047009E -:100FB00012C4B3000258780042C4B300025878004B -:100FC00012C3B3000258780032C4B300025878004C -:100FD00032C5B3000258780032C5B3000258780019 -:100FE000C2C4B30002587800A2C3B300025878000C -:100FF00002C2B3000258780002C3B300025878005E -:1010000082C7B30002587800011423001AC00700F9 -:1010100061BA2B0018C00700800078000020EF00A4 -:10102000805878006E00470000057800C1EA07008C -:101030000B1423007A7080007FDF07006E004700EA -:1010400012C4B30002587800E2C4B300025878001A -:1010500032C5B3000258780052C4B3000258780079 -:10106000C2C4B3000258780012C4B300025878001A -:10107000A2C3B3000258780002C2B300025878003D -:1010800002C3B3000258780082C7B3000258780048 -:1010900001142300F8BF070061BA2B00F6BF070058 -:1010A000800078000020EF00805878006E00470034 -:1010B000000578009FEA07000B142300FA708000F7 -:1010C0005DDF07006E00470012C4B30002587800CD -:1010D000E2C4B3000258780032C5B3000258780069 -:1010E00052C4B30002587800C2C4B300025878005A -:1010F00022C4B30002587800A2C3B300025878009B -:1011000002C2B3000258780002C3B300025878004C -:1011100082C7B3000258780001142300D6BF07002D -:1011200061BA2B00D4BF0700800078000020EF00D8 -:10113000805878006E004700000578007DEA0700BF -:10114000000037002468AF0020003700E0004700AF -:1011500030C4B3008058780010C4B30080587800C1 -:10116000E0C4B3008058780000C2B3008058780013 -:1011700040C4B3008058780090C6B300805878000F -:1011800030C7B3008058780010C6B300805878008C -:1011900020C6B30080587800C0C6B30080587800DD -:1011A00050C6B3008058780040C6B300805878001D -:1011B00010C2B300805878000020EF0080587800FB -:1011C00060004700000578005AEA070061F8370020 -:1011D000CF0678004F067800CF0578004F057800DD -:0811E0000080FA00FFFF370058 +:10000000F2C5070061BA2B00F0C507008000780038 +:100010000020EF00805878006E004700000578004F +:100020004DEF0700B00923008B0C2300104578002A +:10003000EEC507006E00470032C5B30002587800D5 +:10004000D2C4B3000258780002C2B300025878004C +:1000500092C6B3000258780092C4B30002587800E8 +:10006000E2C6B3000258780032C7B30002587800E5 +:1000700042C7B3000258780022C7B3000258780084 +:1000800052C7B3000258780032C6B3000258780055 +:1000900042C7B3000258780092C6B30002587800F5 +:1000A000F2C6B30002587800E2C6B30002587800E6 +:1000B00032C4B30002587800F2C6B3000258780088 +:1000C00052C7B30002587800E2C6B3000258780065 +:1000D00042C7B3000258780032C5B3000258780016 +:1000E00052C6B30002587800E2C6B3000258780046 +:1000F00042C7B30002587800A2C3B3000258780088 +:1001000002C2B30002587800810C2300AFC507007B +:1001100061BA2B00ADC50700800078000020EF0019 +:10012000805878006E004700000578000AEF07004D +:10013000C00923008B0C230010457800ABC50700D5 +:100140006E00470032C5B30002587800D2C4B30035 +:100150000258780002C2B3000258780022C5B300EA +:100160000258780052C6B3000258780012C6B30095 +:100170000258780042C6B3000258780092C4B30017 +:1001800002587800E2C6B3000258780042C6B300B5 +:100190000258780052C6B3000258780082C7B300F4 +:1001A00002587800A2C3B3000258780002C2B3001C +:1001B00002587800810C230084C5070061BA2B0027 +:1001C00082C50700800078000020EF00805878008A +:1001D0006E00470000057800DFEE0700620437007C +:1001E00040FD21009040780020C3B300000CE100E6 +:1001F00031013A008B0C2300BAFE8000ABC407002B +:100200006E00470052C3B30002587800D2C6B30054 +:100210000258780032C7B3000258780002C2B30017 +:100220000258780032C5B3000258780012C6B300F5 +:1002300002587800D2C6B3000258780002C7B30053 +:1002400002587800C2C6B3000258780052C6B30004 +:100250000258780002C2B3000258780032C4B300DA +:1002600002587800F2C6B3000258780052C7B300B3 +:1002700002587800E2C6B3000258780042C7B300C3 +:100280000258780002C2B3000258780042C7B30097 +:1002900002587800F2C6B3000258780002C2B300D8 +:1002A0000258780042C5B3000258780022C7B30054 +:1002B0000258780092C6B3000258780072C6B300A4 +:1002C0000258780072C6B3000258780052C6B300D4 +:1002D0000258780022C7B30002587800A2C3B300C6 +:1002E0000258780002C2B30002587800810C230043 +:1002F00036C5070061BA2B0034C5070080007800BE +:100300000020EF00805878006E004700000578005C +:1003100091EE07008B0C2300FAFE800063C40700F7 +:100320006E004700F2C4B3000258780062C7B30001 +:100330000258780052C6B3000258780022C7B300B2 +:100340000258780002C2B3000258780032C4B300E9 +:100350000258780052C7B3000258780022C7B30091 +:100360000258780022C7B3000258780052C6B30082 +:1003700002587800E2C6B3000258780042C7B300C2 +:100380000258780002C2B3000258780032C4B300A9 +:1003900002587800F2C6B3000258780052C7B30082 +:1003A00002587800E2C6B3000258780042C7B30092 +:1003B0000258780052C6B3000258780022C7B30032 +:1003C00002587800A2C3B3000258780002C2B300FA +:1003D00002587800810C2300FCC4070061BA2B008E +:1003E000FAC40700800078000020EF0080587800F1 +:1003F0006E0047000005780057EE0700D0FE800031 +:100400008000EB0091E6070082EB210053F023000F +:10041000E5D107003234230033B52300E2D10700D1 +:100420008C0C23000005BE0068F607006E00470034 +:10043000D2C4B3000258780052C6B3000258780004 +:1004400012C6B3000258780032C7B30002587800D1 +:1004500052C7B3000258780022C7B3000258780090 +:1004600052C6B3000258780042C6B3000258780062 +:1004700002C2B3000258780032C4B30002587800B8 +:1004800052C7B3000258780022C7B3000258780060 +:1004900022C7B3000258780052C6B3000258780051 +:1004A000E2C6B3000258780042C7B30002587... [truncated message content] |