unit NMRAnetAppDefines; // ****************************************************************************** // // * Copyright: // (c) Mustangpeak Software 2012. // // The contents of this file are subject to the GNU GPL v3 licence/ you maynot use // this file except in compliance with the License. You may obtain a copy of the // License at http://www.gnu.org/licenses/gpl.html // // * Revision History: // 2012-02-01: Created // // * Description: // Implements program specific information such as Consumer/Producer EventIDs, // Buffer allocation sizes, CDI and ACDI Information, Protocol Support IDs, vNode // counts, etc. // // AppDefines for the Mustangpeak Command Station // // ****************************************************************************** uses NMRAnetDefinesShared; {$I Options.inc} // ************************************************************************************************************************************************************** // Virtual Nodes // ************************************************************************************************************************************************************** const MAX_NODE_COUNT = 82; // The number of Physical and vNodes this physical node support. Note that these nodes are defined as the Node ID defined + 1 up to VIRTUAL_NODE_COUNT past that // If the lower bits of this node are $0300 then the first Virtual Node is $0301 and the last is $0309 if the VIRTUAL_NODE_COUNT = 9 // It also MUST fall within the lower 3 byte boundry (this is due to the way I have defined HI/LO as 3 byte) so the max virtual nodes is 4095 with a base // physical node starting at $0000; // ************************************************************************************************************************************************************** // Buffer Pool Allocation // ************************************************************************************************************************************************************** const MAX_BASE_BUFFER_POOL = 2*MAX_NODE_COUNT; // Number of Base Buffers to allocate for Messages , JMRI Interleaves all the nodes so we need a Buffer for every Node <;^( MAX_DATAGRAM_BUFFER_POOL = 10; // Number of Datagram Buffers to allocate for Messages MAX_CONFIG_MEM_BUFFER_POOL = 2; // Number of Configuration Memory Access buffers to allocate MAX_DATA_BUFFER_POOL = 10; // Number of Data Buffers to allocate for Messages that need to transfer the 8 CAN bytes // ************************************************************************************************************************************************************** // Memory Configuration Protocol Supported Options // ************************************************************************************************************************************************************** const MEMORY_CONFIG_OPTIONS: TMemConfigurationOptions = ( MCO_UNALIGNED_READS or MCO_ACDI_MFG_READS or MCO_ACDI_USER_READS or MCO_ACDI_USER_WRITES or MCO_UNALIGNED_WRITES, // MemoryConfigOptions MCWL_ONE_BYTE or MCWL_TWO_BYTE or MCWL_FOUR_BYTE or MCWL_64_BYTE or MCWL_ARBITRARY_BYTE, // MemoryConfigWriteLength MSI_CDI, // MemoryConfigHighestSpace MSI_ACDI_USER // MemoryConfigLowestSpace ); const MEMORY_CONFIG_OPTIONS_VNODE: TMemConfigurationOptions = ( MCO_UNALIGNED_READS or MCO_ACDI_MFG_READS or MCO_ACDI_USER_READS or MCO_ACDI_USER_WRITES or MCO_UNALIGNED_WRITES, // MemoryConfigOptions MCWL_ONE_BYTE or MCWL_TWO_BYTE or MCWL_FOUR_BYTE or MCWL_64_BYTE or MCWL_ARBITRARY_BYTE, // MemoryConfigWriteLength MSI_CDI, // MemoryConfigHighestSpace MSI_FSI // MemoryConfigLowestSpace ); // ************************************************************************************************************************************************************** // CDI Memory ($FF) Space Implementation // ************************************************************************************************************************************************************** const MAX_CDI_ARRAY = 12491; CDI_ARRAY: array[0..MAX_CDI_ARRAY-1] of byte = ( $3C, $3F, $78, $6D, $6C, $20, $76, $65, $72, $73, $69, $6F, $6E, $3D, $22, $31, $2E, $30, $22, $20, $65, $6E, $63, $6F, $64, $69, $6E, $67, $3D, $22, $75, $74, $66, $2D, $38, $22, $3F, $3E, // $3C, $3F, $78, $6D, $6C, $2D, $73, $74, $79, $6C, $65, $73, $68, $65, $65, $74, $20, $74, $79, $70, $65, $3D, $22, $74, $65, $78, $74, $2F, $78, $73, $6C, $22, $20, $68, $72, $65, $66, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $6F, $70, $65, $6E, $6C, $63, $62, $2E, $6F, $72, $67, $2F, $74, $72, $75, $6E, $6B, $2F, $70, $72, $6F, $74, $6F, $74, $79, $70, $65, $73, $2F, $78, $6D, $6C, $2F, $78, $73, $6C, $74, $2F, $63, $64, $69, $2E, $78, $73, $6C, $22, $3F, $3E, // $3C, $63, $64, $69, $20, $78, $6D, $6C, $6E, $73, $3A, $78, $73, $69, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $77, $77, $77, $2E, $77, $33, $2E, $6F, $72, $67, $2F, $32, $30, $30, $31, $2F, $58, $4D, $4C, $53, $63, $68, $65, $6D, $61, $2D, $69, $6E, $73, $74, $61, $6E, $63, $65, $22, $20, $78, $73, $69, $3A, $6E, $6F, $4E, $61, $6D, $65, $73, $70, $61, $63, $65, $53, $63, $68, $65, $6D, $61, $4C, $6F, $63, $61, $74, $69, $6F, $6E, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $6F, $70, $65, $6E, $6C, $63, $62, $2E, $6F, $72, $67, $2F, $74, $72, $75, $6E, $6B, $2F, $73, $70, $65, $63, $73, $2F, $73, $63, $68, $65, $6D, $61, $2F, $63, $64, $69, $2E, $78, $73, $64, $22, $3E, // $3C, $69, $64, $65, $6E, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, $3E, // $3C, $6D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $3E, $4D, $75, $73, $74, $61, $6E, $67, $70, $65, $61, $6B, $3C, $2F, $6D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $3E, // Mustangpeak $3C, $6D, $6F, $64, $65, $6C, $3E, $43, $53, $31, $30, $30, $3C, $2F, $6D, $6F, $64, $65, $6C, $3E, // CS100 $3C, $68, $61, $72, $64, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, $31, $2E, $30, $3C, $2F, $68, $61, $72, $64, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, // 1.0 $3C, $73, $6F, $66, $74, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, $30, $2E, $32, $3C, $2F, $73, $6F, $66, $74, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, // 0.2 $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // Description $3C, $76, $61, $6C, $75, $65, $3E, $4D, $75, $73, $74, $61, $6E, $67, $70, $65, $61, $6B, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $4E, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Mustangpeak Command Station Node $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $53, $74, $61, $74, $75, $73, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // Status $3C, $76, $61, $6C, $75, $65, $3E, $50, $72, $6F, $74, $6F, $74, $79, $70, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Prototype $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $64, $65, $6E, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, $3E, // $3C, $61, $63, $64, $69, $20, $66, $69, $78, $65, $64, $3D, $22, $31, $22, $20, $76, $61, $72, $3D, $22, $31, $22, $20, $2F, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4F, $70, $74, $69, $6F, $6E, $73, $3C, $2F, $6E, $61, $6D, $65, $3E, // Options $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $43, $6F, $6E, $66, $69, $67, $75, $72, $61, $74, $69, $6F, $6E, $20, $6F, $70, $74, $69, $6F, $6E, $73, $20, $66, $6F, $72, $20, $74, $68, $65, $20, $4C, $43, $42, $72, $69, $63, $6B, $73, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Configuration options for the LCBricks Command Station $3C, $67, $72, $6F, $75, $70, $20, $6F, $66, $66, $73, $65, $74, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $61, $74, $61, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Data $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $41, $64, $64, $20, $79, $6F, $75, $72, $20, $6F, $77, $6E, $20, $75, $6E, $69, $71, $75, $65, $20, $6E, $6F, $64, $65, $20, $69, $6E, $66, $6F, $20, $68, $65, $72, $65, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Add your own unique node info here $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Description $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $67, $72, $6F, $75, $70, $3E, // $3C, $6E, $61, $6D, $65, $3E, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $4F, $70, $74, $69, $6F, $6E, $73, $3C, $2F, $6E, $61, $6D, $65, $3E, // Command Station Options $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $43, $6F, $6E, $66, $69, $67, $75, $72, $61, $74, $69, $6F, $6E, $20, $6F, $70, $74, $69, $6F, $6E, $73, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Configuration options $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4F, $75, $74, $70, $75, $74, $20, $4D, $6F, $64, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Output Mode $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $53, $65, $6C, $65, $63, $74, $20, $69, $66, $20, $74, $68, $69, $73, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $69, $73, $20, $61, $20, $4D, $61, $69, $6E, $20, $4C, $69, $6E, $65, $20, $4E, $6F, $64, $65, $20, $6F, $72, $20, $61, $20, $50, $72, $6F, $67, $72, $61, $6D, $6D, $69, $6E, $67, $20, $54, $72, $61, $63, $6B, $20, $4E, $6F, $64, $65, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Select if this Command Station is a Main Line Node or a Programming Track Node $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $64, $72, $69, $76, $65, $73, $20, $61, $20, $4D, $61, $69, $6E, $20, $4C, $69, $6E, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Command Station drives a Main Line $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $64, $72, $69, $76, $65, $73, $20, $61, $20, $50, $72, $6F, $67, $72, $61, $6D, $6D, $69, $6E, $67, $20, $54, $72, $61, $63, $6B, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Command Station drives a Programming Track $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $50, $72, $6F, $67, $72, $61, $6D, $6D, $69, $6E, $67, $20, $4D, $6F, $64, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Programming Mode $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $53, $65, $6C, $65, $63, $74, $73, $20, $74, $68, $65, $20, $50, $72, $6F, $67, $72, $61, $6D, $6D, $69, $6E, $67, $20, $4D, $6F, $64, $65, $20, $74, $68, $65, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $77, $69, $6C, $6C, $20, $75, $73, $65, $20, $74, $6F, $20, $77, $72, $69, $74, $65, $20, $43, $56, $27, $73, $20, $74, $6F, $20, $74, $68, $65, $20, $64, $65, $63, $6F, $64, $65, $72, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Selects the Programming Mode the Command Station will use to write CV's to the decoder $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $4F, $70, $65, $72, $61, $74, $69, $6F, $6E, $20, $4D, $6F, $64, $65, $20, $28, $74, $6F, $20, $61, $20, $4D, $61, $69, $6E, $20, $4C, $69, $6E, $65, $29, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Operation Mode (to a Main Line) $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $41, $75, $74, $6F, $20, $44, $65, $74, $65, $63, $74, $20, $53, $65, $72, $76, $69, $63, $65, $20, $4D, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Auto Detect Service Mode $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $32, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 2 $3C, $76, $61, $6C, $75, $65, $3E, $44, $69, $72, $65, $63, $74, $20, $42, $69, $74, $20, $4D, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Direct Bit Mode $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $33, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 3 $3C, $76, $61, $6C, $75, $65, $3E, $44, $69, $72, $65, $63, $74, $20, $42, $79, $74, $65, $20, $4D, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Direct Byte Mode $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $34, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 4 $3C, $76, $61, $6C, $75, $65, $3E, $50, $61, $67, $65, $64, $20, $4D, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Paged Mode $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $35, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 5 $3C, $76, $61, $6C, $75, $65, $3E, $52, $65, $67, $69, $73, $74, $65, $72, $20, $4D, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Register Mode $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $44, $43, $43, $20, $42, $75, $73, $20, $4D, $6F, $64, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // DCC Bus Mode $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $53, $65, $6C, $65, $63, $74, $20, $69, $66, $20, $74, $68, $69, $73, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $69, $73, $20, $74, $68, $65, $20, $64, $72, $69, $76, $65, $72, $20, $6F, $72, $20, $72, $65, $63, $65, $69, $76, $65, $72, $20, $6F, $66, $20, $74, $68, $65, $20, $44, $43, $43, $20, $62, $75, $73, $20, $73, $69, $67, $6E, $61, $6C, $20, $28, $44, $61, $6D, $61, $67, $65, $20, $6D, $61, $79, $20, $6F, $63, $63, $75, $72, $20, $69, $66, $20, $6D, $6F, $72, $65, $20, $74, $68, $61, $6E, $20, $6F, $6E, $65, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $69, $73, $20, $73, $65, $6C, $65, $63, $74, $65, $64, $20, $74, $6F, $20, $62, $65, $20, $61, $20, $64, $72, $69, $76, $65, $72, $20, $6F, $6E, $20, $74, $68, $65, $20, $44, $43, $43, $20, $62, $75, $73, $29, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Select if this Command Station is the driver or receiver of the DCC bus signal (Damage may occur if more than one Command Station is selected to be a driver on the DCC bus) $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $69, $73, $20, $61, $20, $44, $43, $43, $20, $42, $75, $73, $20, $52, $65, $63, $65, $69, $76, $65, $72, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Command Station is a DCC Bus Receiver $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $20, $69, $73, $20, $61, $20, $44, $43, $43, $20, $42, $75, $73, $20, $54, $72, $61, $6E, $73, $6D, $69, $74, $74, $65, $72, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Command Station is a DCC Bus Transmitter $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $61, $69, $6C, $43, $6F, $6D, $20, $43, $75, $74, $6F, $75, $74, $3C, $2F, $6E, $61, $6D, $65, $3E, // RailCom Cutout $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $45, $6E, $61, $62, $6C, $65, $2F, $44, $69, $73, $61, $62, $6C, $65, $20, $74, $68, $65, $20, $52, $61, $69, $6C, $43, $6F, $6D, $20, $43, $75, $74, $6F, $75, $74, $20, $69, $6E, $20, $74, $68, $65, $20, $44, $43, $43, $20, $4F, $75, $74, $70, $75, $74, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Enable/Disable the RailCom Cutout in the DCC Output $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $52, $61, $69, $6C, $43, $6F, $6D, $20, $43, $75, $74, $6F, $75, $74, $20, $44, $69, $73, $61, $62, $6C, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // RailCom Cutout Disabled $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $52, $61, $69, $6C, $43, $6F, $6D, $20, $43, $75, $74, $6F, $75, $74, $20, $45, $6E, $61, $62, $6C, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // RailCom Cutout Enabled $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $32, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4F, $76, $65, $72, $63, $75, $72, $72, $65, $6E, $74, $20, $54, $72, $69, $70, $20, $4C, $65, $76, $65, $6C, $3C, $2F, $6E, $61, $6D, $65, $3E, // Overcurrent Trip Level $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $4C, $65, $76, $65, $6C, $20, $6F, $66, $20, $63, $75, $72, $72, $65, $6E, $74, $20, $74, $6F, $20, $74, $72, $69, $70, $20, $6F, $76, $65, $72, $20, $63, $75, $72, $72, $65, $6E, $74, $20, $70, $72, $6F, $74, $65, $63, $74, $69, $6F, $6E, $20, $73, $68, $75, $74, $64, $6F, $77, $6E, $20, $28, $6D, $69, $6C, $6C, $69, $41, $6D, $70, $73, $29, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Level of current to trip over current protection shutdown (milliAmps) $3C, $6D, $69, $6E, $3E, $30, $3C, $2F, $6D, $69, $6E, $3E, // 0 $3C, $6D, $61, $78, $3E, $35, $30, $30, $30, $3C, $2F, $6D, $61, $78, $3E, // 5000 $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $32, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4F, $76, $65, $72, $63, $75, $72, $72, $65, $6E, $74, $20, $53, $68, $75, $74, $64, $6F, $77, $6E, $20, $54, $69, $6D, $65, $20, $28, $6D, $69, $6C, $6C, $69, $53, $65, $63, $6F, $6E, $64, $73, $29, $3C, $2F, $6E, $61, $6D, $65, $3E, // Overcurrent Shutdown Time (milliSeconds) $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $54, $69, $6D, $65, $20, $62, $65, $74, $77, $65, $65, $6E, $20, $66, $69, $72, $73, $74, $20, $64, $65, $74, $65, $63, $74, $65, $64, $20, $6F, $76, $65, $72, $63, $75, $72, $72, $65, $6E, $74, $20, $61, $6E, $64, $20, $73, $68, $75, $74, $64, $6F, $77, $6E, $20, $6F, $66, $20, $74, $68, $65, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Time between first detected overcurrent and shutdown of the Command Station $3C, $6D, $69, $6E, $3E, $30, $3C, $2F, $6D, $69, $6E, $3E, // 0 $3C, $6D, $61, $78, $3E, $31, $30, $30, $30, $3C, $2F, $6D, $61, $78, $3E, // 1000 $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $32, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $41, $75, $74, $6F, $52, $65, $73, $74, $61, $72, $74, $20, $54, $69, $6D, $65, $20, $28, $6D, $69, $6C, $6C, $69, $53, $65, $63, $6F, $6E, $64, $73, $29, $3C, $2F, $6E, $61, $6D, $65, $3E, // AutoRestart Time (milliSeconds) $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $54, $69, $6D, $65, $20, $62, $65, $74, $77, $65, $65, $6E, $20, $61, $6E, $20, $6F, $76, $65, $72, $63, $75, $72, $72, $65, $6E, $74, $20, $64, $65, $74, $65, $63, $74, $69, $6F, $6E, $20, $61, $6E, $64, $20, $61, $6E, $20, $61, $74, $74, $65, $6D, $70, $74, $20, $74, $6F, $20, $72, $65, $6E, $61, $62, $6C, $65, $20, $74, $68, $65, $20, $43, $6F, $6D, $6D, $61, $6E, $64, $20, $53, $74, $61, $74, $69, $6F, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Time between an overcurrent detection and an attempt to renable the Command Station $3C, $6D, $69, $6E, $3E, $31, $30, $30, $30, $3C, $2F, $6D, $69, $6E, $3E, // 1000 $3C, $6D, $61, $78, $3E, $33, $30, $30, $30, $30, $3C, $2F, $6D, $61, $78, $3E, // 30000 $3C, $2F, $69, $6E, $74, $3E, // $3C, $67, $72, $6F, $75, $70, $3E, // $3C, $6E, $61, $6D, $65, $3E, $53, $74, $61, $74, $65, $20, $52, $65, $70, $65, $61, $74, $20, $53, $65, $74, $75, $70, $3C, $2F, $6E, $61, $6D, $65, $3E, // State Repeat Setup $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $57, $68, $65, $6E, $20, $74, $68, $65, $72, $65, $20, $69, $73, $20, $6E, $6F, $20, $6E, $65, $77, $20, $69, $6E, $66, $6F, $72, $6D, $61, $74, $69, $6F, $6E, $20, $73, $65, $6E, $64, $20, $63, $75, $72, $72, $65, $6E, $74, $20, $73, $74, $61, $74, $65, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $74, $6F, $20, $61, $63, $63, $6F, $75, $6E, $74, $20, $66, $6F, $72, $20, $64, $69, $72, $74, $79, $20, $74, $72, $61, $63, $6B, $2C, $20, $65, $74, $63, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // When there is no new information send current state packets to account for dirty track, etc $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $53, $70, $65, $65, $64, $2F, $44, $69, $72, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Speed/Dir packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $53, $70, $65, $65, $64, $2F, $44, $69, $72, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Speed/Dir Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $53, $70, $65, $65, $64, $2F, $44, $69, $72, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Speed/Dir Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $30, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 0 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 0 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 0 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 1 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 1 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 1 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 2 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 2 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 2 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $33, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 3 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 3 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 3 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $34, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 4 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 4 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 4 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $35, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 5 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 5 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 5 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $36, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 6 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 6 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 6 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $37, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 7 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 7 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 7 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $38, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 8 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 8 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 8 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $39, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 9 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $39, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 9 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $39, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 9 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $30, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 10 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 10 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 10 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $31, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 11 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 11 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 11 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $32, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 12 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 12 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 12 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $33, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 13 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 13 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 13 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $34, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 14 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 14 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 14 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $35, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 15 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 15 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 15 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $36, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 16 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 16 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 16 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $37, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 17 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 17 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 17 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $38, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 18 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 18 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 18 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $39, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 19 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $39, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 19 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $31, $39, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 19 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $30, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 20 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 20 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $30, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 20 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $31, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 21 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 21 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $31, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 21 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $32, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 22 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 22 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $32, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 22 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $33, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 23 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 23 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $33, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 23 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $34, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 24 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 24 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $34, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 24 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $35, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 25 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 25 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $35, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 25 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $36, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 26 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 26 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $36, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 26 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $37, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 27 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 27 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $37, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 27 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $52, $65, $70, $65, $61, $74, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $38, $20, $70, $61, $63, $6B, $65, $74, $73, $20, $77, $68, $65, $6E, $20, $69, $64, $6C, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Repeat Function 28 packets when idle $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $6E, $6F, $74, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 28 Packets not repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $32, $38, $20, $50, $61, $63, $6B, $65, $74, $73, $20, $72, $65, $70, $65, $61, $74, $65, $64, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Function 28 Packets repeated $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $32, $35, $36, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $44, $65, $62, $75, $67, $3C, $2F, $6E, $61, $6D, $65, $3E, // Debug $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $44, $65, $62, $75, $67, $20, $6F, $70, $74, $69, $6F, $6E, $73, $20, $66, $6F, $72, $20, $64, $65, $76, $65, $6C, $6F, $70, $65, $72, $73, $2C, $20, $6E, $6F, $72, $6D, $61, $6C, $20, $75, $73, $65, $72, $73, $20, $73, $68, $6F, $75, $6C, $64, $20, $6E, $6F, $74, $20, $63, $68, $61, $6E, $67, $65, $20, $74, $68, $65, $73, $65, $20, $6F, $70, $74, $69, $6F, $6E, $73, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Debug options for developers, normal users should not change these options $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $41, $75, $74, $6F, $20, $61, $6C, $6C, $6F, $63, $61, $74, $65, $20, $76, $69, $72, $74, $75, $61, $6C, $20, $74, $72, $61, $69, $6E, $20, $6E, $6F, $64, $65, $73, $3C, $2F, $6E, $61, $6D, $65, $3E, // Auto allocate virtual train nodes $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $41, $6C, $6C, $6F, $77, $73, $20, $6D, $61, $6E, $75, $61, $6C, $20, $61, $6C, $6C, $6F, $63, $61, $74, $69, $6F, $6E, $20, $6F, $66, $20, $54, $72, $61, $69, $6E, $20, $76, $4E, $6F, $64, $65, $20, $66, $6F, $72, $20, $73, $74, $72, $65, $73, $73, $69, $6E, $67, $20, $74, $68, $72, $6F, $74, $74, $6C, $65, $73, $20, $77, $69, $74, $68, $20, $6C, $61, $63, $6B, $20, $6F, $66, $20, $72, $65, $73, $6F, $75, $72, $63, $65, $73, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Allows manual allocation of Train vNode for stressing throttles with lack of resources $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $30, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 0 $3C, $76, $61, $6C, $75, $65, $3E, $41, $75, $74, $6F, $2D, $61, $6C, $6C, $6F, $63, $61, $74, $65, $20, $56, $69, $72, $74, $75, $61, $6C, $20, $4E, $6F, $64, $65, $73, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Auto-allocate Virtual Nodes $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $31, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // 1 $3C, $76, $61, $6C, $75, $65, $3E, $4D, $61, $6E, $75, $61, $6C, $6C, $79, $20, $41, $6C, $6C, $6F, $63, $61, $74, $65, $20, $4E, $6F, $64, $65, $73, $20, $28, $22, $61, $22, $20, $6F, $6E, $20, $74, $68, $65, $20, $55, $41, $52, $54, $29, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Manually Allocate Nodes ("a" on the UART) $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $6E, $74, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $32, $22, $3E, // $3C, $67, $72, $6F, $75, $70, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $49, $6E, $66, $6F, $72, $6D, $61, $74, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Information $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $2D, $70, $72, $6F, $76, $69, $64, $65, $64, $20, $66, $69, $78, $65, $64, $20, $6E, $6F, $64, $65, $20, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Manufacturer-provided fixed node description $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Version $3C, $2F, $69, $6E, $74, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $31, $32, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $49, $6E, $66, $6F, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Info $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $48, $61, $72, $64, $77, $61, $72, $65, $20, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Hardware Version $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $53, $6F, $66, $74, $77, $61, $72, $65, $20, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Software Version $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $31, $22, $3E, // $3C, $67, $72, $6F, $75, $70, $20, $6F, $66, $66, $73, $65, $74, $3D, $22, $30, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $61, $74, $61, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Data $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $41, $64, $64, $20, $79, $6F, $75, $72, $20, $6F, $77, $6E, $20, $75, $6E, $69, $71, $75, $65, $20, $6E, $6F, $64, $65, $20, $69, $6E, $66, $6F, $20, $68, $65, $72, $65, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Add your own unique node info here $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Version $3C, $2F, $69, $6E, $74, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Description $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $2F, $63, $64, $69, $3E, $00 // ); const MAX_CDI_ARRAY_VNODE = 2260; CDI_ARRAY_VNODE: array[0..MAX_CDI_ARRAY_VNODE-1] of byte = ( $3C, $3F, $78, $6D, $6C, $20, $76, $65, $72, $73, $69, $6F, $6E, $3D, $22, $31, $2E, $30, $22, $20, $65, $6E, $63, $6F, $64, $69, $6E, $67, $3D, $22, $55, $54, $46, $2D, $38, $22, $3F, $3E, // $3C, $3F, $78, $6D, $6C, $2D, $73, $74, $79, $6C, $65, $73, $68, $65, $65, $74, $20, $74, $79, $70, $65, $3D, $22, $74, $65, $78, $74, $2F, $78, $73, $6C, $22, $20, $68, $72, $65, $66, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $6F, $70, $65, $6E, $6C, $63, $62, $2E, $6F, $72, $67, $2F, $74, $72, $75, $6E, $6B, $2F, $70, $72, $6F, $74, $6F, $74, $79, $70, $65, $73, $2F, $78, $6D, $6C, $2F, $78, $73, $6C, $74, $2F, $63, $64, $69, $2E, $78, $73, $6C, $22, $3F, $3E, // $3C, $63, $64, $69, $20, $78, $6D, $6C, $6E, $73, $3A, $78, $73, $69, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $77, $77, $77, $2E, $77, $33, $2E, $6F, $72, $67, $2F, $32, $30, $30, $31, $2F, $58, $4D, $4C, $53, $63, $68, $65, $6D, $61, $2D, $69, $6E, $73, $74, $61, $6E, $63, $65, $22, $20, $78, $73, $69, $3A, $6E, $6F, $4E, $61, $6D, $65, $73, $70, $61, $63, $65, $53, $63, $68, $65, $6D, $61, $4C, $6F, $63, $61, $74, $69, $6F, $6E, $3D, $22, $68, $74, $74, $70, $3A, $2F, $2F, $6F, $70, $65, $6E, $6C, $63, $62, $2E, $6F, $72, $67, $2F, $74, $72, $75, $6E, $6B, $2F, $73, $70, $65, $63, $73, $2F, $73, $63, $68, $65, $6D, $61, $2F, $63, $64, $69, $2E, $78, $73, $64, $22, $3E, // $3C, $69, $64, $65, $6E, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, $3E, // $3C, $6D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $3E, $4D, $75, $73, $74, $61, $6E, $67, $70, $65, $61, $6B, $3C, $2F, $6D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $3E, // Mustangpeak $3C, $6D, $6F, $64, $65, $6C, $3E, $50, $4E, $31, $30, $30, $3C, $2F, $6D, $6F, $64, $65, $6C, $3E, // PN100 $3C, $68, $61, $72, $64, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, $31, $2E, $30, $3C, $2F, $68, $61, $72, $64, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, // 1.0 $3C, $73, $6F, $66, $74, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, $30, $2E, $32, $3C, $2F, $73, $6F, $66, $74, $77, $61, $72, $65, $56, $65, $72, $73, $69, $6F, $6E, $3E, // 0.2 $3C, $6D, $61, $70, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // Description $3C, $76, $61, $6C, $75, $65, $3E, $4D, $75, $73, $74, $61, $6E, $67, $70, $65, $61, $6B, $20, $54, $72, $61, $69, $6E, $20, $50, $72, $6F, $78, $79, $20, $4E, $6F, $64, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Mustangpeak Train Proxy Node $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, $53, $74, $61, $74, $75, $73, $3C, $2F, $70, $72, $6F, $70, $65, $72, $74, $79, $3E, // Status $3C, $76, $61, $6C, $75, $65, $3E, $50, $72, $6F, $74, $6F, $74, $79, $70, $65, $3C, $2F, $76, $61, $6C, $75, $65, $3E, // Prototype $3C, $2F, $72, $65, $6C, $61, $74, $69, $6F, $6E, $3E, // $3C, $2F, $6D, $61, $70, $3E, // $3C, $2F, $69, $64, $65, $6E, $74, $69, $66, $69, $63, $61, $74, $69, $6F, $6E, $3E, // $3C, $61, $63, $64, $69, $20, $66, $69, $78, $65, $64, $3D, $22, $31, $22, $20, $76, $61, $72, $3D, $22, $31, $22, $20, $2F, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $54, $72, $61, $69, $6E, $20, $49, $6E, $66, $6F, $3C, $2F, $6E, $61, $6D, $65, $3E, // Train Info $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $47, $65, $6E, $65, $72, $61, $6C, $20, $49, $6E, $66, $6F, $72, $6D, $61, $74, $69, $6F, $6E, $20, $61, $62, $6F, $75, $74, $20, $74, $68, $65, $20, $54, $72, $61, $69, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // General Information about the Train $3C, $67, $72, $6F, $75, $70, $20, $6F, $66, $66, $73, $65, $74, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $61, $74, $61, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Data $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $41, $64, $64, $20, $79, $6F, $75, $72, $20, $6F, $77, $6E, $20, $75, $6E, $69, $71, $75, $65, $20, $6E, $6F, $64, $65, $20, $69, $6E, $66, $6F, $20, $68, $65, $72, $65, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Add your own unique node info here $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $60, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Description` $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $6F, $66, $66, $73, $65, $74, $3D, $22, $36, $34, $22, $20, $73, $69, $7A, $65, $3D, $22, $35, $31, $30, $22, $3E, // $3C, $6E, $61, $6D, $65, $20, $2F, $3E, // $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $45, $6E, $74, $65, $72, $20, $74, $68, $65, $20, $55, $52, $4C, $20, $66, $6F, $72, $20, $74, $68, $65, $20, $64, $65, $73, $69, $72, $65, $64, $20, $63, $75, $73, $74, $6F, $6D, $20, $46, $75, $6E, $63, $74, $69, $6F, $6E, $20, $44, $65, $66, $69, $6E, $69, $74, $69, $6F, $6E, $20, $46, $69, $6C, $65, $20, $28, $46, $44, $49, $29, $20, $66, $6F, $72, $20, $74, $68, $69, $73, $20, $54, $72, $61, $69, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Enter the URL for the desired custom Function Definition File (FDI) for this Train $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $35, $31, $30, $22, $3E, // $3C, $6E, $61, $6D, $65, $20, $2F, $3E, // $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $45, $6E, $74, $65, $72, $20, $74, $68, $65, $20, $55, $52, $4C, $20, $66, $6F, $72, $20, $74, $68, $65, $20, $64, $65, $73, $69, $72, $65, $64, $20, $63, $75, $73, $74, $6F, $6D, $20, $43, $6F, $6E, $66, $69, $67, $75, $72, $61, $74, $69, $6F, $6E, $20, $44, $65, $66, $69, $6E, $69, $74, $69, $6F, $6E, $20, $46, $69, $6C, $65, $20, $28, $54, $44, $49, $29, $20, $66, $6F, $72, $20, $74, $68, $69, $73, $20, $54, $72, $61, $69, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Enter the URL for the desired custom Configuration Definition File (TDI) for this Train $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $34, $32, $37, $38, $31, $39, $30, $30, $38, $31, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $43, $56, $20, $41, $63, $63, $65, $73, $73, $3C, $2F, $6E, $61, $6D, $65, $3E, // CV Access $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $44, $65, $66, $61, $75, $6C, $74, $20, $61, $63, $63, $65, $73, $73, $20, $74, $6F, $20, $74, $68, $65, $20, $72, $61, $77, $20, $43, $56, $73, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Default access to the raw CVs $3C, $67, $72, $6F, $75, $70, $20, $72, $65, $70, $6C, $69, $63, $61, $74, $69, $6F, $6E, $3D, $22, $32, $35, $36, $22, $3E, // $3C, $72, $65, $70, $6E, $61, $6D, $65, $3E, $43, $56, $20, $4E, $75, $6D, $62, $65, $72, $3A, $3C, $2F, $72, $65, $70, $6E, $61, $6D, $65, $3E, // CV Number: $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6D, $69, $6E, $3E, $30, $3C, $2F, $6D, $69, $6E, $3E, // 0 $3C, $6D, $61, $78, $3E, $32, $35, $35, $3C, $2F, $6D, $61, $78, $3E, // 255 $3C, $2F, $69, $6E, $74, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $32, $22, $3E, // $3C, $67, $72, $6F, $75, $70, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $49, $6E, $66, $6F, $72, $6D, $61, $74, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Information $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $2D, $70, $72, $6F, $76, $69, $64, $65, $64, $20, $66, $69, $78, $65, $64, $20, $6E, $6F, $64, $65, $20, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Manufacturer-provided fixed node description $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Version $3C, $2F, $69, $6E, $74, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $31, $32, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $4D, $61, $6E, $75, $66, $61, $63, $74, $75, $72, $65, $72, $20, $49, $6E, $66, $6F, $3C, $2F, $6E, $61, $6D, $65, $3E, // Manufacturer Info $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $48, $61, $72, $64, $77, $61, $72, $65, $20, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Hardware Version $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $53, $6F, $66, $74, $77, $61, $72, $65, $20, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Software Version $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $73, $65, $67, $6D, $65, $6E, $74, $20, $6F, $72, $69, $67, $69, $6E, $3D, $22, $30, $22, $20, $73, $70, $61, $63, $65, $3D, $22, $32, $35, $31, $22, $3E, // $3C, $67, $72, $6F, $75, $70, $20, $6F, $66, $66, $73, $65, $74, $3D, $22, $30, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $61, $74, $61, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Data $3C, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, $41, $64, $64, $20, $79, $6F, $75, $72, $20, $6F, $77, $6E, $20, $75, $6E, $69, $71, $75, $65, $20, $6E, $6F, $64, $65, $20, $69, $6E, $66, $6F, $20, $68, $65, $72, $65, $3C, $2F, $64, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3E, // Add your own unique node info here $3C, $69, $6E, $74, $20, $73, $69, $7A, $65, $3D, $22, $31, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $56, $65, $72, $73, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // Version $3C, $2F, $69, $6E, $74, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $33, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $4E, $61, $6D, $65, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Name $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $73, $74, $72, $69, $6E, $67, $20, $73, $69, $7A, $65, $3D, $22, $36, $34, $22, $3E, // $3C, $6E, $61, $6D, $65, $3E, $55, $73, $65, $72, $20, $44, $65, $73, $63, $72, $69, $70, $74, $69, $6F, $6E, $3C, $2F, $6E, $61, $6D, $65, $3E, // User Description $3C, $2F, $73, $74, $72, $69, $6E, $67, $3E, // $3C, $2F, $67, $72, $6F, $75, $70, $3E, // $3C, $2F, $73, $65, $67, $6D, $65, $6E, $74, $3E, // $3C, $2F, $63, $64, $69, $3E, $00 // ); // ************************************************************************************************************************************************************** // All Memory ($FE) Implementation // ************************************************************************************************************************************************************** type TAllMap = record LowMem, HighMem: Word; end; const ALL_MAP: TAllMap = ( $0000, // Lowest Address in the MCU memory the Memory Confguration Protocol can access (NOT USED TODAY, REPLY ASSUMES $00 IS THE LOWEST ADDRESS) $7FFF // Highest Address in the MCU memory the Memory Confguration Protocol can access ); // ************************************************************************************************************************************************************** // Configuration Memory ($FD) Implementation // ************************************************************************************************************************************************************** const MAX_USER_NAME = 63; MAX_USER_DESC = 64; MAX_USER_CONFIG_DATA = MAX_USER_NAME + MAX_USER_DESC; // ************************************************************************************************************************************************************** // ACDI Mfg Memory ($FC) Implementation // ***************************************************************************************************************************************************************** const ACDI_MFG_VERSION = 1; const MAX_ACDI_MFG_ARRAY = 26; ACDI_MFG_STRINGS: array[0..MAX_ACDI_MFG_ARRAY - 1] of byte = ( $4D,$75,$73,$74,$61,$6E,$67,$70,$65,$61,$6B,$00, // Mustangpeak $43,$53,$31,$30,$30,$00, // CS100 $30,$2E,$31,$00, // 0.1 $30,$2E,$33,$00 // 0.3 ); const MAX_ACDI_MFG_ARRAY_VNODE = 26; ACDI_MFG_STRINGS_VNODE: array[0..MAX_ACDI_MFG_ARRAY_VNODE - 1] of byte = ( $4D,$75,$73,$74,$61,$6E,$67,$70,$65,$61,$6B,$00, // Mustangpeak $56,$4E,$31,$30,$30,$00, // VN100 $30,$2E,$31,$00, // 0.1 $30,$2E,$39,$00 // 0.9 ); // ************************************************************************************************************************************************************** // ACDI User Memory ($FB) Implementation // // See the Config Data area // ************************************************************************************************************************************************************** const ACDI_USER_VERSION = 1; // ************************************************************************************************************************************************************** // Protocol Identification Protocol (PIP) // ************************************************************************************************************************************************************** const PIV_SUPPORTED_PROTOCOL_COUNT = 7; // UPDATE THIS IF ADDING OR SUBTRACTING SUPPORTED PROTOCOLS PIV_SUPPORTED_PROTOCOLS: array[0..PIV_SUPPORTED_PROTOCOL_COUNT-1] of TPIVProtocolValueArray = ( // Look at the PIV_xxxx constants for more Protocols ($80, $00, $00, $00, $00, $00), // Protocol ($40, $00, $00, $00, $00, $00), // Datagram Protocol ($04, $00, $00, $00, $00, $00), // Producer Consumer Protocol ($10, $00, $00, $00, $00, $00), // Memory Configruation Protocol ($00, $08, $00, $00, $00, $00), // CDI Protocol ($00, $10, $00, $00, $00, $00), // SNIP Protocol ($00, $40, $00, $00, $00, $00) // ACDI Protocol ); PIV_VNODE_SUPPORTED_PROTOCOL_COUNT = 8; // UPDATE THIS IF ADDING OR SUBTRACTING SUPPORTED PROTOCOLS PIV_VNODE_SUPPORTED_PROTOCOLS: array[0..PIV_VNODE_SUPPORTED_PROTOCOL_COUNT-1] of TPIVProtocolValueArray = ( // Look at the PIV_xxxx constants for more Protocols ($80, $00, $00, $00, $00, $00), // Protocol ($40, $00, $00, $00, $00, $00), // Datagram Protocol ($04, $00, $00, $00, $00, $00), // Producer Consumer Protocol ($10, $00, $00, $00, $00, $00), // Memory Configruation Protocol ($00, $08, $00, $00, $00, $00), // CDI Protocol ($00, $10, $00, $00, $00, $00), // SNIP Protocol ($00, $40, $00, $00, $00, $00), // ACDI Protocol ($00, $04, $00, $00, $00, $00) // Traction Protocol ); // ************************************************************************************************************************************************************** // Events Flags for Physical AND Virtual Nodes (consumed and produced) // ************************************************************************************************************************************************************** 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) // ************************************************************************************************************************************************************** // Set the number of Events that are Consumed and Produced by this Node {$IFDEF SUPPORT_AT_LEAST_ONE_CONSUMED_EVENT}MAX_SUPPORTED_EVENTS_CONSUMED = 1;{$ELSE}MAX_SUPPORTED_EVENTS_CONSUMED = 0;{$ENDIF} {$IFDEF SUPPORT_AT_LEAST_ONE_PRODUCED_EVENT}MAX_SUPPORTED_EVENTS_PRODUCED = 2;{$ELSE}MAX_SUPPORTED_EVENTS_PRODUCED = 0;{$ENDIF} // Defined the Values of the Events that are Consumed and Produced by this Node {$IFDEF SUPPORT_AT_LEAST_ONE_CONSUMED_EVENT} SUPPORTED_EVENTS_CONSUMED: array[0..MAX_SUPPORTED_EVENTS_CONSUMED-1] of TEventID = ( ($01, $01, $00, $00, $00, $00, $FF, $FF) // EVENT_EMERGENCY_STOP ); {$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 ); {$ENDIF} // ************************************************************************************************************************************************************** // Events for Virtual Nodes (consumed and produced) // ************************************************************************************************************************************************************** // Set the number of Events that are Consumed and Produced by this Node {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_CONSUMED_EVENT}MAX_VNODE_SUPPORTED_EVENTS_CONSUMED = 1;{$ELSE}MAX_VNODE_SUPPORTED_EVENTS_CONSUMED = 0;{$ENDIF} {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_PRODUCED_EVENT}MAX_VNODE_SUPPORTED_EVENTS_PRODUCED = 3;{$ELSE}MAX_VNODE_SUPPORTED_EVENTS_PRODUCED = 0;{$ENDIF} // Defined the Values of the Events that are Consumed and Produced by this Node {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_CONSUMED_EVENT} 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 ); {$ENDIF} {$IFDEF SUPPORT_AT_LEAST_ONE_VNODE_PRODUCED_EVENT} SUPPORTED_VNODE_EVENTS_PRODUCED: array[0..MAX_VNODE_SUPPORTED_EVENTS_PRODUCED-1] of TEventID = ( ($01, $01, $00, $00, $00, $00, $03, $03), // EVENT_TRAIN ($01, $01, $00, $00, $00, $00, $03, $04), // EVENT_TRAIN_DCC_IDLE ($01, $01, $00, $00, $00, $00, $03, $05) // EVENT_TRAIN_DCC_INUSE ); {$ENDIF} EVENT_TRAIN_INDEX = 0; // Shortcuts to identify these special Event EVENT_TRAIN_DCC_IDLE_INDEX = 1; EVENT_TRAIN_DCC_INUSE_INDEX = 2; end.