diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduPlayer.java b/src/edu/nps/moves/dis7/utilities/stream/PduPlayer.java
index 8314bfb1c15d1082bf2b47db2234dcf838ef4308..967165b42dcc2829452f5cde14fa16e1e192394d 100644
--- a/src/edu/nps/moves/dis7/utilities/stream/PduPlayer.java
+++ b/src/edu/nps/moves/dis7/utilities/stream/PduPlayer.java
@@ -14,6 +14,8 @@ import java.nio.ByteBuffer;
 import java.nio.IntBuffer;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.time.LocalDate;
+import java.time.LocalTime;
 import java.util.Arrays;
 import java.util.Base64;
 import java.util.List;
@@ -42,14 +44,14 @@ public class PduPlayer {
     private int port;
     private Thread playerThread;
 
-    static final String ENCODING_BASE64          = "ENCODING_BASE64";
-    static final String ENCODING_PLAINTEXT       = "ENCODING_PLAINTEXT";
-    static final String ENCODING_BINARY          = "ENCODING_BINARY";  // TODO likely requires different code path
-    static final String ENCODING_XML             = "ENCODING_XML";     // TODO, repeat Open-DIS version 4 effort
-    static final String ENCODING_EXI             = "ENCODING_EXI";     // TODO, use Exificient or Nagasena libraries
-    static final String ENCODING_JSON            = "ENCODING_JSON";    // TODO, repeat Open-DIS version 4 effort
-    static final String ENCODING_CDIS            = "ENCODING_CDIS";    // future work based on new SISO standard
-    static final String ENCODING_MAK_DATA_LOGGER = "ENCODING_MAK_DATA_LOGGER";        // verbose pretty-print. perhaps output only (MAK format itself is binary)
+    static final String ENCODING_BASE64                = "ENCODING_BASE64";
+    static final String ENCODING_PLAINTEXT             = "ENCODING_PLAINTEXT";
+    static final String ENCODING_BINARY                = "ENCODING_BINARY";  // TODO likely requires different code path
+    static final String ENCODING_XML                   = "ENCODING_XML";     // TODO, repeat Open-DIS version 4 effort
+    static final String ENCODING_EXI                   = "ENCODING_EXI";     // TODO, use Exificient or Nagasena libraries
+    static final String ENCODING_JSON                  = "ENCODING_JSON";    // TODO, repeat Open-DIS version 4 effort
+    static final String ENCODING_CDIS                  = "ENCODING_CDIS";    // future work based on new SISO standard
+    static final String ENCODING_MAK_DATA_LOGGER       = "ENCODING_MAK_DATA_LOGGER";        // verbose pretty-print. perhaps output only (MAK format itself is binary)
     static final String ENCODING_WIRESHARK_DATA_LOGGER = "ENCODING_WIRESHARK_DATA_LOGGER"; // 
 
     private static String pduLogEncoding = PduRecorder.ENCODING_PLAINTEXT; // determined when reading file
@@ -161,9 +163,11 @@ public class PduPlayer {
                      pduLogEncoding = PduRecorder.ENCODING_PLAINTEXT;
                 else pduLogEncoding = PduRecorder.ENCODING_BINARY;
                 
+                sleep (100l); // let prior run finish
                 System.out.flush();
                 System.err.flush();
                 System.out.println("Replaying PDU log file with " + pduLogEncoding + ": " + f.getAbsolutePath());
+                System.out.flush();
                     
                 for (String line : lines)
                 {
@@ -171,8 +175,11 @@ public class PduPlayer {
                         sleep(100l); // TODO confirm usability OK, currently 100 msec increments for pause
                     }
                     if (line.length() <= 0)
-                        ; // blank lines ok
-                    else if (line.trim().startsWith(PduRecorder.COMMENT_MARKER)) {
+                    {
+                        // blank lines ok
+                    }
+                    else if (line.trim().startsWith(PduRecorder.COMMENT_MARKER))
+                    {
                         if (handleComment(line, f)) {
                             break;
                         }
@@ -193,9 +200,25 @@ public class PduPlayer {
                                 }
                                 if (line.contains("[") || line.contains("]"))
                                 {
-                                    System.out.println("*** [square brackets] no longer included in CSV PLAINTEXT data, ignored");
+                                    System.out.println("*** [square brackets] no longer included in CSV PLAINTEXT encoded data, [] characters ignored");
                                     line = line.replace("[","").replace("]","");
                                 }
+                                
+                                String dateString = new String();
+                                String timeString = new String();
+                                LocalDate localDate;
+                                LocalTime localTime;
+                                if (line.startsWith("DisPduType"))
+                                {
+                                    // strip prepended DisPduTye, receipt date, receipt time
+                                    line = line.substring(line.indexOf(",") + 1); // strip DisPduTye
+                                    dateString = line.substring(0,line.indexOf(","));
+                                    localDate = LocalDate.parse(dateString);
+                                    line = line.substring(line.indexOf(",") + 1); // strip receipt date
+                                    timeString = line.substring(0,line.indexOf(","));
+                                    localTime = LocalTime.parse(timeString);
+                                    line = line.substring(line.indexOf(",") + 1); // strip receipt time
+                                }
                                 //Pattern splitting needed for playback of unencoded streams
 //                                REGEX = "\\],\\[";
                                 REGEX = ",";
@@ -207,11 +230,10 @@ public class PduPlayer {
 //                                //Add the "]" to the end of sa[0]. It was taken off by the split
 //                                if (sa.length > 1)
 //                                    sa[1] = "[".concat(sa[1]);
-
                                 break;
 
                             default:
-                                System.err.println("Encoding'" + pduLogEncoding + " not recognized or supported");
+                                System.err.println("Encoding'" + pduLogEncoding + "' not recognized or supported");
                         }
 
                         // timestamp is 8 bytes, size of smallest PDU?
@@ -223,7 +245,7 @@ public class PduPlayer {
                             exitWithFailure();
                         }
 
-                        if (startNanoTime == null) {
+                        if (startNanoTime == null) { // TODO check if reset during multiple encoding passes
                             startNanoTime = System.nanoTime(); // initialize
                         }
                         // get timestamp pduTimeBytes, i.e. 8 bytes represented by a Java long
@@ -283,7 +305,8 @@ public class PduPlayer {
                         now = System.nanoTime();
                         sleepTime = targetSimTime - now; // the difference between then and now
 
-                        if (sleepTime > 20000000) { // 20 msec
+                        if (sleepTime > 20000000)// 20 msec
+                        { 
                             //System.out.println("sim interval = " + pduTimeInterval + ", sleeping for " + sleepTime/1000000l + " ms");
                             sleep(sleepTime / 1000000L, (int) (sleepTime % 1000000L));
                         }
@@ -502,14 +525,23 @@ public class PduPlayer {
         closeConnections();
     }
 
-    private void sleep(long ms) {
-        sleep(ms, 0);
+    private void sleep(long ms)
+    {
+        if (ms > 10000)
+        {
+            System.err.println ("*** PduPlayer sleep > 10 seconds, ignored (ms=" + ms + ")");
+        }
+        else sleep(ms, 0);
     }
     
     private void sleep(long ms, int ns) {
         // @formatter:off
         try {
-            Thread.sleep(ms, ns);
+            if (ms > 10000)
+            {
+                System.err.println ("*** PduPlayer sleep > 10 seconds, ignored (ms=" + ms + ")");
+            }
+            else Thread.sleep(ms, ns);
         } catch (InterruptedException ex) {}
         // @formatter:on
     }
diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduPlayerSelfTestLog.txt b/src/edu/nps/moves/dis7/utilities/stream/PduPlayerSelfTestLog.txt
index 5cc34b610397c7fc7ca37eff775a1b3889865ab1..acf04ff47cbc97b687b7adec2d5d7c95f977cdf6 100644
--- a/src/edu/nps/moves/dis7/utilities/stream/PduPlayerSelfTestLog.txt
+++ b/src/edu/nps/moves/dis7/utilities/stream/PduPlayerSelfTestLog.txt
@@ -1,15 +1,111 @@
-ant -f C:\\x3d-github\\open-dis7-java -Dnb.internal.action.name=run.single -Djavac.includes=edu/nps/moves/dis7/utilities/stream/PduPlayer.java -Drun.class=edu.nps.moves.dis7.utilities.stream.PduPlayer run-single
+ant -f C:\\x3d-github\\opendis7-java -Dnb.internal.action.name=run.single -Djavac.includes=edu/nps/moves/dis7/utilities/stream/PduPlayer.java -Drun.class=edu.nps.moves.dis7.utilities.stream.PduPlayer run-single
 init:
-Deleting: C:\x3d-github\open-dis7-java\build\built-jar.properties
+Deleting: C:\x3d-github\opendis7-java\build\built-jar.properties
 deps-jar:
-Updating property file: C:\x3d-github\open-dis7-java\build\built-jar.properties
-Compiling 1 source file to C:\x3d-github\open-dis7-java\build\classes
+Updating property file: C:\x3d-github\opendis7-java\build\built-jar.properties
+Compiling 1 source file to C:\x3d-github\opendis7-java\build\classes
+warning: [options] bootstrap class path not set in conjunction with -source 8
+1 warning
 compile-single:
 run-single:
 Prepare for PduPlayer self-test log by running PduRecorder() self-test first.
 PduPlayer begin() playing DIS logs found in ancestor pduLog directory.
+Replaying PDU log file with ENCODING_BASE64: C:\x3d-github\opendis7-java\pduLog\PduRecorderSelfTestENCODING_BASE64_PduCaptureLog.dislog
+Sent PDU: DisPduType 01 ENTITY_STATE
+Sent PDU: DisPduType 02 FIRE
+Sent PDU: DisPduType 03 DETONATION
+Sent PDU: DisPduType 04 COLLISION
+Sent PDU: DisPduType 05 SERVICE_REQUEST
+Sent PDU: DisPduType 06 RESUPPLY_OFFER
+Sent PDU: DisPduType 07 RESUPPLY_RECEIVED
+Sent PDU: DisPduType 08 RESUPPLY_CANCEL
+Sent PDU: DisPduType 09 REPAIR_COMPLETE
+Sent PDU: DisPduType 10 REPAIR_RESPONSE
+Sent PDU: DisPduType 11 CREATE_ENTITY
+Sent PDU: DisPduType 12 REMOVE_ENTITY
+Sent PDU: DisPduType 13 START_RESUME
+Sent PDU: DisPduType 14 STOP_FREEZE
+Sent PDU: DisPduType 15 ACKNOWLEDGE
+Sent PDU: DisPduType 16 ACTION_REQUEST
+Sent PDU: DisPduType 17 ACTION_RESPONSE
+Sent PDU: DisPduType 18 DATA_QUERY
+Sent PDU: DisPduType 19 SET_DATA
+Sent PDU: DisPduType 20 DATA
+Sent PDU: DisPduType 21 EVENT_REPORT
+Sent PDU: DisPduType 22 COMMENT
+Sent PDU: DisPduType 23 ELECTROMAGNETIC_EMISSION
+Sent PDU: DisPduType 24 DESIGNATOR
+Sent PDU: DisPduType 25 TRANSMITTER
+Sent PDU: DisPduType 26 SIGNAL
+Sent PDU: DisPduType 27 RECEIVER
+Sent PDU: DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE
+Sent PDU: DisPduType 29 UNDERWATER_ACOUSTIC
+Sent PDU: DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE
+Sent PDU: DisPduType 31 INTERCOM_SIGNAL
+Sent PDU: DisPduType 32 INTERCOM_CONTROL
+Sent PDU: DisPduType 33 AGGREGATE_STATE
+Sent PDU: DisPduType 34 ISGROUPOF
+Sent PDU: DisPduType 35 TRANSFER_OWNERSHIP
+Sent PDU: DisPduType 36 ISPARTOF
+Sent PDU: DisPduType 37 MINEFIELD_STATE
+Sent PDU: DisPduType 38 MINEFIELD_QUERY
+Sent PDU: DisPduType 39 MINEFIELD_DATA
+Sent PDU: DisPduType 40 MINEFIELD_RESPONSE_NACK
+Sent PDU: DisPduType 41 ENVIRONMENTAL_PROCESS
+Sent PDU: DisPduType 42 GRIDDED_DATA
+Sent PDU: DisPduType 43 POINT_OBJECT_STATE
+Sent PDU: DisPduType 44 LINEAR_OBJECT_STATE
+Sent PDU: DisPduType 45 AREAL_OBJECT_STATE
+Sent PDU: DisPduType 46 TIME_SPACE_POSITION_INFORMATION
+Sent PDU: DisPduType 47 APPEARANCE
+Sent PDU: DisPduType 48 ARTICULATED_PARTS
+Sent PDU: DisPduType 49 LIVE_ENTITY_FIRE
+Sent PDU: DisPduType 50 LIVE_ENTITY_DETONATION
+Sent PDU: DisPduType 51 CREATE_ENTITY_RELIABLE
+Sent PDU: DisPduType 52 REMOVE_ENTITY_RELIABLE
+Sent PDU: DisPduType 53 START_RESUME_RELIABLE
+Sent PDU: DisPduType 54 STOP_FREEZE_RELIABLE
+Sent PDU: DisPduType 55 ACKNOWLEDGE_RELIABLE
+Sent PDU: DisPduType 56 ACTION_REQUEST_RELIABLE
+Sent PDU: DisPduType 57 ACTION_RESPONSE_RELIABLE
+Sent PDU: DisPduType 58 DATA_QUERY_RELIABLE
+Sent PDU: DisPduType 59 SET_DATA_RELIABLE
+Sent PDU: DisPduType 60 DATA_RELIABLE
+Sent PDU: DisPduType 61 EVENT_REPORT_RELIABLE
+Sent PDU: DisPduType 62 COMMENT_RELIABLE
+Sent PDU: DisPduType 63 RECORD_RELIABLE
+Sent PDU: DisPduType 64 SET_RECORD_RELIABLE
+Sent PDU: DisPduType 65 RECORD_QUERY_RELIABLE
+Sent PDU: DisPduType 66 COLLISION_ELASTIC
+Sent PDU: DisPduType 67 ENTITY_STATE_UPDATE
+Sent PDU: DisPduType 68 DIRECTED_ENERGY_FIRE
+Sent PDU: DisPduType 69 ENTITY_DAMAGE_STATUS
+Sent PDU: DisPduType 70 INFORMATION_OPERATIONS_ACTION
+Sent PDU: DisPduType 71 INFORMATION_OPERATIONS_REPORT
+Sent PDU: DisPduType 72 ATTRIBUTE
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Replaying PDU log file with ENCODING_BINARY: C:\x3d-github\opendis7-java\pduLog\PduRecorderSelfTestENCODING_BINARY_PduCaptureLog.dislog
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
+Encoding'ENCODING_BINARY' not recognized or supported
 ENCODING_PLAINTEXT
-Replaying PDU log file with ENCODING_PLAINTEXT: C:\x3d-github\open-dis7-java\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
+Replaying PDU log file with ENCODING_PLAINTEXT: C:\x3d-github\opendis7-java\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
 Sent PDU: DisPduType 01 ENTITY_STATE
 Sent PDU: DisPduType 02 FIRE
 Sent PDU: DisPduType 03 DETONATION
@@ -82,6 +178,6 @@ Sent PDU: DisPduType 69 ENTITY_DAMAGE_STATUS
 Sent PDU: DisPduType 70 INFORMATION_OPERATIONS_ACTION
 Sent PDU: DisPduType 71 INFORMATION_OPERATIONS_REPORT
 Sent PDU: DisPduType 72 ATTRIBUTE
-Total PDUs: 72
+Total PDUs: 164
 PduPlayer handleComment() found FINISH_COMMENT_MARKER, end of replay from log file PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
 BUILD SUCCESSFUL (total time: 8 seconds)
diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java b/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java
index 1fcff7fc825bc698b4062e24acadb9c60bfb954d..a735c0dcfff2d4f27bbe95dcbbacd1581ba78df8 100644
--- a/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java
+++ b/src/edu/nps/moves/dis7/utilities/stream/PduRecorder.java
@@ -110,14 +110,47 @@ public class PduRecorder // implements PduReceiver
     private DisThreadedNetworkInterface                disThreadedNetworkInterface;
     private DisThreadedNetworkInterface.RawPduListener disRawPduListener;
 
-    private long           startNanoTime     = -1; // sentinel
-    private StringBuilder  sb                = new StringBuilder();
-    private Base64.Encoder base64Encoder     = Base64.getEncoder();
-    private int            pduCount          = 0;    // debug
-    private boolean        headerWritten     = false;
-    private boolean        running           = true; // starts recording by default
-    private boolean        readableTimeStamp = true; // use normal date, time strings vice bytes
-    private long           sessionDuration   = -1;
+    private long           startNanoTime      = -1; // sentinel
+    private StringBuilder  sb                 = new StringBuilder();
+    private Base64.Encoder base64Encoder      = Base64.getEncoder();
+    private int            pduCount           = 0;    // debug
+    private boolean        headerWritten      = false;
+    private boolean        running            = true; // starts recording by default
+    private boolean        readableTimeStamp  = true; // 
+    private boolean        zeroBasedTimeStamp = true; // use normal date, time strings vice bytes
+    private long           sessionDuration    = -1;
+    public static final String UNDATED        = "undated";
+    
+    public enum TimeFormatterType
+    {
+      SECONDS,
+      TENTHSECONDS,
+      HUNDREDTHSECONDS,
+      MILLISECONDS,
+      MICROSECONDS,
+      NANOSECONDS;
+    }
+    
+    /** Format time <code>HH:mm:ss</code>
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterSeconds          = DateTimeFormatter.ofPattern("HH:mm:ss");
+    /** Format time <code>HH:mm:ss.S</code>, default
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterTenthSeconds     = DateTimeFormatter.ofPattern("HH:mm:ss.S");
+    /** Format time <code>HH:mm:ss.SS</code>
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterHundredthSeconds = DateTimeFormatter.ofPattern("HH:mm:ss.SS");
+    /** Format time <code>HH:mm:ss.SSS</code>
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterMilliSeconds     = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
+    /** Format time <code>HH:mm:ss.SSSSSS</code>
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterMicroSeconds     = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSS");
+    /** Format time <code>HH:mm:ss.SSSSSSSSS</code>
+     * @see java.time.format.DateTimeFormatter */
+    public static final DateTimeFormatter timeFormatterNanoSeconds      = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSSSS");
+    
+    private DateTimeFormatter timeFormatter = timeFormatterTenthSeconds;
     
     private void initialize()
     {
@@ -319,22 +352,25 @@ public class PduRecorder // implements PduReceiver
       if(!isRunning())
         return;
 
-      DateTimeFormatter timeFormatterSeconds      = DateTimeFormatter.ofPattern("HH:mm:ss");
-      DateTimeFormatter timeFormatterMilliseconds = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
-      LocalTime localTime         = LocalTime.now();
       String    localDateString   = LocalDate.now().toString();
-      String    localTimeString   = localTime.format(timeFormatterMilliseconds);
+      LocalTime localTime         = LocalTime.now();
       long packetReceivedNanoTime = localTime.toNanoOfDay(); // formerly System.nanoTime();
       if (startNanoTime == -1)
           startNanoTime = packetReceivedNanoTime;
       sessionDuration = packetReceivedNanoTime - startNanoTime;
+      if (isZeroBasedTimeStamp())
+      {
+          localDateString = UNDATED;
+          localTime = LocalTime.ofNanoOfDay(sessionDuration);
+      }
+      String    localTimeString   = localTime.format(timeFormatter);
 
       // DIS timestamp is 8 bytes in length, converted from Java long time into byte array
       byte[] timeByteArray = Longs.toByteArray(packetReceivedNanoTime - startNanoTime);
       //System.out.println(TRACE_PREFIX + "wrote time "+(packetReceivedNanoTime - startNanoTime)); // debug
       
-      byte[] byteBufferSized = Arrays.copyOf(newBuffer, newLength);
-      DisPduType pduType;
+      byte[]     byteBufferSized = Arrays.copyOf(newBuffer, newLength);
+      DisPduType pduType = DisPduType.getEnumForValue(Byte.toUnsignedInt(byteBufferSized[2])); // 3rd byte
       
       if (includeHeaders && !headerWritten)
       {
@@ -370,17 +406,17 @@ public class PduRecorder // implements PduReceiver
               break;
 
           case ENCODING_PLAINTEXT:
-              if (isReadableTimeStamp())
+              if (includesReadableTimeStamp())
               {
+                  sb.append(COMMENT_MARKER).append(" ").append(pduType).append(",");
                   sb.append(localDateString).append(",").append(localTimeString);
+                  sb.append("\n");
               }
-              // Remove square brackets to end up with pure CSV
-              else sb.append(Arrays.toString(timeByteArray).replace(" ", "").replace("[","").replace("]",""));
+              // Timestamp bytes, remove square brackets to end up with pure CSV
+              sb.append(Arrays.toString(timeByteArray).replace(" ", "").replace("[","").replace("]",""));
               sb.append(",");
+              // PDU contents, remove square brackets to end up with pure CSV
               sb.append(Arrays.toString(byteBufferSized).replace(" ", "").replace("[","").replace("]",""));
-              sb.append(" # "); // append comment showing pduType
-              pduType = DisPduType.getEnumForValue(Byte.toUnsignedInt(byteBufferSized[2])); // 3rd byte
-              sb.append(pduType);
               break;
               
           // TODO test reader still works without extra [square brackets]
@@ -455,10 +491,26 @@ public class PduRecorder // implements PduReceiver
         {
             logFileWriter.write(START_COMMENT_MARKER + encodingPduLog + ", " + TRACE_PREFIX + timeStamp + ", DIS capture file, " + logFile.getPath());
             ((PrintWriter) logFileWriter).println();
+            
+            if (encodingPduLog.equals(ENCODING_PLAINTEXT) && includesReadableTimeStamp())
+            {
+                logFileWriter.write(COMMENT_MARKER + " DisPduType,ReceiptDate,ReceiptTime");
+                ((PrintWriter) logFileWriter).println();
+            }
+            if (encodingPduLog.equals(ENCODING_PLAINTEXT))
+            {
+                logFileWriter.write(COMMENT_MARKER + " Timestamp(8 bytes),ProtocolVersion,CompatibilityVersion,ExcerciseID,PduType,PduStatus,HeaderLength,PduLength,then PDU-specific data");
+                ((PrintWriter) logFileWriter).println();
+            }
+            if (encodingPduLog.equals(ENCODING_PLAINTEXT) && includesReadableTimeStamp())
+            {
+                logFileWriter.write(COMMENT_MARKER + " " + "=============================================");
+                ((PrintWriter) logFileWriter).println();
+            }
         } 
-        catch (IOException ex)
+        catch (IOException ioe)
         {
-            Logger.getLogger(PduRecorder.class.getName()).log(Level.SEVERE, null, ex);
+            Logger.getLogger(PduRecorder.class.getName()).log(Level.SEVERE, null, ioe);
         }
     }
 
@@ -827,7 +879,7 @@ public class PduRecorder // implements PduReceiver
      * Whether to provide date/time in readable form, otherwise use byte array
      * @return whether readableTimeStamp is used
      */
-    public boolean isReadableTimeStamp() {
+    public boolean includesReadableTimeStamp() {
         return readableTimeStamp;
     }
 
@@ -846,4 +898,50 @@ public class PduRecorder // implements PduReceiver
     public long getSessionDuration() {
         return sessionDuration;
     }
+
+    /**
+     * Whether timestamp values start at zero or time of initial PDU receipt, default value is true
+     * @return the zeroBasedTimeStamp
+     */
+    public boolean isZeroBasedTimeStamp() {
+        return zeroBasedTimeStamp;
+    }
+
+    /**
+     * Set whether timestamp values start at zero or time of initial PDU receipt, default value is true
+     * @param zeroBasedTimeStamp the zeroBasedTimeStamp to set
+     */
+    public void setZeroBasedTimeStamp(boolean zeroBasedTimeStamp) {
+        this.zeroBasedTimeStamp = zeroBasedTimeStamp;
+    }
+
+    /**
+     * Set time format for text logging
+     * @param timeFormatterChoice enumeration for the new timeFormatter to set
+     */
+    public void setTimeFormatter(TimeFormatterType timeFormatterChoice) 
+    {
+        switch (timeFormatterChoice)
+        {
+            case SECONDS:
+                timeFormatter = timeFormatterSeconds;
+                break;
+            case TENTHSECONDS:
+                timeFormatter = timeFormatterTenthSeconds;
+                break;
+            case HUNDREDTHSECONDS:
+                timeFormatter = timeFormatterHundredthSeconds;
+                break;
+            case MILLISECONDS:
+                timeFormatter = timeFormatterMilliSeconds;
+                break;
+            case MICROSECONDS:
+                timeFormatter = timeFormatterMicroSeconds;
+                break;
+            case NANOSECONDS:
+                timeFormatter = timeFormatterNanoSeconds;
+                break;
+            // no others allowed
+        }
+    }
 }
diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_BASE64_PduCaptureLog.dislog b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_BASE64_PduCaptureLog.dislog
index 6499270b337e377ebd3d925c114e42358e6fd4c2..30c2a8c77f2c2dcaffdaedeafe9f5413e9e9ed75 100644
--- a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_BASE64_PduCaptureLog.dislog
+++ b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_BASE64_PduCaptureLog.dislog
@@ -1,72 +1,72 @@
 AAAAAAAAAAAHAAEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAAYzvoAHAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAA0preQHAAMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAABOA95wHAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAABnxmgAHAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAACAtXswHAAYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAACb7hEAHAAcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAACzzWzQHAAgDAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAADNq8nQHAAkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAADmjm4wHAAoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAEFNohAHAAsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAEgmW1QHAAwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAE8CWIgHAA0FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAFWNXgAHAA4FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAFuRyBgHAA8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA==
-AAAAAGKewSQHABAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAGlcXvQHABEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAG+ZdggHABIFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAHWhjFwHABMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAHvs9dgHABQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAIJFYKAHABUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAIh53DAHABYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAI9XTUQHABcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAJWz8UwHABgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAJwi23QHABkEAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAKJppCwHABoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA
-AAAAAKlV6CwHABsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAK/j8FgHABwGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAALZadvAHAB0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAALx6ySwHAB4GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAMM1XUAHAB8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA=
-AAAAAMlzj+wHACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAANAjOwgHACEHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAANZ8/fQHACIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAANyPwqgHACMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAOLS1DQHACQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAOllwqwHACUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAO+ICtwHACYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAPZDkSAHACcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAPxEAHgHACgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAQM1eawHACkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAQnIPlgHACoJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAARB5JwgHACsJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAARbdurQHACwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAR0/C5wHAC0JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAASPYePgHAC4LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAASpK1xwHAC8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAATDjePQHADALAAAAAAAAAAAAAAAAAA==
-AAAAATbhOyQHADELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAT0GAgAHADILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAUMLK4AHADMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAUkC8gwHADQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAU8BIAwHADUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAVVy+7gHADYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAVv2ikAHADcKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA==
-AAAAAWJMDtgHADgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAWippRAHADkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAW9tr8wHADoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAXW16agHADsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAX1S8HAHADwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAYPo36gHAD0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAYn49mwHAD4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAZDEz5gHAD8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAZdoZugHAEAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAZ4vQrwHAEEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAaS9U4AHAEIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAaszgKQHAEMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAbGDJbgHAEQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAbgOtXgHAEUCAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-AAAAAb44kqwHAEYNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
-AAAAAcQ+fxgHAEcNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAcpLUrQHAEgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA==
+AAAAAAYAWLAHAAICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAAz5hJgHAAMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAABMY7HQHAAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAABllmPwHAAUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAB+hRlgHAAYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAACZ1yLQHAAcDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAACyzmPAHAAgDAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAADM1i1wHAAkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAADk9rWgHAAoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAD8v6TQHAAsFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAEWjKLwHAAwFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAEu7UFgHAA0FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAFI8YDQHAA4FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAFiCcoAHAA8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA==
+AAAAAF60AmgHABAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAGT1FjAHABEFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAGsc4OwHABIFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAHGyRRQHABMFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAHfR6qgHABQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAH6FP0QHABUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAIUjA5AHABYFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAIuL6wwHABcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAJGqTAQHABgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAJhnLGAHABkEAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAJ9dIaAHABoEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA
+AAAAAKVwIbQHABsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAKwJMnwHABwGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAALIP+nAHAB0GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAALiEsiQHAB4GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAL7nHkAHAB8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA=
+AAAAAMUeP/AHACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAMtCIeQHACEHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAANFNpfQHACIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAANffMugHACMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAN3ai4QHACQHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAOTk3gwHACUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAOu4fdgHACYIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAPIE2egHACcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAPhxXgAHACgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAP8S4awHACkJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAQUvNNwHACoJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAQuXxBAHACsJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAARGeEogHACwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAARe/YLgHAC0JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAR4TvywHAC4LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAASU8MEAHAC8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAStsVBgHADALAAAAAAAAAAAAAAAAAA==
+AAAAATGwdxQHADELAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAATfqASwHADILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAT3wczAHADMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAUP6EuAHADQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAUoMGugHADUKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAVARGQwHADYKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAVZ6ZhgHADcKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAA==
+AAAAAVzQVPAHADgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAWNGk0QHADkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAWl9YVwHADoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAW+q73wHADsKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAXXUxOAHADwKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAXw5ZjgHAD0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAYKOSkQHAD4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAYloT5AHAD8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAY+hP8AHAEAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAZZDpygHAEEKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAZ0gqOgHAEIBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAaRTNRgHAEMBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAap6GogHAEQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAbGHltQHAEUCAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+AAAAAbeaskAHAEYNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+AAAAAb4CAFwHAEcNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAcQ+hVgHAEgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAA==
diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
index 3522b4f80193753a4085dabd6873810bb9712fef..4d452a4dda5e6d901180ea7f7807f8ababfb8a31 100644
--- a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
+++ b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
@@ -1,74 +1,149 @@
-# Start, ENCODING_PLAINTEXT, [DisThreadedNetworkInterface PduRecorder main() self test ENCODING_PLAINTEXT] 20220101_085719, DIS capture file, .\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
-0,0,0,0,0,0,0,0,7,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 01 ENTITY_STATE
-0,0,0,0,6,-56,85,-112,7,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 02 FIRE
-0,0,0,0,13,27,118,12,7,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 03 DETONATION
-0,0,0,0,19,-111,84,72,7,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 04 COLLISION
-0,0,0,0,25,-5,-33,-80,7,0,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 05 SERVICE_REQUEST
-0,0,0,0,32,108,28,32,7,0,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 06 RESUPPLY_OFFER
-0,0,0,0,38,-29,-125,-72,7,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 07 RESUPPLY_RECEIVED
-0,0,0,0,45,87,-90,52,7,0,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 08 RESUPPLY_CANCEL
-0,0,0,0,51,-43,-36,-60,7,0,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 09 REPAIR_COMPLETE
-0,0,0,0,58,77,-102,76,7,0,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 10 REPAIR_RESPONSE
-0,0,0,0,64,-64,116,68,7,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 11 CREATE_ENTITY
-0,0,0,0,71,46,-30,52,7,0,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 12 REMOVE_ENTITY
-0,0,0,0,77,-83,-83,52,7,0,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 13 START_RESUME
-0,0,0,0,84,48,104,104,7,0,14,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 14 STOP_FREEZE
-0,0,0,0,90,-95,-72,60,7,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 # DisPduType 15 ACKNOWLEDGE
-0,0,0,0,97,28,-109,-48,7,0,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 16 ACTION_REQUEST
-0,0,0,0,103,-116,-108,-32,7,0,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 17 ACTION_RESPONSE
-0,0,0,0,109,-5,51,64,7,0,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 18 DATA_QUERY
-0,0,0,0,116,111,-37,84,7,0,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 19 SET_DATA
-0,0,0,0,122,-23,112,88,7,0,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 20 DATA
-0,0,0,0,-127,104,89,108,7,0,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 21 EVENT_REPORT
-0,0,0,0,-121,-43,111,56,7,0,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 22 COMMENT
-0,0,0,0,-114,87,-124,104,7,0,23,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 23 ELECTROMAGNETIC_EMISSION
-0,0,0,0,-108,-36,14,-128,7,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 24 DESIGNATOR
-0,0,0,0,-101,-120,-20,8,7,0,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 25 TRANSMITTER
-0,0,0,0,-95,-42,45,-56,7,0,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0 # DisPduType 26 SIGNAL
-0,0,0,0,-88,45,-97,-68,7,0,27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 27 RECEIVER
-0,0,0,0,-82,-28,76,-4,7,0,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE
-0,0,0,0,-75,42,-99,-56,7,0,29,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 29 UNDERWATER_ACOUSTIC
-0,0,0,0,-69,-117,118,-60,7,0,30,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE
-0,0,0,0,-62,17,-62,20,7,0,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0 # DisPduType 31 INTERCOM_SIGNAL
-0,0,0,0,-56,-108,-112,8,7,0,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 32 INTERCOM_CONTROL
-0,0,0,0,-49,33,-80,-112,7,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 33 AGGREGATE_STATE
-0,0,0,0,-43,115,31,16,7,0,34,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 34 ISGROUPOF
-0,0,0,0,-36,9,99,112,7,0,35,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 35 TRANSFER_OWNERSHIP
-0,0,0,0,-30,-119,79,-28,7,0,36,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 36 ISPARTOF
-0,0,0,0,-23,1,81,100,7,0,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 37 MINEFIELD_STATE
-0,0,0,0,-17,98,-10,-84,7,0,38,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 38 MINEFIELD_QUERY
-0,0,0,0,-11,-58,-88,-12,7,0,39,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 39 MINEFIELD_DATA
-0,0,0,0,-4,60,114,24,7,0,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 40 MINEFIELD_RESPONSE_NACK
-0,0,0,1,2,-55,-85,60,7,0,41,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 41 ENVIRONMENTAL_PROCESS
-0,0,0,1,9,66,95,64,7,0,42,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 42 GRIDDED_DATA
-0,0,0,1,15,-51,124,40,7,0,43,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 43 POINT_OBJECT_STATE
-0,0,0,1,22,22,-106,60,7,0,44,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 44 LINEAR_OBJECT_STATE
-0,0,0,1,28,-98,-24,76,7,0,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 45 AREAL_OBJECT_STATE
-0,0,0,1,35,45,39,40,7,0,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 46 TIME_SPACE_POSITION_INFORMATION
-0,0,0,1,41,-125,59,28,7,0,47,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 47 APPEARANCE
-0,0,0,1,47,-18,-23,-120,7,0,48,11,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 48 ARTICULATED_PARTS
-0,0,0,1,54,108,-50,116,7,0,49,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 49 LIVE_ENTITY_FIRE
-0,0,0,1,60,-11,-117,40,7,0,50,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 50 LIVE_ENTITY_DETONATION
-0,0,0,1,67,90,-51,112,7,0,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 51 CREATE_ENTITY_RELIABLE
-0,0,0,1,73,-43,20,-108,7,0,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 52 REMOVE_ENTITY_RELIABLE
-0,0,0,1,80,70,-101,124,7,0,53,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 53 START_RESUME_RELIABLE
-0,0,0,1,86,-69,98,8,7,0,54,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 54 STOP_FREEZE_RELIABLE
-0,0,0,1,93,49,-23,-52,7,0,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 # DisPduType 55 ACKNOWLEDGE_RELIABLE
-0,0,0,1,99,-83,38,64,7,0,56,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 56 ACTION_REQUEST_RELIABLE
-0,0,0,1,106,35,-77,-32,7,0,57,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 57 ACTION_RESPONSE_RELIABLE
-0,0,0,1,112,-97,-118,-96,7,0,58,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 58 DATA_QUERY_RELIABLE
-0,0,0,1,119,19,88,-68,7,0,59,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 59 SET_DATA_RELIABLE
-0,0,0,1,125,-120,85,-8,7,0,60,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 60 DATA_RELIABLE
-0,0,0,1,-125,-6,-15,112,7,0,61,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 61 EVENT_REPORT_RELIABLE
-0,0,0,1,-118,116,-110,-12,7,0,62,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 62 COMMENT_RELIABLE
-0,0,0,1,-112,-12,90,76,7,0,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 63 RECORD_RELIABLE
-0,0,0,1,-105,101,35,92,7,0,64,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 64 SET_RECORD_RELIABLE
-0,0,0,1,-99,-29,-101,-116,7,0,65,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 65 RECORD_QUERY_RELIABLE
-0,0,0,1,-92,87,59,-12,7,0,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 66 COLLISION_ELASTIC
-0,0,0,1,-86,-50,-18,-116,7,0,67,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 67 ENTITY_STATE_UPDATE
-0,0,0,1,-79,97,127,-88,7,0,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 68 DIRECTED_ENERGY_FIRE
-0,0,0,1,-73,-67,-24,80,7,0,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 69 ENTITY_DAMAGE_STATUS
-0,0,0,1,-66,106,70,-128,7,0,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 70 INFORMATION_OPERATIONS_ACTION
-0,0,0,1,-60,-78,115,20,7,0,71,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # DisPduType 71 INFORMATION_OPERATIONS_REPORT
-0,0,0,1,-53,-71,-55,40,7,0,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 # DisPduType 72 ATTRIBUTE
-# Finish, ENCODING_PLAINTEXT, [DisThreadedNetworkInterface PduRecorder main() self test ENCODING_PLAINTEXT] 20220101_085728, DIS capture file, .\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
+# Start, ENCODING_PLAINTEXT, [PduRecorder PduRecorder main() self test ENCODING_PLAINTEXT] 20220620_093604, DIS capture file, .\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
+# DisPduType,ReceiptDate,ReceiptTime
+# ProtocolVersion,CompatibilityVersion,ExcerciseID,PduType,PduStatus,HeaderLength,PduLength,Timestamp,then PDU-specific data
+# =============================================
+# DisPduType 01 ENTITY_STATE,undated,00:00:00.0
+0,0,0,0,0,0,0,0,7,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 02 FIRE,undated,00:00:00.0
+0,0,0,0,5,-93,53,84,7,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 03 DETONATION,undated,00:00:00.2
+0,0,0,0,12,71,88,-32,7,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 04 COLLISION,undated,00:00:00.3
+0,0,0,0,18,-120,52,4,7,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 05 SERVICE_REQUEST,undated,00:00:00.4
+0,0,0,0,25,2,49,-72,7,0,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 06 RESUPPLY_OFFER,undated,00:00:00.5
+0,0,0,0,31,26,88,-16,7,0,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 07 RESUPPLY_RECEIVED,undated,00:00:00.6
+0,0,0,0,37,117,-94,-32,7,0,7,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 08 RESUPPLY_CANCEL,undated,00:00:00.7
+0,0,0,0,43,-92,119,-112,7,0,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 09 REPAIR_COMPLETE,undated,00:00:00.8
+0,0,0,0,50,119,52,4,7,0,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 10 REPAIR_RESPONSE,undated,00:00:00.9
+0,0,0,0,56,-62,111,-52,7,0,10,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 11 CREATE_ENTITY,undated,00:00:01.0
+0,0,0,0,63,-121,-10,56,7,0,11,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 12 REMOVE_ENTITY,undated,00:00:01.1
+0,0,0,0,69,-43,61,112,7,0,12,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 13 START_RESUME,undated,00:00:01.2
+0,0,0,0,75,-4,-37,64,7,0,13,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 14 STOP_FREEZE,undated,00:00:01.3
+0,0,0,0,82,62,-66,116,7,0,14,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 15 ACKNOWLEDGE,undated,00:00:01.4
+0,0,0,0,88,93,32,-104,7,0,15,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
+# DisPduType 16 ACTION_REQUEST,undated,00:00:01.5
+0,0,0,0,94,-82,-113,124,7,0,16,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 17 ACTION_RESPONSE,undated,00:00:01.6
+0,0,0,0,101,46,-19,-100,7,0,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 18 DATA_QUERY,undated,00:00:01.8
+0,0,0,0,108,53,108,-40,7,0,18,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 19 SET_DATA,undated,00:00:01.9
+0,0,0,0,114,-37,46,-40,7,0,19,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 20 DATA,undated,00:00:02.0
+0,0,0,0,120,-34,33,40,7,0,20,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 21 EVENT_REPORT,undated,00:00:02.1
+0,0,0,0,127,-121,-32,-92,7,0,21,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 22 COMMENT,undated,00:00:02.2
+0,0,0,0,-122,80,-117,-64,7,0,22,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 23 ELECTROMAGNETIC_EMISSION,undated,00:00:02.3
+0,0,0,0,-115,2,-10,96,7,0,23,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 24 DESIGNATOR,undated,00:00:02.4
+0,0,0,0,-109,-110,-9,60,7,0,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 25 TRANSMITTER,undated,00:00:02.5
+0,0,0,0,-102,69,-123,104,7,0,25,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 26 SIGNAL,undated,00:00:02.6
+0,0,0,0,-96,-68,105,92,7,0,26,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0
+# DisPduType 27 RECEIVER,undated,00:00:02.8
+0,0,0,0,-90,-18,-5,20,7,0,27,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 28 IDENTIFICATION_FRIEND_OR_FOE,undated,00:00:02.9
+0,0,0,0,-82,23,62,-40,7,0,28,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 29 UNDERWATER_ACOUSTIC,undated,00:00:03.0
+0,0,0,0,-76,-127,92,24,7,0,29,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 30 SUPPLEMENTAL_EMISSION_ENTITY_STATE,undated,00:00:03.1
+0,0,0,0,-69,39,-56,-52,7,0,30,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 31 INTERCOM_SIGNAL,undated,00:00:03.2
+0,0,0,0,-63,-25,73,108,7,0,31,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0
+# DisPduType 32 INTERCOM_CONTROL,undated,00:00:03.3
+0,0,0,0,-56,113,-119,60,7,0,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 33 AGGREGATE_STATE,undated,00:00:03.4
+0,0,0,0,-49,19,-42,20,7,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 34 ISGROUPOF,undated,00:00:03.5
+0,0,0,0,-43,40,-74,60,7,0,34,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 35 TRANSFER_OWNERSHIP,undated,00:00:03.6
+0,0,0,0,-37,-72,-15,76,7,0,35,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 36 ISPARTOF,undated,00:00:03.7
+0,0,0,0,-31,-15,0,-32,7,0,36,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 37 MINEFIELD_STATE,undated,00:00:03.8
+0,0,0,0,-24,32,84,-124,7,0,37,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 38 MINEFIELD_QUERY,undated,00:00:04.0
+0,0,0,0,-18,-125,-105,120,7,0,38,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 39 MINEFIELD_DATA,undated,00:00:04.1
+0,0,0,0,-11,75,-47,-80,7,0,39,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 40 MINEFIELD_RESPONSE_NACK,undated,00:00:04.2
+0,0,0,0,-4,98,112,68,7,0,40,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 41 ENVIRONMENTAL_PROCESS,undated,00:00:04.3
+0,0,0,1,3,31,3,72,7,0,41,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 42 GRIDDED_DATA,undated,00:00:04.4
+0,0,0,1,9,-116,31,84,7,0,42,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 43 POINT_OBJECT_STATE,undated,00:00:04.5
+0,0,0,1,15,-55,-127,4,7,0,43,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 44 LINEAR_OBJECT_STATE,undated,00:00:04.6
+0,0,0,1,22,21,74,-104,7,0,44,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 45 AREAL_OBJECT_STATE,undated,00:00:04.7
+0,0,0,1,28,-125,116,44,7,0,45,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 46 TIME_SPACE_POSITION_INFORMATION,undated,00:00:04.8
+0,0,0,1,34,-4,73,-56,7,0,46,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 47 APPEARANCE,undated,00:00:04.9
+0,0,0,1,41,99,39,100,7,0,47,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 48 ARTICULATED_PARTS,undated,00:00:05.0
+0,0,0,1,47,-75,119,-84,7,0,48,11,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 49 LIVE_ENTITY_FIRE,undated,00:00:05.2
+0,0,0,1,53,-4,118,-80,7,0,49,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 50 LIVE_ENTITY_DETONATION,undated,00:00:05.3
+0,0,0,1,60,55,-21,4,7,0,50,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 51 CREATE_ENTITY_RELIABLE,undated,00:00:05.4
+0,0,0,1,66,-27,1,-108,7,0,51,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 52 REMOVE_ENTITY_RELIABLE,undated,00:00:05.5
+0,0,0,1,73,27,-33,-80,7,0,52,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 53 START_RESUME_RELIABLE,undated,00:00:05.6
+0,0,0,1,79,-128,-92,48,7,0,53,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 54 STOP_FREEZE_RELIABLE,undated,00:00:05.7
+0,0,0,1,85,-87,-123,-44,7,0,54,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 55 ACKNOWLEDGE_RELIABLE,undated,00:00:05.8
+0,0,0,1,92,7,72,-8,7,0,55,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
+# DisPduType 56 ACTION_REQUEST_RELIABLE,undated,00:00:05.9
+0,0,0,1,98,46,45,60,7,0,56,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 57 ACTION_RESPONSE_RELIABLE,undated,00:00:06.0
+0,0,0,1,105,-64,-84,80,7,0,57,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 58 DATA_QUERY_RELIABLE,undated,00:00:06.1
+0,0,0,1,112,88,-115,-8,7,0,58,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 59 SET_DATA_RELIABLE,undated,00:00:06.2
+0,0,0,1,118,-37,-30,76,7,0,59,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 60 DATA_RELIABLE,undated,00:00:06.3
+0,0,0,1,124,-24,117,16,7,0,60,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 61 EVENT_REPORT_RELIABLE,undated,00:00:06.4
+0,0,0,1,-125,14,-57,60,7,0,61,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 62 COMMENT_RELIABLE,undated,00:00:06.5
+0,0,0,1,-119,19,59,24,7,0,62,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 63 RECORD_RELIABLE,undated,00:00:06.7
+0,0,0,1,-113,123,-3,20,7,0,63,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 64 SET_RECORD_RELIABLE,undated,00:00:06.8
+0,0,0,1,-106,24,-50,104,7,0,64,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 65 RECORD_QUERY_RELIABLE,undated,00:00:06.9
+0,0,0,1,-100,109,70,64,7,0,65,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 66 COLLISION_ELASTIC,undated,00:00:07.0
+0,0,0,1,-94,-89,104,-80,7,0,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 67 ENTITY_STATE_UPDATE,undated,00:00:07.1
+0,0,0,1,-88,-14,-9,72,7,0,67,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 68 DIRECTED_ENERGY_FIRE,undated,00:00:07.2
+0,0,0,1,-81,52,-49,40,7,0,68,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 69 ENTITY_DAMAGE_STATUS,undated,00:00:07.3
+0,0,0,1,-75,116,-101,-104,7,0,69,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 70 INFORMATION_OPERATIONS_ACTION,undated,00:00:07.4
+0,0,0,1,-68,101,-58,72,7,0,70,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 71 INFORMATION_OPERATIONS_REPORT,undated,00:00:07.5
+0,0,0,1,-62,-7,104,112,7,0,71,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+# DisPduType 72 ATTRIBUTE,undated,00:00:07.6
+0,0,0,1,-55,-18,60,-96,7,0,72,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
+# Finish, ENCODING_PLAINTEXT, [PduRecorder PduRecorder main() self test ENCODING_PLAINTEXT] 20220620_093613, DIS capture file, .\pduLog\PduRecorderSelfTestENCODING_PLAINTEXT_PduCaptureLog.dislog
diff --git a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestLog.txt b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestLog.txt
index 5f4f7b7e52bcaf994de16d2d07fe6a2714a60474..1d5b2f0263657a1c8a09064b4233ef74066f575a 100644
Binary files a/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestLog.txt and b/src/edu/nps/moves/dis7/utilities/stream/PduRecorderSelfTestLog.txt differ