aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcases/org/apache/poi')
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord516
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1514
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6515
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7105
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/BigSSTRecordCR225
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/Employee.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/Simple.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/SimpleChart.xlsbin0 -> 14336 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/rk.xlsbin0 -> 13824 bytes
-rwxr-xr-xsrc/testcases/org/apache/poi/hssf/data/test_properties111
-rw-r--r--src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java167
-rw-r--r--src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java574
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java209
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java99
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java170
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java116
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java643
-rw-r--r--src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java80
-rw-r--r--src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java224
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java224
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java289
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java319
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java248
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java472
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java142
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java257
-rw-r--r--src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java370
-rw-r--r--src/testcases/org/apache/poi/poifs/property/LocalProperty.java94
-rw-r--r--src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java437
-rw-r--r--src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java358
-rw-r--r--src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java2275
-rw-r--r--src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java2684
-rw-r--r--src/testcases/org/apache/poi/poifs/property/TestRootProperty.java259
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/LocalProperty.java93
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java243
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java320
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java1402
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java231
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java362
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java216
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java283
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java1061
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java275
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java176
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java152
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java2181
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java165
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java346
-rw-r--r--src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java137
-rw-r--r--src/testcases/org/apache/poi/util/LocalTestNode.java164
-rw-r--r--src/testcases/org/apache/poi/util/TestBinaryTree.java2815
-rw-r--r--src/testcases/org/apache/poi/util/TestBitField.java326
-rw-r--r--src/testcases/org/apache/poi/util/TestByteField.java251
-rw-r--r--src/testcases/org/apache/poi/util/TestHexDump.java341
-rw-r--r--src/testcases/org/apache/poi/util/TestIntList.java723
-rw-r--r--src/testcases/org/apache/poi/util/TestIntegerField.java279
-rw-r--r--src/testcases/org/apache/poi/util/TestLittleEndian.java445
-rw-r--r--src/testcases/org/apache/poi/util/TestLongField.java307
-rw-r--r--src/testcases/org/apache/poi/util/TestPOILogFactory.java141
-rw-r--r--src/testcases/org/apache/poi/util/TestPOILogger.java181
-rw-r--r--src/testcases/org/apache/poi/util/TestShortField.java266
-rw-r--r--src/testcases/org/apache/poi/util/TestShortList.java724
-rw-r--r--src/testcases/org/apache/poi/util/TestStringUtil.java315
-rwxr-xr-xsrc/testcases/org/apache/poi/util/data/test_properties111
-rwxr-xr-xsrc/testcases/org/apache/poi/util/data/test_properties211
-rwxr-xr-xsrc/testcases/org/apache/poi/util/data/test_properties311
74 files changed, 30125 insertions, 0 deletions
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord
new file mode 100755
index 0000000000..6cebff51ba
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord
@@ -0,0 +1,516 @@
+FC 00 20
+20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75
+66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20
+4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00
+00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43
+6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52
+54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33
+32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08
+00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F
+77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11
+00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63
+6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69
+72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61
+73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A
+00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E
+69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35
+35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D
+61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20
+50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73
+63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61
+7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00
+00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72
+75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50
+61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C
+69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69
+74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69
+65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44
+6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27
+73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20
+47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A
+61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20
+42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74
+65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D
+61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F
+32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32
+36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43
+20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00
+31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B
+20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72
+6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34
+63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20
+5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65
+20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34
+32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D
+31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F
+56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44
+65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33
+0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04
+00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61
+20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00
+00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00
+00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00
+00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65
+72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44
+72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31
+2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52
+6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D
+6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33
+34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C
+69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72
+07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32
+30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73
+65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65
+65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00
+30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61
+75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74
+65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65
+72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31
+19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53
+70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52
+65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D
+00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09
+00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72
+61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F
+6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C
+65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33
+30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76
+79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E
+65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61
+72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61
+03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32
+35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A
+61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72
+65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20
+4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00
+00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53
+54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20
+53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39
+30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63
+6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61
+63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36
+34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61
+72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63
+65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F
+70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38
+31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65
+72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45
+6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C
+65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32
+30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63
+65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74
+69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74
+6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64
+73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69
+74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31
+42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E
+20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33
+04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F
+20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69
+6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04
+00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65
+72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75
+6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00
+38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E
+67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36
+30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00
+00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72
+74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73
+20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65
+72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05
+00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E
+20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00
+00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75
+70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53
+68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00
+00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72
+74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30
+13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43
+61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73
+03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00
+4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52
+20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72
+67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C
+63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42
+6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20
+6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45
+6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F
+72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18
+00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31
+20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32
+30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69
+65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75
+61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34
+30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43
+7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30
+36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35
+35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30
+37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33
+33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73
+68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D
+00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03
+00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C
+20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D
+00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08
+00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44
+6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62
+6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67
+61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27
+05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75
+73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72
+74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20
+22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37
+0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04
+00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F
+72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73
+74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69
+6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53
+65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76
+65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67
+68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72
+6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72
+74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68
+65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65
+72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35
+2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61
+63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30
+30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75
+6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B
+05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20
+52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00
+00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56
+69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F
+53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31
+32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61
+6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54
+68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47
+75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72
+69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E
+73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34
+20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00
+57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53
+6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E
+06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79
+73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E
+20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48
+31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79
+20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69
+6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F
+77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32
+30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73
+74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32
+20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00
+00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38
+35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76
+79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17
+00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72
+66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73
+65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45
+20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37
+1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66
+69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00
+00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39
+42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35
+31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D
+35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48
+65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62
+65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E
+69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00
+4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E
+69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00
+00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D
+33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41
+69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B
+20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20
+4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C
+64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35
+55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61
+6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20
+27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00
+53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F
+72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50
+61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00
+31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74
+6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64
+65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B
+44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61
+72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20
+4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73
+74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F
+6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54
+36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61
+65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20
+4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00
+41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00
+00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00
+38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65
+20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20
+53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00
+00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61
+67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E
+74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47
+72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35
+2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20
+4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00
+4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00
+47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C
+69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39
+19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F
+77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32
+32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72
+74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C
+79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30
+31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56
+2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65
+07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D
+37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34
+35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16
+00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C
+20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B
+00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00
+48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65
+20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04
+00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70
+61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42
+6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50
+2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30
+34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20
+53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53
+75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76
+65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37
+39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F
+6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38
+10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73
+74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61
+62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E
+20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72
+6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70
+69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32
+34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A
+61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30
+33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66
+20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31
+37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20
+53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36
+36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72
+20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C
+69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00
+00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20
+47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00
+43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43
+5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68
+69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31
+2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B
+20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67
+73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04
+00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69
+6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E
+67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74
+65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F
+00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61
+6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E
+61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F
+6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61
+6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43
+61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37
+20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65
+74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D
+37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72
+65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20
+22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20
+52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18
+00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61
+6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D
+37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50
+61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00
+31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E
+65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31
+23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20
+59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69
+6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00
+00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04
+00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F
+72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32
+37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75
+74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D
+6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72
+63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72
+74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65
+72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48
+20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32
+0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67
+04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73
+74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42
+6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20
+42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30
+6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33
+1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65
+72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F
+6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69
+61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00
+00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65
+6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35
+30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20
+52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38
+35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50
+72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69
+6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72
+76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72
+74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65
+74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20
+4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C
+00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00
+00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75
+6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C
+79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F
+75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20
+45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65
+31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20
+6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C
+20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43
+75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20
+61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F
+61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53
+6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20
+43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24
+00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65
+72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72
+61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00
+53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00
+48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61
+20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73
+76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54
+72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00
+00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20
+39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D
+62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63
+68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61
+72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41
+6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74
+69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44
+20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37
+31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63
+65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00
+00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53
+65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00
+36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C
+61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D
+6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00
+38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42
+6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D
+36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79
+69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65
+6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37
+35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72
+6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D
+6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61
+74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34
+43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00
+36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46
+34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00
+38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69
+6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F
+62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20
+43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69
+72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69
+6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30
+35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F
+64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36
+30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20
+4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36
+33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00
+00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20
+43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68
+6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00
+53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D
+32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69
+67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39
+12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20
+54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15
+00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65
+65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A
+00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43
+68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38
+35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72
+69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00
+00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73
+20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35
+2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75
+6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35
+2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63
+68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32
+04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00
+00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00
+4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54
+31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77
+6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F
+73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58
+2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69
+6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33
+33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20
+54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27
+00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69
+65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72
+70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73
+69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00
+00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73
+74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00
+44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61
+70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07
+00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79
+6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74
+69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61
+72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41
+64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38
+37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53
+74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74
+69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65
+72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03
+00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00
+56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69
+6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39
+20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68
+65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D
+31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31
+2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47
+75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72
+69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20
+43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68
+65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00
+00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00
+77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64
+20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72
+65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49
+43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B
+2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34
+0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00
+46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61
+6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62
+61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43
+6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75
+67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53
+74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E
+20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C
+69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50
+6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74
+20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00
+44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79
+72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20
+46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36
+39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D
+30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E
+53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00
+36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20
+48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00
+36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00
+43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32
+34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65
+20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61
+69
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2
new file mode 100755
index 0000000000..88697cddfd
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2
@@ -0,0 +1,515 @@
+ FC 00 1F 20 B2 6B 02 00 81 14 00 00 18 00 00
+ 46 61 63 2E 20 43 61 73 75 61 6C 74 79 20 4D 61
+ 6E 61 67 65 72 20 47 43 04 00 00 35 33 36 39 17
+ 00 00 44 69 73 74 72 69 62 75 74 69 6F 6E 20 43
+ 6F 6E 73 75 6C 74 61 6E 74 04 00 00 35 33 37 39
+ 11 00 00 47 72 6C 2E 20 57 6F 72 6B 73 74 61 74
+ 69 6F 6E 73 04 00 00 35 33 38 32 04 00 00 35 33
+ 38 37 04 00 00 35 33 38 38 13 00 00 47 72 6C 2E
+ 20 47 72 6F 75 70 20 41 63 63 6F 75 6E 74 73 04
+ 00 00 35 34 33 34 04 00 00 35 34 33 35 0C 00 00
+ 54 4C 20 54 65 6C 65 6D 61 74 69 6B 04 00 00 35
+ 34 33 37 04 00 00 35 34 34 33 14 00 00 42 75 66
+ 66 65 74 6D 69 74 61 72 62 65 69 74 65 72 2F 69
+ 6E 04 00 00 35 34 34 36 04 00 00 35 34 36 32 12
+ 00 00 54 65 61 6D 6C 65 61 64 65 72 20 4C 69 62
+ 72 61 72 79 04 00 00 35 34 36 35 04 00 00 35 34
+ 36 37 04 00 00 35 34 36 39 11 00 00 4C 65 69 74
+ 65 72 20 46 61 68 72 64 69 65 6E 73 74 04 00 00
+ 35 34 38 37 04 00 00 35 34 39 32 04 00 00 35 34
+ 39 33 03 00 00 41 55 44 04 00 00 35 35 30 36 04
+ 00 00 35 35 30 39 19 00 00 48 65 61 64 20 6F 66
+ 20 41 70 70 6C 2E 20 44 65 76 65 6C 6F 70 6D 65
+ 6E 74 04 00 00 35 35 31 31 04 00 00 35 35 31 33
+ 04 00 00 35 35 33 32 04 00 00 35 35 33 37 04 00
+ 00 35 35 35 34 04 00 00 35 35 35 35 16 00 00 54
+ 65 61 6D 6C 65 69 74 65 72 69 6E 20 43 61 66 65
+ 74 65 72 69 61 04 00 00 35 35 35 37 14 00 00 50
+ 72 6F 6A 65 6B 74 6D 69 74 61 72 62 65 69 74 65
+ 72 69 6E 04 00 00 35 35 36 33 04 00 00 35 35 37
+ 39 04 00 00 35 35 38 39 15 00 00 45 78 70 65 72
+ 74 65 20 54 72 6F 70 2E 20 5A 79 6B 6C 6F 6E 65
+ 04 00 00 35 35 39 38 11 00 00 45 69 6E 6B 61 75
+ 66 73 61 73 73 69 73 74 65 6E 74 04 00 00 35 36
+ 30 36 04 00 00 35 36 33 38 04 00 00 35 36 34 32
+ 04 00 00 35 36 36 33 04 00 00 35 36 36 34 13 00
+ 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45 2F 4C
+ 4E 20 4F 50 04 00 00 35 36 37 35 04 00 00 35 36
+ 37 39 04 00 00 35 36 38 30 04 00 00 35 36 38 32
+ 04 00 00 35 36 38 38 0A 00 00 54 65 61 6D 6C 65
+ 61 64 65 72 03 00 00 47 42 50 04 00 00 35 36 39
+ 33 04 00 00 35 36 39 35 04 00 00 35 36 39 36 04
+ 00 00 35 36 39 38 09 00 00 53 75 70 70 6F 72 74
+ 65 72 04 00 00 35 36 39 39 04 00 00 35 37 30 36
+ 13 00 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45
+ 2F 4C 4E 20 48 52 04 00 00 35 37 30 37 13 00 00
+ 4B 6E 6F 77 6C 65 64 67 65 20 4E 65 74 77 6F 72
+ 6B 65 72 04 00 00 35 37 30 38 0E 00 00 52 69 73
+ 69 6B 6F 65 78 70 65 72 74 69 6E 04 00 00 35 37
+ 31 30 04 00 00 35 37 31 39 04 00 00 35 37 32 33
+ 18 00 00 47 72 6C 2E 20 43 65 6E 74 72 2E 20 4F
+ 70 65 72 2E 20 53 79 73 74 65 6D 04 00 00 35 37
+ 33 31 04 00 00 35 37 33 34 18 00 00 48 65 61 64
+ 20 4D 65 64 69 61 4E 65 74 77 2E 61 74 20 52 FC
+ 73 63 68 2E 04 00 00 35 37 33 38 04 00 00 35 37
+ 35 31 04 00 00 35 37 35 39 04 00 00 35 37 36 30
+ 04 00 00 35 37 36 35 04 00 00 35 37 36 36 02 00
+ 00 42 4D 08 00 00 48 61 6D 69 6C 74 6F 6E 04 00
+ 00 35 37 37 35 04 00 00 35 37 37 36 04 00 00 35
+ 37 38 31 04 00 00 35 37 38 35 14 00 00 55 6E 64
+ 65 72 77 72 69 74 69 6E 67 20 53 75 70 70 6F 72
+ 74 04 00 00 35 37 38 37 16 00 00 54 65 61 6D 6C
+ 65 69 74 65 72 20 65 78 74 2E 20 4B 75 72 69 65
+ 72 04 00 00 35 37 39 31 04 00 00 35 38 31 31 04
+ 00 00 35 38 32 30 04 00 00 35 38 32 32 04 00 00
+ 35 38 33 32 04 00 00 35 38 35 30 14 00 00 50 72
+ 6F 6A 65 6B 74 6C 65 69 74 65 72 20 50 20 2B 20
+ 45 52 04 00 00 35 38 35 31 04 00 00 35 38 35 37
+ 04 00 00 35 38 35 38 04 00 00 35 38 38 30 19 00
+ 00 48 65 61 64 20 43 6F 72 70 2E 4C 65 61 72 6E
+ 2E 61 74 20 52 FC 73 63 68 2E 04 00 00 35 38 38
+ 31 04 00 00 35 38 38 35 0E 00 00 4C 65 69 74 65
+ 72 20 48 52 20 53 52 47 53 04 00 00 35 38 39 33
+ 02 00 00 42 45 04 00 00 35 38 39 36 04 00 00 35
+ 39 30 30 15 00 00 48 65 61 64 20 6F 66 20 44 69
+ 76 69 73 69 6F 6E 61 6C 20 49 54 04 00 00 35 39
+ 31 34 14 00 00 43 6F 6D 70 65 6E 73 61 74 69 6F
+ 6E 20 4D 61 6E 61 67 65 72 04 00 00 35 39 31 35
+ 04 00 00 35 39 31 39 04 00 00 35 39 32 30 03 00
+ 00 4E 5A 44 04 00 00 35 39 32 33 04 00 00 35 39
+ 33 34 04 00 00 35 39 33 37 04 00 00 35 39 34 32
+ 04 00 00 35 39 34 33 12 00 00 53 65 72 76 69 63
+ 65 2D 53 70 65 7A 69 61 6C 69 73 74 04 00 00 35
+ 39 34 38 04 00 00 35 39 35 32 04 00 00 35 39 35
+ 36 04 00 00 35 39 35 37 04 00 00 35 39 35 38 17
+ 00 00 47 72 6C 2E 20 53 74 6F 72 61 67 65 20 4D
+ 61 6E 61 67 65 6D 65 6E 74 04 00 00 35 39 36 34
+ 02 00 00 42 41 04 00 00 35 39 36 35 04 00 00 35
+ 39 37 35 04 00 00 35 39 37 36 04 00 00 35 39 37
+ 39 0F 00 00 52 65 63 68 74 73 6B 6F 6E 73 75 6C
+ 65 6E 74 04 00 00 35 39 38 31 16 00 00 45 6E 67
+ 6C 69 73 63 68 2D 55 65 62 65 72 73 65 74 7A 65
+ 72 69 6E 04 00 00 35 39 39 34 18 00 00 48 65 61
+ 64 20 47 50 4D 20 4D 61 72 69 6E 65 2F 41 76 69
+ 61 74 69 6F 6E 04 00 00 36 30 30 32 0D 00 00 4B
+ 65 6C 6C 65 72 6D 65 69 73 74 65 72 04 00 00 36
+ 30 30 34 04 00 00 36 30 31 33 19 00 00 44 6F 63
+ 75 6D 65 6E 74 20 4D 67 6D 74 2E 20 43 6F 6E 73
+ 75 6C 74 61 6E 74 04 00 00 36 30 31 35 04 00 00
+ 36 30 32 30 04 00 00 36 30 32 36 04 00 00 36 30
+ 33 30 02 00 00 52 36 04 00 00 36 30 33 31 17 00
+ 00 48 61 75 73 77 69 72 74 73 63 68 61 66 74 73
+ 6C 65 69 74 65 72 69 6E 04 00 00 36 30 33 33 04
+ 00 00 36 30 35 33 0A 00 00 46 61 68 72 64 69 65
+ 6E 73 74 04 00 00 36 30 35 37 04 00 00 36 30 36
+ 39 17 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65
+ 72 69 6E 20 53 75 70 70 6F 72 74 04 00 00 36 30
+ 38 38 19 00 00 49 74 61 6C 69 65 6E 69 73 63 68
+ 2D 55 65 62 65 72 73 65 74 7A 65 72 69 6E 02 00
+ 00 48 4B 04 00 00 36 30 39 31 04 00 00 36 31 31
+ 32 04 00 00 36 31 31 37 04 00 00 36 31 32 31 10
+ 00 00 54 65 61 6D 6C 65 69 74 65 72 20 50 4D 2F
+ 46 4D 04 00 00 36 31 32 37 04 00 00 36 31 33 34
+ 04 00 00 36 31 34 36 0B 00 00 54 65 6C 65 6D 61
+ 74 69 6B 65 72 04 00 00 36 31 35 36 19 00 00 44
+ 69 76 2E 20 46 69 6E 61 6E 63 69 61 6C 20 43 6F
+ 6E 74 72 6F 6C 6C 65 72 04 00 00 36 31 35 38 0B
+ 00 00 55 53 4D 20 4D 6F 6E 74 65 75 72 04 00 00
+ 36 31 36 32 0A 00 00 49 54 2D 41 75 64 69 74 6F
+ 72 04 00 00 36 31 36 34 04 00 00 36 31 36 35 04
+ 00 00 36 31 36 37 04 00 00 36 31 36 38 04 00 00
+ 36 31 37 30 04 00 00 36 31 37 32 17 00 00 4C 65
+ 69 74 65 72 20 47 61 73 74 72 6F 6E 6F 6D 69 65
+ 62 65 74 72 2E 04 00 00 36 31 38 38 02 00 00 54
+ 58 04 00 00 36 31 38 39 16 00 00 50 72 6F 64 75
+ 63 74 20 54 61 78 20 53 70 65 63 69 61 6C 69 73
+ 74 04 00 00 36 31 39 36 0A 00 00 43 46 4F 20 4F
+ 66 66 69 63 65 02 00 00 53 50 04 00 00 36 32 30
+ 33 14 00 00 41 73 73 69 73 74 65 6E 74 69 6E 20
+ 55 2E 20 42 72 65 6D 69 04 00 00 36 32 30 37 04
+ 00 00 36 32 31 31 10 00 00 47 72 6F 75 70 20 41
+ 63 63 6F 75 6E 74 61 6E 74 04 00 00 36 32 31 35
+ 19 00 00 4C 65 69 74 65 72 20 54 65 6C 65 63 6F
+ 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 36
+ 32 32 35 04 00 00 36 32 33 32 04 00 00 36 32 35
+ 30 06 00 00 4D 6F 73 63 6F 77 04 00 00 36 32 35
+ 35 04 00 00 36 32 36 31 04 00 00 36 32 36 35 04
+ 00 00 36 32 36 37 12 00 00 41 62 74 65 69 6C 75
+ 6E 67 73 6C 65 69 74 65 72 69 6E 04 00 00 36 32
+ 36 38 0F 00 00 53 70 6F 72 74 61 6E 6C 61 67 65
+ 77 61 72 74 04 00 00 36 32 37 31 04 00 00 36 32
+ 37 32 15 00 00 50 75 62 6C 69 73 68 69 6E 67 20
+ 43 6F 6E 73 75 6C 74 61 6E 74 04 00 00 36 32 37
+ 39 04 00 00 36 32 38 30 15 00 00 53 61 63 68 62
+ 65 61 72 62 2E 20 4B 61 73 73 65 20 53 6F 6F 64
+ 04 00 00 36 33 32 34 12 00 00 50 72 6F 64 75 63
+ 74 20 53 70 65 63 69 61 6C 69 73 74 04 00 00 36
+ 33 33 39 04 00 00 36 33 34 34 0F 00 00 50 72 6F
+ 67 72 61 6D 20 4D 61 6E 61 67 65 72 04 00 00 36
+ 33 34 36 04 00 00 36 33 34 37 12 00 00 45 6E 67
+ 6C 69 73 63 68 FC 62 65 72 73 65 74 7A 65 72 04
+ 00 00 36 33 34 39 19 00 00 53 65 63 74 69 6F 6E
+ 20 48 65 61 64 20 43 6F 6E 74 72 2E 20 50 72 6F
+ 6A 2E 04 00 00 36 33 35 30 10 00 00 52 65 73 65
+ 61 72 63 68 20 4D 61 6E 61 67 65 72 04 00 00 36
+ 33 36 38 0C 00 00 44 61 74 61 20 4D 61 6E 61 67
+ 65 72 04 00 00 36 33 36 39 04 00 00 36 33 37 32
+ 19 00 00 42 65 74 72 69 65 62 73 74 65 63 68 6E
+ 69 6B 65 72 20 45 6C 65 6B 74 72 6F 04 00 00 36
+ 33 37 34 04 00 00 36 33 37 35 04 00 00 36 33 39
+ 39 11 00 00 44 65 73 69 67 6E 20 43 6F 6E 73 75
+ 6C 74 61 6E 74 04 00 00 36 34 30 30 04 00 00 36
+ 34 30 32 04 00 00 36 34 30 34 13 00 00 41 63 74
+ 75 61 72 69 61 6C 20 41 73 73 69 73 74 61 6E 74
+ 04 00 00 36 34 30 35 04 00 00 36 34 30 36 04 00
+ 00 36 34 30 37 04 00 00 36 34 30 38 04 00 00 36
+ 34 31 32 04 00 00 36 34 31 33 04 00 00 36 34 31
+ 34 04 00 00 36 34 32 33 04 00 00 36 34 32 34 13
+ 00 00 57 65 62 20 50 72 6F 6A 65 63 74 20 4D 61
+ 6E 61 67 65 72 04 00 00 36 34 32 38 04 00 00 36
+ 34 34 32 04 00 00 36 34 35 33 19 00 00 53 61 63
+ 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 43 61
+ 73 75 61 6C 74 79 04 00 00 36 34 36 32 15 00 00
+ 48 65 61 64 20 6F 66 20 42 61 6C 61 6E 63 65 20
+ 53 68 65 65 74 04 00 00 36 34 37 33 10 00 00 41
+ 63 63 6F 75 6E 74 20 4D 67 72 20 55 53 4C 4C 04
+ 00 00 36 34 37 34 18 00 00 48 65 61 64 20 6F 66
+ 20 45 61 72 74 68 71 75 61 6B 65 20 47 72 6F 75
+ 70 04 00 00 36 34 37 36 04 00 00 36 34 38 30 0C
+ 00 00 4C 65 69 74 65 72 69 6E 20 47 4E 53 04 00
+ 00 36 34 38 36 17 00 00 4B 6F 6D 6D 75 6E 69 6B
+ 61 74 69 6F 6E 73 62 65 72 61 74 65 72 69 6E 04
+ 00 00 36 34 39 33 0E 00 00 46 26 42 20 4B 6F 6E
+ 74 72 6F 6C 6C 65 72 04 00 00 36 34 39 36 16 00
+ 00 4C 65 69 74 65 72 69 6E 20 43 61 66 65 74 65
+ 72 69 61 20 42 36 36 04 00 00 36 34 39 38 09 00
+ 00 41 73 73 69 73 74 61 6E 74 04 00 00 36 35 30
+ 30 04 00 00 36 35 30 38 04 00 00 36 35 30 39 04
+ 00 00 36 35 31 30 04 00 00 36 35 32 33 04 00 00
+ 36 35 33 31 14 00 00 53 74 76 2E 20 43 68 65 66
+ 20 64 65 20 53 65 72 76 69 63 65 04 00 00 36 35
+ 33 32 04 00 00 36 35 33 33 04 00 00 36 35 33 35
+ 12 00 00 42 65 74 72 69 65 62 73 61 6C 6C 72 6F
+ 75 6E 64 65 72 04 00 00 36 35 34 32 14 00 00 45
+ 6C 65 63 74 72 6F 6E 69 63 20 50 75 62 6C 69 73
+ 68 65 72 04 00 00 36 35 35 32 18 00 00 54 72 65
+ 61 74 79 20 55 57 20 50 72 6F 70 2E 2F 43 61 73
+ 75 61 6C 74 79 04 00 00 36 35 35 37 04 00 00 36
+ 35 36 33 13 00 00 54 65 61 6D 6C 65 69 74 65 72
+ 20 4D 61 74 65 72 69 61 6C 04 00 00 36 35 36 36
+ 04 00 00 36 35 37 38 10 00 00 53 74 72 61 74 65
+ 67 79 20 41 6E 61 6C 79 73 74 02 00 00 46 47 04
+ 00 00 36 35 37 39 18 00 00 48 65 61 64 20 6F 66
+ 20 50 72 6F 63 65 73 73 20 50 6C 61 6E 26 4D 67
+ 74 04 00 00 36 36 31 33 16 00 00 49 6E 74 65 72
+ 6E 61 74 69 6F 6E 61 6C 20 41 73 73 69 67 6E 65
+ 65 04 00 00 36 36 32 31 04 00 00 36 36 32 36 04
+ 00 00 36 36 32 37 0D 00 00 45 76 65 6E 74 20 4D
+ 61 6E 61 67 65 72 04 00 00 36 36 32 39 04 00 00
+ 36 36 33 32 04 00 00 36 36 33 37 15 00 00 44 65
+ 70 75 74 79 20 48 65 61 64 20 6F 66 20 45 76 65
+ 6E 74 73 04 00 00 36 36 33 39 19 00 00 48 65 61
+ 64 20 6F 66 20 43 65 6E 74 72 65 20 52 FC 73 63
+ 68 6C 69 6B 6F 6E 04 00 00 36 36 34 34 11 00 00
+ 53 65 6E 69 6F 72 20 43 6F 6E 74 72 6F 6C 6C 65
+ 72 02 00 00 43 4D 04 00 00 36 36 34 38 12 00 00
+ 47 6C 6F 62 61 6C 20 49 47 50 20 4D 61 6E 61 67
+ 65 72 04 00 00 36 36 35 33 17 00 00 4C 65 69 74
+ 65 72 20 4C 6F 74 75 73 20 4E 6F 74 65 73 20 47
+ 4E 4E 4F 04 00 00 36 36 35 37 04 00 00 36 36 36
+ 31 16 00 00 50 72 6F 6A 65 63 74 20 4D 61 6E 61
+ 67 65 72 20 4D 61 67 6E 75 6D 04 00 00 36 36 36
+ 37 04 00 00 36 36 37 35 04 00 00 36 36 38 33 04
+ 00 00 36 36 38 35 17 00 00 4F 72 67 61 6E 69 73
+ 61 74 69 6F 6E 73 2D 41 73 73 69 73 74 65 6E 74
+ 04 00 00 36 36 38 36 04 00 00 36 36 39 32 14 00
+ 00 50 65 72 73 6F 6E 61 6C 65 6E 74 77 69 63 6B
+ 6C 65 72 69 6E 04 00 00 36 36 39 33 04 00 00 36
+ 36 39 34 19 00 00 53 61 63 68 62 2E 45 69 6E 6B
+ 61 75 66 2F 42 75 63 68 68 61 6C 74 75 6E 67 04
+ 00 00 36 36 39 37 16 00 00 47 72 6C 2E 20 44 42
+ 20 41 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 04
+ 00 00 36 37 30 31 04 00 00 36 37 30 32 04 00 00
+ 36 37 30 36 04 00 00 36 37 31 34 04 00 00 36 37
+ 32 31 04 00 00 36 37 33 31 04 00 00 36 37 33 33
+ 04 00 00 36 37 33 34 04 00 00 36 37 34 33 04 00
+ 00 36 37 34 35 0A 00 00 50 52 2D 42 65 72 61 74
+ 65 72 04 00 00 36 37 34 36 04 00 00 36 37 34 38
+ 04 00 00 36 37 35 31 17 00 00 53 70 65 63 69 61
+ 6C 69 73 74 20 52 65 74 72 6F 2F 43 52 45 53 54
+ 41 04 00 00 36 37 35 33 17 00 00 53 65 6E 69 6F
+ 72 20 43 6F 72 70 2E 20 41 63 63 6F 75 6E 74 61
+ 6E 74 04 00 00 36 37 35 38 04 00 00 36 37 36 33
+ 18 00 00 5A 65 69 74 73 63 68 72 69 66 74 65 6E
+ 76 65 72 77 61 6C 74 65 72 69 6E 01 00 00 43 04
+ 00 00 36 37 36 36 04 00 00 36 37 36 38 14 00 00
+ 43 6F 6D 70 65 6E 73 61 74 69 6F 6E 20 53 75 70
+ 70 6F 72 74 04 00 00 36 37 37 30 0A 00 00 54 65
+ 61 6D 6C 65 69 74 65 72 04 00 00 36 37 37 32 16
+ 00 00 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 53 70
+ 65 63 69 61 6C 69 73 74 04 00 00 36 37 37 33 15
+ 00 00 48 65 61 64 20 6F 66 20 53 79 73 74 65 6D
+ 73 20 47 72 6F 75 70 04 00 00 36 37 37 34 04 00
+ 00 36 37 37 35 04 00 00 36 37 38 32 15 00 00 46
+ 61 63 68 72 65 66 65 72 65 6E 74 69 6E 20 55 6D
+ 77 65 6C 74 04 00 00 36 37 38 34 02 00 00 52 53
+ 04 00 00 36 37 38 36 02 00 00 4B 52 05 00 00 53
+ 65 6F 75 6C 04 00 00 36 37 38 38 04 00 00 36 37
+ 39 38 0F 00 00 43 68 65 66 20 64 65 20 53 65 72
+ 76 69 63 65 04 00 00 36 38 30 38 04 00 00 36 38
+ 31 30 18 00 00 48 65 61 64 20 6F 66 20 52 69 73
+ 6B 20 43 6F 6E 74 72 6F 6C 6C 69 6E 67 04 00 00
+ 36 38 32 36 0F 00 00 53 74 65 75 65 72 6B 6F 6E
+ 73 75 6C 65 6E 74 04 00 00 36 38 32 38 15 00 00
+ 54 65 61 6D 6C 65 69 74 65 72 20 50 E2 74 69 73
+ 73 65 72 69 65 04 00 00 36 38 33 31 0B 00 00 53
+ 65 6B 72 65 74 61 72 69 61 74 04 00 00 36 38 35
+ 30 04 00 00 36 38 35 32 04 00 00 36 38 35 35 04
+ 00 00 36 38 36 36 04 00 00 36 38 37 35 04 00 00
+ 36 38 37 36 04 00 00 36 38 37 37 04 00 00 44 61
+ 74 65 04 00 00 44 65 70 74 04 00 00 43 69 74 79
+ 04 00 00 55 6E 69 74 07 00 00 53 75 62 55 6E 69
+ 74 03 00 00 49 44 32 05 00 00 50 68 6F 6E 65 04
+ 00 00 4E 61 6D 65 09 00 00 46 69 72 73 74 4E 61
+ 6D 65 06 00 00 4F 6C 64 4A 6F 62 08 00 00 4A 6F
+ 62 44 65 73 63 72 06 00 00 53 74 61 74 75 73 05
+ 00 00 53 74 61 74 33 05 00 00 53 74 61 74 34 06
+ 00 00 44 65 67 72 65 65 08 00 00 50 6F 73 69 74
+ 69 6F 6E 08 00 00 45 78 70 65 6E 73 65 73 09 00
+ 00 45 78 70 65 6E 73 65 73 32 09 00 00 45 78 70
+ 65 6E 73 65 73 34 09 00 00 45 78 70 65 6E 73 65
+ 73 33 09 00 00 45 78 70 65 6E 73 65 73 35 09 00
+ 00 45 78 70 65 6E 73 65 73 36 09 00 00 45 78 70
+ 65 6E 73 65 73 37 05 00 00 4C 65 76 65 6C 06 00
+ 00 52 65 70 6F 72 74 05 00 00 47 72 6F 75 70 04
+ 00 00 50 6F 6F 6C 05 00 00 44 4B 65 79 50 05 00
+ 00 44 4D 44 50 4D 08 00 00 42 65 6E 67 61 6C 69
+ 78 07 00 00 54 65 6E 61 6C 69 78 0B 00 00 33 32
+ 34 2D 54 65 6E 61 6C 69 78 06 00 00 48 61 6E 6E
+ 69 78 05 00 00 31 30 39 33 30 04 00 00 32 38 39
+ 37 04 00 00 38 39 31 37 04 00 00 33 31 35 33 04
+ 00 00 38 37 33 36 04 00 00 34 33 32 33 05 00 00
+ 31 31 35 37 35 04 00 00 37 31 35 34 04 00 00 33
+ 38 35 38 04 00 00 33 32 35 34 04 00 00 39 37 30
+ 39 04 00 00 37 33 36 39 04 00 00 34 31 39 35 04
+ 00 00 39 37 30 37 04 00 00 36 38 31 37 04 00 00
+ 35 35 34 34 08 00 00 53 61 6E 74 69 61 67 6F 04
+ 00 00 34 32 30 33 05 00 00 31 30 38 34 37 05 00
+ 00 31 31 36 35 36 05 00 00 31 33 30 31 34 04 00
+ 00 31 39 30 36 04 00 00 35 35 39 34 04 00 00 35
+ 32 32 31 04 00 00 38 36 38 31 04 00 00 38 31 37
+ 38 04 00 00 36 31 38 30 05 00 00 31 31 32 39 39
+ 04 00 00 39 33 33 33 05 00 00 31 32 33 31 35 05
+ 00 00 31 31 30 34 35 05 00 00 31 32 32 32 37 01
+ 00 00 49 04 00 00 33 36 39 31 04 00 00 37 30 33
+ 34 04 00 00 32 31 30 37 04 00 00 35 32 30 35 04
+ 00 00 36 30 35 35 04 00 00 34 36 30 30 04 00 00
+ 36 38 39 39 04 00 00 36 39 30 35 05 00 00 31 32
+ 31 34 30 04 00 00 37 36 35 35 05 00 00 38 30 30
+ 39 37 04 00 00 34 32 37 32 05 00 00 31 30 38 37
+ 36 04 00 00 37 33 38 35 04 00 00 34 31 30 31 04
+ 00 00 38 32 32 35 04 00 00 32 34 37 31 04 00 00
+ 35 31 37 35 04 00 00 38 36 34 31 05 00 00 31 32
+ 33 32 31 05 00 00 31 32 38 39 32 04 00 00 37 36
+ 38 37 04 00 00 37 32 37 37 04 00 00 37 31 34 37
+ 05 00 00 31 30 32 39 34 04 00 00 35 31 31 37 05
+ 00 00 31 30 30 30 32 04 00 00 37 37 38 30 04 00
+ 00 36 34 38 32 05 00 00 38 30 32 35 30 08 00 00
+ 41 63 74 75 61 72 79 2C 05 00 00 31 31 37 39 35
+ 05 00 00 31 31 37 32 31 05 00 00 31 31 39 38 32
+ 05 00 00 31 33 30 33 31 04 00 00 38 32 33 32 04
+ 00 00 35 34 36 38 04 00 00 39 33 33 37 04 00 00
+ 36 38 37 38 05 00 00 31 31 39 36 36 04 00 00 37
+ 37 34 34 05 00 00 31 31 30 37 36 05 00 00 31 32
+ 39 31 32 04 00 00 37 39 35 33 05 00 00 31 32 32
+ 36 35 04 00 00 36 35 36 34 04 00 00 38 32 33 36
+ 04 00 00 37 30 33 38 04 00 00 33 36 33 33 04 00
+ 00 38 36 34 32 04 00 00 35 34 38 36 04 00 00 33
+ 39 37 39 04 00 00 35 39 32 37 04 00 00 35 34 31
+ 35 05 00 00 31 32 31 35 34 03 00 00 35 36 35 13
+ 00 00 4C 61 74 69 6E 20 41 6D 65 72 69 63 61 20
+ 53 6F 75 74 68 0E 00 00 43 6F 6C 6F 6D 62 69 61
+ 20 26 20 4F 53 41 02 00 00 35 35 11 00 00 50 72
+ 6F 64 75 63 74 20 45 78 65 63 75 74 69 76 65 02
+ 00 00 53 48 02 00 00 4C 59 02 00 00 34 36 0F 00
+ 00 48 65 61 64 20 4C 41 20 41 63 61 64 65 6D 79
+ 07 00 00 54 72 61 69 6E 65 72 02 00 00 53 45 02
+ 00 00 50 50 03 00 00 50 4C 4E 02 00 00 34 32 11
+ 00 00 54 72 65 61 74 79 20 53 70 65 63 69 61 6C
+ 69 73 74 04 00 00 31 31 31 35 13 00 00 55 6E 64
+ 65 72 77 72 69 74 69 6E 67 20 54 72 65 61 74 79
+ 02 00 00 53 41 02 00 00 4D 45 04 00 00 31 35 33
+ 30 04 00 00 31 35 35 37 14 00 00 52 65 6C 61 74
+ 69 6F 6E 73 68 69 70 20 4D 61 6E 61 67 65 72 04
+ 00 00 31 35 37 36 04 00 00 31 38 32 31 0F 00 00
+ 48 65 61 64 20 43 6F 72 70 6F 72 61 74 65 73 0A
+ 00 00 41 63 63 6F 75 6E 74 69 6E 67 04 00 00 32
+ 30 34 39 14 00 00 50 6C 61 6E 6E 69 6E 67 20 43
+ 6F 6F 72 64 69 6E 61 74 6F 72 02 00 00 54 44 04
+ 00 00 32 31 35 30 0F 00 00 48 65 61 64 20 43 4F
+ 43 20 4D 61 72 69 6E 65 04 00 00 32 31 35 36 10
+ 00 00 4D 61 72 6B 65 74 20 45 78 65 63 75 74 69
+ 76 65 04 00 00 32 35 37 32 18 00 00 48 65 61 64
+ 20 6F 66 20 46 61 63 75 6C 74 61 74 69 76 65 20
+ 44 65 73 6B 0C 00 00 41 64 52 20 43 61 73 75 61
+ 6C 74 79 04 00 00 32 38 34 32 0C 00 00 55 57 20
+ 54 72 65 61 74 79 20 45 4E 02 00 00 53 4B 04 00
+ 00 33 30 38 32 18 00 00 44 69 76 69 73 69 6F 6E
+ 61 6C 20 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E
+ 02 00 00 50 43 04 00 00 33 30 38 30 19 00 00 48
+ 65 61 64 20 43 65 6E 74 65 72 20 6F 66 20 43 6F
+ 6D 70 2E 20 50 72 6F 70 0E 00 00 4C 6F 63 61 6C
+ 20 53 65 72 76 69 63 65 73 19 00 00 43 6C 69 65
+ 6E 74 20 4D 61 6E 61 67 65 72 20 43 6F 72 70 6F
+ 72 61 74 65 73 04 00 00 33 34 30 39 18 00 00 55
+ 6E 64 65 72 77 72 69 74 69 6E 67 20 45 6E 67 69
+ 6E 65 65 72 69 6E 67 04 00 00 33 34 36 32 17 00
+ 00 48 65 61 64 20 6F 66 20 42 55 53 20 50 72 6F
+ 6A 65 63 74 73 20 5A 48 04 00 00 33 34 33 34 19
+ 00 00 48 65 61 64 20 43 65 6E 74 65 72 20 6F 66
+ 20 43 6F 6D 70 2E 20 43 61 73 2E 04 00 00 33 37
+ 38 31 18 00 00 48 65 61 64 20 4D 61 72 6B 65 74
+ 69 6E 67 20 26 20 52 65 6C 2E 20 5A 48 04 00 00
+ 33 39 32 31 11 00 00 41 63 63 6F 75 6E 74 20 45
+ 78 65 63 75 74 69 76 65 04 00 00 33 39 37 31 04
+ 00 00 34 31 31 31 04 00 00 34 31 36 33 13 00 00
+ 52 65 6C 61 74 69 6F 6E 20 4D 61 6E 61 67 65 72
+ 20 55 53 04 00 00 34 30 38 33 0B 00 00 55 57 20
+ 50 72 6F 70 65 72 74 79 04 00 00 34 33 34 30 04
+ 00 00 34 34 37 38 16 00 00 43 65 6E 74 65 72 20
+ 6F 66 20 43 6F 6D 70 2E 20 4D 61 72 69 6E 65 04
+ 00 00 34 35 37 38 15 00 00 55 57 20 53 75 70 70
+ 6F 72 74 20 43 6F 72 70 6F 72 61 74 65 73 04 00
+ 00 34 35 38 31 18 00 00 43 65 6E 74 65 72 20 6F
+ 66 20 43 6F 6D 70 2E 20 43 61 73 75 61 6C 74 79
+ 04 00 00 34 39 33 37 14 00 00 41 73 73 69 73 74
+ 61 6E 74 20 43 6F 72 70 6F 72 61 74 65 73 0C 00
+ 00 43 6F 75 6E 74 72 79 20 48 65 61 64 04 00 00
+ 35 33 31 36 17 00 00 48 65 61 64 20 43 65 6E 74
+ 65 72 20 6F 66 20 43 6F 6D 70 2E 20 45 4E 04 00
+ 00 35 33 39 35 16 00 00 41 73 73 2E 20 50 72 6F
+ 64 75 63 74 20 45 78 65 63 75 74 69 76 65 04 00
+ 00 35 36 31 39 12 00 00 50 72 6F 6A 65 63 74 20
+ 4C 65 61 64 65 72 20 42 55 53 04 00 00 35 35 37
+ 31 18 00 00 43 65 6E 74 65 72 20 6F 66 20 43 6F
+ 6D 70 2E 20 50 72 6F 70 65 72 74 79 04 00 00 35
+ 36 33 33 17 00 00 48 65 61 64 20 4D 61 6E 61 67
+ 65 6D 65 6E 74 20 53 75 70 70 6F 72 74 04 00 00
+ 35 37 35 32 10 00 00 48 65 61 64 20 54 72 65 61
+ 74 79 20 44 65 73 6B 04 00 00 35 36 39 31 19 00
+ 00 44 65 70 2E 48 65 61 64 20 43 65 6E 74 65 72
+ 20 43 6F 6D 70 2E 43 61 73 2E 04 00 00 35 38 36
+ 34 04 00 00 35 39 32 34 0F 00 00 50 72 6F 64 75
+ 63 74 20 53 75 70 70 6F 72 74 04 00 00 35 39 34
+ 30 19 00 00 44 65 70 2E 48 65 61 64 20 43 65 6E
+ 74 65 72 20 43 6F 6D 70 2E 45 6E 67 2E 04 00 00
+ 36 30 31 30 04 00 00 36 30 34 35 18 00 00 48 65
+ 61 64 20 43 6F 43 20 53 74 72 75 63 74 2E 20 46
+ 69 6E 61 6E 63 65 04 00 00 36 31 34 39 04 00 00
+ 36 31 36 36 13 00 00 48 65 61 64 20 6F 66 20 43
+ 6F 43 20 61 67 72 6F 20 4C 41 04 00 00 36 33 33
+ 31 04 00 00 36 36 32 34 13 00 00 50 72 6F 64 75
+ 63 74 20 44 65 76 65 6C 6F 70 6D 65 6E 74 04 00
+ 00 36 35 33 37 04 00 00 36 38 30 36 04 00 00 36
+ 39 33 38 15 00 00 55 57 20 53 74 72 75 63 74 75
+ 72 65 73 20 46 69 6E 61 6E 63 65 04 00 00 37 30
+ 37 33 0F 00 00 52 75 6E 2D 4F 66 66 20 41 6C 69
+ 61 6E 7A 61 04 00 00 37 30 39 30 15 00 00 4A 75
+ 6E 69 6F 72 20 43 6C 69 65 6E 74 20 4D 61 6E 61
+ 67 65 72 04 00 00 37 34 33 37 0B 00 00 33 32 34
+ 2C 20 42 6F 67 6F 74 61 04 00 00 37 35 32 39 10
+ 00 00 53 70 65 63 69 61 6C 20 50 72 6F 6A 65 63
+ 74 73 04 00 00 37 36 33 31 16 00 00 4F 70 65 72
+ 61 74 69 6F 6E 73 20 4D 61 6E 61 67 65 72 20 44
+ 55 4F 04 00 00 38 34 32 33 04 00 00 38 34 36 35
+ 04 00 00 38 35 30 36 0F 00 00 54 72 61 69 6E 65
+ 72 20 53 69 63 73 2F 6E 74 04 00 00 38 36 30 36
+ 04 00 00 38 35 31 30 04 00 00 39 32 30 39 05 00
+ 00 31 30 31 38 36 05 00 00 31 30 35 38 33 10 00
+ 00 54 72 61 69 6E 69 6E 67 20 4D 61 6E 61 67 65
+ 72 05 00 00 31 30 35 38 36 03 00 00 32 38 38 05
+ 00 00 31 30 37 34 37 14 00 00 48 65 61 64 20 44
+ 69 76 2E 20 49 54 20 55 6E 69 74 20 5A 48 03 00
+ 00 49 4C 53 05 00 00 31 30 39 34 34 15 00 00 48
+ 65 61 64 20 53 70 65 63 69 61 6C 20 50 72 6F 6A
+ 65 63 74 73 04 00 00 37 30 37 37 05 00 00 31 30
+ 39 38 36 03 00 00 45 45 4B 05 00 00 31 31 32 39
+ 37 14 00 00 48 52 20 26 53 65 72 76 69 63 65 73
+ 20 4D 61 6E 61 67 65 72 10 00 00 41 64 52 20 41
+ 6C 67 6F 64 F3 6E 2F 41 67 72 6F 05 00 00 31 31
+ 37 32 37 11 00 00 43 6C 61 69 6D 73 20 44 65 73
+ 6B 2F 4C 65 67 61 6C 11 00 00 54 65 63 68 6E 69
+ 63 61 6C 20 4D 61 6E 61 67 65 72 03 00 00 32 38
+ 39 13 00 00 43 6C 69 65 6E 74 20 54 65 61 6D 20
+ 53 75 70 70 6F 72 74 06 00 00 41 64 52 20 58 4C
+ 05 00 00 31 31 38 37 31 0C 00 00 41 64 52 20 50
+ 72 6F 70 65 72 74 79 05 00 00 31 32 36 30 30 06
+ 00 00 4D 61 64 72 69 64 07 00 00 31 34 38 36 33
+ 39 35 07 00 00 36 35 30 36 33 33 31 06 00 00 42
+ 65 6A 69 6E 67 0C 00 00 42 75 65 6E 6F 73 20 41
+ 69 72 65 73 07 00 00 43 6F 6C 6F 67 6E 65 08 00
+ 00 42 72 75 73 73 65 6C 73 02 00 00 56 45 07 00
+ 00 43 61 72 61 63 61 73 02 00 00 50 4C 06 00 00
+ 57 61 72 73 61 77 02 00 00 4A 50 05 00 00 54 6F
+ 6B 79 6F 04 00 00 52 6F 6D 65 05 00 00 31 32 36
+ 30 31 19 00 00 48 65 61 64 20 6F 66 20 4C 69 66
+ 65 26 48 65 61 6C 74 68 20 49 6E 64 69 61 16 00
+ 00 41 73 73 69 73 74 65 6E 74 69 6E 20 4C 65 69
+ 74 65 72 20 43 43 43 02 00 00 33 35 10 00 00 41
+ 72 63 68 69 76 73 70 65 7A 69 61 6C 69 73 74 02
+ 00 00 32 2B 02 00 00 33 2D 02 00 00 34 2D 12 00
+ 00 41 72 63 68 69 76 73 70 65 7A 69 61 6C 69 73
+ 74 69 6E 02 00 00 33 2B 02 00 00 48 43 0F 00 00
+ 4D 69 74 67 6C 69 65 64 20 64 65 72 20 47 4C 13
+ 00 00 41 64 76 65 72 74 69 73 69 6E 67 20 4D 61
+ 6E 61 67 65 72 02 00 00 32 35 0C 00 00 50 34 30
+ 30 20 53 75 70 70 6F 72 74 12 00 00 49 6E 74 65
+ 72 6E 61 74 2E 20 54 72 61 6E 73 66 65 72 01 00
+ 00 47 19 00 00 44 65 70 2E 43 68 69 65 66 45 78
+ 65 63 75 74 69 76 65 4F 66 66 69 63 65 72 10 00
+ 00 50 72 E4 73 69 64 65 6E 74 20 64 65 72 20 47
+ 4C 0D 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65
+ 72 02 00 00 43 59 15 00 00 46 FC 68 72 75 6E 67
+ 73 75 6E 74 65 72 73 74 FC 74 7A 75 6E 67 0C 00
+ 00 43 49 2D 41 73 73 69 73 74 61 6E 74 06 00 00
+ 32 30 30 30 30 39 03 00 00 37 32 30 10 00 00 48
+ 65 61 64 20 6F 66 20 47 72 6F 75 70 20 49 41 02
+ 00 00 53 54 19 00 00 49 6E 74 65 72 6E 2E 47 72
+ 61 64 75 61 74 65 20 50 72 6F 67 2E 4D 67 74 2E
+ 18 00 00 53 79 73 74 65 6D 76 65 72 61 6E 74 77
+ 6F 72 74 6C 2E 20 50 49 4C 41 53 00 00 00 0A 00
+ 00 33 35 33 2D 59 54 38 31 33 30 19 00 00 50 72
+ 69 63 69 6E 67 20 41 63 74 75 61 72 69 61 6C 20
+ 41 6E 61 6C 79 73 74 19 00 00 54 65 63 68 6E 69
+ 63 61 6C 20 43 6C 61 69 6D 73 20 43 6F 6E 73 75
+ 6C 74 2E 18 00 00 47 72 75 70 70 65 6E 6C 65 69
+ 74 65 72 69 6E 20 43 61 73 75 61 6C 74 79 19 00
+ 00 41 73 73 69 73 74 61 6E 74 20 47 72 6F 75 70
+ 20 50 4D 20 4D 61 72 69 6E 65 0E 00 00 44 65 62
+ 74 20 43 6F 6C 6C 65 63 74 6F 72 10 00 00 45 78
+ 70 65 72 74 65 20 45 72 64 62 65 62 65 6E 15 00
+ 00 47 72 6F 75 70 20 4C 69 61 69 73 6F 6E 20 4F
+ 66 66 69 63 65 72 15 00 00 48 65 61 64 20 41 75
+ 64 69 74 2F 49 6E 73 70 65 63 74 69 6F 6E 18 00
+ 00 48 65 61 64 20 6F 66 20 43 6C 61 69 6D 73 20
+ 26 20 43 2E 20 4D 67 74 2E 08 00 00 42 65 72 6D
+ 75 64 61 73 04 00 00 4E 45 49 4E 1C 00 00 53 65
+ 63 72 65 74 61 72 79 20 69 6E 20 4E 65 77 20 59
+ 6F 72 6B 20 4F 66 66 69 63 65 02 00 00 31 32 01
+ 00 00 31 03 00 00 32 32 30 02 00 00 31 30 15 00
+ 00 54 65 6C 65 6D 61 74 69 6B 2D 53 75 70 70 6F
+ 72 74 65 72 69 6E 13 00 00 54 4C 20 54 65 6C 65
+ 6D 61 74 69 6B 73 75 70 70 6F 72 74 19 00 00 55
+ 53 20 47 41 41 50 2D 50 72 6F 6A 65 6B 74 6C 65
+ 69 74 65 72 20 53 52 5A 02 00 00 32 2D 09 00 00
+ 41 73 73 69 73 74 65 6E 74 0D 00 00 42 57 20 45
+ 78 70 65 72 74 65 20 43 4F 19 00 00 52 61 74 69
+ 6E 67 20 41 67 65 6E 63 79 20 43 6F 6F 72 64 69
+ 6E 61 74 6F 72 0F 00 00 50 72 6F 6A 65 6B 74 6C
+ 65 69 74 65 72 69 6E 14 00 00 53 65 6E 69 6F 72
+ 20 41 63 63 6F 75 6E 74 61 6E 74 20 51 41 14 00
+ 00 53 65 6E 69 6F 72 20 4C 65 67 61 6C 20 41 64
+ 76 69 73 65 72 16 00 00 53 65 6E 69 6F 72 20 50
+ 72 6F 6A 65 63 74 20 4D 61 6E 61 67 65 72 13 00
+ 00 41 73 73 69 73 74 61 6E 74 20 55 57 20 4D 61
+ 72 69 6E 65
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1
new file mode 100755
index 0000000000..359e3b4a3f
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR1
@@ -0,0 +1,514 @@
+ 3C 00 18 20 10 00 00 42 75 73 69 6E
+ 65 73 73 20 53 75 70 70 6F 72 74 03 00 00 49 45
+ 50 15 00 00 43 6F 75 6E 74 72 79 20 48 65 61 64
+ 20 43 6F 6C 6F 6D 62 69 61 03 00 00 59 45 53 02
+ 00 00 43 31 01 00 00 59 04 00 00 31 2E 30 30 02
+ 00 00 43 34 02 00 00 43 35 01 00 00 20 02 00 00
+ 43 37 02 00 00 43 38 02 00 00 43 39 03 00 00 43
+ 31 30 03 00 00 43 31 31 13 00 00 4D 61 72 69 6E
+ 65 20 52 69 73 6B 20 41 6E 61 6C 79 73 74 03 00
+ 00 43 31 32 03 00 00 43 31 33 03 00 00 43 31 34
+ 03 00 00 43 31 35 03 00 00 43 31 36 03 00 00 43
+ 31 37 03 00 00 43 31 38 03 00 00 43 32 30 03 00
+ 00 43 32 31 03 00 00 43 32 32 03 00 00 43 32 33
+ 03 00 00 43 32 34 03 00 00 43 32 35 03 00 00 43
+ 32 36 03 00 00 43 32 37 12 00 00 54 65 63 68 6E
+ 69 63 61 6C 20 44 69 72 65 63 74 6F 72 03 00 00
+ 43 32 38 03 00 00 43 32 39 03 00 00 43 33 30 03
+ 00 00 43 33 31 09 00 00 35 2F 30 33 2F 31 39 36
+ 31 03 00 00 43 33 32 03 00 00 43 33 33 03 00 00
+ 43 33 34 03 00 00 43 33 35 03 00 00 43 33 36 03
+ 00 00 43 33 37 03 00 00 43 33 38 03 00 00 43 33
+ 39 03 00 00 43 34 30 03 00 00 43 34 31 0A 00 00
+ 31 30 2E 31 32 2E 31 39 35 31 0A 00 00 31 35 2E
+ 30 31 2E 31 39 39 36 01 00 00 66 0A 00 00 32 37
+ 2E 30 31 2E 31 39 35 33 0A 00 00 30 39 2E 30 35
+ 2E 31 39 39 35 01 00 00 6D 0A 00 00 30 36 2E 30
+ 34 2E 31 39 36 37 0A 00 00 30 31 2E 30 31 2E 31
+ 39 39 39 0A 00 00 31 37 2E 30 38 2E 31 39 35 35
+ 0A 00 00 30 31 2E 31 32 2E 31 39 39 35 0A 00 00
+ 32 30 2E 30 31 2E 31 39 37 33 0A 00 00 31 35 2E
+ 30 39 2E 31 39 39 37 0A 00 00 30 34 2E 31 31 2E
+ 31 39 35 39 0A 00 00 30 38 2E 31 31 2E 31 39 39
+ 36 01 00 00 35 0A 00 00 31 35 2E 30 36 2E 31 39
+ 37 31 0A 00 00 30 31 2E 30 39 2E 31 39 39 39 0A
+ 00 00 32 30 2E 30 38 2E 31 39 37 30 0A 00 00 32
+ 38 2E 30 38 2E 31 39 39 35 0A 00 00 31 30 2E 30
+ 39 2E 31 39 35 35 0A 00 00 30 31 2E 30 38 2E 32
+ 30 30 30 0A 00 00 31 38 2E 30 38 2E 31 39 36 35
+ 0A 00 00 32 32 2E 30 37 2E 31 39 39 32 0A 00 00
+ 32 34 2E 30 39 2E 31 39 35 36 0A 00 00 32 30 2E
+ 31 30 2E 31 39 39 37 16 00 00 48 52 20 26 20 4C
+ 6F 67 69 73 74 69 63 73 20 4D 61 6E 61 67 65 72
+ 0A 00 00 32 38 2E 30 37 2E 31 39 36 33 0A 00 00
+ 30 31 2E 31 30 2E 31 39 39 39 04 00 00 33 35 35
+ 35 04 00 00 33 35 35 36 04 00 00 33 35 37 32 19
+ 00 00 53 65 6E 2E 20 4C 65 67 61 6C 20 43 6C 61
+ 69 6D 73 20 43 6F 75 6E 73 65 6C 04 00 00 33 35
+ 37 33 0F 00 00 53 70 65 7A 69 61 6C 61 75 66 67
+ 61 62 65 6E 04 00 00 33 35 38 37 04 00 00 33 36
+ 31 34 19 00 00 43 6F 6D 6D 75 6E 69 63 61 74 69
+ 6F 6E 73 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00
+ 00 33 36 32 31 04 00 00 33 36 32 32 14 00 00 47
+ 72 6C 2E 20 4B 6F 70 69 65 72 7A 65 6E 74 72 61
+ 6C 65 6E 04 00 00 33 36 32 38 04 00 00 33 36 33
+ 35 11 00 00 48 65 61 64 20 6F 66 20 49 41 20 5A
+ 75 72 69 63 68 04 00 00 33 36 33 36 0D 00 00 47
+ 72 6C 2E 20 48 61 72 64 77 61 72 65 04 00 00 33
+ 36 34 39 0D 00 00 44 6F 63 75 6D 65 6E 74 61 6C
+ 69 73 74 04 00 00 33 36 37 31 11 00 00 43 6F 72
+ 70 6F 72 61 74 65 20 41 63 74 75 61 72 79 04 00
+ 00 33 36 37 36 0D 00 00 48 65 61 64 20 6F 66 20
+ 4C 45 2F 41 53 04 00 00 33 36 37 39 04 00 00 33
+ 36 38 39 04 00 00 33 37 31 31 15 00 00 53 70 65
+ 7A 69 61 6C 69 73 74 20 50 75 62 6C 69 73 68 69
+ 6E 67 04 00 00 33 37 31 33 04 00 00 33 37 31 34
+ 04 00 00 33 37 32 32 04 00 00 33 37 32 39 19 00
+ 00 4C 65 69 74 65 72 20 50 6C 61 74 66 6F 72 6D
+ 20 45 6E 67 69 6E 65 65 72 2E 04 00 00 33 37 33
+ 30 13 00 00 4D 61 6E 2E 20 41 64 6D 69 6E 69 73
+ 74 72 61 74 69 6F 6E 04 00 00 33 37 33 36 17 00
+ 00 48 65 61 64 20 6F 66 20 4C 6F 67 2E 20 4F 70
+ 65 72 61 74 69 6F 6E 73 04 00 00 33 37 34 30 04
+ 00 00 33 37 34 33 17 00 00 55 6E 64 65 72 77 72
+ 69 74 69 6E 67 20 43 6F 6E 73 75 6C 74 61 6E 74
+ 04 00 00 33 37 34 38 04 00 00 33 37 35 31 04 00
+ 00 33 37 36 32 04 00 00 33 37 36 34 06 00 00 42
+ 6F 67 6F 74 61 01 00 00 52 04 00 00 33 37 36 35
+ 0D 00 00 52 65 67 69 6F 6E 61 6C 20 48 65 61 64
+ 04 00 00 33 37 36 38 10 00 00 55 6E 64 65 72 77
+ 72 69 74 65 72 20 41 67 72 6F 04 00 00 33 37 38
+ 33 04 00 00 33 37 38 38 11 00 00 42 65 74 72 69
+ 65 62 73 73 63 68 72 65 69 6E 65 72 04 00 00 33
+ 37 39 33 19 00 00 53 65 6E 2E 20 47 72 6F 75 70
+ 77 61 72 65 20 43 6F 6E 73 75 6C 74 61 6E 74 04
+ 00 00 33 37 39 38 12 00 00 46 61 63 68 62 65 72
+ 65 69 63 68 73 6C 65 69 74 65 72 04 00 00 33 38
+ 30 30 0C 00 00 42 75 63 68 68 61 6C 74 65 72 69
+ 6E 04 00 00 33 38 30 37 19 00 00 47 72 75 70 70
+ 65 6E 6C 65 69 74 65 72 20 45 6E 74 77 69 63 6B
+ 6C 75 6E 67 04 00 00 33 38 31 31 0D 00 00 44 61
+ 74 65 6E 74 79 70 69 73 74 69 6E 04 00 00 33 38
+ 31 38 19 00 00 48 61 75 73 77 69 72 74 73 63 68
+ 61 66 74 73 6D 69 74 61 72 62 65 69 74 2E 04 00
+ 00 33 38 32 35 04 00 00 33 38 32 36 17 00 00 48
+ 65 61 64 20 6F 66 20 47 72 6F 75 70 20 50 4D 20
+ 43 72 65 64 69 74 04 00 00 33 38 32 38 0F 00 00
+ 4D 65 64 69 63 61 6C 20 4F 66 66 69 63 65 72 04
+ 00 00 33 38 35 31 04 00 00 33 38 35 32 04 00 00
+ 33 38 37 30 04 00 00 33 38 37 36 19 00 00 4D 61
+ 6E 2E 20 4C 65 67 61 6C 20 43 6C 61 69 6D 73 20
+ 43 6F 75 6E 73 65 6C 04 00 00 33 38 38 36 04 00
+ 00 33 38 38 37 0C 00 00 50 52 2D 42 65 72 61 74
+ 65 72 69 6E 04 00 00 33 38 38 38 17 00 00 54 65
+ 61 6D 6C 65 69 74 65 72 20 41 75 73 67 61 6E 67
+ 73 70 6F 73 74 04 00 00 33 38 38 39 08 00 00 48
+ 61 75 73 77 61 72 74 04 00 00 33 38 39 38 10 00
+ 00 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79 73
+ 74 04 00 00 33 38 39 39 19 00 00 53 65 63 74 2E
+ 20 48 65 61 64 20 49 6E 76 2E 20 52 65 6C 61 74
+ 69 6F 6E 73 04 00 00 33 39 30 37 17 00 00 47 72
+ 6C 2E 20 52 5A 20 50 6C 61 6E 2E 2F 53 74 65 75
+ 65 72 75 6E 67 04 00 00 33 39 32 38 17 00 00 47
+ 72 6C 2E 20 57 6F 72 6B 73 74 61 74 69 6F 6E 20
+ 45 6E 67 69 6E 2E 04 00 00 33 39 33 35 02 00 00
+ 43 50 04 00 00 33 39 33 36 11 00 00 47 72 6C 2E
+ 20 46 6C 75 74 2F 53 79 73 74 65 6D 65 04 00 00
+ 33 39 35 32 04 00 00 33 39 35 35 04 00 00 33 39
+ 36 39 04 00 00 33 39 37 37 13 00 00 42 4C 20 44
+ 61 74 61 62 61 73 65 20 53 79 73 74 65 6D 73 04
+ 00 00 33 39 38 30 04 00 00 33 39 38 33 04 00 00
+ 33 39 38 36 04 00 00 33 39 38 39 04 00 00 33 39
+ 39 30 14 00 00 47 72 6F 75 70 77 61 72 65 20 43
+ 6F 6E 73 75 6C 74 61 6E 74 04 00 00 34 30 31 31
+ 04 00 00 34 30 31 32 04 00 00 34 30 31 38 04 00
+ 00 34 30 32 35 04 00 00 34 30 33 30 19 00 00 4F
+ 70 65 72 61 74 72 69 63 65 20 4B 6F 70 69 65 72
+ 7A 65 6E 74 72 61 6C 65 04 00 00 34 30 33 31 0E
+ 00 00 55 6D 7A 75 67 73 66 61 63 68 6D 61 6E 6E
+ 04 00 00 34 30 33 35 04 00 00 34 30 33 37 04 00
+ 00 34 30 33 39 04 00 00 34 30 34 32 04 00 00 34
+ 30 35 32 04 00 00 34 30 35 38 04 00 00 34 30 35
+ 39 04 00 00 34 30 36 34 18 00 00 48 65 61 64 20
+ 6F 66 20 53 75 70 70 6F 72 74 20 53 65 72 76 69
+ 63 65 73 04 00 00 34 30 38 30 15 00 00 53 61 63
+ 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 46 69
+ 62 75 04 00 00 34 30 38 31 04 00 00 34 30 38 32
+ 17 00 00 4D 69 74 61 72 62 2E 20 53 69 63 68 65
+ 72 68 65 69 74 73 6C 6F 67 65 02 00 00 49 43 04
+ 00 00 34 30 38 36 04 00 00 34 30 39 36 04 00 00
+ 34 31 30 35 04 00 00 34 31 30 36 04 00 00 34 31
+ 30 38 13 00 00 53 75 70 70 6F 72 74 65 72 20 48
+ 65 6C 70 20 44 65 73 6B 04 00 00 34 31 32 30 0D
+ 00 00 57 65 62 2D 50 75 62 6C 69 73 68 65 72 05
+ 00 00 31 31 36 39 35 01 00 00 4B 05 00 00 31 31
+ 36 39 36 05 00 00 31 31 36 39 37 05 00 00 31 31
+ 37 30 32 05 00 00 31 31 37 31 30 05 00 00 31 31
+ 37 31 31 11 00 00 53 6F 66 74 77 61 72 65 20 45
+ 6E 67 69 6E 65 65 72 05 00 00 31 31 37 31 32 05
+ 00 00 31 31 37 32 34 05 00 00 31 31 37 33 30 19
+ 00 00 50 72 6F 6A 65 63 74 6D 61 6E 61 67 65 72
+ 20 52 FC 73 63 68 6C 69 6B 6F 6E 05 00 00 31 31
+ 37 33 31 05 00 00 31 31 37 33 32 05 00 00 31 31
+ 37 34 30 05 00 00 31 31 37 34 31 05 00 00 31 31
+ 37 34 34 19 00 00 48 65 61 64 20 4F 70 65 72 61
+ 74 69 6F 6E 73 20 52 FC 73 63 68 6C 69 6B 2E 05
+ 00 00 31 31 37 34 35 14 00 00 47 72 6C 2E 20 43
+ 6F 73 74 20 41 63 63 6F 75 6E 74 69 6E 67 05 00
+ 00 31 31 37 34 37 05 00 00 31 31 37 35 31 05 00
+ 00 31 31 37 35 38 05 00 00 31 31 37 36 37 05 00
+ 00 31 31 37 37 33 05 00 00 31 31 37 37 37 05 00
+ 00 31 31 37 37 38 16 00 00 54 4C 20 52 61 75 6D
+ 62 65 77 69 72 74 73 63 68 61 66 74 75 6E 67 05
+ 00 00 31 31 37 38 34 05 00 00 31 31 37 38 37 05
+ 00 00 31 31 37 39 34 05 00 00 31 31 37 39 39 05
+ 00 00 31 31 38 30 30 05 00 00 31 31 38 30 31 05
+ 00 00 31 31 38 30 32 05 00 00 31 31 38 30 33 05
+ 00 00 31 31 38 30 34 05 00 00 31 31 38 31 39 05
+ 00 00 31 31 38 32 31 05 00 00 31 31 38 33 38 05
+ 00 00 31 31 38 35 32 17 00 00 4A 75 6E 69 6F 72
+ 20 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79 73
+ 74 05 00 00 31 31 38 35 35 18 00 00 48 65 61 64
+ 20 6F 66 20 52 69 73 6B 20 4D 65 61 73 2E 20 4D
+ 65 74 68 2E 05 00 00 31 31 38 35 36 14 00 00 47
+ 49 53 2F 46 6C 6F 6F 64 20 53 70 65 63 69 61 6C
+ 69 73 74 05 00 00 31 31 38 35 38 05 00 00 31 31
+ 38 36 32 10 00 00 46 6C 6F 6F 64 20 53 70 65 63
+ 69 61 6C 69 73 74 05 00 00 31 31 38 38 38 05 00
+ 00 31 31 38 39 34 05 00 00 31 31 38 39 39 05 00
+ 00 31 31 39 31 30 0D 00 00 48 65 61 64 20 6F 66
+ 20 4C 4E 2F 4E 4F 05 00 00 31 31 39 31 36 05 00
+ 00 31 31 39 32 33 05 00 00 31 31 39 33 31 05 00
+ 00 31 31 39 33 32 05 00 00 31 31 39 33 33 05 00
+ 00 31 31 39 34 36 05 00 00 31 31 39 35 30 09 00
+ 00 50 61 74 69 73 73 69 65 72 05 00 00 31 31 39
+ 35 31 05 00 00 31 31 39 35 36 19 00 00 42 72 61
+ 6E 64 4D 61 6E 61 67 65 72 20 43 6F 72 70 2E 43
+ 6F 6D 6D 75 6E 2E 05 00 00 31 31 39 36 37 15 00
+ 00 45 78 65 63 75 74 69 76 65 2D 48 6F 75 73 65
+ 6B 65 65 70 65 72 05 00 00 31 31 39 36 39 19 00
+ 00 52 65 73 74 2E 2B 42 61 6E 71 75 65 74 20 53
+ 65 72 76 69 63 65 20 4D 67 72 05 00 00 31 31 39
+ 37 30 05 00 00 31 31 39 37 31 05 00 00 31 31 39
+ 37 38 05 00 00 31 31 39 38 37 14 00 00 53 61 63
+ 68 62 65 61 72 62 65 69 74 65 72 20 4B 61 73 73
+ 65 05 00 00 31 31 39 39 35 05 00 00 31 31 39 39
+ 36 13 00 00 45 78 65 63 75 74 69 76 65 20 41 73
+ 73 69 73 74 61 6E 74 05 00 00 31 32 30 30 30 04
+ 00 00 34 35 36 34 04 00 00 34 35 37 31 04 00 00
+ 34 35 37 36 04 00 00 34 35 39 32 0F 00 00 45 78
+ 74 65 72 6E 65 72 20 4B 75 72 69 65 72 01 00 00
+ 48 04 00 00 34 35 39 35 04 00 00 34 36 30 34 04
+ 00 00 34 36 30 38 0F 00 00 52 75 6E 2D 6F 66 66
+ 20 4D 61 6E 61 67 65 72 04 00 00 34 36 31 38 04
+ 00 00 34 36 34 31 04 00 00 34 37 32 37 10 00 00
+ 4D 69 74 61 72 62 65 69 74 65 72 49 6E 20 52 57
+ 04 00 00 34 37 32 38 04 00 00 34 38 36 35 04 00
+ 00 34 39 31 31 16 00 00 53 70 65 7A 2E 20 45 72
+ 64 62 65 62 65 6E 2F 53 79 73 74 65 6D 65 04 00
+ 00 34 39 33 33 04 00 00 34 39 33 34 04 00 00 34
+ 39 33 35 04 00 00 34 39 33 38 04 00 00 34 39 35
+ 31 13 00 00 54 4C 20 53 69 63 68 65 72 68 65 69
+ 74 73 6C 6F 67 65 6E 04 00 00 34 39 35 38 04 00
+ 00 34 39 37 30 14 00 00 53 70 61 6E 69 73 63 68
+ FC 62 65 72 73 65 74 7A 65 72 69 6E 04 00 00 34
+ 39 37 32 16 00 00 44 65 70 75 74 79 20 47 50 4D
+ 20 45 6E 67 69 6E 65 65 72 69 6E 67 04 00 00 34
+ 39 39 36 14 00 00 53 65 72 76 69 63 65 6D 69 74
+ 61 72 62 65 69 74 65 72 69 6E 04 00 00 35 30 30
+ 34 11 00 00 46 69 6E 61 6E 63 69 61 6C 20 4F 66
+ 66 69 63 65 72 04 00 00 35 30 30 39 04 00 00 35
+ 30 31 32 02 00 00 4A 4B 04 00 00 35 30 32 34 19
+ 00 00 48 65 61 64 20 4D 61 72 6B 65 74 2E 26 41
+ 63 74 2E 20 53 75 70 70 6F 72 74 04 00 00 35 30
+ 32 36 17 00 00 55 57 20 46 61 63 75 6C 74 61 74
+ 69 76 65 20 43 61 73 75 61 6C 74 79 04 00 00 35
+ 30 33 31 17 00 00 54 65 61 6D 6C 65 69 74 65 72
+ 20 45 69 6E 67 61 6E 67 73 70 6F 73 74 04 00 00
+ 35 30 33 39 04 00 00 35 30 35 34 04 00 00 35 30
+ 36 30 16 00 00 44 69 76 2E 20 4F 70 2E 20 4F 66
+ 66 69 63 65 72 20 28 44 4F 4F 29 04 00 00 35 30
+ 36 38 18 00 00 42 4C 20 47 72 6F 75 70 20 4F 66
+ 66 69 63 65 20 53 65 72 76 69 63 65 73 04 00 00
+ 35 30 37 35 18 00 00 43 6F 2D 65 64 69 74 6F 72
+ 20 61 6E 64 20 64 61 74 61 20 73 70 65 63 2E 04
+ 00 00 35 30 38 39 0A 00 00 41 63 63 6F 75 6E 74
+ 61 6E 74 04 00 00 35 31 31 36 14 00 00 4D 61 6E
+ 61 67 65 6D 65 6E 74 20 41 73 73 69 73 74 61 6E
+ 74 04 00 00 35 31 33 34 12 00 00 52 69 73 69 6B
+ 6F 73 70 65 7A 69 61 6C 69 73 74 69 6E 04 00 00
+ 35 31 34 37 04 00 00 35 31 36 35 0C 00 00 46 61
+ 63 68 2D 45 78 70 65 72 74 65 04 00 00 35 31 38
+ 31 04 00 00 35 31 38 36 13 00 00 50 72 6F 6A 65
+ 63 74 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04 00
+ 00 35 32 30 37 04 00 00 35 32 30 39 11 00 00 52
+ 65 63 68 74 73 6B 6F 6E 73 75 6C 65 6E 74 69 6E
+ 04 00 00 35 32 31 35 04 00 00 35 32 31 39 04 00
+ 00 35 32 34 33 15 00 00 47 72 61 64 2E 44 65 76
+ 65 6C 2E 4D 67 72 2E 52 FC 73 63 68 2E 04 00 00
+ 35 32 35 31 19 00 00 53 79 73 74 65 6D 65 6E 74
+ 77 69 63 6B 6C 65 72 20 46 61 63 68 61 62 74 2E
+ 04 00 00 35 32 35 32 14 00 00 41 64 6D 69 6E 2E
+ 20 4D 69 74 61 72 62 65 69 74 65 72 69 6E 04 00
+ 00 35 32 36 33 0E 00 00 52 65 69 73 65 62 65 72
+ 61 74 65 72 69 6E 04 00 00 35 32 36 35 13 00 00
+ 54 72 61 69 6E 69 6E 67 20 43 6F 6E 73 75 6C 74
+ 61 6E 74 04 00 00 35 32 36 37 18 00 00 49 6E 66
+ 6F 72 6D 61 74 69 6F 6E 73 73 70 65 7A 69 61 6C
+ 69 73 74 69 6E 04 00 00 35 32 37 32 19 00 00 48
+ 65 61 64 20 6F 66 20 45 63 6F 6E 6F 6D 69 63 20
+ 52 65 73 65 61 72 63 68 04 00 00 35 32 38 32 11
+ 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 6D
+ 65 6E 74 04 00 00 35 32 38 33 04 00 00 35 32 39
+ 32 0C 00 00 52 65 69 73 65 62 65 72 61 74 65 72
+ 04 00 00 35 32 39 33 17 00 00 48 75 6D 61 6E 20
+ 52 65 73 6F 75 72 63 65 73 20 53 75 70 70 6F 72
+ 74 04 00 00 35 32 39 35 13 00 00 45 78 65 63 75
+ 74 69 76 65 20 53 65 63 72 65 74 61 72 79 04 00
+ 00 35 32 39 38 04 00 00 35 32 39 39 04 00 00 35
+ 33 30 33 14 00 00 54 65 61 6D 6C 65 69 74 65 72
+ 20 52 E9 63 2E 20 45 6E 67 65 04 00 00 35 33 30
+ 38 0B 00 00 41 73 73 69 73 74 65 6E 74 69 6E 04
+ 00 00 35 33 30 39 0D 00 00 50 6F 73 74 61 73 73
+ 69 73 74 65 6E 74 04 00 00 35 33 32 34 04 00 00
+ 35 33 33 31 04 00 00 35 33 34 31 13 00 00 44 65
+ 70 2E 20 48 65 61 64 20 53 65 63 72 65 74 61 72
+ 79 04 00 00 35 33 34 35 04 00 00 35 33 35 31 04
+ 00 00 35 33 35 33 0A 00 00 35 30 39 2D 33 34 35
+ 30 33 64 09 00 00 35 30 39 2D 33 34 35 30 33 09
+ 00 00 35 30 39 2D 33 34 35 30 34 09 00 00 35 30
+ 39 2D 33 34 35 30 35 09 00 00 35 30 39 2D 33 34
+ 35 30 36 09 00 00 35 30 39 2D 33 34 35 30 37 09
+ 00 00 35 30 39 2D 33 34 35 30 38 09 00 00 35 30
+ 39 2D 33 34 35 30 39 09 00 00 35 30 39 2D 33 34
+ 35 31 30 09 00 00 35 30 39 2D 33 34 35 31 31 09
+ 00 00 35 30 39 2D 33 34 35 31 32 09 00 00 35 30
+ 39 2D 33 34 35 31 33 09 00 00 35 30 39 2D 33 34
+ 35 31 34 09 00 00 35 30 39 2D 33 34 35 31 35 09
+ 00 00 35 30 39 2D 33 34 35 31 36 09 00 00 35 30
+ 39 2D 33 34 35 31 37 09 00 00 35 30 39 2D 33 34
+ 35 31 38 09 00 00 35 30 39 2D 33 34 35 31 39 09
+ 00 00 35 30 39 2D 33 34 35 32 30 09 00 00 35 30
+ 39 2D 33 34 35 32 31 09 00 00 35 30 39 2D 33 34
+ 35 32 32 09 00 00 35 30 39 2D 33 34 35 32 33 09
+ 00 00 35 30 39 2D 33 34 35 32 34 09 00 00 35 30
+ 39 2D 33 34 35 32 35 09 00 00 35 30 39 2D 33 34
+ 35 32 36 09 00 00 35 30 39 2D 33 34 35 32 37 09
+ 00 00 35 30 39 2D 33 34 35 32 38 09 00 00 35 30
+ 39 2D 33 34 35 32 39 09 00 00 35 30 39 2D 33 34
+ 35 33 30 09 00 00 35 30 39 2D 33 34 35 33 31 09
+ 00 00 35 30 39 2D 33 34 35 33 32 09 00 00 35 30
+ 39 2D 33 34 35 33 33 09 00 00 35 30 39 2D 33 34
+ 35 33 34 09 00 00 35 30 39 2D 33 34 35 33 35 09
+ 00 00 35 30 39 2D 33 34 35 33 36 09 00 00 35 30
+ 39 2D 33 34 35 33 37 09 00 00 35 30 39 2D 33 34
+ 35 33 38 09 00 00 35 30 39 2D 33 34 35 33 39 09
+ 00 00 35 30 39 2D 33 34 35 34 30 09 00 00 35 30
+ 39 2D 33 34 35 34 31 09 00 00 35 30 39 2D 33 34
+ 35 34 32 09 00 00 35 30 39 2D 33 34 35 34 33 09
+ 00 00 35 30 39 2D 33 34 35 34 34 09 00 00 35 30
+ 39 2D 33 34 35 34 35 09 00 00 35 30 39 2D 33 34
+ 35 34 36 09 00 00 35 30 39 2D 33 34 35 34 37 09
+ 00 00 35 30 39 2D 33 34 35 34 38 09 00 00 35 30
+ 39 2D 33 34 35 34 39 09 00 00 35 30 39 2D 33 34
+ 35 35 30 09 00 00 35 30 39 2D 33 34 35 35 31 09
+ 00 00 35 30 39 2D 33 34 35 35 32 09 00 00 35 30
+ 39 2D 33 34 35 35 33 09 00 00 35 30 39 2D 33 34
+ 35 35 34 09 00 00 35 30 39 2D 33 34 35 35 35 09
+ 00 00 35 30 39 2D 33 34 35 35 36 09 00 00 35 30
+ 39 2D 33 34 35 35 37 09 00 00 35 30 39 2D 33 34
+ 35 35 38 09 00 00 35 30 39 2D 33 34 35 35 39 09
+ 00 00 35 30 39 2D 33 34 35 36 30 09 00 00 35 30
+ 39 2D 33 34 35 36 31 09 00 00 35 30 39 2D 33 34
+ 35 36 32 09 00 00 35 30 39 2D 33 34 35 36 33 09
+ 00 00 35 30 39 2D 33 34 35 36 34 09 00 00 35 30
+ 39 2D 33 34 35 36 35 09 00 00 35 30 39 2D 33 34
+ 35 36 36 09 00 00 35 30 39 2D 33 34 35 36 37 09
+ 00 00 35 30 39 2D 33 34 35 36 38 09 00 00 35 30
+ 39 2D 33 34 35 36 39 09 00 00 35 30 39 2D 33 34
+ 35 37 30 09 00 00 35 30 39 2D 33 34 35 37 31 09
+ 00 00 35 30 39 2D 33 34 35 37 32 09 00 00 35 30
+ 39 2D 33 34 35 37 33 09 00 00 35 30 39 2D 33 34
+ 35 37 34 09 00 00 35 30 39 2D 33 34 35 37 35 09
+ 00 00 35 30 39 2D 33 34 35 37 36 09 00 00 35 30
+ 39 2D 33 34 35 37 37 09 00 00 35 30 39 2D 33 34
+ 35 37 38 09 00 00 35 30 39 2D 33 34 35 37 39 09
+ 00 00 35 30 39 2D 33 34 35 38 30 09 00 00 35 30
+ 39 2D 33 34 35 38 31 09 00 00 35 30 39 2D 33 34
+ 35 38 32 09 00 00 35 30 39 2D 33 34 35 38 33 09
+ 00 00 35 30 39 2D 33 34 35 38 34 09 00 00 35 30
+ 39 2D 33 34 35 38 35 09 00 00 35 30 39 2D 33 34
+ 35 38 36 09 00 00 35 30 39 2D 33 34 35 38 37 09
+ 00 00 35 30 39 2D 33 34 35 38 38 09 00 00 35 30
+ 39 2D 33 34 35 38 39 09 00 00 35 30 39 2D 33 34
+ 35 39 30 09 00 00 35 30 39 2D 33 34 35 39 31 09
+ 00 00 35 30 39 2D 33 34 35 39 32 09 00 00 35 30
+ 39 2D 33 34 35 39 33 09 00 00 35 30 39 2D 33 34
+ 35 39 34 09 00 00 35 30 39 2D 33 34 35 39 35 09
+ 00 00 35 30 39 2D 33 34 35 39 36 09 00 00 35 30
+ 39 2D 33 34 35 39 37 09 00 00 35 30 39 2D 33 34
+ 35 39 38 09 00 00 35 30 39 2D 33 34 35 39 39 09
+ 00 00 35 30 39 2D 33 34 36 30 30 09 00 00 35 30
+ 39 2D 33 34 36 30 31 09 00 00 35 30 39 2D 33 34
+ 36 30 32 09 00 00 35 30 39 2D 33 34 36 30 33 09
+ 00 00 35 30 39 2D 33 34 36 30 34 09 00 00 35 30
+ 39 2D 33 34 36 30 35 09 00 00 35 30 39 2D 33 34
+ 36 30 36 09 00 00 35 30 39 2D 33 34 36 30 37 09
+ 00 00 35 30 39 2D 33 34 36 30 38 09 00 00 35 30
+ 39 2D 33 34 36 30 39 09 00 00 35 30 39 2D 33 34
+ 36 31 30 09 00 00 35 30 39 2D 33 34 36 31 31 09
+ 00 00 35 30 39 2D 33 34 36 31 32 09 00 00 35 30
+ 39 2D 33 34 36 31 33 09 00 00 35 30 39 2D 33 34
+ 36 31 34 09 00 00 35 30 39 2D 33 34 36 31 35 09
+ 00 00 35 30 39 2D 33 34 36 31 36 09 00 00 35 30
+ 39 2D 33 34 36 31 37 09 00 00 35 30 39 2D 33 34
+ 36 31 38 09 00 00 35 30 39 2D 33 34 36 31 39 09
+ 00 00 35 30 39 2D 33 34 36 32 30 09 00 00 35 30
+ 39 2D 33 34 36 32 31 09 00 00 35 30 39 2D 33 34
+ 36 32 32 09 00 00 35 30 39 2D 33 34 36 32 33 09
+ 00 00 35 30 39 2D 33 34 36 32 34 09 00 00 35 30
+ 39 2D 33 34 36 32 35 09 00 00 35 30 39 2D 33 34
+ 36 32 36 09 00 00 35 30 39 2D 33 34 36 32 37 09
+ 00 00 35 30 39 2D 33 34 36 32 38 09 00 00 35 30
+ 39 2D 33 34 36 32 39 09 00 00 35 30 39 2D 33 34
+ 36 33 30 09 00 00 35 30 39 2D 33 34 36 33 31 09
+ 00 00 35 30 39 2D 33 34 36 33 32 09 00 00 35 30
+ 39 2D 33 34 36 33 33 09 00 00 35 30 39 2D 33 34
+ 36 33 34 09 00 00 35 30 39 2D 33 34 36 33 35 09
+ 00 00 35 30 39 2D 33 34 36 33 36 09 00 00 35 30
+ 39 2D 33 34 36 33 37 09 00 00 35 30 39 2D 33 34
+ 36 33 38 09 00 00 35 30 39 2D 33 34 36 33 39 09
+ 00 00 35 30 39 2D 33 34 36 34 30 09 00 00 35 30
+ 39 2D 33 34 36 34 31 09 00 00 35 30 39 2D 33 34
+ 36 34 32 09 00 00 35 30 39 2D 33 34 36 34 33 09
+ 00 00 35 30 39 2D 33 34 36 34 34 09 00 00 35 30
+ 39 2D 33 34 36 34 35 09 00 00 35 30 39 2D 33 34
+ 36 34 36 09 00 00 35 30 39 2D 33 34 36 34 37 09
+ 00 00 35 30 39 2D 33 34 36 34 38 09 00 00 35 30
+ 39 2D 33 34 36 34 39 09 00 00 35 30 39 2D 33 34
+ 36 35 30 09 00 00 35 30 39 2D 33 34 36 35 31 09
+ 00 00 35 30 39 2D 33 34 36 35 32 09 00 00 35 30
+ 39 2D 33 34 36 35 33 09 00 00 35 30 39 2D 33 34
+ 36 35 34 03 00 00 73 64 66 0D 00 00 6D 79 20 73
+ 75 70 65 72 76 69 73 6F 72 01 00 00 3F 08 00 00
+ 78 78 78 79 79 79 32 33 0E 00 00 34 31 20 31 20
+ 78 78 78 20 39 39 20 39 39 08 00 00 75 6E 68 6B
+ 6E 6F 77 6E 05 00 00 68 65 75 74 65 0A 00 00 74
+ 68 69 73 20 6D 6F 6E 74 68 11 00 00 6D 79 20 72
+ 65 70 6F 72 74 69 6E 67 20 75 6E 69 74 05 00 00
+ 49 74 61 6C 79 0C 00 00 75 73 64 20 33 33 33 33
+ 33 2C 33 34 13 00 00 75 73 64 20 33 33 33 34 20
+ 2B 20 47 50 44 20 33 33 34 35 06 00 00 6B 65 69
+ 6E 65 72 07 00 00 33 31 2E 32 2E 36 33 03 00 00
+ 20 43 48 04 00 00 38 34 38 31 04 00 00 38 34 38
+ 34 04 00 00 38 34 39 31 04 00 00 38 34 39 33 02
+ 00 00 53 56 04 00 00 38 34 39 34 19 00 00 44 65
+ 70 2E 48 65 61 64 20 6F 66 20 49 6E 74 65 72 6C
+ 69 6E 65 20 4D 67 74 04 00 00 38 35 30 30 04 00
+ 00 38 35 30 35 04 00 00 38 35 31 33 04 00 00 38
+ 35 31 34 04 00 00 38 35 31 37 04 00 00 38 35 31
+ 38 04 00 00 38 35 32 38 04 00 00 38 35 32 39 04
+ 00 00 38 35 33 30 04 00 00 38 35 33 33 04 00 00
+ 38 35 33 34 04 00 00 38 35 34 31 04 00 00 38 35
+ 34 33 04 00 00 38 35 34 35 15 00 00 53 70 65 63
+ 69 61 6C 69 73 74 20 65 2D 43 6F 6D 6D 65 72 63
+ 65 04 00 00 38 35 34 36 17 00 00 46 61 63 68 72
+ 65 66 65 72 65 6E 74 69 6E 20 43 61 73 75 61 6C
+ 74 79 04 00 00 38 35 34 38 03 00 00 5A 57 44 04
+ 00 00 38 35 35 30 04 00 00 38 35 35 32 14 00 00
+ 46 69 6E 61 6E 63 69 61 6C 20 41 63 63 6F 75 6E
+ 74 61 6E 74 04 00 00 38 35 35 36 04 00 00 38 35
+ 35 38 04 00 00 38 35 36 33 04 00 00 38 35 37 36
+ 03 00 00 49 54 4C 04 00 00 38 35 38 32 04 00 00
+ 38 35 38 37 13 00 00 53 70 65 7A 69 61 6C 69 73
+ 74 20 45 72 64 62 65 62 65 6E 03 00 00 45 53 50
+ 04 00 00 38 35 39 37 04 00 00 38 36 30 32 03 00
+ 00 46 52 46 04 00 00 38 36 30 37 04 00 00 38 36
+ 30 38 04 00 00 38 36 31 36 03 00 00 43 4E 59 04
+ 00 00 38 36 32 30 03 00 00 48 4B 44 04 00 00 38
+ 36 32 32 04 00 00 38 36 32 37 12 00 00 65 2D 61
+ 6C 6C 69 61 6E 63 65 20 6D 61 6E 61 67 65 72 03
+ 00 00 4B 52 57 04 00 00 38 36 33 33 04 00 00 38
+ 36 33 38 0D 00 00 48 65 61 64 20 6F 66 20 4C 45
+ 2F 42 49 04 00 00 38 36 34 30 04 00 00 38 36 34
+ 35 03 00 00 54 57 44 04 00 00 38 36 34 36 04 00
+ 00 38 36 36 33 13 00 00 50 72 6F 6A 65 6B 74 2D
+ 41 73 73 69 73 74 65 6E 74 69 6E 04 00 00 38 36
+ 36 34 04 00 00 38 36 36 36 04 00 00 38 36 36 39
+ 04 00 00 38 36 37 37 0F 00 00 4C 69 66 65 20 4D
+ 61 6E 61 67 65 72 20 48 4B 04 00 00 38 36 38 32
+ 18 00 00 4D 65 6D 62 65 72 20 45 78 65 63 75 74
+ 69 76 65 20 54 65 61 6D 20 45 55 02 00 00 4C 4C
+ 04 00 00 38 36 39 36 0B 00 00 4B 56 2D 4C 65 68
+ 72 6C 69 6E 67 04 00 00 38 36 39 37 04 00 00 38
+ 36 39 39 04 00 00 38 37 30 30 04 00 00 38 37 30
+ 31 03 00 00 44 45 4D 04 00 00 38 37 30 32 04 00
+ 00 38 37 30 34 04 00 00 38 37 30 35 03 00 00 43
+ 4F 50 04 00 00 38 37 30 36 04 00 00 38 37 30 37
+ 04 00 00 38 37 31 30 04 00 00 38 37 31 32 0F 00
+ 00 4D 65 64 69 61 20 41 73 73 69 73 74 61 6E 74
+ 04 00 00 38 37 31 36 04 00 00 38 37 31 37 13 00
+ 00 48 65 61 64 20 6F 66 20 4C 41 2F 4C 45 2F 4C
+ 4E 20 49 54 03 00 00 42 45 46 04 00 00 38 37 32
+ 31 13 00 00 4C 65 69 74 65 72 20 52 65 63 68 74
+ 73 64 69 65 6E 73 74 04 00 00 38 37 32 37 04 00
+ 00 38 37 32 38 04 00 00 38 37 34 32 03 00 00 56
+ 45 42 04 00 00 38 37 34 33 04 00 00 38 37 34 34
+ 04 00 00 38 37 35 39 16 00 00 53 70 65 7A 69 61
+ 6C 69 73 74 20 53 74 75 72 6D 2F 4D 65 74 65 6F
+ 04 00 00 38 37 36 30 04 00 00 38 37 36 32 04 00
+ 00 38 37 36 38 04 00 00 38 37 37 35 04 00 00 38
+ 37 37 39 04 00 00 38 37 38 36 19 00 00 48 65 61
+ 64 20 4D 65 64 65 78 20 4D 6F 6E 69 74 6F 72 69
+ 6E 67 55 6E 69 74 04 00 00 38 37 38 37 17 00 00
+ 48 65 61 64 20 52 69 73 6B 20 4D 67 6D 74 20 26
+ 20 4D 61 67 6E 75 6D 04 00 00 38 38 31 37 04 00
+ 00 38 38 32 33 04 00 00 38 38 33 34 04 00 00 38
+ 38 33 38 04 00 00 38 38 33 39 04 00 00 38 38 35
+ 34 16 00 00 48 65 61 64 20 6F 66 20 47 6C 6F 62
+ 61 6C 20 43 6C 69 65 6E 74 73 04 00 00 38 38 36
+ 34 04 00 00 38 38 36 35 04 00 00 38 38 36 38 19
+ 00 00 43 6C 61 69 6D 73 2F 50 6F 72 74 66 6F 6C
+ 69 6F 20 41 73 73 2E 4D 61 6E 2E 04 00 00 38 38
+ 37 38 14 00 00 54 65 61 6D 6C 65 69 74 65 72 69
+ 6E 20 53 65 72 76 69 63 65 04 00 00 38 38 39 32
+ 04 00 00 38 38 39 33 19 00 00 47 72 6C 2E 20 54
+ 65 6C 65 6D 61 74 69 6B 2F 41 56 2D 54 65 63 68
+ 6E 69 6B 04 00 00 38 38 39 34 0D 00 00 54 65 6C
+ 65 6D 61 74 69 6B 65 72 69 6E 04 00 00 38 38 39
+ 37 04 00 00 38 39 30 30 13 00 00 50 72 6F 67 72
+ 61 6D 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04 00
+ 00 38 39 30 35 03 00 00 52 55 52 04 00 00 38 39
+ 30 37 10 00 00 47 65 62 E4 75 64 65 74 65 63 68
+ 6E 69 6B 65 72 04 00 00 38 39 31 30 04 00 00 38
+ 39 31 32 15 00 00 53 74 6F 72 61 67 65 20 41 64
+ 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 38 39
+ 32 35 04 00 00 38 39 33 37 14 00 00 52 65 67 69
+ 6F 6E 61 6C 20 49 47 50 20 4D 61 6E 61 67 65 72
+ 04 00 00 38 39 33 38 04 00 00 38 39 34 31 04 00
+ 00 38 39 34 33 04 00 00 38 39 34 35 04 00 00 38
+ 39 34 38 04 00 00 38 39 35 38 04 00 00 38 39 36
+ 33 07 00 00 41 75 64 69 74 6F 72 04 00 00 38 39
+ 36 34 04 00 00 39 30 38 30 18 00 00 49 6E 76 2E
+ 20 50 72 6F 66 2E 2F 4C 65 67 61 6C 20 43 6F 75
+ 6E 73 65 6C 04 00 00 39 30 38 31 04 00 00 39 30
+ 38 35 04 00 00 39 31 30 37 0F 00 00 50 61 79 72
+ 6F 6C 6C 20 53 75 70 70 6F 72 74 04 00 00 39 31
+ 31 34 11 00 00 41 73 73 69 73 74 61 6E 74 20 41
+ 63 74 75 61 72 79 03 00 00 35 38 34 04 00 00 39
+ 31 31 38 04 00 00 39 31 32 31 04 00 00 39 31 34
+ 35 16 00 00 41 73 73 2E 20 46 69 6E 61 6E 63 69
+ 61 6C 20 4F 66 66 69 63 65 72 04 00 00 39 31 34
+ 36 0C 00 00 4B 6F 63 68 6C 65 68 72 6C 69 6E 67
+ 04 00 00 39 31 34 37 04 00 00 39 31 34 38 04 00
+ 00 39 31 34 39 04 00 00 39 31 35 35 04 00 00 39
+ 31 35 39 04 00 00 39 31 37 31 04 00 00 39 31 37
+ 35 18 00 00 53 70 65 63 69 61 6C 20 41 73 73 69
+ 67 2E 26 4C 6F 67 69 73 74 69 63 73 04 00 00 39
+ 31 38 35 04 00 00 39 31 38 36 04 00 00 39 31 38
+ 39 04 00 00 39 32 30 35 04 00 00 39 32 30 37 19
+ 00 00 44 65 70 75 74 79 20 43 68 69 65 66 20 4D
+ 65 64 69 63 61 6C 20 4F 66 66 2E 04 00 00 39 32
+ 35 35 16 00 00 48 65 61 64 20 6F 66 20 49 6E 74
+ 65 72 6C 69 6E 65 20 4D 67 74 2E 04 00 00 39 33
+ 30 33 04 00 00 39 33 31 37 04 00 00 39 33 32 35
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2
new file mode 100755
index 0000000000..05aa7e9dc3
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR2
@@ -0,0 +1,515 @@
+ 3C 00 20 20 04 00 00 39 33 34 35 04 00 00 39 33
+ 35 39 10 00 00 48 65 61 64 20 6F 66 20 49 41 20
+ 4D 67 6D 74 2E 04 00 00 39 34 33 31 04 00 00 39
+ 34 34 35 0A 00 00 49 54 20 53 75 70 70 6F 72 74
+ 04 00 00 39 34 34 39 04 00 00 39 34 36 37 04 00
+ 00 39 34 38 35 04 00 00 39 34 38 37 19 00 00 47
+ 72 6C 2E 20 46 69 6E 61 6E 63 69 61 6C 20 41 63
+ 63 6F 75 6E 74 69 6E 67 04 00 00 39 34 38 39 04
+ 00 00 39 35 30 31 04 00 00 39 35 30 33 04 00 00
+ 39 35 30 39 11 00 00 54 65 61 6D 6C 65 69 74 65
+ 72 20 55 6D 7A FC 67 65 04 00 00 39 35 31 33 04
+ 00 00 39 35 32 37 04 00 00 39 35 35 35 04 00 00
+ 39 35 37 31 04 00 00 39 35 37 33 04 00 00 39 35
+ 39 39 04 00 00 39 36 30 37 04 00 00 39 36 35 37
+ 19 00 00 50 6F 72 74 75 67 69 65 73 69 73 63 68
+ FC 62 65 72 73 65 74 7A 65 72 69 6E 04 00 00 39
+ 36 35 39 0B 00 00 50 52 2D 52 65 64 61 6B 74 6F
+ 72 04 00 00 39 36 38 37 18 00 00 55 6D 77 65 6C
+ 74 73 63 68 75 74 7A 62 65 61 75 66 74 72 61 67
+ 74 65 72 04 00 00 39 37 30 35 19 00 00 48 65 61
+ 64 20 54 65 63 68 6E 2E 20 53 75 70 70 6F 72 74
+ 20 4C 41 2F 49 54 04 00 00 39 37 31 33 04 00 00
+ 39 37 32 33 16 00 00 48 65 61 6C 74 68 20 43 61
+ 72 65 20 53 70 65 63 69 61 6C 69 73 74 04 00 00
+ 39 37 33 31 04 00 00 39 37 34 39 0C 00 00 52 69
+ 73 6B 20 41 6E 61 6C 79 73 74 04 00 00 39 37 35
+ 35 04 00 00 39 37 35 39 04 00 00 39 37 36 33 04
+ 00 00 39 38 32 35 14 00 00 4D 61 72 6B 65 74 69
+ 6E 67 20 52 FC 73 63 68 6C 69 6B 6F 6E 04 00 00
+ 39 38 33 35 16 00 00 46 69 6E 61 6E 63 2E 53 6F
+ 6C 75 74 69 6F 6E 73 20 43 6F 6E 73 2E 04 00 00
+ 39 38 33 39 04 00 00 39 38 36 35 04 00 00 39 38
+ 36 39 19 00 00 50 72 6F 6A 65 6B 74 6C 2E 20 46
+ 69 6E 2E 20 41 63 63 6F 75 6E 74 69 6E 67 04 00
+ 00 39 38 38 33 13 00 00 48 52 2D 4D 49 53 20 55
+ 73 65 72 20 53 75 70 70 6F 72 74 04 00 00 39 38
+ 38 35 12 00 00 48 65 61 64 20 6F 66 20 43 6C 61
+ 69 6D 73 20 4D 67 74 04 00 00 39 38 38 37 04 00
+ 00 39 38 39 39 03 00 00 50 4C 5A 04 00 00 39 39
+ 31 33 04 00 00 39 39 32 30 03 00 00 53 47 44 04
+ 00 00 39 39 32 32 04 00 00 39 39 33 30 04 00 00
+ 39 39 35 31 0E 00 00 4D 44 2D 41 73 73 69 73 74
+ 65 6E 74 69 6E 04 00 00 39 39 35 33 04 00 00 39
+ 39 36 31 19 00 00 47 72 6F 75 70 20 50 72 6F 64
+ 2E 4D 61 6E 61 67 2E 43 61 73 75 61 6C 74 79 0D
+ 00 00 4E 65 77 20 59 6F 72 6B 2C 20 55 53 41 04
+ 00 00 39 39 36 33 04 00 00 39 39 37 33 04 00 00
+ 39 39 37 35 04 00 00 39 39 38 36 05 00 00 31 30
+ 30 31 38 05 00 00 31 30 30 32 34 05 00 00 31 30
+ 30 32 36 05 00 00 31 30 30 32 39 05 00 00 31 30
+ 30 33 31 05 00 00 31 30 30 34 33 19 00 00 50 72
+ 6F 6A 27 6D 69 74 61 72 62 65 69 74 65 72 20 46
+ 61 63 68 61 62 74 2E 05 00 00 31 30 30 34 37 05
+ 00 00 31 30 30 35 39 05 00 00 31 30 30 36 33 05
+ 00 00 31 30 30 36 39 05 00 00 31 30 30 37 31 03
+ 00 00 4A 50 59 05 00 00 31 30 30 37 33 05 00 00
+ 31 30 30 37 35 19 00 00 47 72 75 70 70 65 6E 6C
+ 65 69 74 65 72 20 50 6F 73 74 64 69 65 6E 73 74
+ 65 05 00 00 31 30 30 38 31 14 00 00 54 4C 20 47
+ 65 62 E4 75 64 65 6D 61 6E 61 67 65 6D 65 6E 74
+ 05 00 00 31 30 30 38 33 11 00 00 43 6C 61 69 6D
+ 73 20 43 6F 6E 73 75 6C 74 61 6E 74 05 00 00 31
+ 30 30 39 31 05 00 00 31 30 30 39 35 05 00 00 31
+ 30 30 39 39 05 00 00 31 30 31 37 32 12 00 00 47
+ 72 75 70 70 65 6E 6C 65 69 74 65 72 20 46 69 62
+ 75 05 00 00 31 30 31 38 32 05 00 00 31 30 31 38
+ 38 05 00 00 31 30 31 39 34 12 00 00 45 69 6E 72
+ 69 63 68 74 75 6E 67 73 70 6C 61 6E 65 72 05 00
+ 00 31 30 31 39 36 05 00 00 31 30 32 30 30 05 00
+ 00 31 30 32 30 34 0D 00 00 49 47 50 20 41 73 73
+ 6F 63 69 61 74 65 05 00 00 31 30 32 33 36 0F 00
+ 00 50 72 6F 6A 65 63 74 20 4F 66 66 69 63 65 72
+ 05 00 00 31 30 32 36 30 05 00 00 31 30 32 36 32
+ 03 00 00 4E 4C 47 05 00 00 31 30 32 38 30 05 00
+ 00 31 30 32 39 38 05 00 00 31 30 33 32 38 05 00
+ 00 31 30 33 33 34 0E 00 00 44 65 70 75 74 79 20
+ 48 65 61 64 20 43 58 05 00 00 31 30 33 33 38 05
+ 00 00 31 30 33 35 30 05 00 00 31 30 33 37 30 05
+ 00 00 31 30 33 37 34 13 00 00 4C 65 69 74 65 72
+ 20 45 69 6E 6B 61 75 66 20 53 52 47 53 05 00 00
+ 31 30 33 39 32 15 00 00 41 62 74 65 69 6C 75 6E
+ 67 73 2D 53 65 6B 72 65 74 E4 72 69 6E 05 00 00
+ 31 30 33 39 34 05 00 00 31 30 33 39 36 05 00 00
+ 31 30 33 39 38 15 00 00 41 63 63 6F 75 6E 74 61
+ 6E 74 20 47 72 6F 75 70 20 52 65 70 2E 05 00 00
+ 31 30 34 30 30 05 00 00 31 30 34 33 31 05 00 00
+ 31 30 35 30 37 05 00 00 31 30 35 32 37 05 00 00
+ 31 30 35 35 32 05 00 00 31 30 35 35 36 05 00 00
+ 31 30 35 35 37 18 00 00 43 68 69 65 66 20 41 63
+ 63 6F 75 6E 74 69 6E 67 20 4F 66 66 69 63 65 72
+ 12 00 00 4D 61 6E 2E 20 4C 65 67 61 6C 20 43 6F
+ 75 6E 73 65 6C 04 00 00 34 31 33 32 11 00 00 50
+ 4C 20 4B 6F 6E 73 6F 6C 69 64 69 65 72 75 6E 67
+ 04 00 00 34 31 33 33 04 00 00 34 31 33 34 17 00
+ 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63 65 73
+ 20 4D 61 6E 61 67 65 72 04 00 00 34 31 35 30 04
+ 00 00 34 31 35 37 04 00 00 34 31 36 37 13 00 00
+ 53 65 6E 2E 20 46 69 6E 61 6E 63 69 61 6C 20 41
+ 63 63 2E 04 00 00 34 32 30 35 04 00 00 34 32 30
+ 38 13 00 00 53 65 63 72 65 74 61 72 79 2F 41 73
+ 73 69 73 74 61 6E 74 04 00 00 34 32 31 39 04 00
+ 00 34 32 32 37 04 00 00 34 32 32 39 10 00 00 43
+ 6F 6D 6D 2E 20 53 70 65 63 69 61 6C 69 73 74 04
+ 00 00 34 32 33 36 19 00 00 44 65 70 2E 48 65 61
+ 64 20 52 4E 2F 48 65 61 64 20 43 61 74 53 75 70
+ 70 2E 04 00 00 34 32 33 38 04 00 00 34 32 34 32
+ 04 00 00 34 32 34 37 04 00 00 34 32 35 35 04 00
+ 00 34 32 36 32 11 00 00 44 65 70 75 74 79 20 48
+ 65 61 64 20 6F 66 20 49 46 04 00 00 34 32 36 39
+ 16 00 00 53 65 72 76 69 63 65 66 61 63 68 6D 69
+ 74 61 72 62 65 69 74 65 72 04 00 00 34 32 37 37
+ 09 00 00 43 68 61 75 66 66 65 75 72 04 00 00 34
+ 32 38 33 0E 00 00 52 E9 63 65 70 74 69 6F 6E 69
+ 73 74 69 6E 04 00 00 34 32 38 34 02 00 00 4D 4D
+ 04 00 00 34 32 38 39 13 00 00 53 65 6E 69 6F 72
+ 20 52 69 73 6B 20 41 6E 61 6C 79 73 74 04 00 00
+ 34 33 30 36 04 00 00 34 33 30 39 19 00 00 48 65
+ 61 64 20 6F 66 20 43 6F 6E 74 72 61 63 74 20 53
+ 65 72 76 69 63 65 73 04 00 00 34 33 31 36 15 00
+ 00 43 6F 6D 6D 2E 20 41 73 73 2E 20 52 FC 73 63
+ 68 6C 69 6B 6F 6E 04 00 00 34 33 33 31 04 00 00
+ 34 33 33 32 18 00 00 47 72 6F 75 70 20 43 6F 6D
+ 70 6C 69 61 6E 63 65 20 4F 66 66 69 63 65 72 04
+ 00 00 34 33 34 32 02 00 00 56 4F 04 00 00 34 33
+ 34 35 10 00 00 53 65 6E 69 6F 72 20 45 63 6F 6E
+ 6F 6D 69 73 74 04 00 00 34 33 34 36 16 00 00 47
+ 72 6C 2E 20 47 65 6E 65 72 61 6C 20 4C 65 64 67
+ 65 72 20 5A 48 04 00 00 34 33 34 39 04 00 00 34
+ 33 35 32 10 00 00 4D 65 64 69 61 20 43 6F 6E 73
+ 75 6C 74 61 6E 74 04 00 00 34 33 35 39 14 00 00
+ 47 72 61 66 69 73 63 68 65 20 53 61 63 68 62 65
+ 61 72 62 2E 02 00 00 4C 48 04 00 00 34 33 36 32
+ 14 00 00 50 72 6F 6A 65 63 74 73 20 53 52 41 20
+ 48 6F 6C 64 69 6E 67 04 00 00 34 33 36 39 04 00
+ 00 34 33 38 34 0D 00 00 41 63 63 6F 75 6E 74 69
+ 6E 67 20 50 56 04 00 00 34 33 39 39 04 00 00 34
+ 34 30 32 04 00 00 34 34 31 31 01 00 00 44 04 00
+ 00 34 34 32 32 04 00 00 34 34 32 39 04 00 00 34
+ 34 35 36 04 00 00 34 34 35 37 12 00 00 54 65 63
+ 68 6E 2E 20 4D 69 74 61 72 62 65 69 74 65 72 04
+ 00 00 34 34 35 38 16 00 00 54 65 61 6D 6C 65 69
+ 74 65 72 20 53 70 6F 72 74 61 6E 6C 61 67 65 04
+ 00 00 34 34 36 32 16 00 00 54 65 61 6D 6C 65 69
+ 74 65 72 69 6E 20 52 E9 63 65 70 74 69 6F 6E 04
+ 00 00 34 34 36 34 04 00 00 34 34 36 39 04 00 00
+ 34 34 37 39 15 00 00 47 72 6C 2E 20 42 65 74 72
+ 69 65 62 20 41 64 6C 69 73 77 69 6C 04 00 00 34
+ 34 38 30 04 00 00 34 34 38 31 11 00 00 54 4C 20
+ 42 65 74 72 69 65 62 73 64 69 65 6E 73 74 04 00
+ 00 34 34 38 32 12 00 00 42 65 74 72 69 65 62 73
+ 65 6C 65 6B 74 72 69 6B 65 72 04 00 00 34 34 39
+ 32 11 00 00 45 78 65 63 75 74 69 76 65 20 53 75
+ 70 70 6F 72 74 04 00 00 34 35 33 35 04 00 00 34
+ 35 34 30 04 00 00 34 35 36 30 19 00 00 4C 65 61
+ 72 6E 69 6E 67 26 44 65 76 65 6C 6F 70 2E 20 4D
+ 61 6E 61 67 65 72 06 00 00 6D 79 6E 61 6D 65 0B
+ 00 00 6D 79 66 69 72 73 74 6E 61 6D 65 04 00 00
+ 37 38 37 35 19 00 00 53 65 6D 69 6E 61 72 20 26
+ 20 54 72 61 69 6E 69 6E 67 20 43 6F 6F 72 64 2E
+ 04 00 00 37 38 37 37 19 00 00 47 72 6F 75 70 20
+ 4D 61 6E 61 67 65 6D 65 6E 74 20 44 65 76 65 6C
+ 6F 70 2E 03 00 00 31 33 37 04 00 00 37 38 38 38
+ 04 00 00 37 38 39 37 03 00 00 5A 41 52 04 00 00
+ 37 39 31 32 18 00 00 48 65 61 64 20 6F 66 20 49
+ 6E 66 6F 72 6D 61 74 69 6F 6E 20 4D 67 6D 74 04
+ 00 00 37 39 31 35 04 00 00 37 39 31 39 04 00 00
+ 37 39 34 36 04 00 00 37 39 35 32 04 00 00 37 39
+ 36 36 04 00 00 37 39 39 36 04 00 00 38 30 30 32
+ 04 00 00 38 30 30 36 04 00 00 38 30 30 37 04 00
+ 00 38 30 31 30 04 00 00 38 30 33 33 04 00 00 38
+ 30 33 38 0B 00 00 54 65 72 6D 69 6E 6F 6C 6F 67
+ 65 04 00 00 38 30 34 32 04 00 00 38 30 34 34 04
+ 00 00 38 30 35 32 04 00 00 38 30 35 33 04 00 00
+ 38 30 35 39 04 00 00 38 30 36 35 0B 00 00 56 52
+ 2D 53 65 6B 72 65 74 E4 72 04 00 00 38 30 38 32
+ 04 00 00 38 30 38 35 04 00 00 38 30 38 36 19 00
+ 00 50 6F 72 74 75 67 69 65 73 69 73 63 68 2D 55
+ 65 62 65 72 73 65 74 7A 65 72 04 00 00 38 30 38
+ 38 04 00 00 38 30 39 35 12 00 00 4F 70 65 72 61
+ 74 69 6F 6E 73 20 4D 61 6E 61 67 65 72 04 00 00
+ 38 31 30 31 18 00 00 47 72 6C 2E 20 52 61 75 6D
+ 62 65 77 69 72 74 73 63 68 61 66 74 75 6E 67 04
+ 00 00 38 31 30 34 04 00 00 38 31 30 35 04 00 00
+ 38 31 30 37 13 00 00 48 65 61 64 20 6F 66 20 46
+ 6C 6F 6F 64 20 47 72 6F 75 70 04 00 00 38 31 30
+ 38 04 00 00 38 31 31 33 04 00 00 38 31 31 37 04
+ 00 00 38 31 31 38 03 00 00 35 33 30 04 00 00 38
+ 31 32 32 11 00 00 54 65 63 68 6E 69 63 61 6C 20
+ 53 75 70 70 6F 72 74 04 00 00 38 31 33 39 04 00
+ 00 38 31 34 33 04 00 00 38 31 34 35 19 00 00 48
+ 65 61 64 20 6F 66 20 52 69 73 63 20 52 65 70 2F
+ 53 74 65 65 72 69 6E 67 04 00 00 38 31 34 37 04
+ 00 00 38 31 34 38 04 00 00 38 31 34 39 04 00 00
+ 38 31 35 30 04 00 00 38 31 35 34 04 00 00 38 31
+ 35 39 0D 00 00 43 6C 61 69 6D 73 20 45 78 70 65
+ 72 74 04 00 00 38 31 37 30 04 00 00 38 31 38 37
+ 18 00 00 48 65 61 64 20 6F 66 20 48 52 20 53 79
+ 73 74 65 6D 73 26 43 6F 6D 70 2E 04 00 00 38 31
+ 39 34 04 00 00 38 31 39 35 0C 00 00 49 54 2D 53
+ 75 70 70 6F 72 74 65 72 04 00 00 38 31 39 37 04
+ 00 00 38 31 39 38 0F 00 00 52 69 73 69 6B 6F 69
+ 6E 67 65 6E 69 65 75 72 04 00 00 38 32 30 39 04
+ 00 00 38 32 31 35 04 00 00 38 32 31 36 0D 00 00
+ 49 54 2D 53 70 65 63 69 61 6C 69 73 74 04 00 00
+ 38 32 32 37 18 00 00 53 61 63 68 62 2E 4B 75 6E
+ 64 65 6E 67 65 73 63 68 2E 2F 50 75 62 6C 2E 04
+ 00 00 38 32 33 30 04 00 00 38 32 33 34 04 00 00
+ 38 32 33 37 04 00 00 38 32 33 39 07 00 00 43 6F
+ 75 6E 74 72 79 08 00 00 44 69 76 69 73 69 6F 6E
+ 0B 00 00 44 61 74 65 4F 66 42 69 72 74 68 0B 00
+ 00 44 61 74 65 4F 66 45 6E 74 72 79 03 00 00 53
+ 65 78 08 00 00 46 75 6E 63 74 69 6F 6E 0A 00 00
+ 53 75 70 65 72 76 69 73 6F 72 08 00 00 43 75 72
+ 72 65 6E 63 79 03 00 00 33 32 34 02 00 00 43 48
+ 06 00 00 5A 75 72 69 63 68 01 00 00 50 02 00 00
+ 49 53 02 00 00 43 53 03 00 00 32 39 32 01 00 00
+ 4D 11 00 00 47 72 6C 2E 20 41 63 63 65 73 73 20
+ 4D 67 6D 74 2E 02 00 00 4E 6F 03 00 00 55 53 44
+ 01 00 00 30 02 00 00 50 45 03 00 00 32 39 38 16
+ 00 00 53 65 6E 69 6F 72 20 53 79 73 74 65 6D 20
+ 45 6E 67 69 6E 65 65 72 03 00 00 32 39 39 18 00
+ 00 4D 65 6D 62 65 72 20 45 78 65 63 75 74 69 76
+ 65 20 54 65 61 6D 20 49 54 01 00 00 4F 02 00 00
+ 52 47 02 00 00 54 54 03 00 00 33 31 32 0F 00 00
+ 54 65 6D 70 6F 72 61 72 79 20 73 74 61 66 66 01
+ 00 00 51 02 00 00 42 4F 01 00 00 32 17 00 00 47
+ 72 6F 75 70 20 4E 6F 6E 20 4C 69 66 65 20 52 65
+ 69 6E 73 75 72 2E 02 00 00 36 31 10 00 00 41 73
+ 73 69 73 74 65 6E 74 20 64 65 72 20 47 4C 01 00
+ 00 4A 02 00 00 46 52 02 00 00 52 41 02 00 00 38
+ 31 0E 00 00 53 65 6B 74 69 6F 6E 73 6C 65 69 74
+ 65 72 02 00 00 48 53 02 00 00 43 4F 03 00 00 31
+ 30 39 0F 00 00 50 61 79 72 6F 6C 6C 20 4D 61 6E
+ 61 67 65 72 03 00 00 31 34 30 02 00 00 49 45 03
+ 00 00 31 34 37 14 00 00 50 72 6F 6A 65 6B 74 2D
+ 42 65 61 75 66 74 72 61 67 74 65 72 02 00 00 52
+ 50 03 00 00 31 34 38 19 00 00 48 65 61 64 20 6F
+ 66 20 47 72 6F 75 70 20 50 4D 20 50 72 6F 70 65
+ 72 74 79 02 00 00 52 54 03 00 00 31 34 39 17 00
+ 00 53 65 6E 2E 20 50 72 6F 64 75 63 74 20 53 70
+ 65 63 69 61 6C 69 73 74 03 00 00 31 35 33 0B 00
+ 00 44 65 70 75 74 79 20 48 65 61 64 02 00 00 52
+ 4C 02 00 00 47 43 03 00 00 31 37 35 18 00 00 47
+ 72 70 20 43 6C 61 69 6D 73 20 26 20 43 6F 6E 74
+ 72 20 43 6F 6F 72 64 02 00 00 44 52 03 00 00 31
+ 37 37 12 00 00 47 72 6F 75 70 20 44 61 74 61 20
+ 4F 66 66 69 63 65 72 02 00 00 52 4E 02 00 00 52
+ 45 03 00 00 31 38 34 13 00 00 4C 65 69 74 65 72
+ 20 52 65 74 72 6F 2F 43 52 45 53 54 41 01 00 00
+ 46 02 00 00 4C 41 02 00 00 49 54 03 00 00 32 36
+ 32 17 00 00 53 65 6E 69 6F 72 20 41 70 70 6C 69
+ 63 2E 20 45 6E 67 69 6E 65 65 72 02 00 00 46 44
+ 03 00 00 32 36 35 03 00 00 32 36 37 02 00 00 4F
+ 50 03 00 00 32 36 38 12 00 00 50 72 6F 64 75 63
+ 74 69 6F 6E 20 50 6C 61 6E 6E 65 72 03 00 00 4D
+ 58 4E 02 00 00 4D 53 03 00 00 32 36 39 0F 00 00
+ 53 79 73 74 65 6D 20 45 6E 67 69 6E 65 65 72 03
+ 00 00 32 37 35 0D 00 00 49 54 2D 43 6F 6E 73 75
+ 6C 74 61 6E 74 03 00 00 32 38 30 02 00 00 49 4D
+ 03 00 00 32 38 31 03 00 00 42 52 4C 03 00 00 32
+ 38 36 0F 00 00 53 79 73 74 65 6D 20 42 65 74 72
+ 65 75 65 72 12 00 00 47 72 6C 2E 20 53 79 73 74
+ 65 6D 20 43 6F 6E 74 72 2E 03 00 00 33 32 36 02
+ 00 00 43 52 03 00 00 33 33 35 17 00 00 41 63 63
+ 6F 75 6E 74 61 6E 74 20 53 75 62 73 69 64 69 61
+ 72 69 65 73 02 00 00 4C 4F 03 00 00 33 33 39 0E
+ 00 00 41 4C 2D 41 73 73 69 73 74 65 6E 74 69 6E
+ 02 00 00 43 44 03 00 00 33 34 30 15 00 00 43 6F
+ 6E 73 75 6C 74 61 6E 74 20 4F 72 67 2E 20 54 6F
+ 6F 6C 73 03 00 00 33 34 34 02 00 00 44 45 03 00
+ 00 33 36 30 19 00 00 42 65 61 75 66 74 72 61 67
+ 74 65 72 20 4A 75 6E 69 6F 72 20 50 6F 77 65 72
+ 03 00 00 33 36 35 02 00 00 49 44 03 00 00 33 36
+ 37 0A 00 00 53 65 6B 72 65 74 E4 72 69 6E 02 00
+ 00 42 4C 03 00 00 33 37 35 17 00 00 42 65 74 72
+ 69 65 62 73 74 65 63 68 6E 69 6B 65 72 20 48 4C
+ 4B 4B 53 03 00 00 33 39 35 19 00 00 47 72 6C 2E
+ 53 74 61 62 73 74 65 6C 6C 65 20 53 69 63 68 65
+ 72 68 65 69 74 03 00 00 33 39 37 0F 00 00 50 6F
+ 73 74 61 73 73 69 73 74 65 6E 74 69 6E 03 00 00
+ 34 32 34 02 00 00 52 42 03 00 00 34 33 32 03 00
+ 00 34 35 36 19 00 00 48 65 61 64 20 6F 66 20 49
+ 6E 64 69 61 2F 4D 69 64 64 6C 65 20 45 61 73 74
+ 02 00 00 42 53 03 00 00 34 36 32 0D 00 00 48 65
+ 61 64 20 6F 66 20 4C 41 2F 42 53 02 00 00 4C 45
+ 02 00 00 41 53 03 00 00 34 36 33 09 00 00 53 65
+ 63 72 65 74 61 72 79 03 00 00 34 37 34 19 00 00
+ 41 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 20 53
+ 75 70 65 72 76 69 73 6F 72 02 00 00 4C 4E 03 00
+ 00 34 38 30 03 00 00 34 38 35 19 00 00 53 65 6E
+ 2E 20 55 6E 64 65 72 77 72 69 74 69 6E 67 20 43
+ 6F 6E 73 75 6C 74 03 00 00 43 4F 42 03 00 00 34
+ 38 36 02 00 00 46 53 03 00 00 34 38 37 19 00 00
+ 48 65 61 64 20 6F 66 20 46 69 6E 61 6E 63 2E 20
+ 53 6F 6C 75 74 69 6F 6E 73 03 00 00 35 30 36 03
+ 00 00 35 31 33 02 00 00 4E 4F 03 00 00 35 36 38
+ 16 00 00 53 65 6E 69 6F 72 20 41 63 63 6F 75 6E
+ 74 20 4D 61 6E 61 67 65 72 02 00 00 52 52 02 00
+ 00 52 4F 03 00 00 35 37 34 16 00 00 41 73 73 2E
+ 20 4F 70 65 72 61 74 69 6F 6E 73 20 43 6F 6F 72
+ 64 2E 03 00 00 35 37 39 03 00 00 36 30 30 03 00
+ 00 36 30 35 19 00 00 42 75 73 69 6E 65 73 73 20
+ 43 6F 6E 74 69 6E 75 69 74 79 20 4D 67 6D 74 2E
+ 03 00 00 36 30 37 03 00 00 36 30 39 11 00 00 52
+ 65 70 6F 72 74 69 6E 67 20 53 75 70 70 6F 72 74
+ 01 00 00 4C 03 00 00 36 31 35 18 00 00 55 57 20
+ 4D 61 6E 61 67 65 72 20 46 61 63 2E 20 43 61 73
+ 75 61 6C 74 79 03 00 00 59 65 73 03 00 00 36 31
+ 39 19 00 00 48 65 61 64 20 6F 66 20 4D 65 64 69
+ 63 6F 2D 41 63 74 2E 20 53 65 72 76 2E 02 00 00
+ 43 41 03 00 00 36 32 34 17 00 00 48 65 61 64 20
+ 52 65 63 6F 72 64 73 20 4D 61 6E 61 67 65 6D 65
+ 6E 74 04 00 00 32 30 34 34 02 00 00 52 43 03 00
+ 00 36 33 33 16 00 00 47 72 75 70 70 65 6E 6C 65
+ 69 74 65 72 20 43 61 73 75 61 6C 74 79 04 00 00
+ 53 49 54 43 03 00 00 36 33 38 0B 00 00 4C 65 69
+ 74 65 72 20 53 49 54 43 03 00 00 36 34 31 10 00
+ 00 41 62 74 65 69 6C 75 6E 67 73 6C 65 69 74 65
+ 72 03 00 00 36 38 35 0E 00 00 4C 65 69 74 65 72
+ 20 53 74 61 62 20 4C 4F 02 00 00 4C 54 03 00 00
+ 37 30 30 16 00 00 41 64 6D 69 6E 69 73 74 72 61
+ 74 69 6F 6E 20 53 75 70 70 6F 72 74 03 00 00 37
+ 31 35 0D 00 00 54 4C 20 48 61 75 73 64 69 65 6E
+ 73 74 03 00 00 37 33 31 11 00 00 53 79 73 74 65
+ 6D 20 43 6F 6E 74 72 6F 6C 6C 65 72 02 00 00 47
+ 53 02 00 00 4B 48 03 00 00 37 34 33 14 00 00 4B
+ FC 63 68 65 6E 6D 69 74 61 72 62 65 69 74 65 72
+ 2F 69 6E 03 00 00 37 34 35 19 00 00 54 65 61 6D
+ 6C 65 69 74 65 72 69 6E 20 4B 75 72 69 65 72 64
+ 69 65 6E 73 74 03 00 00 37 35 37 04 00 00 4B 6F
+ 63 68 03 00 00 37 36 31 18 00 00 53 65 72 76 69
+ 63 65 66 61 63 68 6D 69 74 61 72 62 65 69 74 65
+ 72 69 6E 03 00 00 37 39 33 19 00 00 52 6F 6F 6D
+ 73 65 72 76 69 63 65 6D 69 74 61 72 62 65 69 74
+ 65 72 2F 69 6E 03 00 00 38 39 36 03 00 00 39 31
+ 30 0D 00 00 41 4C 2D 53 65 6B 72 65 74 E4 72 69
+ 6E 03 00 00 39 32 37 10 00 00 53 61 63 68 62 65
+ 61 72 62 65 69 74 65 72 69 6E 03 00 00 39 33 37
+ 13 00 00 4C 65 69 74 65 72 20 47 65 67 65 6E 61
+ 6C 69 6D 65 6E 74 03 00 00 39 37 36 17 00 00 50
+ 4C 20 49 6E 66 72 61 73 74 72 75 63 74 75 72 65
+ 20 50 72 6F 6A 2E 02 00 00 49 50 03 00 00 39 37
+ 37 03 00 00 39 38 32 11 00 00 47 72 6C 2E 20 42
+ 65 74 72 69 65 62 20 45 6E 67 65 04 00 00 31 30
+ 31 33 10 00 00 54 72 61 69 6E 69 6E 67 20 4F 66
+ 66 69 63 65 72 04 00 00 31 30 33 32 04 00 00 31
+ 30 34 34 18 00 00 4C 65 69 74 65 72 20 42 65 74
+ 72 69 65 62 2F 45 72 68 61 6C 74 75 6E 67 04 00
+ 00 31 30 34 35 26 00 00 4D 65 6D 62 65 72 20 6F
+ 66 20 74 68 65 20 50 4F 49 2D 48 53 53 46 20 45
+ 78 65 63 75 74 69 76 65 20 42 6F 61 72 64 04 00
+ 00 31 30 35 37 04 00 00 31 30 36 32 1E 00 00 44
+ 65 70 75 74 79 20 43 68 69 65 66 20 45 78 65 63
+ 75 74 69 76 65 20 4F 66 66 69 63 65 72 04 00 00
+ 31 30 38 30 15 00 00 4C 65 69 74 65 72 20 41 6B
+ 74 69 65 6E 72 65 67 69 73 74 65 72 04 00 00 31
+ 30 38 31 02 00 00 46 4D 04 00 00 31 30 38 32 07
+ 00 00 41 63 74 75 61 72 79 02 00 00 53 46 04 00
+ 00 31 30 39 37 12 00 00 48 65 61 64 20 44 69 76
+ 69 73 69 6F 6E 61 6C 20 48 52 04 00 00 31 30 39
+ 39 19 00 00 48 65 61 64 20 6F 66 20 47 72 6F 75
+ 70 20 50 4D 20 43 61 73 75 61 6C 74 79 02 00 00
+ 49 4C 04 00 00 31 31 31 37 13 00 00 41 75 73 73
+ 65 6E 73 74 65 6C 6C 65 6E 6C 65 69 74 65 72 04
+ 00 00 31 34 34 38 04 00 00 31 34 35 36 0D 00 00
+ 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00
+ 31 34 36 30 0E 00 00 53 61 63 68 62 65 61 72 62
+ 65 69 74 65 72 04 00 00 31 34 36 36 02 00 00 47
+ 52 04 00 00 31 34 37 36 19 00 00 53 65 6B 74 69
+ 6F 6E 73 6C 2E 20 47 72 70 2E 20 52 65 70 6F 72
+ 74 69 6E 67 03 00 00 43 48 46 04 00 00 31 34 38
+ 34 02 00 00 53 55 04 00 00 31 34 39 30 12 00 00
+ 50 6C 61 6E 65 72 2F 4B 6F 6F 72 64 69 6E 61 74
+ 6F 72 04 00 00 31 34 39 39 11 00 00 4C 65 69 74
+ 65 72 20 4F 70 65 72 61 74 69 6F 6E 73 04 00 00
+ 31 35 30 37 04 00 00 31 35 32 35 16 00 00 53 79
+ 73 74 65 6D 20 50 72 6F 7A 65 73 73 20 4D 61 6E
+ 61 67 65 72 04 00 00 31 35 34 31 02 00 00 52 59
+ 02 00 00 52 4D 04 00 00 31 35 35 30 19 00 00 48
+ 65 61 64 20 6F 66 20 52 69 73 6B 20 4D 67 74 20
+ 53 65 72 76 69 63 65 73 02 00 00 54 43 04 00 00
+ 31 35 35 32 04 00 00 31 35 37 32 12 00 00 55 73
+ 65 72 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72
+ 02 00 00 46 41 04 00 00 31 35 37 34 16 00 00 53
+ 61 63 68 62 65 61 72 62 65 69 74 65 72 69 6E 20
+ 4B 61 73 73 65 04 00 00 31 35 39 39 04 00 00 31
+ 36 31 31 04 00 00 31 36 32 32 18 00 00 4D 65 6D
+ 62 65 72 20 6F 66 20 4C 26 48 20 45 78 65 63 2E
+ 42 6F 61 72 64 02 00 00 44 4D 04 00 00 31 36 32
+ 33 12 00 00 47 72 6C 2E 20 44 72 75 63 6B 76 6F
+ 72 73 74 75 66 65 02 00 00 49 4F 04 00 00 31 36
+ 36 39 17 00 00 4B 6F 6E 7A 65 72 6E 2D 49 6E 66
+ 6F 72 6D 2E 20 45 69 6E 6B 61 75 66 02 00 00 47
+ 41 04 00 00 31 36 37 30 04 00 00 31 36 38 35 14
+ 00 00 47 72 75 70 70 65 6E 6C 65 69 74 65 72 69
+ 6E 20 46 69 62 75 04 00 00 31 37 30 32 04 00 00
+ 31 37 30 39 04 00 00 31 37 32 35 14 00 00 46 61
+ 63 68 73 70 65 7A 69 61 6C 69 73 74 20 52 65 74
+ 72 6F 03 00 00 41 52 53 04 00 00 31 37 33 36 19
+ 00 00 4D 61 6E 61 67 65 72 20 54 72 61 69 6E 69
+ 6E 67 26 44 65 76 65 6C 6F 70 6D 04 00 00 31 37
+ 34 39 0F 00 00 50 72 6F 6A 65 63 74 20 4D 61 6E
+ 61 67 65 72 04 00 00 31 37 35 39 04 00 00 31 37
+ 37 32 17 00 00 4F 70 65 72 61 74 6F 72 20 4B 6F
+ 70 69 65 72 7A 65 6E 74 72 61 6C 65 04 00 00 31
+ 37 38 38 04 00 00 31 38 30 32 02 00 00 43 4C 04
+ 00 00 31 38 30 33 11 00 00 54 65 61 6D 20 4C 65
+ 61 64 65 72 20 4B 56 2F 55 56 04 00 00 31 38 33
+ 38 0D 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65
+ 72 02 00 00 49 52 04 00 00 31 38 35 36 04 00 00
+ 31 38 36 37 13 00 00 53 61 63 68 62 65 61 72 62
+ 65 69 74 65 72 69 6E 20 50 56 04 00 00 31 38 36
+ 38 19 00 00 54 65 61 6D 6C 65 69 74 65 72 20 47
+ 65 62 E4 75 64 65 74 65 63 68 6E 69 6B 04 00 00
+ 31 38 39 31 18 00 00 42 65 72 65 69 63 68 73 6C
+ 65 69 74 65 72 20 52 65 70 6F 72 74 69 6E 67 02
+ 00 00 4C 43 04 00 00 31 39 30 30 12 00 00 53 65
+ 6E 2E 20 4C 65 67 61 6C 20 43 6F 75 6E 73 65 6C
+ 04 00 00 31 39 30 34 04 00 00 31 39 30 35 0D 00
+ 00 52 61 75 6D 70 66 6C 65 67 65 72 69 6E 04 00
+ 00 31 39 32 34 04 00 00 31 39 33 36 0A 00 00 49
+ 6E 73 74 72 75 63 74 6F 72 04 00 00 31 39 33 39
+ 19 00 00 4D 61 6E 61 67 65 72 20 54 72 61 69 6E
+ 69 6E 67 20 43 6F 6E 63 65 70 74 73 01 00 00 57
+ 02 00 00 50 49 04 00 00 31 39 34 32 11 00 00 50
+ 6F 72 74 66 6F 6C 69 6F 20 4D 61 6E 61 67 65 72
+ 04 00 00 31 39 35 31 0C 00 00 43 61 73 68 20 4D
+ 61 6E 61 67 65 72 04 00 00 31 39 35 34 04 00 00
+ 31 39 36 36 04 00 00 31 39 38 32 13 00 00 50 72
+ 6F 64 75 63 74 73 2F 47 75 69 64 65 6C 69 6E 65
+ 73 04 00 00 31 39 39 30 04 00 00 31 39 39 36 04
+ 00 00 32 30 30 36 11 00 00 45 78 70 65 72 74 65
+ 20 4B 61 74 61 6B 75 6D 75 6C 04 00 00 32 30 33
+ 32 17 00 00 54 65 61 6D 6C 65 69 74 65 72 20 42
+ 75 63 68 62 69 6E 64 65 72 65 69 04 00 00 32 30
+ 33 34 16 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74
+ 65 72 20 46 61 63 68 61 62 74 2E 02 00 00 43 43
+ 19 00 00 48 65 61 64 20 4D 65 64 69 61 20 43 6F
+ 6D 6D 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 32
+ 30 36 30 02 00 00 52 58 02 00 00 41 4C 04 00 00
+ 32 30 36 31 18 00 00 48 65 61 64 20 6F 66 20 43
+ 49 52 4D 26 52 65 69 6E 2E 20 53 75 70 70 2E 04
+ 00 00 32 30 36 33 04 00 00 32 30 36 37 19 00 00
+ 4C 65 69 74 65 72 20 42 65 74 72 69 65 62 73 6C
+ 69 65 67 65 6E 73 63 68 2E 02 00 00 49 58 04 00
+ 00 32 30 37 31 04 00 00 32 30 37 37 15 00 00 49
+ 6E 66 6F 72 6D 61 74 69 6B 20 43 6F 6E 73 75 6C
+ 74 61 6E 74 04 00 00 32 30 38 30 13 00 00 53 65
+ 63 72 65 74 61 72 79 20 44 69 76 2E 20 48 65 61
+ 64 03 00 00 43 41 44 02 00 00 44 4F 04 00 00 32
+ 30 38 32 19 00 00 48 65 61 64 20 44 69 73 63 6F
+ 6E 74 69 6E 75 65 64 20 4F 70 65 72 61 74 2E 04
+ 00 00 32 30 38 37 04 00 00 32 30 39 31 04 00 00
+ 32 31 31 32 04 00 00 32 31 33 38 17 00 00 53 65
+ 6E 69 6F 72 20 42 75 73 69 6E 65 73 73 20 41 6E
+ 61 6C 79 73 74 04 00 00 32 31 34 33 04 00 00 32
+ 31 34 39 17 00 00 52 65 67 69 6F 6E 61 6C 20 4D
+ 61 6E 61 67 65 72 20 4C 26 48 20 4C 54 04 00 00
+ 32 31 39 39 0E 00 00 43 6C 69 65 6E 74 20 4D 61
+ 6E 61 67 65 72 04 00 00 32 32 31 31 18 00 00 4C
+ 65 69 74 65 72 20 43 75 73 74 6F 6D 65 72 20 53
+ 65 72 76 69 63 65 73 04 00 00 32 32 31 34 04 00
+ 00 32 32 32 30 19 00 00 48 52 2D 4D 49 53 2D 26
+ 20 50 34 30 30 2D 41 70 70 6C 69 63 61 74 69 6F
+ 6E 04 00 00 32 32 32 37 13 00 00 54 65 63 68 6E
+ 69 63 61 6C 20 53 75 70 70 6F 72 74 65 72 04 00
+ 00 32 32 35 30 19 00 00 54 72 61 69 6E 69 6E 67
+ 2D 20 26 20 50 72 6F 6A 65 63 74 6D 61 6E 61 67
+ 2E 04 00 00 32 32 35 31 19 00 00 44 65 70 2E 48
+ 65 61 64 20 6F 66 20 47 72 6F 75 70 20 50 4D 20
+ 50 72 6F 70 04 00 00 32 32 35 33 13 00 00 47 72
+ 6C 2E 20 47 6C 6F 62 61 6C 20 53 75 70 70 6F 72
+ 74 04 00 00 32 32 39 35 11 00 00 54 4C 20 48 61
+ 75 73 77 69 72 74 73 63 68 61 66 74 04 00 00 32
+ 32 39 36 04 00 00 32 33 30 32 04 00 00 32 33 31
+ 38 0D 00 00 52 69 73 69 6B 6F 65 78 70 65 72 74
+ 65 04 00 00 32 33 32 33 04 00 00 32 33 32 35 04
+ 00 00 32 33 33 32 04 00 00 32 33 34 31 19 00 00
+ 41 63 63 6F 75 6E 74 61 6E 74 20 53 70 65 63 69
+ 61 6C 20 42 75 73 69 6E 2E 04 00 00 32 33 37 37
+ 11 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65 72
+ 20 4D 49 50 04 00 00 32 33 38 36 19 00 00 53 65
+ 6E 2E 43 6C 61 69 6D 73 20 49 6E 66 2E 53 70 65
+ 63 69 61 6C 69 73 74 04 00 00 32 34 32 37 16 00
+ 00 47 72 6C 2E 20 49 6E 73 74 61 6C 6C 2E 20 53
+ 65 72 76 69 63 65 73 04 00 00 32 34 33 36 17 00
+ 00 48 65 61 64 20 6F 66 20 43 6C 61 69 6D 73 20
+ 53 65 72 76 69 63 65 73 04 00 00 32 34 35 33 16
+ 00 00 42 4C 20 47 72 6F 75 70 20 44 61 74 61 20
+ 53 65 72 76 69 63 65 73 04 00 00 32 34 35 36 04
+ 00 00 32 34 36 39 19 00 00 47 72 61 66 69 73 63
+ 68 65 72 20 53 61 63 68 62 65 61 72 62 65 69 74
+ 65 72 04 00 00 32 34 38 31 16 00 00 55 57 2F 50
+ 72 6F 64 75 63 74 20 63 6F 6E 74 72 6F 6C 6C 69
+ 6E 67 02 00 00 49 55 04 00 00 32 34 39 39 14 00
+ 00 41 70 70 6C 69 63 61 74 69 6F 6E 20 45 6E 67
+ 69 6E 65 65 72 04 00 00 32 35 32 32 04 00 00 32
+ 35 34 30 0B 00 00 55 6E 64 65 72 77 72 69 74 65
+ 72 04 00 00 32 35 34 35 04 00 00 32 35 36 34 04
+ 00 00 32 35 36 35 04 00 00 32 35 36 36 04 00 00
+ 32 35 37 33 04 00 00 32 35 38 30 15 00 00 46 61
+ 63 68 72 65 66 65 72 65 6E 74 20 43 61 73 75 61
+ 6C 74 79 02 00 00 43 42 04 00 00 32 35 38 31 10
+ 00 00 49 6E 74 2E 20 41 73 73 69 67 6E 6D 65 6E
+ 74 73 04 00 00 32 35 38 39 02 00 00 54 55 04 00
+ 00 32 36 30 38 04 00 00 32 36 31 30 17 00 00 4C
+ 65 69 74 65 72 69 6E 20 41 64 6D 69 6E 69 73 74
+ 72 61 74 69 6F 6E 04 00 00 32 36 33 32 04 00 00
+ 32 36 34 34 19 00 00 53 74 76 2E 20 4C 65 69 74
+ 65 72 20 41 6B 74 69 65 6E 72 65 67 69 73 74 2E
+ 04 00 00 32 36 34 35 04 00 00 32 36 35 33 19 00
+ 00 47 72 75 70 70 65 6E 6C 65 69 74 65 72 20 52
+ 65 69 73 65 64 69 65 6E 73 74 04 00 00 32 36 37
+ 31 18 00 00 50 72 6F 6A 65 6B 74 6C 65 69 74 65
+ 72 69 6E 20
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3
new file mode 100755
index 0000000000..461dfae5e4
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR3
@@ -0,0 +1,515 @@
+ 3C 00 1C 20 00 46 61 63 68 61 62 74
+ 2E 04 00 00 32 36 37 33 12 00 00 53 65 72 76 69
+ 63 65 6D 69 74 61 72 62 65 69 74 65 72 04 00 00
+ 32 36 37 34 04 00 00 32 36 38 34 04 00 00 32 37
+ 31 31 18 00 00 4C 65 69 74 65 72 20 55 73 65 72
+ 20 54 72 61 69 6E 2E 20 53 65 72 76 2E 04 00 00
+ 32 37 31 37 0E 00 00 54 65 6C 65 6F 70 65 72 61
+ 74 72 69 63 65 04 00 00 32 37 31 39 04 00 00 32
+ 37 33 31 19 00 00 48 65 61 64 20 6F 66 20 52 65
+ 69 6E 73 75 72 61 6E 63 65 20 54 6F 6F 6C 73 04
+ 00 00 32 37 33 32 12 00 00 50 72 6F 64 75 63 74
+ 20 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 32 37
+ 34 33 04 00 00 32 37 35 35 12 00 00 4F 70 65 72
+ 61 74 69 6F 6E 73 20 4F 66 66 69 63 65 72 04 00
+ 00 32 37 36 31 18 00 00 47 72 6C 2E 20 53 79 73
+ 74 65 6D 20 41 64 6D 69 6E 69 73 74 72 61 74 2E
+ 02 00 00 52 4B 04 00 00 32 37 36 38 16 00 00 48
+ 65 61 64 20 6F 66 20 43 6F 6D 6D 75 6E 69 63 61
+ 74 69 6F 6E 73 04 00 00 32 37 36 39 04 00 00 32
+ 37 37 32 04 00 00 32 37 37 37 04 00 00 32 37 38
+ 33 0D 00 00 47 4C 2D 53 65 6B 72 65 74 E4 72 69
+ 6E 04 00 00 32 37 38 34 04 00 00 32 37 38 37 19
+ 00 00 47 72 6C 2E 20 4E 57 20 52 65 73 65 61 72
+ 63 68 2F 44 65 76 65 6C 6F 70 6D 04 00 00 32 37
+ 38 38 04 00 00 32 37 38 39 13 00 00 52 65 69 6E
+ 73 75 72 61 6E 63 65 20 41 6E 61 6C 79 73 74 04
+ 00 00 32 38 30 37 11 00 00 44 65 70 75 74 79 20
+ 48 65 61 64 20 6F 66 20 43 41 04 00 00 32 38 31
+ 37 18 00 00 46 69 6E 2E 20 4D 61 72 6B 65 74 20
+ 52 69 73 6B 20 41 6E 61 6C 79 73 74 04 00 00 32
+ 38 31 38 19 00 00 44 65 70 2E 20 48 65 61 64 20
+ 54 65 63 68 6E 2E 20 54 72 61 69 6E 69 6E 67 04
+ 00 00 32 38 32 36 02 00 00 50 4F 04 00 00 32 38
+ 32 39 18 00 00 50 72 6F 6A 65 63 74 20 4D 67 6D
+ 74 2E 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00 00
+ 32 38 33 35 0C 00 00 52 E9 63 65 70 74 69 6F 6E
+ 69 73 74 04 00 00 32 38 33 36 04 00 00 32 38 33
+ 37 13 00 00 53 74 76 2E 20 53 65 6B 74 69 6F 6E
+ 73 6C 65 69 74 65 72 04 00 00 32 38 34 37 14 00
+ 00 54 65 63 68 6E 69 63 61 6C 20 41 63 63 6F 75
+ 6E 74 61 6E 74 02 00 00 52 55 04 00 00 32 38 35
+ 32 0E 00 00 43 68 69 65 66 20 45 6E 67 69 6E 65
+ 65 72 04 00 00 32 38 35 34 19 00 00 48 65 61 64
+ 20 6F 66 20 47 72 6F 75 70 20 50 4D 20 45 6E 67
+ 69 6E 65 65 2E 04 00 00 32 38 36 33 19 00 00 54
+ 4C 20 48 61 75 73 2D 20 26 20 42 65 74 72 69 65
+ 62 73 64 69 65 6E 73 74 04 00 00 32 38 39 32 0C
+ 00 00 41 56 2D 54 65 63 68 6E 69 6B 65 72 04 00
+ 00 32 38 39 39 0F 00 00 42 65 74 72 69 65 62 73
+ 67 E4 72 74 6E 65 72 04 00 00 32 39 32 35 19 00
+ 00 48 65 61 64 20 6F 66 20 4C 65 67 61 6C 26 43
+ 6C 61 69 6D 73 20 53 65 72 76 02 00 00 43 58 04
+ 00 00 32 39 32 39 0E 00 00 48 65 61 64 20 6F 66
+ 20 45 76 65 6E 74 73 04 00 00 32 39 33 31 0A 00
+ 00 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 32 39
+ 33 32 04 00 00 32 39 33 33 04 00 00 32 39 34 30
+ 14 00 00 50 4C 20 52 56 2D 54 65 63 68 6E 2E 20
+ 53 79 73 74 65 6D 65 04 00 00 32 39 34 31 0C 00
+ 00 4C 65 69 74 65 72 20 4B 61 73 73 65 04 00 00
+ 32 39 35 38 02 00 00 48 52 04 00 00 32 39 36 35
+ 19 00 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63
+ 65 73 20 41 73 73 69 73 74 61 6E 74 04 00 00 32
+ 39 36 38 19 00 00 48 65 61 64 20 4D 61 72 6B 65
+ 74 69 6E 67 20 52 FC 73 63 68 6C 69 6B 6F 6E 04
+ 00 00 32 39 37 33 14 00 00 43 6F 75 72 73 65 20
+ 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00
+ 32 39 38 31 13 00 00 4D 61 72 6B 65 74 69 6E 67
+ 20 41 73 73 69 73 74 61 6E 74 02 00 00 44 43 04
+ 00 00 32 39 38 34 0E 00 00 42 65 72 65 69 63 68
+ 73 6C 65 69 74 65 72 04 00 00 32 39 38 38 15 00
+ 00 53 65 6E 69 6F 72 20 52 65 69 6E 73 2E 20 41
+ 6E 61 6C 79 73 74 04 00 00 32 39 39 37 12 00 00
+ 50 72 6F 6A 65 63 74 20 4C 65 61 64 65 72 20 46
+ 53 41 04 00 00 32 39 39 38 04 00 00 33 30 30 31
+ 04 00 00 33 30 31 32 0E 00 00 54 65 61 6D 20 4C
+ 65 61 64 65 72 20 46 54 01 00 00 42 04 00 00 33
+ 30 35 32 15 00 00 47 72 6C 2E 20 43 6F 72 70 6F
+ 72 61 74 65 20 44 65 73 69 67 6E 04 00 00 33 30
+ 35 38 17 00 00 55 57 20 46 61 63 75 6C 74 61 74
+ 69 76 65 20 50 72 6F 70 65 72 74 79 04 00 00 33
+ 30 36 32 02 00 00 46 43 04 00 00 33 30 37 37 0B
+ 00 00 48 65 61 64 20 6F 66 20 43 4F 43 04 00 00
+ 33 30 39 31 04 00 00 33 31 30 34 0F 00 00 47 65
+ 73 63 68 E4 66 74 73 6C 65 69 74 65 72 04 00 00
+ 33 31 31 35 04 00 00 33 31 33 34 04 00 00 33 31
+ 33 37 19 00 00 53 65 6E 2E 41 63 63 6F 75 6E 74
+ 61 6E 74 20 47 72 6F 75 70 20 52 65 70 2E 04 00
+ 00 33 31 33 38 10 00 00 53 65 6B 74 69 6F 6E 73
+ 6C 65 69 74 65 72 69 6E 04 00 00 33 31 34 37 04
+ 00 00 33 31 35 35 04 00 00 33 31 35 36 19 00 00
+ 48 65 61 64 20 6F 66 20 55 57 2F 50 72 6F 64 75
+ 63 74 20 43 6F 6E 74 72 2E 04 00 00 33 31 37 34
+ 04 00 00 33 31 38 37 04 00 00 33 31 39 37 02 00
+ 00 49 42 04 00 00 33 32 32 34 02 00 00 49 46 04
+ 00 00 33 32 32 36 17 00 00 49 6E 66 6F 72 6D 61
+ 74 69 6F 6E 73 2D 53 70 65 7A 69 61 6C 69 73 74
+ 04 00 00 33 32 32 38 12 00 00 50 6C 61 6E 6E 65
+ 72 2F 43 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 33
+ 32 33 37 10 00 00 41 64 6D 69 6E 2E 20 41 73 73
+ 69 73 74 61 6E 74 04 00 00 33 32 35 39 0F 00 00
+ 43 6F 6F 72 64 69 6E 61 74 6F 72 20 42 43 4D 04
+ 00 00 33 32 36 30 18 00 00 50 72 6F 70 65 72 74
+ 79 20 50 72 6F 64 75 63 74 20 4D 61 6E 61 67 65
+ 72 04 00 00 33 32 36 37 0B 00 00 43 4F 43 20 4D
+ 61 6E 61 67 65 72 04 00 00 33 32 39 37 16 00 00
+ 4C 65 69 74 65 72 20 49 6E 66 6F 72 6D 61 74 69
+ 6B 20 53 74 61 62 04 00 00 33 33 30 34 19 00 00
+ 41 73 73 69 73 74 61 6E 74 20 41 63 63 6F 75 6E
+ 74 20 4D 61 6E 61 67 65 72 04 00 00 33 33 30 36
+ 13 00 00 47 72 6C 2E 20 55 73 65 72 20 48 65 6C
+ 70 20 44 65 73 6B 04 00 00 33 33 31 36 04 00 00
+ 33 33 32 33 04 00 00 33 33 32 36 04 00 00 33 33
+ 32 37 0F 00 00 41 63 63 6F 75 6E 74 20 4D 61 6E
+ 61 67 65 72 04 00 00 33 33 32 38 04 00 00 33 33
+ 33 33 01 00 00 45 04 00 00 33 33 34 32 18 00 00
+ 48 65 61 64 20 6F 66 20 50 72 6F 64 2E 2F 47 75
+ 69 64 65 6C 69 6E 65 73 04 00 00 33 33 34 39 04
+ 00 00 33 33 35 30 04 00 00 33 33 35 31 04 00 00
+ 33 33 35 34 14 00 00 45 69 6E 72 69 63 68 74 75
+ 6E 67 73 70 6C 61 6E 65 72 69 6E 04 00 00 33 33
+ 36 30 02 00 00 42 49 04 00 00 33 33 36 32 04 00
+ 00 33 33 37 36 04 00 00 33 33 37 39 04 00 00 33
+ 33 38 31 04 00 00 33 34 32 31 14 00 00 48 65 61
+ 64 20 6F 66 20 50 72 69 63 69 6E 67 2F 44 61 74
+ 61 04 00 00 33 34 36 34 19 00 00 48 65 61 64 20
+ 47 72 70 2E 20 4D 61 72 6B 65 74 43 6F 6D 6D 75
+ 6E 69 63 2E 04 00 00 33 34 36 38 04 00 00 33 34
+ 36 39 19 00 00 42 4C 20 44 61 74 61 20 43 6F 6D
+ 6D 75 6E 69 63 2E 20 53 79 73 74 65 6D 73 04 00
+ 00 33 34 37 31 16 00 00 4C 69 6E 67 65 72 69 65
+ 6D 69 74 61 72 62 65 69 74 65 72 2F 69 6E 04 00
+ 00 33 34 38 35 16 00 00 53 61 63 68 62 65 61 72
+ 62 2E 20 50 6F 73 74 64 69 65 6E 73 74 65 04 00
+ 00 33 34 38 38 11 00 00 43 6C 61 69 6D 73 20 4D
+ 61 6E 61 67 65 6D 65 6E 74 04 00 00 33 34 39 30
+ 17 00 00 54 65 63 68 6E 69 73 63 68 65 72 20 4D
+ 69 74 61 72 62 65 69 74 65 72 04 00 00 33 34 39
+ 31 0D 00 00 42 65 74 72 69 65 62 73 6D 61 6C 65
+ 72 04 00 00 33 35 30 36 04 00 00 33 35 30 37 04
+ 00 00 33 35 31 31 17 00 00 43 68 69 65 66 20 45
+ 78 65 63 75 74 69 76 65 20 4F 66 66 69 63 65 72
+ 04 00 00 33 35 32 30 04 00 00 33 35 32 38 11 00
+ 00 42 65 74 72 69 65 62 73 74 65 63 68 6E 69 6B
+ 65 72 04 00 00 33 35 33 30 04 00 00 33 35 33 32
+ 02 00 00 49 41 04 00 00 33 35 34 30 0E 00 00 53
+ 65 6E 69 6F 72 20 41 75 64 69 74 6F 72 04 00 00
+ 33 35 34 33 12 00 00 50 72 6F 6A 65 6B 74 6D 69
+ 74 61 72 62 65 69 74 65 72 04 00 00 33 35 34 36
+ 05 00 00 38 30 34 33 30 20 00 00 52 65 73 65 61
+ 72 63 68 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 20
+ 53 70 65 63 69 61 6C 69 73 74 2C 05 00 00 31 30
+ 38 34 35 1E 00 00 47 72 6F 75 70 20 43 6C 61 69
+ 6D 73 20 61 6E 64 20 43 6F 6E 74 72 61 63 74 20
+ 4D 61 6E 61 05 00 00 31 31 31 34 33 05 00 00 38
+ 31 38 31 39 12 00 00 52 65 73 65 61 72 63 68 20
+ 41 73 73 69 73 74 61 6E 74 05 00 00 38 30 32 33
+ 36 17 00 00 49 6E 66 6F 72 6D 61 74 69 6F 6E 20
+ 53 70 65 63 69 61 6C 69 73 74 2C 05 00 00 31 32
+ 34 31 37 03 00 00 33 35 33 02 00 00 53 47 09 00
+ 00 53 69 6E 67 61 70 6F 72 65 03 00 00 31 35 30
+ 15 00 00 47 65 6E 65 72 61 6C 20 41 64 6D 69 6E
+ 69 73 74 72 61 74 6F 72 03 00 00 31 35 31 09 00
+ 00 4D 65 73 73 65 6E 67 65 72 02 00 00 41 4F 02
+ 00 00 54 52 02 00 00 37 33 19 00 00 4D 67 72 20
+ 54 72 61 69 6E 2E 20 26 20 43 6C 69 65 6E 74 20
+ 53 65 72 76 2E 02 00 00 41 43 02 00 00 4D 41 04
+ 00 00 31 37 39 31 12 00 00 4D 61 72 69 6E 65 20
+ 55 6E 64 65 72 77 72 69 74 65 72 02 00 00 54 57
+ 06 00 00 54 61 69 70 65 69 03 00 00 32 32 35 06
+ 00 00 44 72 69 76 65 72 02 00 00 4D 59 0C 00 00
+ 4B 75 61 6C 61 20 4C 75 6D 70 75 72 03 00 00 33
+ 34 36 12 00 00 41 63 63 6F 75 6E 74 73 20 45 78
+ 65 63 75 74 69 76 65 02 00 00 41 4B 04 00 00 38
+ 34 38 37 02 00 00 50 48 06 00 00 4D 61 6E 69 6C
+ 61 03 00 00 33 36 39 17 00 00 45 6E 67 69 6E 65
+ 65 72 69 6E 67 20 55 6E 64 65 72 77 72 69 74 65
+ 72 04 00 00 39 33 37 39 18 00 00 41 63 74 75 61
+ 72 2E 20 26 20 50 72 6F 64 2E 20 43 6F 6E 74 72
+ 6F 6C 2E 04 00 00 36 30 35 31 05 00 00 31 32 31
+ 39 37 19 00 00 53 65 6E 69 6F 72 20 45 6E 65 72
+ 67 79 20 55 6E 64 65 72 77 72 69 74 65 72 04 00
+ 00 36 33 36 33 0E 00 00 45 6E 67 69 6E 65 65 72
+ 69 6E 67 20 55 57 05 00 00 31 30 35 31 35 15 00
+ 00 50 72 6F 70 65 72 74 79 20 55 6E 74 65 72 77
+ 72 69 74 69 6E 67 04 00 00 38 35 39 30 17 00 00
+ 4F 70 65 72 61 74 69 6F 6E 61 6C 20 43 6F 6E 74
+ 72 6F 6C 6C 69 6E 67 02 00 00 45 54 04 00 00 32
+ 38 31 32 03 00 00 34 38 39 14 00 00 50 72 6F 70
+ 65 72 74 79 20 55 6E 64 65 72 77 72 69 74 65 72
+ 04 00 00 33 38 38 30 04 00 00 33 32 30 32 18 00
+ 00 48 65 61 64 20 44 43 45 4F 2F 43 6F 6D 6D 75
+ 6E 69 63 61 74 69 6F 6E 73 04 00 00 35 37 35 33
+ 19 00 00 43 61 73 75 61 6C 74 79 20 55 6E 64 65
+ 72 77 72 69 74 69 6E 67 20 4D 67 72 04 00 00 36
+ 35 31 32 17 00 00 44 69 76 69 73 69 6F 6E 61 6C
+ 20 43 6F 73 74 20 4D 61 6E 61 67 65 72 04 00 00
+ 31 38 38 33 18 00 00 54 72 61 69 6E 2E 20 26 20
+ 43 6C 69 65 6E 74 20 53 65 72 76 69 63 65 73 02
+ 00 00 44 50 04 00 00 37 35 39 30 13 00 00 44 69
+ 76 69 73 69 6F 6E 61 6C 20 50 6C 61 6E 6E 69 6E
+ 67 05 00 00 31 31 38 36 37 14 00 00 43 61 73 75
+ 61 6C 74 79 20 55 6E 64 65 72 77 72 69 74 65 72
+ 04 00 00 33 39 31 39 0D 00 00 44 69 76 69 73 69
+ 6F 6E 61 6C 20 49 54 03 00 00 33 37 30 10 00 00
+ 4D 65 73 73 65 6E 67 65 72 2F 44 72 69 76 65 72
+ 03 00 00 35 37 31 04 00 00 38 36 31 34 19 00 00
+ 4D 67 72 20 41 63 74 2E 20 26 20 50 72 6F 64 2E
+ 20 43 6F 6E 74 72 6F 6C 2E 03 00 00 33 37 31 18
+ 00 00 41 64 6D 69 6E 69 73 74 72 61 74 69 76 65
+ 20 41 73 73 69 73 74 61 6E 74 03 00 00 34 39 36
+ 15 00 00 44 65 70 75 74 79 20 43 6C 69 65 6E 74
+ 20 4D 61 6E 61 67 65 72 03 00 00 32 35 37 14 00
+ 00 54 72 65 61 74 79 20 41 64 6D 69 6E 69 73 74
+ 72 61 74 6F 72 03 00 00 31 35 35 1D 00 00 54 65
+ 63 68 6E 2E 20 41 63 63 6F 75 6E 74 73 20 41 64
+ 6D 69 6E 69 73 74 72 61 74 6F 72 02 00 00 54 48
+ 07 00 00 42 61 6E 67 6B 6F 6B 0D 00 00 52 69 73
+ 6B 20 45 6E 67 69 6E 65 65 72 03 00 00 35 36 36
+ 14 00 00 46 69 6E 61 6E 63 69 61 6C 20 43 6F 6E
+ 74 72 6F 6C 6C 65 72 03 00 00 34 39 39 1D 00 00
+ 43 6C 69 65 6E 74 20 4D 67 6D 74 26 46 69 6E 61
+ 6E 63 69 61 6C 20 41 64 69 73 6F 72 79 03 00 00
+ 33 30 39 14 00 00 53 65 6E 69 6F 72 20 52 69 73
+ 6B 20 45 6E 67 69 6E 65 65 72 05 00 00 31 30 32
+ 31 30 02 00 00 43 4E 07 00 00 42 65 69 6A 69 6E
+ 67 03 00 00 31 35 37 1D 00 00 53 65 63 72 65 74
+ 61 72 79 20 74 6F 20 43 68 69 65 66 20 52 65 70
+ 72 65 73 65 6E 74 2E 03 00 00 32 32 39 03 00 00
+ 35 39 35 14 00 00 43 68 69 65 66 20 52 65 70 72
+ 65 73 65 6E 74 61 74 69 76 65 03 00 00 32 32 38
+ 12 00 00 54 72 65 61 74 79 20 55 6E 64 65 72 77
+ 72 69 74 65 72 03 00 00 32 39 34 0E 00 00 43 6C
+ 61 69 6D 73 20 4D 61 6E 61 67 65 72 03 00 00 35
+ 33 36 10 00 00 48 52 20 41 64 6D 69 6E 69 73 74
+ 72 61 74 6F 72 14 00 00 4F 66 66 69 63 65 20 41
+ 64 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00 35
+ 37 32 03 00 00 31 35 39 1E 00 00 41 73 73 6F 63
+ 69 61 74 65 2C 20 43 6F 72 70 6F 72 61 74 65 20
+ 44 65 76 65 6C 6F 70 6D 2E 03 00 00 35 31 35 03
+ 00 00 33 34 38 1C 00 00 41 73 73 69 73 74 61 6E
+ 74 20 74 6F 20 43 6C 69 65 6E 74 20 4D 67 74 20
+ 54 65 61 6D 03 00 00 31 36 31 1A 00 00 52 65 67
+ 69 6F 6E 61 6C 20 4D 61 72 69 6E 65 20 55 57 20
+ 4D 61 6E 61 67 65 72 03 00 00 31 36 32 03 00 00
+ 32 33 32 10 00 00 4F 66 66 69 63 65 20 41 73 73
+ 69 73 74 61 6E 74 03 00 00 31 36 34 1A 00 00 43
+ 6C 69 65 6E 74 20 43 6F 6F 72 64 69 6E 61 74 69
+ 6F 6E 20 41 64 6D 69 6E 2E 03 00 00 32 33 33 19
+ 00 00 41 73 73 74 2E 20 4D 61 6E 61 67 65 72 20
+ 45 6E 67 69 6E 65 65 72 69 6E 67 04 00 00 38 35
+ 35 35 03 00 00 31 36 35 1B 00 00 43 6C 69 65 6E
+ 74 20 52 65 6C 61 74 69 6F 6E 73 68 69 70 20 4D
+ 61 6E 61 67 65 72 03 00 00 31 36 37 1C 00 00 43
+ 6C 69 65 6E 74 20 53 75 70 70 6F 72 74 20 41 64
+ 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00 31 36
+ 36 19 00 00 46 69 6E 61 6E 63 69 61 6C 20 41 63
+ 63 6F 75 6E 74 73 20 41 64 6D 69 6E 2E 03 00 00
+ 32 39 35 14 00 00 41 73 73 69 73 74 61 6E 74 20
+ 41 63 63 6F 75 6E 74 61 6E 74 03 00 00 32 39 37
+ 0F 00 00 45 44 50 20 43 6F 6F 72 64 69 6E 61 74
+ 6F 72 08 00 00 53 68 61 6E 67 68 61 69 03 00 00
+ 31 34 34 1A 00 00 52 65 70 72 65 73 65 6E 74 61
+ 74 69 76 65 20 45 6E 67 69 6E 65 65 72 69 6E 67
+ 03 00 00 33 37 33 1D 00 00 52 69 73 6B 20 45 6E
+ 67 69 6E 65 65 72 20 2F 49 54 20 43 6F 6F 72 64
+ 69 6E 61 74 6F 72 03 00 00 33 37 34 14 00 00 41
+ 63 63 6F 75 6E 74 69 6E 67 20 41 73 73 69 73 74
+ 61 6E 74 03 00 00 35 34 33 04 00 00 38 36 30 33
+ 03 00 00 31 32 35 16 00 00 52 65 69 6E 73 75 72
+ 61 6E 63 65 20 41 63 63 6F 75 6E 74 61 6E 74 02
+ 00 00 45 4E 04 00 00 37 36 33 39 04 00 00 36 36
+ 38 34 18 00 00 4D 67 72 20 4F 70 65 72 61 74 69
+ 6F 6E 61 6C 20 43 6F 6E 74 72 6F 6C 2E 04 00 00
+ 32 34 33 33 04 00 00 31 38 33 34 19 00 00 4C 6F
+ 63 61 6C 20 4F 66 66 69 63 65 73 20 43 6F 6F 72
+ 64 69 6E 61 74 6F 72 04 00 00 38 36 35 36 15 00
+ 00 53 74 72 61 74 65 67 69 63 20 43 6F 6E 74 72
+ 6F 6C 6C 69 6E 67 02 00 00 41 45 05 00 00 31 32
+ 35 34 36 04 00 00 32 31 33 34 05 00 00 31 30 38
+ 39 35 04 00 00 38 35 30 33 05 00 00 31 31 37 36
+ 32 1B 00 00 48 65 61 64 20 46 61 63 2E 50 72 6F
+ 70 2E 47 72 65 61 74 65 72 20 43 68 69 6E 61 03
+ 00 00 35 38 37 1C 00 00 41 73 73 74 2E 4D 67 72
+ 2E 20 54 6F 20 43 6C 69 65 6E 74 20 4D 67 74 20
+ 54 65 61 6D 03 00 00 35 36 37 17 00 00 48 65 61
+ 64 20 6F 66 20 52 69 73 6B 20 4D 61 6E 61 67 65
+ 6D 65 6E 74 04 00 00 38 35 39 32 03 00 00 31 34
+ 36 03 00 00 35 38 33 1D 00 00 52 65 70 72 65 73
+ 65 6E 74 61 74 69 76 65 26 43 6C 69 65 6E 74 20
+ 4D 61 6E 61 67 65 72 02 00 00 41 58 04 00 00 33
+ 35 32 32 15 00 00 48 65 61 64 20 50 65 72 66 6F
+ 72 6D 61 6E 63 65 20 54 65 61 6D 02 00 00 41 4A
+ 05 00 00 31 31 32 31 37 0A 00 00 33 32 34 2C 20
+ 54 6F 6B 79 6F 03 00 00 31 36 38 0E 00 00 52 65
+ 70 72 65 73 65 6E 74 61 74 69 76 65 04 00 00 38
+ 36 33 36 03 00 00 35 30 31 1C 00 00 41 73 73 6F
+ 63 69 61 74 65 2C 20 43 6F 72 70 2E 20 44 65 76
+ 65 6C 6F 70 6D 65 6E 74 04 00 00 35 39 32 39 04
+ 00 00 38 35 39 31 04 00 00 35 38 35 39 04 00 00
+ 35 38 30 39 05 00 00 31 32 35 34 38 15 00 00 43
+ 61 73 75 61 6C 74 79 20 55 6E 64 65 72 77 72 69
+ 74 69 6E 67 04 00 00 33 33 35 35 04 00 00 38 36
+ 37 30 16 00 00 45 6E 67 69 6E 65 65 72 69 6E 67
+ 20 55 57 20 4D 61 6E 61 67 65 72 04 00 00 37 32
+ 32 36 04 00 00 35 34 38 31 13 00 00 42 55 53 20
+ 50 72 6F 63 65 73 73 20 4D 61 6E 61 67 65 72 03
+ 00 00 35 30 30 0D 00 00 43 6C 65 61 6E 69 6E 67
+ 20 41 6D 61 68 03 00 00 33 35 30 03 00 00 33 30
+ 33 10 00 00 43 6C 61 69 6D 73 20 41 73 73 69 73
+ 74 61 6E 74 03 00 00 32 33 37 03 00 00 32 33 38
+ 03 00 00 35 38 36 04 00 00 35 39 32 35 04 00 00
+ 36 36 31 32 04 00 00 38 35 33 38 04 00 00 38 34
+ 34 33 04 00 00 35 36 38 36 03 00 00 33 35 32 10
+ 00 00 44 72 69 76 65 72 2F 4D 65 73 73 65 6E 67
+ 65 72 04 00 00 36 37 35 32 12 00 00 4D 61 6E 61
+ 67 65 72 20 4A 61 70 61 6E 20 44 65 73 6B 04 00
+ 00 31 37 38 39 19 00 00 50 72 6F 70 65 72 74 79
+ 20 55 6E 64 65 72 77 72 69 74 69 6E 67 20 4D 67
+ 72 04 00 00 38 34 34 37 02 00 00 41 44 04 00 00
+ 36 33 30 34 08 00 00 41 72 74 20 44 65 73 6B 04
+ 00 00 31 39 30 32 04 00 00 36 30 37 35 03 00 00
+ 33 32 30 16 00 00 52 65 63 65 70 74 69 6F 6E 69
+ 73 74 2F 53 65 63 72 65 74 61 72 79 03 00 00 31
+ 33 36 1A 00 00 48 65 61 64 20 4E 6F 6E 2D 4C 69
+ 66 65 20 52 2F 49 20 53 65 72 76 69 63 65 73 03
+ 00 00 31 33 39 1D 00 00 53 65 6E 69 6F 72 20 41
+ 64 76 69 73 6F 72 20 4E 4C 20 52 49 20 53 65 72
+ 76 69 63 65 73 03 00 00 31 33 38 10 00 00 4F 66
+ 66 69 63 65 20 4D 67 6D 74 20 26 20 48 52 17 00
+ 00 4E 4C 20 52 65 69 6E 73 75 72 61 6E 63 65 20
+ 53 65 72 76 69 63 65 73 03 00 00 32 32 34 0F 00
+ 00 47 65 6E 65 72 61 6C 20 4D 61 6E 61 67 65 72
+ 03 00 00 31 37 38 1E 00 00 4D 67 6D 74 26 53 74
+ 61 66 66 20 53 65 72 76 69 63 65 73 20 41 64 6D
+ 69 6E 69 73 74 72 2E 16 00 00 41 63 63 6F 75 6E
+ 74 73 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72
+ 03 00 00 33 37 39 15 00 00 48 65 61 64 20 48 52
+ 20 47 72 65 61 74 65 72 20 43 68 69 6E 61 04 00
+ 00 32 35 36 30 03 00 00 31 38 31 14 00 00 48 65
+ 61 64 20 6F 66 20 43 4D 20 49 6E 64 6F 6E 65 73
+ 69 61 04 00 00 38 36 37 38 15 00 00 4D 61 6E 61
+ 67 65 72 20 44 69 76 69 73 69 6F 6E 61 6C 20 49
+ 54 04 00 00 34 31 32 32 03 00 00 33 33 31 02 00
+ 00 49 4E 09 00 00 42 61 6E 67 61 6C 6F 72 65 03
+ 00 00 35 37 33 13 00 00 54 65 61 6D 20 53 65 72
+ 76 69 63 65 20 43 65 6E 74 65 72 04 00 00 35 39
+ 30 31 04 00 00 38 35 32 36 03 00 00 35 38 32 17
+ 00 00 48 65 61 64 20 6F 66 20 54 72 65 61 74 79
+ 20 50 72 6F 70 65 72 74 79 03 00 00 35 30 33 03
+ 00 00 33 31 31 03 00 00 35 32 38 03 00 00 33 38
+ 35 19 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 20
+ 41 64 6D 69 6E 69 73 74 72 61 74 6F 72 03 00 00
+ 33 31 33 1A 00 00 55 6E 64 65 72 77 72 69 74 69
+ 6E 67 20 41 64 6D 69 6E 69 73 74 72 61 74 6F 72
+ 03 00 00 35 37 30 17 00 00 53 65 6E 69 6F 72 20
+ 55 2F 57 20 46 61 63 20 43 61 73 75 61 6C 74 79
+ 17 00 00 46 61 63 75 6C 74 61 74 69 76 65 20 55
+ 6E 64 65 72 77 72 69 74 65 72 03 00 00 33 31 35
+ 1B 00 00 43 61 73 75 61 6C 74 79 20 54 72 65 61
+ 74 79 20 55 6E 64 65 72 77 72 69 74 65 72 03 00
+ 00 35 32 36 0A 00 00 48 52 20 4D 61 6E 61 67 65
+ 72 03 00 00 31 38 33 03 00 00 35 37 38 03 00 00
+ 33 35 34 07 00 00 4D 61 6E 61 67 65 72 03 00 00
+ 32 33 39 03 00 00 35 35 36 18 00 00 53 65 6E 69
+ 6F 72 20 55 57 2C 20 46 61 63 2E 20 50 72 6F 70
+ 65 72 74 79 03 00 00 33 31 39 14 00 00 41 73 73
+ 74 2E 20 45 6E 67 69 6E 65 65 72 69 6E 67 20 55
+ 57 03 00 00 35 34 38 1A 00 00 54 72 61 69 6E 65
+ 65 20 4D 61 72 69 6E 65 20 55 6E 64 65 72 77 72
+ 69 74 65 72 03 00 00 33 35 35 03 00 00 31 38 38
+ 15 00 00 49 54 20 53 75 70 70 6F 72 74 20 53 70
+ 65 63 69 61 6C 69 73 74 03 00 00 31 39 30 03 00
+ 00 32 34 30 19 00 00 46 61 63 2E 20 50 72 6F 70
+ 65 72 74 79 20 55 6E 64 65 72 77 72 69 74 65 72
+ 03 00 00 35 35 35 13 00 00 4D 61 72 69 6E 65 20
+ 48 75 6C 6C 20 4D 61 6E 61 67 65 72 04 00 00 35
+ 39 33 38 03 00 00 33 35 36 03 00 00 33 35 37 03
+ 00 00 35 38 31 0C 00 00 52 65 63 65 70 74 69 6F
+ 6E 69 73 74 04 00 00 38 34 35 37 03 00 00 35 37
+ 36 19 00 00 48 52 20 4D 61 6E 61 67 65 72 2C 20
+ 53 65 61 20 45 61 73 74 20 41 73 69 61 06 00 00
+ 4D 75 6D 62 61 69 03 00 00 33 38 30 1B 00 00 45
+ 6E 67 69 6E 65 65 72 69 6E 67 20 4C 69 61 69 73
+ 6F 6E 20 4D 61 6E 61 67 65 72 03 00 00 33 35 38
+ 0E 00 00 53 65 6E 69 6F 72 20 4D 61 6E 61 67 65
+ 72 04 00 00 38 34 35 38 04 00 00 38 34 35 39 03
+ 00 00 31 32 36 13 00 00 54 65 63 68 6E 69 63 61
+ 6C 20 41 73 73 69 73 74 61 6E 74 04 00 00 34 34
+ 31 37 10 00 00 4E 6F 6E 2D 4C 69 66 65 20 4D 61
+ 6E 61 67 65 72 04 00 00 39 37 32 39 04 00 00 38
+ 35 37 39 04 00 00 32 37 33 38 03 00 00 31 39 35
+ 1B 00 00 48 65 61 64 20 6F 66 20 43 6C 69 65 6E
+ 74 20 43 6F 6F 72 64 69 6E 61 74 69 6F 6E 03 00
+ 00 31 32 37 16 00 00 53 65 63 72 65 74 61 72 79
+ 2F 52 65 63 65 70 74 69 6F 6E 69 73 74 04 00 00
+ 31 39 34 37 04 00 00 33 38 36 36 03 00 00 32 37
+ 34 03 00 00 36 38 36 03 00 00 31 39 37 1C 00 00
+ 54 65 63 68 6E 2E 41 63 63 6F 75 6E 74 73 20 41
+ 64 6D 69 6E 69 73 74 72 61 74 6F 72 04 00 00 33
+ 32 36 36 04 00 00 38 35 39 35 04 00 00 35 35 37
+ 37 04 00 00 32 31 36 35 13 00 00 4D 61 6E 61 67
+ 65 72 20 4B 6F 72 65 61 6E 20 44 65 73 6B 04 00
+ 00 38 34 32 31 03 00 00 36 30 36 04 00 00 38 36
+ 38 30 03 00 00 31 39 39 03 00 00 35 33 35 16 00
+ 00 55 6E 64 65 72 77 72 69 74 69 6E 67 20 41 73
+ 73 69 73 74 61 6E 74 03 00 00 35 35 39 04 00 00
+ 38 35 31 31 03 00 00 32 30 30 12 00 00 43 6C 69
+ 65 6E 74 20 43 6F 6F 72 64 69 6E 61 74 6F 72 04
+ 00 00 35 32 32 32 04 00 00 38 35 38 33 03 00 00
+ 34 39 37 14 00 00 4D 61 6E 61 67 65 72 20 55 6E
+ 64 65 72 77 72 69 74 69 6E 67 04 00 00 35 39 36
+ 38 14 00 00 42 55 53 20 54 72 61 69 6E 69 6E 67
+ 20 4D 61 6E 61 67 65 72 03 00 00 35 37 35 1A 00
+ 00 52 65 67 69 6F 6E 61 6C 20 50 72 6F 70 65 72
+ 74 79 20 46 61 63 2E 4D 67 72 2E 03 00 00 32 30
+ 33 1B 00 00 44 65 70 75 74 79 20 48 65 61 64 20
+ 45 4E 20 55 6E 64 65 72 77 72 69 74 69 6E 67 03
+ 00 00 35 34 36 19 00 00 46 61 63 75 6C 74 61 74
+ 69 76 65 20 41 64 6D 69 6E 69 73 74 72 61 74 6F
+ 72 04 00 00 36 36 32 32 05 00 00 31 32 35 35 39
+ 05 00 00 31 32 30 38 38 03 00 00 35 31 36 04 00
+ 00 32 38 39 30 15 00 00 49 6E 74 65 72 6E 61 74
+ 69 6F 6E 61 6C 20 53 75 70 70 6F 72 74 03 00 00
+ 34 39 35 18 00 00 50 72 6F 70 65 72 74 79 20 4C
+ 69 61 69 73 6F 6E 20 4D 61 6E 61 67 65 72 04 00
+ 00 36 34 35 37 18 00 00 45 6E 67 69 6E 65 65 72
+ 69 6E 67 20 55 6E 64 65 72 77 72 69 74 69 6E 67
+ 04 00 00 34 30 32 34 03 00 00 31 36 33 12 00 00
+ 48 65 61 64 20 4C 6F 63 61 6C 20 4F 66 66 69 63
+ 65 73 04 00 00 34 38 35 39 16 00 00 4C 6F 74 75
+ 73 20 4E 6F 74 65 73 20 45 6E 74 77 69 63 6B 6C
+ 65 72 04 00 00 38 35 34 32 04 00 00 38 35 32 37
+ 04 00 00 38 35 33 36 04 00 00 36 35 35 33 04 00
+ 00 32 34 35 31 14 00 00 44 65 70 61 72 74 6D 65
+ 6E 74 20 53 65 63 72 65 74 61 72 79 03 00 00 39
+ 36 35 04 00 00 38 36 36 37 10 00 00 52 65 73 65
+ 61 72 63 68 20 26 20 43 6F 6D 6D 2E 04 00 00 38
+ 34 37 38 04 00 00 31 38 34 34 03 00 00 33 34 32
+ 10 00 00 41 63 63 6F 75 6E 74 73 20 4D 61 6E 61
+ 67 65 72 03 00 00 35 33 34 10 00 00 46 61 63 2E
+ 20 50 72 6F 70 65 72 74 79 20 55 57 03 00 00 32
+ 34 31 07 00 00 54 72 61 69 6E 65 65 03 00 00 32
+ 34 32 03 00 00 35 32 35 13 00 00 41 63 63 6F 75
+ 6E 74 20 55 6E 64 65 72 77 72 69 74 65 72 0A 00
+ 00 32 36 2E 30 39 2E 31 39 37 38 0A 00 00 31 35
+ 2E 30 36 2E 31 39 39 38 0A 00 00 30 31 2E 30 31
+ 2E 31 39 35 34 0A 00 00 31 39 2E 30 39 2E 31 39
+ 37 37 0A 00 00 32 30 2E 30 35 2E 31 39 35 31 0A
+ 00 00 30 31 2E 30 38 2E 31 39 39 38 0A 00 00 33
+ 31 2E 31 30 2E 31 39 36 38 0A 00 00 30 34 2E 30
+ 39 2E 31 39 36 34 0A 00 00 31 30 2E 30 37 2E 32
+ 30 30 30 0A 00 00 32 39 2E 30 38 2E 31 39 36 38
+ 0A 00 00 30 31 2E 31 30 2E 31 39 39 36 14 00 00
+ 53 65 6E 6F 69 72 20 52 69 73 6B 20 45 6E 67 69
+ 6E 65 65 72 0A 00 00 30 33 2E 31 30 2E 31 39 37
+ 30 0A 00 00 30 31 2E 30 33 2E 31 39 39 38 0A 00
+ 00 31 34 2E 30 33 2E 31 39 37 31 17 00 00 49 54
+ 20 53 65 63 75 72 69 74 79 20 43 6F 6F 72 64 69
+ 6E 61 74 6F 72 19 00 00 53 65 6E 2E 20 49 54 20
+ 53 65 63 75 72 2E 20 50 72 6F 6A 2E 20 4D 67 72
+ 2E 11 00 00 46 69 6E 61 6E 7A 2D 53 70 65 7A 69
+ 61 6C 69 73 74 16 00 00 47 72 6F 75 70 20 43 6F
+ 6D 70 65 6E 73 61 74 69 6F 6E 20 4D 67 72 12 00
+ 00 43 6F 6E 66 65 72 65 6E 63 65 20 4D 61 6E 61
+ 67 65 72 12 00 00 44 65 70 75 74 79 20 48 65 61
+ 64 20 6F 66 20 54 41 41 19 00 00 53 65 6E 2E 20
+ 56 69 63 65 20 50 72 65 73 69 64 65 6E 74 20 52
+ 65 69 6E 2E 0F 00 00 48 65 61 64 20 6F 66 20 52
+ 26 52 20 48 55 42 0C 00 00 4D 61 6E 68 61 74 74
+ 61 6E 20 4E 59 0A 00 00 48 61 75 73 77 61 72 74
+ 69 6E 03 00 00 4C 58 32 14 00 00 42 65 72 65 69
+ 63 68 73 70 65 72 73 6F 6E 61 6C 63 68 65 66 06
+ 00 00 45 78 74 65 72 6E 19 00 00 48 65 61 64 20
+ 6F 66 20 52 65 69 6E 73 2E 4C 69 61 62 69 6C 69
+ 74 2E 2C 44 01 00 00 56 02 00 00 4E 4C 18 00 00
+ 53 65 6E 69 6F 72 20 43 6C 61 69 6D 73 20 43 6F
+ 6E 73 75 6C 74 61 6E 74 08 00 00 44 69 72 65 63
+ 74 6F 72 07 00 00 42 45 52 4D 55 44 41 0A 00 00
+ 53 74 72 75 63 74 75 72 65 72 0A 00 00 4F 70 65
+ 72 61 74 69 6F 6E 73 06 00 00 32 30 30 31 30 36
+ 02 00 00 42 52 09 00 00 53 61 6F 20 50 61 75 6C
+ 6F 0A 00 00 30 39 2E 30 35 2E 31 39 37 36 0A 00
+ 00 31 34 2E 30 38 2E 31 39 36 37 0A 00 00 30 31
+ 2E 30 37 2E 31 39 39 35 0A 00 00 32 35 2E 30 33
+ 2E 31 39 37 32 0A 00 00 30 33 2E 30 31 2E 32 30
+ 30 30 0A 00 00 32 31 2E 30 34 2E 31 39 37 30 0A
+ 00 00 30 39 2E 30 35 2E 31 39 36 32 0A 00 00 30
+ 32 2E 30 39 2E 31 39 39 36 0A 00 00 31 35 2E 30
+ 34 2E 31 39 37 31 0A 00 00 32 37 2E 31 30 2E 31
+ 39 39 37 0A 00 00 32 32 2E 31 30 2E 31 39 36 38
+ 0A 00 00 32 36 2E 30 35 2E 31 39 39 33 0A 00 00
+ 30 32 2E 30 33 2E 31 39 35 38 0A 00 00 30 31 2E
+ 30 33 2E 31 39 38 34 0A 00 00 31 36 2E 30 35 2E
+ 31 39 35 36 0A 00 00 32 38 2E 30 38 2E 31 39 36
+ 37 0A 00 00 32 30 2E 30 33 2E 31 39 36 32 0A 00
+ 00 30 31 2E 30 33 2E 31 39 39 36 0A 00 00 30 35
+ 2E 30 32 2E 31 39 36 38 0A 00 00 30 35 2E 31 32
+ 2E 31 39 36 38 0A 00 00 31 30 2E 30 34 2E 31 39
+ 39 35 0A 00 00 30 34 2E 30 31 2E 31 39 37 33 0A
+ 00 00 32 39 2E 30 37 2E 31 39 35 39 0A 00 00 32
+ 34 2E 30 36 2E 31 39 36 30 0A 00 00 31 32 2E 30
+ 33 2E 31 39 36 39 1C 00 00 50 65 72 73 6F 6E 61
+ 6C 20 41 73 73 74 2E 20 74 6F 20 43 68 69 65 66
+ 20 52 65 70 2E 0A 00 00 31 33 2E 30 38 2E 31 39
+ 37 34 0A 00 00 30 31 2E 30 36 2E 32 30 30 30 0A
+ 00 00 30 33 2E 30 38 2E 31 39 34 39 0A 00 00 30
+ 31 2E 30 33 2E 31 39 39 32 0A 00 00 32 36 2E 30
+ 31 2E 31 39 36 32 0A 00 00 32 37 2E 30 39 2E 31
+ 39 38 34 0A 00 00 30 34 2E 30 33 2E 31 39 35 34
+ 03 00 00 4E 2F 41 0A 00 00 32 32 2E 30 33 2E 31
+ 39 36 34 0A 00 00 30 31 2E 30 37 2E 31 39 39 39
+ 0A 00 00 30 36 2E 30 36 2E 31 39 37 32 0A 00 00
+ 32 39 2E 30 39 2E 31 39 35 39 0A 00 00 31 36 2E
+ 30 31 2E 31 39 39 31 0A 00 00 32 38 2E 31 32 2E
+ 31 39 36 30
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4
new file mode 100755
index 0000000000..f8fd5342ae
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR4
@@ -0,0 +1,515 @@
+ 3C 00 20 20 0A 00 00 32 34 2E 30 36
+ 2E 31 39 39 36 0A 00 00 31 36 2E 30 32 2E 31 39
+ 35 33 0A 00 00 32 33 2E 30 32 2E 31 39 37 33 0A
+ 00 00 31 35 2E 30 39 2E 31 39 36 38 0A 00 00 32
+ 35 2E 30 38 2E 31 39 39 37 0A 00 00 32 36 2E 30
+ 39 2E 31 39 36 30 0A 00 00 30 32 2E 30 31 2E 32
+ 30 30 30 0A 00 00 32 33 2E 31 30 2E 31 39 36 39
+ 0A 00 00 32 32 2E 30 32 2E 31 39 34 39 0A 00 00
+ 30 38 2E 31 32 2E 31 39 36 35 0A 00 00 30 32 2E
+ 30 38 2E 31 39 39 39 0A 00 00 30 39 2E 30 31 2E
+ 31 39 37 33 0A 00 00 30 31 2E 30 32 2E 32 30 30
+ 30 0A 00 00 30 38 2E 31 32 2E 31 39 35 37 0A 00
+ 00 32 33 2E 30 33 2E 31 39 37 33 02 00 00 32 33
+ 10 00 00 48 F4 74 65 73 73 65 20 61 63 63 75 65
+ 75 69 6C 02 00 00 34 34 0D 00 00 43 6F 6D 6D 75
+ 6E 69 63 61 74 69 6F 6E 1B 00 00 52 65 73 70 2E
+ 73 75 70 70 6F 72 74 20 74 65 63 68 6E 2E 20 49
+ 6E 66 6F 72 6D 2E 02 00 00 36 32 1B 00 00 52 65
+ 73 70 6F 6E 73 69 62 6C 65 20 22 73 70 65 63 69
+ 61 6C 20 6C 69 6E 65 73 22 08 00 00 36 30 33 2D
+ 32 30 30 33 08 00 00 36 30 33 2D 32 30 30 34 08
+ 00 00 36 30 33 2D 32 30 30 35 08 00 00 36 30 33
+ 2D 32 30 30 38 08 00 00 36 30 33 2D 32 30 30 39
+ 08 00 00 36 30 33 2D 32 30 31 30 02 00 00 50 33
+ 14 00 00 55 57 20 50 72 6F 70 65 72 74 79 2F 43
+ 61 73 75 61 6C 74 79 03 00 00 54 4E 44 0C 00 00
+ 44 65 61 6C 20 4D 61 6E 61 67 65 72 13 00 00 55
+ 57 20 53 75 70 70 6F 72 74 20 46 61 6B 20 53 61
+ 63 68 02 00 00 53 33 17 00 00 52 2F 49 20 50 72
+ 6F 64 75 63 74 20 43 6F 6E 74 72 6F 6C 6C 69 6E
+ 67 19 00 00 55 6E 64 65 72 77 72 69 74 69 6E 67
+ 20 53 75 70 70 2E 20 4D 61 72 69 6E 65 19 00 00
+ 48 65 61 64 20 49 6E 74 65 72 6E 2E 20 43 6C 69
+ 65 6E 74 73 20 55 6E 69 74 19 00 00 53 65 6E 2E
+ 46 69 6E 61 6E 63 2E 53 6F 6C 75 74 69 6F 6E 73
+ 20 43 6F 6E 73 13 00 00 54 61 63 74 69 63 61 6C
+ 20 41 6C 6C 6F 63 61 74 69 6F 6E 18 00 00 44 65
+ 70 2E 48 65 61 64 20 54 65 63 68 6E 2E 49 6E 66
+ 72 61 73 74 72 2E 18 00 00 44 69 76 69 73 69 6F
+ 6E 61 6C 20 43 6F 6D 6D 2E 20 4F 66 66 69 63 65
+ 72 19 00 00 44 65 70 75 74 79 20 48 65 61 64 20
+ 42 75 73 2E 20 54 72 61 69 6E 69 6E 67 0F 00 00
+ 43 61 73 68 20 4D 61 6E 61 67 65 6D 65 6E 74 18
+ 00 00 50 45 4B 41 2F 50 34 30 30 2F 48 52 2D 4D
+ 49 53 20 41 70 70 6C 69 63 2E 0B 00 00 48 65 61
+ 64 20 6F 66 20 4B 4E 43 15 00 00 53 70 65 7A 69
+ 61 6C 69 73 74 20 52 56 2D 54 65 63 68 6E 69 6B
+ 19 00 00 43 6F 72 70 2E 20 49 64 65 6E 74 69 74
+ 79 20 53 70 65 63 69 61 6C 69 73 74 14 00 00 48
+ 65 61 64 20 43 61 73 68 20 4D 61 6E 61 67 65 6D
+ 65 6E 74 16 00 00 49 54 20 53 65 63 75 72 69 74
+ 79 20 43 6F 6E 73 75 6C 74 61 6E 74 17 00 00 55
+ 6E 64 65 72 77 72 69 74 65 72 20 54 72 65 61 74
+ 79 20 44 65 73 6B 11 00 00 50 72 6F 6A 65 6B 74
+ 2D 41 73 73 69 73 74 65 6E 74 11 00 00 50 6F 72
+ 74 61 6C 20 43 6F 6E 73 75 6C 74 61 6E 74 10 00
+ 00 53 65 6E 2E 20 55 57 20 50 72 6F 70 65 72 74
+ 79 11 00 00 54 65 61 6D 20 53 65 63 72 65 74 61
+ 72 79 20 52 42 19 00 00 47 72 70 2E 20 53 65 63
+ 75 72 69 74 79 26 53 61 66 65 74 79 20 4D 67 72
+ 2E 19 00 00 4A 75 6E 69 6F 72 20 49 6E 76 65 73
+ 74 2E 20 43 6F 6E 74 72 6F 6C 6C 65 72 16 00 00
+ 65 2D 6D 61 72 6B 65 74 73 20 69 6E 74 65 6C 6C
+ 69 67 65 6E 63 65 0F 00 00 41 72 63 68 69 76 65
+ 20 4D 61 6E 61 67 65 72 19 00 00 41 73 73 69 73
+ 74 2E 20 74 6F 20 48 65 61 64 20 4D 61 72 6B 65
+ 74 69 6E 67 06 00 00 4B F6 63 68 69 6E 18 00 00
+ 41 73 73 69 73 74 61 6E 74 20 74 6F 20 48 65 61
+ 64 20 47 72 70 20 50 4D 14 00 00 48 6F 74 65 6C
+ 66 61 63 68 61 73 73 69 73 74 65 6E 74 69 6E 19
+ 00 00 48 65 61 64 20 42 65 73 74 20 50 72 61 63
+ 74 69 63 65 26 41 75 64 69 74 73 18 00 00 4B 6F
+ 6D 6D 75 6E 69 6B 61 74 69 6F 6E 73 73 70 65 7A
+ 69 61 6C 69 73 74 18 00 00 53 65 6E 2E 20 49 6E
+ 76 65 73 74 6D 2E 20 43 6F 6E 74 72 6F 6C 6C 65
+ 72 0A 00 00 50 4D 4F 20 45 75 72 6F 70 65 17 00
+ 00 53 70 65 63 69 61 6C 20 50 72 6F 6A 65 63 74
+ 20 4D 61 6E 61 67 65 72 18 00 00 53 65 6E 69 6F
+ 72 20 46 69 6E 61 6E 63 69 61 6C 20 4F 66 66 69
+ 63 65 72 15 00 00 49 6E 76 65 73 74 6D 65 6E 74
+ 20 41 63 63 6F 75 6E 74 69 6E 67 19 00 00 48 65
+ 61 64 20 6F 66 20 42 75 73 69 6E 65 73 73 20 54
+ 72 61 69 6E 69 6E 67 14 00 00 41 73 73 2E 20 41
+ 63 63 6F 75 6E 74 20 4D 61 6E 61 67 65 72 02 00
+ 00 44 42 17 00 00 4C 65 69 74 65 72 69 6E 20 45
+ 72 77 65 72 62 20 2F 20 52 65 63 68 74 18 00 00
+ 44 65 70 2E 20 47 72 6F 75 70 20 43 6C 61 69 6D
+ 73 20 43 6F 6F 72 64 2E 17 00 00 4D 61 6E 61 67
+ 65 72 20 53 79 73 74 65 6D 20 53 65 72 76 69 63
+ 65 73 16 00 00 4D 65 6D 62 65 72 20 42 55 53 20
+ 50 65 72 66 6F 72 6D 61 6E 63 65 14 00 00 49 6E
+ 76 65 73 74 6D 65 6E 74 20 52 65 70 6F 72 74 69
+ 6E 67 19 00 00 53 65 6E 2E 20 49 54 20 53 65 63
+ 75 72 69 74 79 20 43 6F 6E 73 75 6C 74 2E 17 00
+ 00 53 61 63 68 62 65 61 72 62 2E 20 45 72 77 65
+ 72 62 26 52 65 63 68 74 19 00 00 53 65 6E 2E 20
+ 41 63 63 6F 75 6E 74 61 6E 74 2F 43 6F 6E 74 72
+ 6F 6C 6C 2E 10 00 00 43 6F 6D 6D 2E 20 43 6F 6E
+ 73 75 6C 74 61 6E 74 17 00 00 4C 69 65 67 65 6E
+ 73 63 68 61 66 74 65 6E 76 65 72 77 61 6C 74 65
+ 72 10 00 00 41 64 6D 69 6E 2E 20 50 72 75 64 65
+ 6E 74 69 61 02 00 00 47 50 0B 00 00 43 75 72 61
+ 74 6F 72 73 68 69 70 19 00 00 48 65 61 64 20 6F
+ 66 20 57 6F 72 6B 73 74 2E 20 49 6E 66 72 61 73
+ 74 72 2E 18 00 00 4D 67 72 2E 20 44 61 74 61 20
+ 43 61 70 74 2E 26 54 61 78 6F 6E 6F 6D 79 19 00
+ 00 54 65 61 6D 6C 65 69 74 65 72 20 54 65 63 68
+ 6E 2E 20 53 75 70 70 6F 72 74 19 00 00 48 65 61
+ 64 20 53 52 20 54 65 63 68 6E 6F 6C 6F 67 79 20
+ 53 74 61 6E 64 2E 12 00 00 43 6F 6D 6D 2E 20 41
+ 73 73 2E 20 52 FC 73 63 68 6C 2E 0D 00 00 4C 6F
+ 63 61 6C 20 4F 66 66 69 63 65 72 06 00 00 4C 54
+ 50 52 20 44 12 00 00 53 74 76 2E 20 47 72 75 70
+ 70 65 6E 6C 65 69 74 65 72 06 00 00 4C 54 50 52
+ 20 45 06 00 00 4C 54 50 52 20 47 06 00 00 4C 54
+ 50 52 20 49 06 00 00 4C 54 50 52 20 46 06 00 00
+ 4C 54 50 52 20 41 09 00 00 52 65 70 6F 72 74 69
+ 6E 67 19 00 00 47 72 6F 75 70 20 49 54 20 53 65
+ 63 75 72 69 74 79 20 4F 66 66 69 63 65 72 06 00
+ 00 4C 54 50 52 20 48 18 00 00 4C 65 69 74 65 72
+ 20 48 79 70 6F 74 68 65 6B 65 6E 2F 41 64 6D 69
+ 6E 2E 06 00 00 4C 54 50 52 20 43 19 00 00 53 61
+ 63 68 62 65 61 72 62 65 69 74 65 72 69 6E 20 48
+ 79 70 6F 74 68 65 6B 11 00 00 41 73 73 69 73 74
+ 61 6E 74 20 43 4C 4F 2F 43 43 4F 18 00 00 50 72
+ 6F 6A 2E 20 4D 61 6E 61 67 65 72 20 53 70 6F 6E
+ 73 6F 72 69 6E 67 0A 00 00 4C 65 69 74 65 72 20
+ 42 61 75 11 00 00 48 65 61 64 20 6F 66 20 54 65
+ 6C 65 70 68 6F 6E 79 18 00 00 53 65 6E 69 6F 72
+ 20 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 53 70 65
+ 63 2E 18 00 00 41 73 73 2E 20 54 61 63 74 69 63
+ 61 6C 20 41 6C 6C 6F 63 61 74 69 6F 6E 12 00 00
+ 50 72 6F 6A 65 63 74 20 4D 61 6E 61 67 65 6D 65
+ 6E 74 19 00 00 48 65 61 64 20 49 6E 76 2E 46 75
+ 6E 64 73 2F 4F 70 65 72 61 74 69 6F 6E 73 18 00
+ 00 46 69 6E 61 6E 63 2E 20 4F 66 66 2E 20 73 77
+ 69 66 74 72 65 2E 63 6F 6D 19 00 00 4C 65 61 72
+ 6E 69 6E 67 43 6F 6F 72 64 69 6E 61 74 6F 72 20
+ 5A 4F 52 52 4F 17 00 00 48 65 61 64 20 43 4D 53
+ 20 43 6C 65 61 72 69 6E 67 20 48 6F 75 73 65 18
+ 00 00 45 6E 67 69 6E 65 65 72 69 6E 67 20 55 57
+ 20 41 73 73 69 73 74 61 6E 74 15 00 00 50 72 6F
+ 70 65 72 74 79 20 50 72 6F 64 75 63 74 20 4D 67
+ 72 2E 06 00 00 4C 54 50 52 20 42 0E 00 00 48 65
+ 61 64 20 50 72 75 64 65 6E 74 69 61 02 00 00 44
+ 57 19 00 00 48 65 61 64 20 44 61 74 61 20 57 61
+ 72 65 68 6F 75 73 65 20 53 65 72 76 2E 02 00 00
+ 47 45 19 00 00 48 65 61 64 20 43 6F 6E 74 72 6F
+ 6C 6C 69 6E 67 20 50 72 6F 6A 65 63 74 73 16 00
+ 00 50 6F 72 74 61 6C 20 43 6F 6E 74 65 6E 74 20
+ 4D 61 6E 61 67 65 72 02 00 00 20 35 02 00 00 20
+ 34 25 00 00 41 73 73 69 73 74 61 6E 74 65 20 64
+ E9 70 61 72 74 65 6D 65 6E 74 20 74 72 61 69 74
+ E9 20 6E 6F 6E 20 76 69 65 03 00 00 43 34 32 03
+ 00 00 43 34 33 03 00 00 43 34 34 03 00 00 43 34
+ 35 03 00 00 43 34 36 0D 00 00 52 75 6E 4F 66 66
+ 20 52 65 61 63 6F 6C 03 00 00 43 34 37 03 00 00
+ 43 34 38 03 00 00 43 34 39 03 00 00 43 35 30 12
+ 00 00 43 6C 61 69 6D 73 20 4D 61 6E 61 67 65 72
+ 20 53 45 41 0F 00 00 50 72 6F 63 65 73 73 20 41
+ 6E 61 6C 79 73 74 0B 00 00 54 65 61 6D 20 4C 65
+ 61 64 65 72 18 00 00 43 61 73 75 61 6C 74 79 20
+ 4C 69 61 69 73 6F 6E 20 4D 61 6E 61 67 65 72 17
+ 00 00 48 75 6D 61 6E 20 52 65 73 6F 75 72 63 65
+ 73 20 4F 66 66 69 63 65 72 0F 00 00 46 61 63 20
+ 55 6E 64 65 72 77 72 69 74 65 72 13 00 00 48 65
+ 61 64 20 4F 70 65 72 61 74 69 6F 6E 73 20 53 53
+ 43 1A 00 00 43 61 73 75 61 6C 74 79 20 54 72 65
+ 61 74 79 20 55 57 20 4D 61 6E 61 67 65 72 0A 00
+ 00 4D 61 6E 61 67 65 72 2D 49 54 1F 00 00 46 61
+ 63 75 6C 74 61 74 69 76 65 20 55 57 20 53 75 70
+ 70 6F 72 74 20 43 61 73 75 61 6C 74 79 1B 00 00
+ 48 65 61 64 20 4C 65 61 72 6E 69 6E 67 20 26 20
+ 44 65 76 65 6C 6F 70 6D 65 6E 74 22 00 00 48 65
+ 61 64 20 6F 66 20 46 61 63 20 50 72 6F 70 65 72
+ 74 79 20 26 20 45 6E 67 69 6E 65 65 72 69 6E 67
+ 12 00 00 41 63 63 6F 75 6E 74 69 6E 67 20 4D 61
+ 6E 61 67 65 72 05 00 00 37 30 32 34 31 29 00 00
+ 48 65 61 64 20 6F 66 20 41 6D 65 72 69 63 61 73
+ 20 44 69 76 69 73 69 6F 6E 20 48 75 6D 61 6E 20
+ 52 65 73 6F 75 72 63 65 73 02 00 00 30 39 05 00
+ 00 38 30 33 38 33 07 00 00 41 6E 61 6C 79 73 74
+ 03 00 00 31 31 30 05 00 00 33 32 34 35 31 1E 00
+ 00 47 72 6F 75 70 20 50 72 6F 64 75 63 74 20 4D
+ 61 6E 61 67 65 72 20 43 61 73 75 61 6C 74 79 02
+ 00 00 30 31 05 00 00 38 31 34 38 39 13 00 00 46
+ 69 6E 61 6E 63 69 61 6C 20 41 6E 61 6C 79 73 74
+ 20 31 03 00 00 31 32 30 05 00 00 38 30 35 30 30
+ 09 00 00 50 72 69 6E 63 69 70 61 6C 02 00 00 30
+ 34 18 00 00 48 65 61 64 20 49 6E 76 65 73 74 6D
+ 65 6E 74 20 41 63 63 6F 75 6E 74 2E 14 00 00 50
+ 6F 72 74 66 6F 6C 69 6F 20 4D 61 6E 61 67 65 6D
+ 65 6E 74 19 00 00 41 73 73 2E 49 6E 76 65 73 74
+ 6F 72 20 52 65 6C 61 74 69 6F 6E 20 4D 67 72 19
+ 00 00 45 6C 65 63 74 72 6F 6E 69 63 20 52 69 73
+ 6B 20 45 78 63 68 61 6E 67 65 73 09 00 00 54 4C
+ 20 42 75 66 66 65 74 14 00 00 4C 65 61 72 6E 69
+ 6E 67 20 43 6F 6F 72 64 69 6E 61 74 6F 72 18 00
+ 00 54 65 63 68 6E 69 63 61 6C 20 49 6E 66 72 61
+ 73 74 72 75 63 74 75 72 65 19 00 00 48 65 61 64
+ 20 54 65 63 68 6E 2E 49 6E 66 72 61 73 74 72 75
+ 63 74 75 72 65 19 00 00 49 55 46 20 43 6F 6D 6D
+ 75 6E 69 63 61 74 69 6F 6E 20 4D 61 6E 61 67 65
+ 72 12 00 00 43 46 4F 20 42 75 73 69 6E 65 73 73
+ 20 47 72 6F 75 70 16 00 00 54 4C 20 45 69 6E 72
+ 69 63 68 74 75 6E 67 73 70 6C 61 6E 75 6E 67 15
+ 00 00 49 6E 76 65 73 74 6D 65 6E 74 20 43 6F 6E
+ 74 72 6F 6C 6C 65 72 18 00 00 48 65 61 64 20 6F
+ 66 20 4C 69 62 72 61 72 79 20 53 65 72 76 69 63
+ 65 73 0C 00 00 52 69 73 6B 20 4D 61 6E 61 67 65
+ 72 19 00 00 46 75 6E 63 74 69 6F 6E 61 6C 20 44
+ 65 73 69 67 6E 20 41 6E 61 6C 79 73 74 16 00 00
+ 41 73 73 69 73 74 61 6E 74 20 52 69 73 6B 20 4D
+ 61 6E 61 67 65 72 04 00 00 36 38 38 30 13 00 00
+ 53 61 63 68 62 65 61 72 62 65 69 74 65 72 20 46
+ 69 62 75 04 00 00 36 38 38 37 08 00 00 45 6E 67
+ 69 6E 65 65 72 04 00 00 36 38 39 32 04 00 00 36
+ 38 39 36 04 00 00 36 39 30 39 0C 00 00 50 72 69
+ 63 69 6E 67 2F 44 61 74 61 04 00 00 36 39 31 31
+ 0E 00 00 43 41 44 2D 53 70 65 7A 69 61 6C 69 73
+ 74 04 00 00 36 39 31 34 04 00 00 36 39 32 33 17
+ 00 00 47 72 6C 2E 20 42 65 74 72 69 65 62 20 4D
+ 79 74 68 65 6E 71 75 61 69 04 00 00 36 39 32 38
+ 0D 00 00 48 65 61 64 20 6F 66 20 4C 45 2F 4C 54
+ 04 00 00 36 39 33 35 04 00 00 36 39 33 39 14 00
+ 00 54 65 63 68 6E 69 73 63 68 65 72 20 5A 65 69
+ 63 68 6E 65 72 04 00 00 36 39 34 33 04 00 00 36
+ 39 35 36 13 00 00 46 61 63 68 72 65 66 65 72 65
+ 6E 74 20 55 6D 77 65 6C 74 04 00 00 36 39 35 37
+ 04 00 00 36 39 36 36 18 00 00 42 65 61 75 66 74
+ 72 61 67 74 65 20 4A 75 6E 69 6F 72 20 50 6F 77
+ 65 72 04 00 00 36 39 37 31 04 00 00 36 39 39 34
+ 04 00 00 37 30 30 33 04 00 00 37 30 30 37 17 00
+ 00 48 65 61 64 20 43 6F 72 70 6F 72 61 74 65 20
+ 44 65 76 65 6C 6F 70 2E 04 00 00 37 30 30 38 14
+ 00 00 4C 65 69 74 65 6E 64 65 72 20 4B FC 63 68
+ 65 6E 63 68 65 66 04 00 00 37 30 30 39 17 00 00
+ 54 4C 20 45 6C 65 6B 74 72 6F 20 26 20 47 65 62
+ 2E 74 65 63 68 6E 2E 04 00 00 37 30 31 31 0F 00
+ 00 53 74 76 2E 20 4B FC 63 68 65 6E 63 68 65 66
+ 04 00 00 37 30 31 34 04 00 00 37 30 32 33 04 00
+ 00 37 30 32 34 04 00 00 37 30 32 37 04 00 00 37
+ 30 35 31 18 00 00 53 65 6E 2E 20 43 72 65 64 69
+ 74 20 52 69 73 6B 20 4D 61 6E 61 67 65 72 04 00
+ 00 37 30 35 32 04 00 00 37 30 35 37 12 00 00 50
+ 72 6F 6A 65 63 74 20 53 70 65 63 69 61 6C 69 73
+ 74 04 00 00 37 30 36 32 04 00 00 37 30 36 36 18
+ 00 00 48 65 61 64 20 6F 66 20 4D 65 64 69 63 61
+ 6C 20 53 65 72 76 69 63 65 73 04 00 00 37 30 36
+ 39 04 00 00 37 30 38 33 04 00 00 37 30 38 34 0A
+ 00 00 43 49 2D 4D 61 6E 61 67 65 72 04 00 00 37
+ 30 38 36 13 00 00 47 72 6F 75 70 20 48 52 20 43
+ 6F 6E 74 72 6F 6C 6C 65 72 04 00 00 37 30 39 31
+ 04 00 00 37 30 39 32 15 00 00 47 72 6C 2E 20 53
+ 70 65 63 69 61 6C 20 42 75 73 69 6E 65 73 73 04
+ 00 00 37 30 39 33 04 00 00 37 30 39 35 04 00 00
+ 37 30 39 37 18 00 00 42 75 73 69 6E 65 73 73 20
+ 41 70 70 6C 2E 20 41 72 63 68 69 74 65 63 74 04
+ 00 00 37 31 30 30 04 00 00 37 31 30 32 12 00 00
+ 4D 61 6E 61 67 65 6D 65 6E 74 20 53 75 70 70 6F
+ 72 74 04 00 00 37 31 32 30 04 00 00 37 31 32 35
+ 04 00 00 37 31 32 38 04 00 00 37 31 32 39 04 00
+ 00 37 31 33 33 04 00 00 37 31 34 30 04 00 00 37
+ 31 34 33 08 00 00 41 6B 74 75 61 72 69 6E 04 00
+ 00 37 31 35 31 04 00 00 37 31 35 37 16 00 00 41
+ 73 73 69 73 74 61 6E 74 20 74 6F 20 55 6E 69 74
+ 20 48 65 61 64 04 00 00 37 31 36 30 04 00 00 37
+ 31 36 36 10 00 00 53 65 63 72 65 74 61 72 79 20
+ 74 6F 20 44 4F 4F 04 00 00 37 31 37 36 04 00 00
+ 37 31 38 30 15 00 00 47 72 75 70 70 65 6E 6C 65
+ 69 74 65 72 20 53 75 70 70 6F 72 74 04 00 00 37
+ 31 38 31 18 00 00 48 65 61 64 20 6F 66 20 48 6F
+ 74 65 6C 20 4F 70 65 72 61 74 69 6F 6E 73 04 00
+ 00 37 31 38 32 02 00 00 55 53 08 00 00 4E 65 77
+ 20 59 6F 72 6B 04 00 00 37 32 31 30 04 00 00 37
+ 32 31 33 04 00 00 37 32 36 37 04 00 00 37 32 37
+ 33 19 00 00 53 65 63 74 69 6F 6E 20 48 65 61 64
+ 20 53 70 65 63 69 61 6C 20 41 73 73 2E 04 00 00
+ 37 32 38 30 19 00 00 48 65 61 64 20 53 74 72 61
+ 74 2E 20 50 6C 61 6E 6E 2E 26 20 50 72 6F 6A 2E
+ 04 00 00 37 32 38 34 04 00 00 37 33 31 38 04 00
+ 00 37 33 31 39 04 00 00 37 33 32 32 04 00 00 37
+ 33 32 33 04 00 00 37 33 33 31 04 00 00 37 33 33
+ 34 03 00 00 47 49 41 04 00 00 37 33 33 38 19 00
+ 00 47 49 41 20 4F 66 66 69 63 65 26 43 6F 6D 6D
+ 75 6E 69 63 61 74 69 6F 6E 73 04 00 00 37 33 33
+ 39 0B 00 00 4F 72 67 61 6E 69 73 61 74 6F 72 04
+ 00 00 37 33 34 31 06 00 00 41 6B 74 75 61 72 04
+ 00 00 37 33 34 35 04 00 00 37 33 34 39 04 00 00
+ 37 33 36 30 04 00 00 37 33 36 31 04 00 00 37 33
+ 36 32 04 00 00 37 33 36 33 04 00 00 37 33 36 37
+ 04 00 00 37 33 37 37 04 00 00 37 33 37 38 15 00
+ 00 41 75 73 62 69 6C 64 75 6E 67 73 73 61 63 68
+ 62 65 61 72 62 2E 04 00 00 37 33 39 30 04 00 00
+ 37 33 39 32 04 00 00 37 34 32 30 04 00 00 37 34
+ 33 35 04 00 00 37 34 34 32 04 00 00 37 34 35 35
+ 11 00 00 54 4C 20 45 6C 65 6B 74 72 6F 74 65 63
+ 68 6E 69 6B 04 00 00 37 34 36 30 04 00 00 37 34
+ 36 31 04 00 00 37 34 37 39 04 00 00 37 34 39 32
+ 04 00 00 37 34 39 35 04 00 00 37 34 39 36 17 00
+ 00 55 65 62 65 72 73 65 74 7A 2E 2F 54 65 72 6D
+ 69 6E 6F 6C 6F 67 69 6E 04 00 00 37 35 30 30 0D
+ 00 00 4C 65 67 61 6C 20 43 6F 75 6E 73 65 6C 04
+ 00 00 37 35 30 33 04 00 00 37 35 31 30 13 00 00
+ 53 61 63 68 62 65 61 72 62 2E 20 47 72 6F 75 70
+ 20 50 4D 02 00 00 43 55 04 00 00 37 35 33 39 11
+ 00 00 54 61 74 65 6E 20 73 74 61 74 74 20 57 6F
+ 72 74 65 04 00 00 37 35 34 32 14 00 00 53 65 6E
+ 69 6F 72 20 41 75 64 69 74 20 4D 61 6E 61 67 65
+ 72 04 00 00 37 35 34 37 04 00 00 37 35 34 39 04
+ 00 00 37 35 35 38 04 00 00 37 35 36 32 12 00 00
+ 50 72 6F 6A 65 63 74 20 43 6F 6E 73 75 6C 74 61
+ 6E 74 04 00 00 37 35 36 35 0C 00 00 43 6F 6D 6D
+ 69 73 2D 4B FC 63 68 65 04 00 00 37 35 36 38 04
+ 00 00 37 35 37 31 04 00 00 37 35 37 33 13 00 00
+ 53 61 63 68 62 65 61 72 62 65 69 74 65 72 20 42
+ 65 62 75 04 00 00 37 35 37 34 19 00 00 53 61 63
+ 68 62 65 61 72 62 2E 20 52 65 63 68 6E 75 6E 67
+ 73 77 65 73 65 6E 04 00 00 37 35 37 37 04 00 00
+ 37 35 38 31 13 00 00 48 65 61 64 20 6F 66 20 4C
+ 41 2F 4C 45 2F 4C 4E 20 46 4D 04 00 00 37 35 39
+ 32 04 00 00 37 35 39 33 04 00 00 37 35 39 39 04
+ 00 00 37 36 30 31 04 00 00 37 36 32 31 04 00 00
+ 37 36 32 36 04 00 00 37 36 32 39 11 00 00 41 63
+ 74 75 61 72 69 61 6C 20 41 6E 61 6C 79 73 74 04
+ 00 00 37 36 34 31 04 00 00 37 36 34 37 04 00 00
+ 37 36 34 38 09 00 00 45 63 6F 6E 6F 6D 69 73 74
+ 04 00 00 37 36 34 39 04 00 00 37 36 35 30 04 00
+ 00 37 36 35 32 0E 00 00 50 72 6F 6A 65 6B 74 6D
+ 61 6E 61 67 65 72 04 00 00 37 36 35 39 04 00 00
+ 37 36 36 30 12 00 00 4B 6F 6E 7A 65 72 6E 6B 6F
+ 6F 72 64 69 6E 61 74 6F 72 04 00 00 37 36 36 31
+ 04 00 00 37 36 36 33 04 00 00 37 36 38 31 04 00
+ 00 37 36 38 36 04 00 00 37 36 38 38 04 00 00 37
+ 36 39 30 04 00 00 37 36 39 32 04 00 00 37 36 39
+ 37 04 00 00 37 37 30 38 18 00 00 4D 65 6D 62 65
+ 72 20 6F 66 20 45 78 65 63 75 74 69 76 65 20 54
+ 65 61 6D 04 00 00 37 37 31 33 0E 00 00 49 6E 6E
+ 65 6E 61 72 63 68 69 74 65 6B 74 04 00 00 37 37
+ 32 33 0E 00 00 53 65 6E 69 6F 72 20 41 63 74 75
+ 61 72 79 04 00 00 37 37 33 31 04 00 00 37 37 34
+ 35 04 00 00 37 37 35 33 04 00 00 37 37 35 36 04
+ 00 00 37 37 37 37 04 00 00 37 37 37 38 04 00 00
+ 37 37 38 33 04 00 00 37 37 38 37 12 00 00 48 65
+ 61 64 20 6F 66 20 44 65 70 61 72 74 6D 65 6E 74
+ 04 00 00 37 37 38 39 04 00 00 37 37 39 38 04 00
+ 00 37 38 31 38 04 00 00 37 38 33 35 04 00 00 37
+ 38 33 36 04 00 00 37 38 37 30 04 00 00 37 38 37
+ 32 1A 00 00 54 4C 20 4D 61 72 69 6E 65 20 55 57
+ 20 47 72 65 61 74 65 72 20 43 68 69 6E 61 03 00
+ 00 32 30 39 12 00 00 50 65 72 73 6F 6E 61 6C 20
+ 41 73 73 69 73 74 61 6E 74 03 00 00 32 31 30 18
+ 00 00 48 65 61 64 20 4D 67 6D 74 26 20 46 69 6E
+ 2E 20 53 65 72 76 69 63 65 73 04 00 00 38 35 33
+ 37 13 00 00 44 61 74 61 20 49 54 2D 4B 6F 6F 72
+ 64 69 6E 61 74 6F 72 03 00 00 34 39 38 05 00 00
+ 31 30 35 32 33 05 00 00 31 30 31 36 34 04 00 00
+ 38 36 33 31 03 00 00 32 34 34 03 00 00 32 34 35
+ 04 00 00 38 36 30 34 04 00 00 36 35 36 39 10 00
+ 00 50 72 69 63 69 70 61 6C 20 4F 66 66 69 63 65
+ 72 04 00 00 38 36 30 31 05 00 00 31 30 34 32 39
+ 03 00 00 31 32 34 04 00 00 35 38 36 32 05 00 00
+ 31 31 30 32 37 03 00 00 35 36 32 03 00 00 35 30
+ 32 04 00 00 33 39 33 32 04 00 00 38 39 32 39 14
+ 00 00 48 65 61 64 20 48 75 6D 61 6E 20 52 65 73
+ 6F 75 72 63 65 73 05 00 00 31 31 38 33 33 04 00
+ 00 35 31 36 38 04 00 00 38 35 37 37 04 00 00 38
+ 36 37 33 03 00 00 33 33 38 03 00 00 33 33 37 14
+ 00 00 53 65 6E 69 6F 72 20 41 64 6D 69 6E 69 73
+ 74 72 61 74 6F 72 04 00 00 38 36 38 33 03 00 00
+ 32 34 37 1C 00 00 4D 61 6E 61 67 65 72 20 4E 6F
+ 6E 2D 4C 69 66 65 20 52 65 69 6E 73 75 72 61 6E
+ 63 65 04 00 00 37 30 32 30 04 00 00 33 38 36 34
+ 03 00 00 33 38 38 1A 00 00 48 65 61 64 20 6F 66
+ 20 46 69 6E 61 6E 63 69 61 6C 20 41 64 76 69 73
+ 6F 72 79 03 00 00 32 31 32 1D 00 00 41 73 73 74
+ 2E 20 74 6F 20 43 68 69 65 66 20 52 65 70 72 65
+ 73 65 6E 74 61 74 69 76 65 05 00 00 31 30 30 37
+ 39 03 00 00 32 31 39 1A 00 00 43 6F 6E 74 72 6F
+ 6C 6C 65 72 2C 20 52 65 69 6E 73 2E 41 63 63 6F
+ 75 6E 74 73 03 00 00 33 36 36 03 00 00 31 33 35
+ 03 00 00 35 33 39 03 00 00 35 30 39 1D 00 00 48
+ 65 61 64 20 6F 66 20 43 6F 72 70 6F 72 61 74 65
+ 20 44 65 76 65 6C 6F 70 6D 65 6E 74 03 00 00 31
+ 34 35 17 00 00 52 65 70 72 65 73 65 6E 74 61 74
+ 69 76 65 20 50 72 6F 70 65 72 74 79 03 00 00 35
+ 32 32 0E 00 00 4D 61 72 69 6E 65 20 4D 61 6E 61
+ 67 65 72 03 00 00 35 32 31 04 00 00 33 37 35 38
+ 04 00 00 36 39 37 36 04 00 00 36 31 35 30 04 00
+ 00 39 31 35 34 19 00 00 48 65 61 64 20 52 65 69
+ 6E 73 75 72 61 6E 63 65 20 41 63 63 6F 75 6E 74
+ 2E 02 00 00 45 53 02 00 00 53 4F 04 00 00 32 39
+ 33 34 10 00 00 55 6E 64 65 72 77 72 69 74 65 72
+ 20 53 6F 52 69 02 00 00 45 59 04 00 00 32 39 36
+ 37 12 00 00 41 64 6D 69 6E 69 73 74 72 61 74 69
+ 6F 6E 20 53 53 43 02 00 00 45 50 02 00 00 50 31
+ 04 00 00 32 39 38 36 18 00 00 55 57 20 53 75 70
+ 70 6F 72 74 20 46 61 63 2E 20 50 72 6F 70 65 72
+ 74 79 04 00 00 33 30 35 35 0D 00 00 53 65 63 72
+ 65 74 61 72 79 20 53 53 43 04 00 00 33 30 38 31
+ 02 00 00 43 33 04 00 00 33 31 30 32 04 00 00 33
+ 31 30 33 04 00 00 33 31 30 37 02 00 00 45 4F 04
+ 00 00 33 31 31 31 04 00 00 33 31 31 32 02 00 00
+ 45 45 04 00 00 33 31 31 36 18 00 00 48 65 61 64
+ 20 41 70 70 6C 69 63 61 74 69 6F 6E 20 53 75 70
+ 70 6F 72 74 02 00 00 45 44 04 00 00 33 31 31 37
+ 04 00 00 33 31 33 31 13 00 00 42 75 73 69 6E 65
+ 73 73 20 45 78 70 65 72 74 20 53 53 43 04 00 00
+ 33 31 33 33 02 00 00 53 31 04 00 00 33 31 34 34
+ 11 00 00 55 6E 64 65 72 77 72 69 74 65 72 20 53
+ 57 49 46 54 02 00 00 45 47 04 00 00 33 31 34 38
+ 11 00 00 46 69 6E 61 6E 63 69 61 6C 20 41 6E 61
+ 6C 79 73 74 04 00 00 38 32 34 30 10 00 00 4C 65
+ 67 61 6C 20 43 6F 6E 73 75 6C 74 61 6E 74 04 00
+ 00 38 32 34 38 04 00 00 38 32 35 32 04 00 00 38
+ 32 35 35 04 00 00 38 32 36 30 04 00 00 38 32 36
+ 39 18 00 00 41 73 73 2E 20 53 74 61 62 73 73 74
+ 2E 20 53 69 63 68 65 72 68 65 69 74 04 00 00 38
+ 32 37 32 04 00 00 38 32 37 35 04 00 00 38 32 37
+ 39 16 00 00 46 FC 68 72 75 6E 67 73 61 73 73 69
+ 73 74 65 6E 74 69 6E 20 43 43 04 00 00 38 32 38
+ 36 19 00 00 53 65 6B 72 65 74 61 72 69 61 74 73
+ 6D 69 74 61 72 62 65 69 74 65 72 49 6E 04 00 00
+ 38 33 30 38 04 00 00 38 33 33 30 04 00 00 38 33
+ 33 35 04 00 00 38 33 33 39 04 00 00 38 33 34 34
+ 17 00 00 48 65 61 64 20 6F 66 20 41 63 74 75 61
+ 72 69 61 6C 20 50 72 6F 6A 2E 04 00 00 38 33 35
+ 34 04 00 00 38 33 35 37 04 00 00 38 33 37 38 04
+ 00 00 38 33 38 34 04 00 00 38 33 38 36 04 00 00
+ 38 33 38 37 04 00 00 38 33 38 38 04 00 00 38 33
+ 39 30 04 00 00 38 34 30 32 04 00 00 38 34 30 35
+ 10 00 00 4B 6F 6F 72 64 69 6E 61 74 69 6F 6E 20
+ 54 43 45 04 00 00 38 34 30 38 11 00 00 53 65 6E
+ 69 6F 72 20 41 63 63 6F 75 6E 74 61 6E 74 04 00
+ 00 38 34 30 39 15 00 00 41 63 74 75 61 72 69 61
+ 6C 20 44 65 76 65 6C 6F 70 6D 65 6E 74 04 00 00
+ 38 34 31 37 04 00 00 38 34 32 32 04 00 00 38 34
+ 32 35 04 00 00 38 34 32 36 14 00 00 4C 65 69 74
+ 65 72 69 6E 20 53 65 6B 72 65 74 61 72 69 61 74
+ 04 00 00 38 34 32 38 04 00 00 38 34 33 32 04 00
+ 00 38 34 33 36 04 00 00 38 34 33 38 04 00 00 38
+ 34 33 39 04 00 00 38 34 34 34 04 00 00 38 34 35
+ 30 04 00 00 38 34 35 32 04 00 00 38 34 36 39 04
+ 00 00 38 34 37 30 04 00 00 38 34 37 33 04 00 00
+ 38 34 37 37 05 00 00 31 31 30 33 37 05 00 00 31
+ 31 33 33 33 05 00 00 31 31 36 35 32 05 00 00 31
+ 31 36 39 38 05 00 00 31 31 38 36 39 05 00 00 31
+ 31 39 36 30 05 00 00 31 31 39 36 34 05 00 00 31
+ 31 39 37 34 05 00 00 31 32 30 31 37 05 00 00 31
+ 32 30 35 33 05 00 00 31 32 31 38 32 05 00 00 31
+ 32 32 39 36 05 00 00 31 32 33 30 30 05 00 00 31
+ 32 33 31 32 05 00 00 31 32 36 34 33 05 00 00 31
+ 32 36 37 37 05 00 00 31 32 36 38 34 05 00 00 31
+ 32 37 32 34 05 00 00 31 32 37 37 38 05 00 00 31
+ 32 38 34 37 05 00 00 31 32 38 38 30 05 00 00 31
+ 32 39 36 32 05 00 00 31 32 39 37 39 05 00 00 31
+ 33 30 30 31 05 00 00 31 33 30 32 34 05 00 00 31
+ 33 30 36 33 05 00 00 31 33 30 37 39 05 00 00 31
+ 33 31 34 30 05 00 00 31 33 31 34 34 05 00 00 31
+ 33 31 34 35 04 00 00 33 37 39 32 04 00 00 35 34
+ 35 35 14 00 00 50 72 6F 64 75 63 74 20 4D 61 6E
+ 61 67 65 72 20 53 61 63 68 04 00 00 35 35 38 36
+ 04 00 00 35 36 36 39 04 00 00 37 34 37 38 03 00
+ 00 31 30 30 0F 00 00 46 65 6D 6D 65 20 64 65 20
+ 6D E9 6E 61 67 65 02 00 00 31 31 13 00 00 47 65
+ 73 74 69 6F 6E 20 69 6E 66 6F 72 6D 61 74 69 6F
+ 6E 02 00 00 31 34 0C 00 00 44 69 72 65 63 74 65
+ 75 72 20 52 48 02 00 00 31 35 12 00 00 73 6F 75
+ 73 63 2E 46 61 63 20 64 6F 6D 6D 61 67 65 73 02
+ 00 00 31 38 14 00 00 44 E9 6C E9 67 75 E9 20 73
+ 6F 75 73 63 72 69 70 74 69 6F 6E 02 00 00 32 32
+ 0F 00 00 48 F4 74 65 73 73 65 20 61 63 63 65 75
+ 69 6C 0A 00 00 73 65 63 72 E9 74 61 69 72 65 02
+ 00 00 32 38 02 00 00 32 39 16 00 00 67 65 73 74
+ 69 6F 6E 6E 61 69 72 65 20 63 6F 6D 70 74 61 62
+ 6C 65 01 00 00 33 20 00 00 52 65 73 70 6F 6E 73
+ 69 62 6C 65 20 67 65 73 74 69 6F 6E 20 64 75 20
+ 70 65 72 73 6F 6E 6E 65 6C 02 00 00 33 30 16 00
+ 00 47 65 73 74 69 6F 6E 6E 61 69 72 65 20 63 6F
+ 6D 70 74 61 62 6C 65 1E 00 00 52 65 73 70 6F 6E
+ 73 69 62 6C 65 20 72 69 73 71 75 65 73 20 74 65
+ 63 68 6E 69 71 75 65 73 02 00 00 33 34 09 00 00
+ 43 6F 6D 70 74 61 62 6C 65 02 00 00 33 36 02 00
+ 00 33 38 1D 00 00 52 65 73 70 2E 73 6F 75 73 63
+ 2E 72 69 73 71 75 65 73 20 74 65 63 68 6E 69 71
+ 75 65 73 02 00 00 33 39 17 00 00 54 65 63 68 6E
+ 2E 73 65 72 76 69 63 65 73 20 67 E9 6E E9 72 61
+ 75 78 17 00 00 52 65 73 70 6F 6E 73 69 62 6C 65
+ 20 42 61 63 6B 20 6F 66 66 69 63 65 17 00 00 52
+ 65 73 70 6F 6E 73 69 62 6C 65 20 62 75 72 65 61
+ 75 74 69 71 75 65 02 00 00 34 33 02 00 00 34 37
+ 16 00 00 41 73 73 69 73 74 61 6E 74 65 20 64 65
+ 20 73 65 63 74 69 6F 6E 73 19 00 00 41 6E 61 6C
+ 79 73 74 65 20 72 E9 67 6C 65 75 72 20 73 69 6E
+ 73 69 74 72 65 02 00 00 35 33 02 00 00 35 34 02
+ 00 00 35 39 17 00 00 53 65 63 72 E9 74 61 69 72
+ 65 20 64 65 20 44 69 72 65 63 74 69 6F 6E 01 00
+ 00 36 17 00 00 52 65 73 70 2E 53 69 6E 69 73 74
+ 72 65 20 6A 75 72 69 64 69 71 75 65 02 00 00 36
+ 33 02 00 00 36 38 15 00 00 53 6F 75 73 63 72 2E
+ 74 72 61 69 74 E9 73 20 6A 75 6E 69 6F 72 02 00
+ 00 37 32 18 00 00 41 73 73 69 73 74 61 6E 74 20
+ 73 6F 75 73 63 2E 20 54 72 61 69 74 E9 73 02 00
+ 00 37 36 0C 00 00 53 6F 75 73 63 2E 46 61 63 20
+ 52 43 02 00 00 37 37 0E 00 00 52 65 73 70 6F 6E
+ 73 69 62 6C 65 20 52 48 02 00 00 37 38 1F 00 00
+ 22 52 65 73 70 6F 6E 73 69 62 6C 65 20 22 22 73
+ 70 65 63 69 61 6C 20 6C 69 6E 65 73 22 22 22 15
+ 00 00 53 6F 75 73 63 72 69 70 74 65 75 72 73 20
+ 74 72 61 69 74 E9 73 1E 00 00 41 64 6D 69 6E 69
+ 73 74 72 61 74 65 75 72 20 73 79 73 74 E8 6D 65
+ 20 72 E9 73 65 61 75 78 04 00 00 53 52 49 53 0E
+ 00 00 43 6C 61 69 6D 73 20 73 75 70 70 6F 72 74
+ 15 00 00 41 63 63 6F 75 6E 74 61 6E 74 2F 20 48
+ 52 20 61 64 6D 69 6E 2E
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5
new file mode 100755
index 0000000000..e1105745b7
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR5
@@ -0,0 +1,515 @@
+ 3C 00 18 20 15 00 00 53
+ 65 63 72 65 74 61 72 79 2F 66 61 63 2F 61 64 6D
+ 6E 69 73 2E 02 00 00 43 45 17 00 00 43 6C 69 65
+ 6E 74 20 52 65 6C 61 74 69 6F 6E 20 4D 61 6E 61
+ 67 65 72 02 00 00 4D 4E 04 00 00 38 37 39 36 04
+ 00 00 53 52 4E 4D 02 00 00 4D 55 02 00 00 50 52
+ 05 00 00 31 32 30 31 31 02 00 00 4D 47 05 00 00
+ 31 31 36 31 30 05 00 00 31 30 34 38 33 02 00 00
+ 53 43 05 00 00 31 30 32 31 32 02 00 00 4C 55 04
+ 00 00 33 36 32 34 08 00 00 53 52 4E 4D 2C 20 41
+ 44 02 00 00 4D 57 04 00 00 37 30 33 33 05 00 00
+ 31 32 37 34 30 05 00 00 31 31 35 33 38 02 00 00
+ 4D 50 02 00 00 4D 46 05 00 00 31 31 34 37 32 04
+ 00 00 32 37 30 38 04 00 00 38 32 34 39 02 00 00
+ 4D 54 04 00 00 35 39 38 32 04 00 00 36 39 33 36
+ 04 00 00 35 34 31 32 04 00 00 35 38 33 37 07 00
+ 00 53 52 4E 4D 2C 20 44 02 00 00 41 52 04 00 00
+ 37 33 34 32 05 00 00 31 32 39 33 33 04 00 00 36
+ 30 36 32 04 00 00 37 38 35 39 19 00 00 41 73 73
+ 65 74 20 26 20 4C 69 61 62 69 6C 69 74 79 20 4D
+ 61 6E 61 67 65 72 19 00 00 48 65 61 64 20 6F 66
+ 20 47 72 6F 75 70 77 61 72 65 26 50 6F 72 74 61
+ 6C 73 0F 00 00 48 65 61 64 20 43 49 4F 20 4F 66
+ 66 69 63 65 19 00 00 53 65 6E 69 6F 72 20 50 72
+ 6F 63 75 72 65 6D 65 6E 74 20 4F 66 66 69 63 2E
+ 02 00 00 53 44 18 00 00 48 65 61 64 20 6F 66 20
+ 53 65 72 76 65 72 20 45 6E 67 69 6E 65 65 72 2E
+ 13 00 00 43 4D 53 20 44 61 74 61 20 43 6F 6E 73
+ 75 6C 74 61 6E 74 15 00 00 44 65 70 75 74 79 20
+ 50 6F 72 74 61 6C 20 4D 61 6E 61 67 65 72 0B 00
+ 00 54 61 78 20 43 6F 75 6E 73 65 6C 02 00 00 4E
+ 52 14 00 00 48 65 61 64 20 6F 66 20 41 70 70 2E
+ 20 49 6E 74 65 67 72 2E 13 00 00 48 65 61 64 20
+ 49 54 20 49 6E 76 65 73 74 6D 65 6E 74 73 09 00
+ 00 50 72 75 64 65 6E 74 69 61 04 00 00 38 31 39
+ 39 04 00 00 33 31 39 30 05 00 00 31 33 30 39 36
+ 04 00 00 38 32 34 37 02 00 00 55 54 04 00 00 35
+ 32 35 36 04 00 00 35 32 33 36 05 00 00 31 31 30
+ 31 36 04 00 00 34 36 30 32 04 00 00 34 36 30 36
+ 05 00 00 31 31 38 32 36 05 00 00 31 31 35 36 31
+ 04 00 00 32 34 34 38 05 00 00 31 32 32 31 32 04
+ 00 00 36 39 33 37 05 00 00 31 30 31 36 32 05 00
+ 00 31 32 34 31 34 04 00 00 38 31 38 35 04 00 00
+ 36 39 30 33 04 00 00 33 37 31 36 04 00 00 37 30
+ 32 39 04 00 00 36 35 36 35 05 00 00 31 32 39 38
+ 35 05 00 00 31 31 31 33 30 04 00 00 32 39 30 35
+ 04 00 00 38 34 32 34 04 00 00 34 39 35 36 04 00
+ 00 35 34 39 36 04 00 00 32 34 35 34 05 00 00 31
+ 32 30 32 32 04 00 00 32 31 38 32 04 00 00 37 37
+ 38 31 04 00 00 37 34 33 38 04 00 00 37 32 35 31
+ 05 00 00 31 31 31 32 38 05 00 00 31 30 32 30 38
+ 05 00 00 31 30 36 38 32 04 00 00 36 39 30 36 04
+ 00 00 35 32 33 39 04 00 00 38 38 36 31 05 00 00
+ 31 31 30 34 33 05 00 00 31 31 37 32 32 04 00 00
+ 36 32 38 36 02 00 00 4C 49 04 00 00 37 31 39 36
+ 04 00 00 33 31 39 31 04 00 00 34 33 38 30 04 00
+ 00 36 30 38 33 04 00 00 38 35 37 35 04 00 00 36
+ 38 33 32 04 00 00 33 39 31 35 03 00 00 31 31 33
+ 05 00 00 31 32 39 30 31 05 00 00 31 31 35 32 38
+ 04 00 00 35 30 36 39 05 00 00 31 32 38 35 35 05
+ 00 00 31 32 31 33 30 04 00 00 36 34 35 35 04 00
+ 00 34 39 34 31 04 00 00 33 35 32 35 02 00 00 54
+ 45 04 00 00 37 30 33 32 04 00 00 35 32 39 37 05
+ 00 00 31 30 32 39 32 04 00 00 39 37 39 31 05 00
+ 00 31 30 35 31 39 04 00 00 31 35 30 30 04 00 00
+ 33 35 37 34 04 00 00 31 39 32 36 04 00 00 33 35
+ 36 33 04 00 00 33 39 35 33 05 00 00 31 31 33 32
+ 37 05 00 00 31 32 38 33 36 04 00 00 35 35 33 31
+ 04 00 00 36 32 37 37 04 00 00 38 39 33 31 04 00
+ 00 35 37 33 30 05 00 00 38 30 33 36 31 15 00 00
+ 50 6F 73 69 74 69 6F 6E 20 4E 6F 74 20 44 65 66
+ 69 6E 65 64 2C 03 00 00 35 34 32 04 00 00 33 35
+ 31 37 05 00 00 31 30 35 36 31 05 00 00 31 30 35
+ 36 32 05 00 00 31 30 35 36 33 05 00 00 31 30 35
+ 36 38 05 00 00 31 30 35 37 37 05 00 00 31 30 35
+ 38 30 11 00 00 4C 65 69 74 65 72 20 50 43 20 53
+ 75 70 70 6F 72 74 05 00 00 31 30 35 38 31 05 00
+ 00 31 30 35 38 35 05 00 00 31 30 35 38 39 05 00
+ 00 31 30 36 30 36 05 00 00 31 30 36 31 33 13 00
+ 00 43 72 65 64 69 74 20 52 69 73 6B 20 41 6E 61
+ 6C 79 73 74 05 00 00 31 30 36 31 35 05 00 00 31
+ 30 36 31 37 15 00 00 45 78 70 65 72 74 65 20 4E
+ 61 74 75 72 67 65 66 61 68 72 65 6E 05 00 00 31
+ 30 36 31 38 05 00 00 31 30 36 32 35 05 00 00 31
+ 30 36 32 36 05 00 00 31 30 36 33 34 05 00 00 31
+ 30 36 33 39 0C 00 00 41 73 73 69 73 74 61 6E 74
+ 20 43 58 05 00 00 31 30 36 35 37 05 00 00 31 30
+ 36 37 35 0E 00 00 4C 65 69 74 65 72 20 53 75 70
+ 70 6F 72 74 05 00 00 31 30 36 37 36 05 00 00 31
+ 30 36 38 37 05 00 00 31 30 36 39 32 05 00 00 31
+ 30 37 30 34 10 00 00 53 70 65 7A 69 61 6C 69 73
+ 74 69 6E 20 47 49 53 05 00 00 31 30 37 33 30 05
+ 00 00 31 30 37 33 33 05 00 00 31 30 37 34 33 16
+ 00 00 48 65 61 64 20 41 70 70 6C 2E 20 44 65 76
+ 65 6C 6F 70 6D 65 6E 74 05 00 00 31 30 37 34 36
+ 19 00 00 55 6E 69 76 65 72 73 2E 52 65 6C 61 74
+ 69 6F 6E 73 20 4D 61 6E 61 67 65 72 05 00 00 31
+ 30 37 34 39 05 00 00 31 30 37 36 38 0A 00 00 48
+ 65 61 64 20 6F 66 20 49 46 05 00 00 31 30 37 37
+ 39 0E 00 00 54 65 61 6D 20 4C 65 61 64 65 72 20
+ 50 56 05 00 00 31 30 37 39 37 05 00 00 31 30 38
+ 30 33 05 00 00 31 30 38 30 36 05 00 00 31 30 38
+ 30 38 05 00 00 31 30 38 31 34 05 00 00 31 30 38
+ 32 31 05 00 00 31 30 38 32 35 11 00 00 54 4C 20
+ 52 65 63 68 6E 75 6E 67 73 77 65 73 65 6E 05 00
+ 00 31 30 38 32 37 0A 00 00 50 43 20 53 75 70 70
+ 6F 72 74 05 00 00 31 30 38 32 38 15 00 00 4C 65
+ 69 74 65 72 20 53 70 72 61 63 68 65 6E 64 69 65
+ 6E 73 74 05 00 00 31 30 38 33 30 15 00 00 53 65
+ 6B 72 65 74 E4 72 69 6E 2F 53 61 63 68 62 65 61
+ 72 62 2E 05 00 00 31 30 38 33 34 05 00 00 31 30
+ 38 33 35 02 00 00 46 49 05 00 00 31 30 38 33 36
+ 05 00 00 31 30 38 34 30 05 00 00 31 30 38 34 36
+ 05 00 00 31 30 38 36 31 05 00 00 31 30 38 36 32
+ 12 00 00 41 75 64 69 74 20 26 20 49 6E 73 70 65
+ 63 74 69 6F 6E 05 00 00 31 30 38 36 33 05 00 00
+ 31 30 38 37 31 05 00 00 31 30 38 38 33 05 00 00
+ 31 30 38 39 30 05 00 00 31 30 38 39 33 17 00 00
+ 41 73 73 69 73 74 61 6E 74 20 74 6F 20 44 65 70
+ 74 2E 20 48 65 61 64 05 00 00 31 30 38 39 39 05
+ 00 00 31 30 39 30 33 05 00 00 31 30 39 30 35 05
+ 00 00 31 30 39 31 33 19 00 00 47 72 6C 2E 20 47
+ 72 61 66 69 73 63 68 65 20 50 72 6F 64 75 6B 74
+ 69 6F 6E 05 00 00 31 30 39 31 35 05 00 00 31 30
+ 39 31 38 05 00 00 31 30 39 32 30 05 00 00 31 30
+ 39 32 33 05 00 00 31 30 39 32 34 05 00 00 31 30
+ 39 33 39 05 00 00 31 30 39 34 32 05 00 00 31 30
+ 39 34 33 05 00 00 31 30 39 35 31 05 00 00 31 30
+ 39 35 35 05 00 00 31 30 39 35 37 13 00 00 54 65
+ 61 6D 6C 65 61 64 65 72 20 52 65 73 65 61 72 63
+ 68 05 00 00 31 30 39 36 32 05 00 00 31 30 39 37
+ 30 05 00 00 31 30 39 37 34 05 00 00 31 30 39 37
+ 35 05 00 00 31 30 39 37 36 05 00 00 31 30 39 38
+ 38 05 00 00 31 30 39 39 36 05 00 00 31 31 30 30
+ 33 05 00 00 31 31 30 30 34 02 00 00 4D 44 05 00
+ 00 31 31 30 30 38 12 00 00 48 65 61 64 20 44 69
+ 76 69 73 69 6F 6E 61 6C 20 4D 44 05 00 00 31 31
+ 30 30 39 05 00 00 31 31 30 31 32 05 00 00 31 31
+ 30 31 33 05 00 00 31 31 30 31 34 16 00 00 47 72
+ 75 70 70 65 6E 6C 65 69 74 65 72 20 4D 61 74 65
+ 72 69 61 6C 05 00 00 31 31 30 32 33 02 00 00 4B
+ 42 05 00 00 31 31 30 32 38 0E 00 00 4B 42 4D 2D
+ 50 72 61 6B 74 69 6B 61 6E 74 05 00 00 31 31 30
+ 32 39 10 00 00 4B 42 4D 2D 50 72 61 6B 74 69 6B
+ 61 6E 74 69 6E 05 00 00 31 31 30 33 30 05 00 00
+ 31 31 30 33 31 05 00 00 31 31 30 33 33 05 00 00
+ 31 31 30 33 34 05 00 00 31 31 30 33 35 19 00 00
+ 55 57 20 4D 67 20 54 72 65 61 74 79 20 50 72 6F
+ 70 2E 20 26 20 43 61 73 2E 05 00 00 31 31 30 33
+ 36 05 00 00 31 31 30 33 38 05 00 00 31 31 30 33
+ 39 17 00 00 55 53 20 47 41 41 50 20 52 65 70 6F
+ 72 74 2E 20 4D 61 6E 61 67 65 72 05 00 00 31 31
+ 30 34 30 19 00 00 50 72 6F 63 65 73 73 20 4D 61
+ 6E 61 67 2E 20 46 69 6E 26 43 6F 6E 74 72 2E 05
+ 00 00 31 31 30 34 34 14 00 00 4C 65 67 61 6C 20
+ 43 6C 61 69 6D 73 20 43 6F 75 6E 73 65 6C 05 00
+ 00 31 31 30 35 31 05 00 00 31 31 30 35 37 05 00
+ 00 31 31 30 36 32 05 00 00 31 31 30 37 30 05 00
+ 00 31 31 30 37 32 05 00 00 31 31 30 37 37 05 00
+ 00 31 31 30 37 38 05 00 00 31 31 30 38 30 05 00
+ 00 31 31 30 38 31 19 00 00 54 65 61 6D 6C 65 69
+ 74 65 72 69 6E 20 53 65 6B 72 65 74 2E 2F 56 65
+ 72 77 05 00 00 31 31 30 38 32 0E 00 00 53 65 6E
+ 69 6F 72 20 41 6E 61 6C 79 73 74 02 00 00 47 4F
+ 05 00 00 31 31 30 38 36 05 00 00 31 31 30 38 37
+ 05 00 00 31 31 30 38 38 05 00 00 31 31 30 38 39
+ 15 00 00 53 74 76 2E 20 42 65 74 72 69 65 62 73
+ 6C 65 69 74 65 72 69 6E 05 00 00 31 31 30 39 30
+ 05 00 00 31 31 30 39 31 05 00 00 31 31 30 39 34
+ 05 00 00 31 31 30 39 36 05 00 00 31 31 30 39 38
+ 05 00 00 31 31 30 39 39 05 00 00 31 31 31 30 30
+ 05 00 00 31 31 31 30 31 05 00 00 31 31 31 30 32
+ 05 00 00 31 31 31 30 33 05 00 00 31 31 31 30 39
+ 05 00 00 31 31 31 33 33 05 00 00 31 31 31 33 35
+ 05 00 00 31 31 31 33 38 0A 00 00 4B FC 63 68 65
+ 6E 63 68 65 66 05 00 00 31 31 31 33 39 05 00 00
+ 31 31 31 34 32 05 00 00 31 31 31 34 34 05 00 00
+ 31 31 31 34 35 05 00 00 31 31 31 34 36 16 00 00
+ 48 65 61 64 20 6F 66 20 54 65 63 68 2E 20 54 72
+ 61 69 6E 69 6E 67 05 00 00 31 31 31 34 37 19 00
+ 00 42 65 74 72 69 65 62 73 6C 65 69 74 65 72 69
+ 6E 20 52 65 73 74 2E 20 47 4F 05 00 00 31 31 31
+ 35 33 05 00 00 31 31 31 35 35 19 00 00 54 65 6C
+ 65 6D 61 74 69 6B 20 53 79 73 74 65 6D 69 6E 67
+ 65 6E 69 65 75 72 05 00 00 31 31 31 35 38 05 00
+ 00 31 31 31 36 30 05 00 00 31 31 31 36 35 05 00
+ 00 31 31 31 36 37 05 00 00 31 31 31 36 38 05 00
+ 00 31 31 31 36 39 05 00 00 31 31 31 37 30 17 00
+ 00 48 6F 74 65 6C 66 61 63 68 61 73 73 69 73 74
+ 65 6E 74 69 6E 20 4C 4C 05 00 00 31 31 31 37 31
+ 05 00 00 31 31 31 37 32 05 00 00 31 31 31 37 33
+ 05 00 00 31 31 31 37 34 05 00 00 31 31 31 37 35
+ 05 00 00 31 31 31 37 36 05 00 00 31 31 31 37 37
+ 05 00 00 31 31 31 37 38 05 00 00 31 31 31 37 39
+ 05 00 00 31 31 31 38 30 05 00 00 31 31 31 38 31
+ 05 00 00 31 31 31 38 32 05 00 00 31 31 31 38 33
+ 05 00 00 31 31 31 38 34 05 00 00 31 31 31 38 35
+ 05 00 00 31 31 31 38 37 05 00 00 31 31 31 38 38
+ 05 00 00 31 31 31 39 31 05 00 00 31 31 31 39 33
+ 05 00 00 31 31 31 39 34 17 00 00 42 65 74 72 69
+ 65 62 73 6C 65 69 74 65 72 20 52 65 73 74 2E 20
+ 54 55 05 00 00 31 31 31 39 35 05 00 00 31 31 31
+ 39 36 05 00 00 31 31 31 39 37 05 00 00 31 31 31
+ 39 38 05 00 00 31 31 31 39 39 05 00 00 31 31 32
+ 30 30 05 00 00 31 31 32 30 31 05 00 00 31 31 32
+ 30 32 05 00 00 31 31 32 30 34 05 00 00 31 31 32
+ 30 35 05 00 00 31 31 32 30 36 05 00 00 31 31 32
+ 30 37 05 00 00 31 31 32 30 39 05 00 00 31 31 32
+ 31 38 14 00 00 49 2D 26 20 44 2D 41 73 73 69 73
+ 74 65 6E 74 69 6E 20 4C 4C 05 00 00 31 31 32 31
+ 39 12 00 00 50 65 72 73 6F 6E 61 6C 65 6E 74 77
+ 69 63 6B 6C 65 72 05 00 00 31 31 32 34 33 05 00
+ 00 31 31 32 34 35 05 00 00 31 31 32 34 38 05 00
+ 00 31 31 32 34 39 05 00 00 31 31 32 35 30 05 00
+ 00 31 31 32 35 39 05 00 00 31 31 32 36 33 05 00
+ 00 31 31 32 36 36 19 00 00 53 65 6E 69 6F 72 20
+ 41 63 63 6F 75 6E 74 2E 20 43 6F 6E 73 6F 6C 69
+ 64 2E 05 00 00 31 31 32 37 31 05 00 00 31 31 32
+ 37 32 05 00 00 31 31 32 39 30 05 00 00 31 31 32
+ 39 31 05 00 00 31 31 32 39 32 05 00 00 31 31 32
+ 39 33 05 00 00 31 31 33 30 36 05 00 00 31 31 33
+ 30 38 05 00 00 31 31 33 33 30 05 00 00 31 31 33
+ 33 34 05 00 00 31 31 33 33 35 05 00 00 31 31 33
+ 34 33 14 00 00 42 65 74 72 69 65 62 73 70 72 61
+ 6B 74 69 6B 65 72 2D 4C 4C 05 00 00 31 31 33 35
+ 31 16 00 00 4D 69 74 61 72 62 2E 20 57 61 72 65
+ 6E 6B 6F 6E 74 72 6F 6C 6C 65 05 00 00 31 31 33
+ 35 35 05 00 00 31 31 33 35 38 05 00 00 31 31 33
+ 36 34 17 00 00 4C 65 69 74 65 72 69 6E 20 52 65
+ 70 72 E4 73 65 6E 74 61 74 69 6F 6E 05 00 00 31
+ 31 33 36 38 11 00 00 4A 75 6E 69 6F 72 20 41 63
+ 63 6F 75 6E 74 61 6E 74 05 00 00 31 31 33 37 30
+ 05 00 00 31 31 33 37 34 05 00 00 31 31 33 37 38
+ 14 00 00 46 72 61 6E 7A 2E 20 55 65 62 65 72 73
+ 65 74 7A 65 72 69 6E 05 00 00 31 31 33 38 30 14
+ 00 00 43 46 4F 20 42 65 72 6D 75 64 61 20 42 72
+ 61 6E 63 68 65 73 05 00 00 31 31 33 38 37 0A 00
+ 00 33 32 34 2C 20 53 65 6F 75 6C 05 00 00 31 31
+ 33 39 39 18 00 00 54 65 61 6D 6C 65 69 74 65 72
+ 49 6E 20 53 65 6B 72 65 74 61 72 69 61 74 05 00
+ 00 31 31 34 32 35 05 00 00 31 31 34 32 38 05 00
+ 00 31 31 34 33 39 05 00 00 31 31 34 34 30 05 00
+ 00 31 31 34 34 32 05 00 00 31 31 34 34 34 05 00
+ 00 31 31 34 34 39 17 00 00 48 65 61 64 20 6F 66
+ 20 50 72 69 63 69 6E 67 20 43 6F 6E 74 72 6F 6C
+ 05 00 00 31 31 34 36 33 05 00 00 31 31 34 36 34
+ 18 00 00 42 61 75 6C 65 69 74 65 72 2F 43 41 44
+ 20 53 70 65 7A 69 61 6C 69 73 74 05 00 00 31 31
+ 34 36 35 05 00 00 31 31 34 36 37 05 00 00 31 31
+ 34 37 39 05 00 00 31 31 34 38 39 0D 00 00 54 4C
+ 20 41 56 2D 54 65 63 68 6E 69 6B 05 00 00 31 31
+ 35 30 33 05 00 00 31 31 35 32 31 05 00 00 31 31
+ 35 33 31 05 00 00 31 31 35 33 39 05 00 00 31 31
+ 35 34 31 05 00 00 31 31 35 34 37 05 00 00 31 31
+ 35 34 39 05 00 00 31 31 35 37 39 05 00 00 31 31
+ 35 39 33 15 00 00 48 52 2D 4D 49 53 2D 50 72 6F
+ 6A 65 63 74 6D 61 6E 61 67 65 72 05 00 00 31 31
+ 35 39 38 05 00 00 31 31 36 32 33 17 00 00 48 52
+ 20 50 72 6F 63 65 73 73 65 73 20 26 20 50 72 6F
+ 6A 65 63 74 73 05 00 00 31 31 36 32 38 05 00 00
+ 31 31 36 33 39 05 00 00 31 31 36 35 31 19 00 00
+ 46 72 6F 6E 74 20 4F 66 66 69 63 65 20 26 20 45
+ 76 65 6E 74 73 20 4D 67 72 05 00 00 31 31 36 35
+ 37 05 00 00 31 31 36 36 38 05 00 00 31 31 36 36
+ 39 05 00 00 31 31 36 37 31 05 00 00 31 31 36 37
+ 39 05 00 00 31 31 36 38 31 12 00 00 54 65 61 6D
+ 6C 65 69 74 65 72 20 45 6C 65 6B 74 72 6F 05 00
+ 00 31 31 36 38 34 05 00 00 31 31 36 38 36 05 00
+ 00 31 31 36 38 37 05 00 00 31 31 36 38 38 05 00
+ 00 31 30 35 39 33 05 00 00 31 31 35 36 39 05 00
+ 00 31 31 35 33 30 02 00 00 4C 53 04 00 00 34 33
+ 32 37 04 00 00 36 39 34 37 05 00 00 31 32 31 34
+ 31 05 00 00 31 31 30 37 34 04 00 00 39 35 36 33
+ 05 00 00 31 30 38 33 37 04 00 00 38 33 38 31 05
+ 00 00 31 30 31 39 38 05 00 00 31 31 30 35 36 09
+ 00 00 53 52 4E 4D 2C 20 44 2F 50 05 00 00 31 31
+ 30 30 32 04 00 00 34 32 32 33 04 00 00 37 32 37
+ 30 02 00 00 53 4E 04 00 00 38 38 31 38 05 00 00
+ 31 31 33 34 38 04 00 00 37 31 36 37 04 00 00 35
+ 39 39 30 04 00 00 36 32 35 32 02 00 00 50 42 05
+ 00 00 31 30 39 31 36 05 00 00 31 30 39 39 30 04
+ 00 00 37 32 32 35 04 00 00 35 35 31 35 04 00 00
+ 33 33 38 32 05 00 00 31 30 39 30 32 05 00 00 31
+ 32 33 38 34 04 00 00 39 37 38 35 04 00 00 35 30
+ 31 34 04 00 00 33 33 30 37 07 00 00 42 65 72 6D
+ 75 64 61 05 00 00 46 41 4C 53 45 04 00 00 39 35
+ 30 37 04 00 00 35 31 30 39 04 00 00 36 31 38 32
+ 04 00 00 36 32 32 39 04 00 00 33 36 37 35 04 00
+ 00 39 38 36 33 05 00 00 31 31 39 34 34 04 00 00
+ 38 31 36 38 04 00 00 38 37 31 35 04 00 00 37 31
+ 37 38 05 00 00 31 32 37 39 35 04 00 00 36 36 39
+ 31 04 00 00 36 31 34 35 04 00 00 36 39 39 32 05
+ 00 00 31 31 30 37 35 04 00 00 39 37 34 33 04 00
+ 00 36 30 35 30 04 00 00 38 36 36 35 04 00 00 33
+ 39 37 38 04 00 00 34 30 35 36 05 00 00 31 30 33
+ 30 38 04 00 00 34 36 31 39 04 00 00 33 32 37 31
+ 05 00 00 31 30 37 35 35 04 00 00 38 32 38 31 05
+ 00 00 31 32 30 39 35 05 00 00 31 32 33 38 31 05
+ 00 00 31 30 39 32 31 05 00 00 31 30 39 33 36 04
+ 00 00 36 38 34 31 04 00 00 33 39 30 35 04 00 00
+ 33 32 32 39 04 00 00 37 35 38 32 05 00 00 31 31
+ 35 33 32 04 00 00 36 37 32 39 05 00 00 31 32 30
+ 30 31 05 00 00 31 32 30 30 35 05 00 00 31 32 30
+ 31 32 05 00 00 31 32 30 31 33 05 00 00 31 32 30
+ 32 31 05 00 00 31 32 30 32 35 05 00 00 31 32 30
+ 32 36 05 00 00 31 32 30 33 31 05 00 00 31 32 30
+ 34 39 05 00 00 31 32 30 36 30 05 00 00 31 32 30
+ 36 31 05 00 00 31 32 30 36 32 05 00 00 31 32 30
+ 37 38 05 00 00 31 32 30 38 31 05 00 00 31 32 30
+ 38 35 15 00 00 53 61 63 68 62 65 61 72 62 65 69
+ 74 65 72 69 6E 20 42 65 62 75 05 00 00 31 32 30
+ 38 36 05 00 00 31 32 30 38 37 05 00 00 31 32 30
+ 38 39 05 00 00 31 32 30 39 32 18 00 00 41 73 73
+ 69 73 74 65 6E 74 69 6E 20 56 52 2D 50 72 E4 73
+ 69 64 65 6E 74 05 00 00 31 32 30 39 34 05 00 00
+ 31 32 30 39 38 05 00 00 31 32 30 39 39 05 00 00
+ 31 32 31 30 30 05 00 00 31 32 31 30 37 05 00 00
+ 31 32 31 30 39 05 00 00 31 32 31 31 30 05 00 00
+ 31 32 31 32 31 05 00 00 31 32 31 32 32 02 00 00
+ 41 50 05 00 00 31 32 31 32 38 05 00 00 31 32 31
+ 32 39 05 00 00 31 32 31 33 31 16 00 00 41 64 76
+ 65 72 74 69 73 69 6E 67 20 53 70 65 63 69 61 6C
+ 69 73 74 05 00 00 31 32 31 33 33 05 00 00 31 32
+ 31 33 37 05 00 00 31 32 31 33 38 05 00 00 31 32
+ 31 35 38 05 00 00 31 32 31 36 31 05 00 00 31 32
+ 31 36 32 05 00 00 31 32 31 36 33 05 00 00 31 32
+ 31 36 35 05 00 00 31 32 31 38 31 05 00 00 31 32
+ 31 38 34 05 00 00 31 32 31 38 39 05 00 00 31 32
+ 31 39 30 05 00 00 31 32 31 39 31 05 00 00 31 32
+ 31 39 38 05 00 00 31 32 32 30 31 05 00 00 31 32
+ 32 30 38 12 00 00 4B 69 6F 73 6B 6D 69 74 61 72
+ 62 65 69 74 65 72 69 6E 05 00 00 31 32 32 31 30
+ 15 00 00 4F 70 65 72 61 74 69 6F 6E 73 20 4D 61
+ 6E 61 67 65 72 20 43 58 05 00 00 31 32 32 31 36
+ 0A 00 00 48 65 61 64 20 6F 66 20 43 50 11 00 00
+ 4D 61 6E 68 61 74 74 61 6E 20 4E 59 2C 20 55 53
+ 41 05 00 00 31 32 32 31 38 05 00 00 31 32 32 32
+ 31 02 00 00 41 41 05 00 00 31 32 32 32 33 05 00
+ 00 31 32 32 32 39 05 00 00 31 32 32 33 31 05 00
+ 00 31 32 32 33 34 05 00 00 31 32 32 34 37 05 00
+ 00 31 32 32 35 31 05 00 00 31 32 32 36 37 05 00
+ 00 31 32 32 37 38 11 00 00 4A 75 6E 69 6F 72 20
+ 43 6F 6E 74 72 6F 6C 6C 65 72 05 00 00 31 32 32
+ 38 33 05 00 00 31 32 32 39 30 05 00 00 31 32 32
+ 39 31 05 00 00 31 32 33 30 33 05 00 00 31 32 33
+ 30 35 05 00 00 31 32 33 31 33 09 00 00 41 73 73
+ 6F 63 69 61 74 65 05 00 00 31 32 33 31 34 05 00
+ 00 31 32 33 32 32 15 00 00 4C 65 69 74 65 72 20
+ 53 79 73 74 65 6D 2D 54 65 63 68 6E 69 6B 05 00
+ 00 31 32 33 32 33 19 00 00 41 72 63 68 69 76 65
+ 20 26 20 52 65 63 6F 72 64 73 20 4D 61 6E 61 67
+ 65 72 05 00 00 31 32 33 32 34 05 00 00 31 32 33
+ 32 37 05 00 00 31 32 33 33 36 05 00 00 31 32 33
+ 33 37 05 00 00 31 32 33 33 38 05 00 00 31 32 33
+ 34 36 05 00 00 31 32 33 34 37 05 00 00 31 32 33
+ 36 30 05 00 00 31 32 33 36 37 05 00 00 31 32 33
+ 37 37 05 00 00 31 32 33 38 33 05 00 00 31 32 34
+ 31 36 16 00 00 48 65 61 64 20 6F 66 20 47 72 6F
+ 75 70 20 52 65 73 65 72 76 65 73 05 00 00 31 32
+ 34 32 37 12 00 00 46 FC 68 72 75 6E 67 73 2D 41
+ 73 73 69 73 74 65 6E 74 05 00 00 31 32 34 34 34
+ 05 00 00 31 32 34 35 30 05 00 00 31 32 34 35 31
+ 05 00 00 31 32 34 35 33 05 00 00 31 32 34 35 39
+ 19 00 00 53 74 76 2E 20 48 61 75 73 77 69 72 74
+ 73 63 68 2E 4C 65 69 74 65 72 69 6E 05 00 00 31
+ 32 34 36 30 02 00 00 48 4D 05 00 00 31 32 34 36
+ 31 10 00 00 48 4D 53 2D 50 72 61 6B 74 69 6B 61
+ 6E 74 69 6E 05 00 00 31 32 34 36 32 0E 00 00 48
+ 4D 53 2D 50 72 61 6B 74 69 6B 61 6E 74 05 00 00
+ 31 32 34 36 33 05 00 00 31 32 34 36 34 05 00 00
+ 31 32 34 36 35 05 00 00 31 32 34 36 37 05 00 00
+ 31 32 34 36 38 05 00 00 31 32 34 36 39 13 00 00
+ 53 65 72 76 69 63 65 66 61 63 68 6C 65 68 72 6C
+ 69 6E 67 05 00 00 31 32 34 37 30 05 00 00 31 32
+ 34 37 31 05 00 00 31 32 34 37 32 05 00 00 31 32
+ 34 37 34 05 00 00 31 32 34 37 35 05 00 00 31 32
+ 34 37 36 05 00 00 31 32 34 37 37 05 00 00 31 32
+ 34 37 38 05 00 00 31 32 34 38 30 05 00 00 31 32
+ 34 38 31 05 00 00 31 32 34 38 33 05 00 00 31 32
+ 34 38 34 05 00 00 31 32 34 38 35 05 00 00 31 32
+ 34 38 36 05 00 00 31 32 34 38 37 05 00 00 31 32
+ 34 38 38 05 00 00 31 32 34 38 39 05 00 00 31 32
+ 34 39 30 05 00 00 31 32 34 39 31 05 00 00 31 32
+ 34 39 32 05 00 00 31 32 34 39 33 05 00 00 31 32
+ 35 30 30 17 00 00 42 65 74 72 69 65 62 73 6C 65
+ 69 74 65 72 20 52 65 73 74 2E 20 4B 48 05 00 00
+ 31 32 35 30 31 05 00 00 31 32 35 30 32 11 00 00
+ 48 61 75 73 77 69 72 74 73 63 68 61 66 74 73 6D
+ 2E 05 00 00 31 32 35 30 36 05 00 00 31 32 35 30
+ 37 05 00 00 31 32 35 31 31 05 00 00 31 32 35 31
+ 33 05 00 00 31 32 35 31 36 17 00 00 53 65 6E 69
+ 6F 72 20 4D 65 64 69 61 20 43 6F 6E 73 75 6C 74
+ 61 6E 74 05 00 00 31 32 35 31 37 05 00 00 31 32
+ 35 31 38 05 00 00 31 32 35 31 39 19 00 00 4C 65
+ 69 74 65 72 20 4C 61 67 65 72 62 65 77 69 72 74
+ 73 63 68 61 66 74 2E 05 00 00 31 32 35 32 30 0D
+ 00 00 4E 69 67 68 74 20 41 75 64 69 74 6F 72 05
+ 00 00 31 32 35 32 36 13 00 00 4C 65 69 74 65 72
+ 20 4A 75 6E 69 6F 72 20 50 6F 77 65 72 05 00 00
+ 31 32 35 33 32 05 00 00 31 32 35 33 33 05 00 00
+ 31 32 35 33 36 05 00 00 31 32 35 33 37 17 00 00
+ 41 73 73 69 73 74 61 6E 74 20 6F 66 20 44 65 70
+ 61 72 74 6D 65 6E 74 05 00 00 31 32 35 33 38 05
+ 00 00 31 32 35 34 30 05 00 00 31 32 35 34 35 05
+ 00 00 31 32 35 35 31 05 00 00 31 32 35 35 32 05
+ 00 00 31 32 35 36 32 15 00 00 41 75 64 69 6F 2D
+ 56 69 64 65 6F 20 53 75 70 70 6F 72 74 65 72 05
+ 00 00 31 32 35 36 34 0E 00 00 43 68 65 66 20 64
+ 65 20 50 61 72 74 69 65 05 00 00 31 32 35 36 38
+ 05 00 00 31 32 35 37 31 05 00 00 31 32 35 37 32
+ 13 00 00 53 74 76 2E 20 42 65 74 72 69 65 62 73
+ 6C 65 69 74 65 72 05 00 00 31 32 35 37 35 05 00
+ 00 31 32 35 37 36 05 00 00 31 32 35 37 37 05 00
+ 00 31 32 35 37 38 05 00 00 31 32 35 38 30 11 00
+ 00 53 6F 63 69 61 6C 20 43 6F 6E 73 75 6C 74 61
+ 6E 74 05 00 00 31 32 35 38 31 05 00 00 31 32 35
+ 38 33 14 00 00 54 65 61 6D 6C 2E 20 52 E9 63 2E
+ 20 41 64 6C 69 73 77 69 6C 05 00 00 31 32 35 38
+ 39 05 00 00 31 32 35 39 31 05 00 00 31 32 36 30
+ 35 05 00 00 31 32 36 30 36 05 00 00 31 32 36 30
+ 39 0B 00 00 43 68 65 66 20 64 65 20 42 61 72 05
+ 00 00 31 32 36 31 32 19 00 00 48 65 61 64 20 43
+ 6F 72 53 70 6F 6E 73 26 50 75 62 6C 41 66 66 61
+ 69 72 73 05 00 00 31 32 36 32 34 05 00 00 31 32
+ 36 33 33 05 00 00 31 32 36 34 34 05 00 00 31 32
+ 36 35 39 05 00 00 31 32 36 36 31 05 00 00 31 32
+ 36 36 33 05 00 00 31 32 36 36 34 05 00 00 31 32
+ 36 36 37 05 00 00 31 32 36 36 38 05 00 00 31 32
+ 36 37 38 05 00 00 31 32 36 38 30 05 00 00 31 32
+ 36 38 31 05 00 00 31 32 36 38 32 05 00 00 31 32
+ 36 38 33 13 00 00 53 69 63 68 65 72 68 65 69 74
+ 73 66 61 63 68 6D 61 6E 6E 05 00 00 31 32 36 39
+ 34 05 00 00 31 32 36 39 35 05 00 00 31 32 36 39
+ 36 11 00 00 53 61 63 68 62 65 61 72 62 65 69 74
+ 65 72 20 50 56 05 00 00 31 32 36 39 37 05 00 00
+ 31 32 37 30 31 05 00 00 31 32 37 31 32 05 00 00
+ 31 32 37 31 39 05 00 00 31 32 37 32 30 05 00 00
+ 31 32 37 32 33 05 00 00 31 32 37 32 38 05 00 00
+ 31 32 37 33 39 05 00 00 31 32 37 34 31 0A 00 00
+ 41 6C 6C 72 6F 75 6E 64 65 72 05 00 00 31 32 37
+ 34 32 05 00 00 31 32 37 34 39 16 00 00 4D 67 72
+ 20 4B 6E 6F 77 6C 65 64 67 65 20 4E 65 74 77 6F
+ 72 6B 73 05 00 00 31 32 37 35 31 05 00 00 31 32
+ 37 36 35 05 00 00 31 32 37 36 36 05 00 00 31 32
+ 37 36 39 05 00 00 31 32 37 37 30 08 00 00 4F 70
+ 65 72 61 74 6F 72 05 00 00 31 32 37 38 34 16 00
+ 00 41 73 73 69 73 74 61 6E 74 20 4A 75 6E 69 6F
+ 72 20 50 6F 77 65 72 05 00 00 31 32 37 38 35 15
+ 00 00 4D 75 6C 74 69 6D 65 64 69 61 20 53 70 65
+ 63 69 61 6C 69 73 74 05 00 00 31 32 37 38 37 05
+ 00 00 31 32 37 39 30 0C 00 00 33 32 34 2C 20 42
+ 65 69 6A 69 6E 67 05 00 00 31 32 37 39 32 05 00
+ 00 31 32 37 39 34 05 00 00 31 32 37 39 38 05 00
+ 00 31 32 37 39 39 05 00 00 31 32 38 30 31 05 00
+ 00 31 32 38 30 32 05 00 00 31 32 38 30 33 05 00
+ 00 31 32 38 30 37 05 00 00 31 32 38 31 30 05 00
+ 00 31 32 38 31 31 05 00 00 31 32 38 31 33 05 00
+ 00 31 32 38 31 36 05 00 00 31 32 38 31 37 05 00
+ 00 31 32 38 31 38 05 00 00 31 32 38 31 39 05 00
+ 00 31 32 38 32 30 05 00 00 31 32 38 32 32 05 00
+ 00 31 32 38 32 33 05 00 00 31 32 38 32 35 05 00
+ 00 31 32 38 32 36 19 00 00 48 65 61 64 20 50 72
+ 6F 63 65 73 73 26 50 65 72 66 6F 72 6D 2E 4D 67
+ 74 2E 05 00 00 31 32 38 32 38 05 00 00 31 32 38
+ 33 30 05 00 00 31 32 38 33 31 05 00 00 31 32 38
+ 33 33 05 00 00 31 32 38 33 35 05 00 00 31 32 38
+ 33 37 05 00 00 31 32 38 33 38 05 00 00 31 32 38
+ 33 39 05 00 00 31 32 38 34 31 05 00 00 31 32 38
+ 34 33 05 00 00 31 32 38 35 33 05 00 00 31 32 38
+ 35 38 05 00 00 31 32 38 35 39 05 00 00 31 32 38
+ 36 31 05 00 00 31 32 38 37 31 05 00 00 31 32 38
+ 37 39 05 00 00 31 32 38 38 31 05 00 00 31 32 38
+ 38 32 05 00 00 31 32 38 38 33 05 00 00 31 32 38
+ 38 34 05 00 00 31 32 38 38 35 05 00 00 31 32 38
+ 38 37 05 00 00 31 32 38 39 30 05 00 00 31 32 39
+ 30 33 05 00 00 31 32 39 30 34 05 00 00 31 32 39
+ 30 35 05 00 00 31 32 39 31 37 10 00 00 47 72 6F
+ 75 70 20 43 6F 6E 74 72 6F 6C 6C 65 72 05 00 00
+ 31 32 39 32 32 05 00 00 31 32 39 32 35 05 00 00
+ 31 32 39 32 36 19 00 00 49 6E 74 65 72 6E 61 74
+ 69 6F 6E 61 6C 20 54 61 78 20 43 6F 75 6E 73 65
+ 6C 05 00 00 31 32 39 35 31 05 00 00 31 32 39 35
+ 33 05 00 00 31 32 39 35 36 05 00 00 31 32 39 35
+ 38 19 00 00 4A 75 6E 2E 20 41 70 70 6C 69 63 61
+ 74 69 6F 6E 20 45 6E 67 69 6E 65 65 72 05 00 00
+ 31 32 39 36 38 05 00 00 31 32 39 37 33 05 00 00
+ 31 32 39 37 34 05 00 00 31 32 39 38 31 05 00 00
+ 31 32 39 39 39 05 00 00 31 33 30 30 30 05 00 00
+ 31 33 30 30 33 05 00 00 31 33 30 30 34 05 00 00
+ 31 33 30 31 39 05 00 00 31 33 30 32 39 05 00 00
+ 31 33 30 33 32 05 00 00 31 33 30 33 34 05 00 00
+ 31 33 30 34 31 05 00 00 31 33 30 36 31 05 00 00
+ 31 33 30 36 34 05 00 00 31 33 30 36 35 05 00 00
+ 31 33 30 38 35 05 00 00 31 33 30 38 36 05 00 00
+ 31 33 31 30 31 05 00 00 31 33 31 33 30 05 00 00
+ 31 33 31 33 37 05 00 00 31 33 31 34 31 02 00 00
+ 4E 59 05 00 00 38 30 30 31 36 1C 00 00 48 65 61
+ 64 20 6F 66 20 45 63 6F 6E 6F 6D 69 63 20 52 65
+ 73 65 61 72 63 68 20 4E 59 05 00 00 38 30 31 35
+ 39 05 00 00 38 30 32 36 35 05 00 00 38 30 35 36
+ 39 05 00 00 38 30 31 36 34 26 00 00 48 65 61 64
+ 20 6F 66 20 4B 6E 6F 77 6C 65 64 67 65 20 26 20
+ 49 6E 66 6F 72 6D 61 74 69 6F 6E 20 4D 67 6E 74
+ 2E 2C 06 00 00 41 72 6D 6F 6E 6B 19 00 00 48 65
+ 61 64 20 6F 66 20 55 6E 64 65 72 77 72 69 74 69
+ 6E 67 20 53 65 72 76 19 00 00 48 65 61 64 20 6F
+ 66 20 53 74 72 61 74 2E 26 20 44 65 76 2E 20 55
+ 6E 69 74 08 00 00 33 32 34 2D 53 6F 75 6C 05 00
+ 00 4C 45 47 41 4C 04 00 00 4C 45 31 31 05 00 00
+ 38 30 33 35 39 0F 00 00 47 65 6E 65 72 61 6C 20
+ 43 6F 75 6E 73 65 6C 03 00 00 30 30 31 09 00 00
+ 42 72 75 78 65 6C 6C 65 73 10 00 00 4D 65 64 65
+ 78 20 53 70 65 63 69 61 6C 69 73 74 02 00 00 4D
+ 4F 02 00 00 54 4F 02 00 00 50 46 06 00 00 4C 30
+ 30 35 38 32
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6
new file mode 100755
index 0000000000..a937fe447d
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR6
@@ -0,0 +1,515 @@
+ 3C 00 1A 20 02 00 00 53 4C 02 00 00
+ 5A 48 02 00 00 46 50 02 00 00 44 44 02 00 00 49
+ 5A 12 00 00 43 75 73 74 6F 64 79 20 4D 61 6E 61
+ 67 65 6D 65 6E 74 13 00 00 55 73 65 72 20 53 75
+ 70 70 6F 72 74 20 48 69 50 6F 72 74 19 00 00 48
+ 65 61 64 20 49 6E 76 65 73 74 6D 65 6E 74 20 43
+ 65 6E 74 65 72 20 5A 48 0E 00 00 41 64 6D 69 6E
+ 69 73 74 72 61 74 69 6F 6E 16 00 00 44 65 70 75
+ 74 79 20 44 65 70 61 72 74 6D 65 6E 74 20 48 65
+ 61 64 02 00 00 49 47 14 00 00 55 6E 64 65 72 77
+ 72 69 74 69 6E 67 20 4D 61 6E 61 67 65 72 11 00
+ 00 48 65 61 64 20 46 69 78 65 64 20 49 6E 63 6F
+ 6D 65 02 00 00 57 49 02 00 00 46 4E 02 00 00 4C
+ 46 16 00 00 48 65 61 64 20 49 6E 76 65 73 74 6D
+ 65 6E 74 20 41 64 6D 69 6E 2E 02 00 00 54 41 18
+ 00 00 48 65 61 64 20 54 61 63 74 69 63 61 6C 20
+ 41 6C 6C 6F 63 61 74 69 6F 6E 18 00 00 4F 70 65
+ 72 61 74 69 6F 6E 73 20 26 20 54 61 78 20 4F 66
+ 66 69 63 65 72 02 00 00 41 4D 12 00 00 53 65 6E
+ 69 6F 72 20 43 61 73 75 61 6C 74 79 20 55 57 02
+ 00 00 45 51 16 00 00 44 69 76 2E 20 46 69 6E 61
+ 6E 63 69 61 6C 20 4F 66 66 69 63 65 72 02 00 00
+ 49 49 18 00 00 41 73 73 69 73 74 65 6E 74 69 6E
+ 20 4C 49 2D 56 65 72 77 61 6C 74 65 72 0C 00 00
+ 53 65 63 74 69 6F 6E 20 48 65 61 64 02 00 00 50
+ 56 02 00 00 44 55 11 00 00 4C 65 69 74 65 72 20
+ 48 79 70 6F 74 68 65 6B 65 6E 19 00 00 48 65 61
+ 64 20 53 65 63 74 6F 72 20 53 74 72 61 74 2E 20
+ 45 75 72 6F 70 65 0D 00 00 48 65 61 64 20 45 71
+ 75 69 74 69 65 73 19 00 00 4C 69 65 67 65 6E 73
+ 63 68 61 66 74 65 6E 76 65 72 77 61 6C 74 65 72
+ 69 6E 19 00 00 44 65 70 75 74 79 20 48 65 61 64
+ 20 49 6E 76 65 73 74 2E 41 64 6D 69 6E 2E 14 00
+ 00 4C 65 69 74 65 72 20 4C 49 2D 56 65 72 77 61
+ 6C 74 75 6E 67 04 00 00 38 36 37 31 03 00 00 35
+ 36 39 03 00 00 31 33 30 04 00 00 31 37 34 30 03
+ 00 00 32 30 36 0A 00 00 49 54 20 4D 61 6E 61 67
+ 65 72 03 00 00 35 34 31 0C 00 00 49 54 20 45 78
+ 65 63 75 74 69 76 65 0E 00 00 4F 66 66 69 63 65
+ 20 4D 61 6E 61 67 65 72 04 00 00 35 37 30 32 04
+ 00 00 38 35 36 32 18 00 00 4D 67 72 20 52 65 73
+ 65 61 72 63 68 20 26 20 43 6F 6D 6D 75 6E 69 63
+ 2E 04 00 00 38 35 36 39 04 00 00 36 35 32 31 04
+ 00 00 39 31 36 31 03 00 00 35 39 37 04 00 00 32
+ 30 34 31 03 00 00 33 36 33 1A 00 00 52 65 63 65
+ 70 74 69 6F 6E 69 73 74 2F 54 65 6C 65 70 68 6F
+ 6E 65 20 4F 70 2E 03 00 00 33 36 34 04 00 00 36
+ 30 35 32 0F 00 00 48 75 6D 61 6E 20 52 65 73 6F
+ 75 72 63 65 73 03 00 00 31 32 38 03 00 00 31 30
+ 34 1E 00 00 47 65 6E 65 72 61 6C 20 4D 67 72 20
+ 4E 6F 6E 2D 4C 69 66 65 20 28 53 69 6E 67 61 70
+ 2E 29 03 00 00 34 39 31 0A 00 00 30 33 2E 30 38
+ 2E 31 39 39 38 0A 00 00 31 36 2E 30 38 2E 31 39
+ 36 34 0A 00 00 30 31 2E 30 37 2E 31 39 39 38 0A
+ 00 00 32 34 2E 30 31 2E 31 39 35 36 0A 00 00 30
+ 31 2E 30 37 2E 31 39 39 36 0A 00 00 30 34 2E 30
+ 36 2E 31 39 36 32 0A 00 00 30 36 2E 30 33 2E 32
+ 30 30 30 0A 00 00 31 36 2E 30 36 2E 31 39 36 35
+ 0A 00 00 31 35 2E 30 38 2E 32 30 30 30 0A 00 00
+ 31 37 2E 30 37 2E 31 39 37 31 0A 00 00 30 31 2E
+ 30 32 2E 31 39 39 39 0A 00 00 30 35 2E 31 32 2E
+ 31 39 37 32 0A 00 00 30 32 2E 30 32 2E 32 30 30
+ 30 0A 00 00 32 33 2E 30 31 2E 31 39 37 35 0A 00
+ 00 30 31 2E 30 39 2E 31 39 39 37 0A 00 00 32 30
+ 2E 30 36 2E 31 39 36 39 0A 00 00 30 32 2E 30 36
+ 2E 31 39 39 37 0A 00 00 32 31 2E 30 32 2E 31 39
+ 37 35 0A 00 00 31 31 2E 30 38 2E 31 39 39 37 0A
+ 00 00 30 31 2E 30 39 2E 31 39 37 33 0A 00 00 30
+ 32 2E 30 35 2E 31 39 37 32 0A 00 00 30 31 2E 30
+ 39 2E 31 39 39 35 15 00 00 45 6E 67 69 6E 65 65
+ 72 69 6E 67 20 41 73 73 69 73 74 61 6E 74 0A 00
+ 00 32 36 2E 30 38 2E 31 39 38 30 0A 00 00 31 39
+ 2E 31 30 2E 31 39 39 38 0A 00 00 31 35 2E 30 36
+ 2E 31 39 36 30 0A 00 00 30 31 2E 30 34 2E 31 39
+ 39 36 0A 00 00 31 39 2E 31 32 2E 31 39 36 34 0A
+ 00 00 32 37 2E 31 30 2E 31 39 36 36 0A 00 00 32
+ 37 2E 30 38 2E 31 39 37 34 0A 00 00 31 30 2E 30
+ 37 2E 31 39 39 35 0A 00 00 33 30 2E 31 31 2E 31
+ 39 37 30 0A 00 00 31 38 2E 30 33 2E 31 39 39 36
+ 0A 00 00 31 37 2E 31 30 2E 31 39 34 38 0A 00 00
+ 30 31 2E 30 31 2E 31 39 37 30 0A 00 00 30 36 2E
+ 31 30 2E 31 39 36 35 0A 00 00 32 36 2E 30 39 2E
+ 31 39 35 36 0A 00 00 30 33 2E 31 31 2E 31 39 39
+ 33 0A 00 00 31 30 2E 30 37 2E 31 39 37 30 0A 00
+ 00 30 31 2E 30 32 2E 31 39 39 38 0A 00 00 32 37
+ 2E 30 32 2E 31 39 35 39 0A 00 00 30 31 2E 30 36
+ 2E 31 39 39 36 0A 00 00 31 30 2E 30 32 2E 31 39
+ 36 36 0A 00 00 31 38 2E 31 31 2E 31 39 39 36 27
+ 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 72
+ 2F 50 72 6F 70 65 72 74 79 20 50 72 6F 64 75 63
+ 74 20 4D 61 6E 61 67 65 72 0A 00 00 30 31 2E 31
+ 30 2E 31 39 36 32 0A 00 00 31 36 2E 31 30 2E 31
+ 39 39 32 03 00 00 4D 59 52 03 00 00 50 48 50 0A
+ 00 00 32 38 2E 30 38 2E 31 39 35 34 0A 00 00 31
+ 38 2E 30 31 2E 31 39 39 39 0A 00 00 32 35 2E 30
+ 35 2E 31 39 37 34 1C 00 00 41 73 73 74 2E 4D 67
+ 72 2E 20 54 6F 20 43 6C 69 65 6E 74 20 4D 67 72
+ 20 54 65 61 6D 0A 00 00 30 39 2E 30 33 2E 31 39
+ 35 35 0A 00 00 30 31 2E 30 37 2E 32 30 30 30 0A
+ 00 00 30 33 2E 30 33 2E 31 39 35 36 0A 00 00 31
+ 32 2E 30 32 2E 31 39 39 36 0A 00 00 30 31 2E 30
+ 39 2E 32 30 30 30 03 00 00 32 35 36 0A 00 00 32
+ 31 2E 31 31 2E 31 39 35 39 0A 00 00 32 36 2E 30
+ 39 2E 31 39 36 35 0A 00 00 30 31 2E 31 31 2E 31
+ 39 39 38 02 00 00 6E 6F 0A 00 00 31 33 2E 30 39
+ 2E 31 39 36 39 1C 00 00 41 73 73 6F 63 69 61 74
+ 65 20 46 69 6E 61 6E 63 69 61 6C 20 41 64 76 69
+ 73 6F 72 79 03 00 00 79 65 73 0A 00 00 30 35 2E
+ 31 32 2E 31 39 35 36 0A 00 00 31 32 2E 30 39 2E
+ 31 39 38 34 1A 00 00 53 65 6E 69 6F 72 20 4D 61
+ 6E 61 67 65 72 20 45 6E 67 69 6E 65 65 72 69 6E
+ 67 0A 00 00 30 39 2E 30 38 2E 31 39 36 30 03 00
+ 00 54 48 42 0A 00 00 32 34 2E 30 32 2E 31 39 35
+ 34 0A 00 00 30 31 2E 30 36 2E 31 39 39 38 0A 00
+ 00 30 38 2E 30 33 2E 31 39 36 39 0A 00 00 31 34
+ 2E 30 34 2E 31 39 39 37 0A 00 00 32 31 2E 30 38
+ 2E 31 39 36 37 0A 00 00 30 37 2E 30 37 2E 31 39
+ 39 37 0A 00 00 33 30 2E 31 31 2E 31 39 36 30 0A
+ 00 00 30 32 2E 30 35 2E 31 39 39 37 0A 00 00 32
+ 39 2E 30 37 2E 31 39 35 35 0A 00 00 30 33 2E 30
+ 33 2E 31 39 39 37 0A 00 00 32 35 2E 30 35 2E 31
+ 39 35 37 0A 00 00 30 31 2E 30 39 2E 31 39 39 36
+ 0A 00 00 31 38 2E 30 31 2E 31 39 34 32 0A 00 00
+ 30 31 2E 30 33 2E 31 39 39 39 0A 00 00 32 32 2E
+ 30 36 2E 31 39 36 38 0A 00 00 30 31 2E 31 32 2E
+ 31 39 39 38 0A 00 00 30 33 2E 30 35 2E 31 39 36
+ 39 0A 00 00 30 31 2E 30 35 2E 31 39 39 38 0A 00
+ 00 32 32 2E 30 38 2E 31 39 35 37 0A 00 00 31 35
+ 2E 30 37 2E 31 39 38 35 0A 00 00 32 32 2E 30 35
+ 2E 31 39 36 36 0A 00 00 30 38 2E 30 32 2E 31 39
+ 39 36 0A 00 00 32 31 2E 31 32 2E 31 39 37 37 0A
+ 00 00 30 33 2E 30 34 2E 31 39 35 36 0A 00 00 31
+ 32 2E 30 31 2E 31 39 39 36 0A 00 00 30 38 2E 30
+ 37 2E 31 39 36 30 0A 00 00 30 31 2E 30 34 2E 31
+ 39 39 39 0A 00 00 30 36 2E 30 31 2E 31 39 36 33
+ 0A 00 00 30 31 2E 31 30 2E 31 39 39 38 0A 00 00
+ 30 34 2E 30 35 2E 31 39 35 35 0A 00 00 32 33 2E
+ 30 39 2E 31 39 39 36 0A 00 00 32 33 2E 30 39 2E
+ 31 39 37 30 0A 00 00 30 39 2E 30 33 2E 31 39 36
+ 37 0A 00 00 30 36 2E 30 39 2E 32 30 30 30 0A 00
+ 00 31 33 2E 30 39 2E 31 39 35 32 0A 00 00 31 37
+ 2E 30 31 2E 32 30 30 30 0A 00 00 31 31 2E 30 39
+ 2E 31 39 36 31 0A 00 00 30 33 2E 31 31 2E 31 39
+ 39 39 0A 00 00 31 39 2E 30 32 2E 31 39 36 32 0A
+ 00 00 30 31 2E 30 31 2E 31 39 39 36 0A 00 00 32
+ 33 2E 30 37 2E 31 39 36 30 0A 00 00 32 31 2E 30
+ 32 2E 32 30 30 30 0A 00 00 31 32 2E 31 31 2E 31
+ 39 36 39 0A 00 00 32 34 2E 30 35 2E 31 39 39 39
+ 0A 00 00 30 38 2E 31 32 2E 31 39 36 31 0A 00 00
+ 30 31 2E 30 34 2E 31 39 39 37 0A 00 00 30 34 2E
+ 30 34 2E 31 39 36 34 12 00 00 53 65 6E 69 6F 72
+ 20 55 6E 64 65 72 77 72 69 74 65 72 0A 00 00 32
+ 33 2E 30 32 2E 31 39 36 35 0A 00 00 31 38 2E 30
+ 39 2E 31 39 36 39 0A 00 00 30 31 2E 30 34 2E 31
+ 39 39 38 0A 00 00 31 31 2E 30 33 2E 31 39 35 32
+ 0A 00 00 31 37 2E 31 30 2E 31 39 37 34 0A 00 00
+ 30 33 2E 30 37 2E 31 39 39 35 0A 00 00 30 32 2E
+ 30 34 2E 31 39 36 38 0A 00 00 31 34 2E 30 32 2E
+ 32 30 30 30 0A 00 00 31 34 2E 30 33 2E 31 39 36
+ 31 0A 00 00 31 37 2E 30 36 2E 31 39 39 36 0A 00
+ 00 33 31 2E 30 38 2E 31 39 36 35 0A 00 00 31 37
+ 2E 30 32 2E 31 39 39 37 0A 00 00 30 35 2E 30 37
+ 2E 31 39 36 36 0A 00 00 32 30 2E 30 33 2E 32 30
+ 30 30 16 00 00 41 64 6D 69 6E 69 73 74 72 61 74
+ 69 76 65 20 4F 66 66 69 63 65 72 0A 00 00 31 33
+ 2E 30 36 2E 31 39 37 32 0A 00 00 33 31 2E 30 35
+ 2E 32 30 30 30 0A 00 00 32 31 2E 30 33 2E 31 39
+ 37 39 0A 00 00 30 32 2E 30 35 2E 32 30 30 30 0A
+ 00 00 32 33 2E 31 31 2E 31 39 36 38 0A 00 00 31
+ 34 2E 30 32 2E 31 39 37 30 0A 00 00 31 30 2E 30
+ 38 2E 31 39 39 38 0A 00 00 30 36 2E 30 39 2E 31
+ 39 36 32 0A 00 00 30 33 2E 31 31 2E 31 39 39 37
+ 0A 00 00 31 34 2E 30 36 2E 31 39 36 37 0A 00 00
+ 31 36 2E 30 36 2E 31 39 39 37 0A 00 00 30 37 2E
+ 30 33 2E 31 39 36 35 0A 00 00 30 38 2E 30 35 2E
+ 31 39 39 36 0A 00 00 31 36 2E 30 33 2E 31 39 36
+ 34 0A 00 00 32 39 2E 30 35 2E 32 30 30 30 0A 00
+ 00 31 39 2E 30 38 2E 31 39 37 32 0A 00 00 32 37
+ 2E 30 35 2E 31 39 37 30 0A 00 00 31 35 2E 31 31
+ 2E 31 39 39 36 0A 00 00 31 36 2E 30 32 2E 31 39
+ 37 31 0A 00 00 31 37 2E 31 30 2E 31 39 36 37 0A
+ 00 00 32 35 2E 30 38 2E 32 30 30 30 0A 00 00 32
+ 33 2E 30 36 2E 31 39 36 36 0A 00 00 31 33 2E 30
+ 38 2E 31 39 35 35 0A 00 00 32 30 2E 31 31 2E 31
+ 39 36 32 0A 00 00 31 35 2E 30 35 2E 31 39 38 39
+ 0A 00 00 32 35 2E 31 31 2E 31 39 36 39 0A 00 00
+ 30 32 2E 30 31 2E 31 39 39 37 0A 00 00 31 33 2E
+ 31 31 2E 31 39 34 36 0A 00 00 30 31 2E 30 31 2E
+ 31 39 37 37 0F 00 00 52 65 6B 72 2E 2F 42 65 74
+ 72 65 75 75 6E 67 0A 00 00 32 35 2E 30 32 2E 31
+ 39 36 31 0A 00 00 30 31 2E 30 35 2E 31 39 39 33
+ 0A 00 00 31 38 2E 31 31 2E 31 39 37 35 0A 00 00
+ 33 30 2E 30 39 2E 31 39 37 32 0A 00 00 31 38 2E
+ 31 32 2E 31 39 39 37 0A 00 00 33 31 2E 30 38 2E
+ 31 39 35 38 17 00 00 45 6E 67 69 6E 65 65 72 69
+ 6E 67 20 43 6F 6F 72 64 69 6E 61 74 6F 72 0A 00
+ 00 31 31 2E 30 34 2E 31 39 36 30 0A 00 00 30 31
+ 2E 30 31 2E 31 39 39 37 0A 00 00 30 37 2E 30 35
+ 2E 31 39 38 30 0A 00 00 31 39 2E 30 36 2E 32 30
+ 30 30 0A 00 00 33 30 2E 30 35 2E 31 39 36 38 0A
+ 00 00 30 37 2E 30 36 2E 31 39 36 36 0A 00 00 30
+ 31 2E 31 31 2E 31 39 39 39 0A 00 00 32 36 2E 30
+ 33 2E 31 39 36 34 0A 00 00 31 34 2E 30 38 2E 32
+ 30 30 30 0A 00 00 32 37 2E 30 33 2E 31 39 35 39
+ 0A 00 00 31 30 2E 30 35 2E 31 39 37 33 03 00 00
+ 49 4E 52 0A 00 00 30 37 2E 30 33 2E 31 39 36 37
+ 0A 00 00 30 34 2E 30 38 2E 31 39 37 36 0A 00 00
+ 32 37 2E 31 32 2E 31 39 36 30 0A 00 00 30 31 2E
+ 31 30 2E 31 39 39 35 0A 00 00 31 31 2E 30 31 2E
+ 31 39 34 38 0A 00 00 30 32 2E 30 34 2E 31 39 39
+ 37 0A 00 00 33 30 2E 30 37 2E 31 39 37 35 0A 00
+ 00 31 39 2E 31 32 2E 31 39 36 39 0A 00 00 30 31
+ 2E 30 33 2E 32 30 30 30 0A 00 00 30 33 2E 30 33
+ 2E 31 39 36 38 0A 00 00 30 32 2E 30 37 2E 31 39
+ 37 34 02 00 00 53 57 04 00 00 33 31 35 38 04 00
+ 00 33 31 39 32 10 00 00 55 57 20 4D 61 6E 61 67
+ 65 72 20 53 57 49 46 54 04 00 00 33 32 32 30 02
+ 00 00 53 32 04 00 00 33 32 34 31 04 00 00 33 32
+ 34 32 04 00 00 33 32 37 33 13 00 00 54 72 65 61
+ 74 79 20 55 57 20 53 75 70 70 2E 20 50 2F 43 04
+ 00 00 33 32 38 34 04 00 00 33 32 38 38 0F 00 00
+ 54 65 61 6D 20 4C 65 61 64 65 72 20 53 53 43 04
+ 00 00 33 33 30 35 16 00 00 55 57 20 46 69 6E 61
+ 6E 63 69 61 6C 20 53 6F 6C 75 74 69 6F 6E 73 04
+ 00 00 33 33 35 36 04 00 00 33 33 35 39 0C 00 00
+ 48 65 61 64 20 53 49 43 53 2F 6E 74 02 00 00 43
+ 32 04 00 00 33 33 36 38 13 00 00 55 6E 64 65 72
+ 77 72 69 74 65 72 20 46 61 6B 20 48 55 4B 02 00
+ 00 44 4E 04 00 00 33 33 37 37 13 00 00 44 65 61
+ 6C 20 4B 6F 6F 72 64 69 6E 61 74 6F 72 2F 55 57
+ 04 00 00 33 33 38 30 12 00 00 55 6E 64 65 72 77
+ 72 69 74 65 72 20 44 45 53 49 47 4E 04 00 00 33
+ 33 38 39 14 00 00 4B 6E 6F 77 6C 65 64 67 65 20
+ 45 78 70 65 72 74 20 53 53 43 04 00 00 33 34 30
+ 35 04 00 00 33 34 31 33 04 00 00 33 34 31 35 04
+ 00 00 33 34 32 33 02 00 00 45 57 04 00 00 33 34
+ 34 33 16 00 00 45 6E 67 69 6E 65 65 72 69 6E 67
+ 20 55 57 20 53 75 70 70 6F 72 74 04 00 00 33 34
+ 35 34 04 00 00 33 34 36 31 02 00 00 45 42 04 00
+ 00 33 34 38 30 04 00 00 33 35 30 38 10 00 00 53
+ 65 63 74 69 6F 6E 20 48 65 61 64 20 53 53 43 04
+ 00 00 33 35 32 39 04 00 00 33 35 34 37 16 00 00
+ 42 75 73 69 6E 65 73 73 20 41 73 73 69 73 74 61
+ 6E 74 20 53 53 43 04 00 00 33 35 35 34 04 00 00
+ 33 35 36 36 02 00 00 50 34 04 00 00 33 36 31 36
+ 10 00 00 55 57 20 46 61 63 2E 20 50 72 6F 70 65
+ 72 74 79 04 00 00 33 36 34 31 04 00 00 33 36 35
+ 34 04 00 00 33 36 39 35 04 00 00 33 37 38 36 18
+ 00 00 55 57 20 4D 61 6E 61 67 65 72 20 46 61 63
+ 2E 20 50 72 6F 70 65 72 74 79 04 00 00 33 38 31
+ 39 04 00 00 33 38 33 33 18 00 00 55 57 20 53 75
+ 70 70 6F 72 74 20 46 61 63 2E 20 43 61 73 75 61
+ 6C 74 79 02 00 00 45 43 04 00 00 33 38 36 30 04
+ 00 00 33 38 37 34 02 00 00 50 36 04 00 00 33 39
+ 35 36 10 00 00 55 6E 64 65 72 77 72 69 74 65 72
+ 20 53 61 63 68 04 00 00 33 39 38 38 16 00 00 41
+ 64 6D 69 6E 69 73 74 72 61 74 69 6F 6E 20 46 61
+ 6B 20 48 55 4B 04 00 00 33 39 39 36 02 00 00 4E
+ 45 04 00 00 34 30 32 39 12 00 00 4E 75 63 6C 65
+ 61 72 20 55 57 20 53 75 70 70 6F 72 74 04 00 00
+ 34 30 34 36 04 00 00 34 30 38 34 04 00 00 34 30
+ 38 39 04 00 00 34 30 39 32 04 00 00 34 30 39 37
+ 04 00 00 34 31 33 36 04 00 00 34 31 37 32 04 00
+ 00 34 32 33 30 04 00 00 34 32 35 31 04 00 00 34
+ 32 39 30 0A 00 00 55 57 20 53 75 70 70 6F 72 74
+ 04 00 00 34 33 38 35 15 00 00 4D 61 6E 61 67 65
+ 72 20 41 63 74 2E 20 53 65 72 76 69 63 65 73 04
+ 00 00 34 34 30 33 04 00 00 34 34 31 34 04 00 00
+ 34 34 33 38 04 00 00 34 34 34 33 04 00 00 34 34
+ 37 32 04 00 00 34 34 37 34 04 00 00 34 35 31 31
+ 04 00 00 34 35 33 32 04 00 00 34 35 34 36 02 00
+ 00 54 50 04 00 00 34 35 37 34 04 00 00 34 35 38
+ 30 04 00 00 34 36 30 39 04 00 00 34 36 33 32 04
+ 00 00 34 36 33 35 0E 00 00 53 49 43 53 6E 74 20
+ 50 72 6F 6A 65 6B 74 04 00 00 34 39 34 33 02 00
+ 00 45 48 04 00 00 34 39 35 37 04 00 00 34 39 35
+ 39 04 00 00 35 30 31 30 04 00 00 35 30 32 30 04
+ 00 00 35 30 32 32 04 00 00 35 30 36 31 04 00 00
+ 35 30 38 33 04 00 00 35 31 31 35 04 00 00 35 31
+ 33 35 04 00 00 35 31 38 32 04 00 00 35 31 38 34
+ 0E 00 00 48 52 20 43 6F 6E 74 72 6F 6C 6C 69 6E
+ 67 04 00 00 35 31 39 35 04 00 00 35 32 32 33 04
+ 00 00 35 32 36 30 15 00 00 47 6C 6F 62 61 6C 20
+ 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65 72 04 00
+ 00 35 32 36 34 04 00 00 35 32 37 30 04 00 00 35
+ 32 39 34 04 00 00 35 33 30 37 19 00 00 43 6C 69
+ 65 6E 74 20 4D 61 6E 61 67 65 6D 65 6E 74 20 53
+ 75 70 70 6F 72 74 04 00 00 35 33 31 32 02 00 00
+ 4D 4C 04 00 00 35 33 31 38 0F 00 00 45 76 65 6E
+ 74 20 4D 61 72 6B 65 74 69 6E 67 04 00 00 35 33
+ 32 32 14 00 00 55 6E 64 65 72 77 72 69 74 65 72
+ 20 46 61 6B 20 53 61 63 68 04 00 00 35 33 32 37
+ 04 00 00 35 33 33 33 04 00 00 35 33 35 37 04 00
+ 00 35 33 35 38 04 00 00 35 34 32 35 18 00 00 4D
+ 67 72 20 42 55 53 20 50 65 72 66 6F 72 6D 61 6E
+ 63 65 20 54 65 61 6D 04 00 00 35 35 30 34 04 00
+ 00 35 35 38 34 10 00 00 41 73 73 69 73 74 61 6E
+ 74 20 44 4F 4F 20 45 55 04 00 00 35 35 39 37 04
+ 00 00 35 36 30 35 04 00 00 35 36 30 38 04 00 00
+ 35 36 31 37 04 00 00 35 36 32 33 04 00 00 35 36
+ 38 31 0F 00 00 48 65 61 64 20 50 43 20 53 75 70
+ 70 6F 72 74 04 00 00 35 37 30 31 04 00 00 35 37
+ 30 34 04 00 00 35 37 32 31 14 00 00 52 65 6C 61
+ 74 69 6F 6E 20 4D 61 6E 61 67 65 72 20 53 53 43
+ 04 00 00 35 37 33 36 04 00 00 35 37 34 38 04 00
+ 00 35 37 35 34 04 00 00 35 37 35 35 17 00 00 50
+ 72 6F 6A 65 63 74 20 4D 62 72 20 73 77 69 66 74
+ 72 65 2E 63 6F 6D 04 00 00 35 37 35 36 04 00 00
+ 35 37 36 32 0F 00 00 44 65 70 75 74 79 20 48 65
+ 61 64 20 53 53 43 04 00 00 35 37 38 30 04 00 00
+ 35 37 38 34 04 00 00 35 37 38 36 04 00 00 35 38
+ 31 35 04 00 00 35 38 32 31 04 00 00 35 38 34 30
+ 04 00 00 35 39 32 31 04 00 00 35 39 33 30 04 00
+ 00 35 39 33 32 12 00 00 4E 75 63 6C 65 61 72 20
+ 55 57 20 4D 61 6E 61 67 65 72 04 00 00 35 39 34
+ 36 04 00 00 35 39 34 39 04 00 00 35 39 35 34 04
+ 00 00 35 39 35 39 04 00 00 35 39 36 32 04 00 00
+ 35 39 38 34 04 00 00 36 30 37 34 04 00 00 36 31
+ 31 30 04 00 00 36 31 31 33 04 00 00 36 31 32 36
+ 04 00 00 36 31 38 31 17 00 00 50 72 6F 6A 65 63
+ 74 20 4D 67 72 20 73 77 69 66 74 72 65 2E 63 6F
+ 6D 04 00 00 36 31 38 37 04 00 00 36 32 31 39 19
+ 00 00 48 65 61 64 20 6F 66 20 44 69 76 2E 20 45
+ 78 65 63 2E 20 4F 66 66 69 63 65 04 00 00 36 33
+ 30 31 04 00 00 36 33 35 38 04 00 00 36 34 34 31
+ 04 00 00 36 34 35 39 04 00 00 36 35 31 34 04 00
+ 00 36 35 32 37 04 00 00 36 35 33 30 13 00 00 4D
+ 61 72 69 6E 65 20 55 6E 64 65 72 77 72 69 74 69
+ 6E 67 04 00 00 36 35 33 38 04 00 00 36 36 34 35
+ 04 00 00 36 36 35 38 04 00 00 36 36 36 35 04 00
+ 00 36 36 39 39 04 00 00 36 37 33 37 15 00 00 41
+ 70 70 6C 69 63 61 74 69 6F 6E 20 53 75 70 70 6F
+ 72 74 65 72 04 00 00 36 37 34 30 04 00 00 36 37
+ 34 39 04 00 00 36 37 35 30 0B 00 00 54 72 61 69
+ 6E 65 72 20 53 53 43 04 00 00 36 37 39 30 04 00
+ 00 36 38 30 35 04 00 00 36 38 31 38 19 00 00 48
+ 65 61 64 20 49 6E 64 69 76 69 64 75 61 6C 20 52
+ 65 70 6F 72 74 69 6E 67 04 00 00 36 38 36 39 04
+ 00 00 36 38 37 31 04 00 00 36 38 38 32 04 00 00
+ 36 38 38 33 04 00 00 36 38 38 35 04 00 00 36 39
+ 34 34 04 00 00 36 39 34 36 04 00 00 36 39 35 30
+ 04 00 00 37 30 31 30 04 00 00 37 30 32 32 04 00
+ 00 37 30 32 35 04 00 00 37 30 32 36 04 00 00 37
+ 30 37 38 04 00 00 37 30 38 37 04 00 00 37 31 30
+ 36 04 00 00 37 31 31 38 04 00 00 37 31 31 39 12
+ 00 00 41 63 74 75 61 72 69 61 6C 20 53 65 72 76
+ 69 63 65 73 04 00 00 37 31 33 36 04 00 00 37 31
+ 36 32 04 00 00 37 31 37 39 04 00 00 37 32 36 39
+ 04 00 00 37 33 34 38 04 00 00 37 34 30 39 04 00
+ 00 37 34 31 38 04 00 00 37 34 31 39 15 00 00 4D
+ 67 72 20 49 54 20 49 6E 66 72 61 73 74 72 75 63
+ 74 75 72 65 04 00 00 37 34 37 37 04 00 00 37 35
+ 30 31 04 00 00 37 35 37 35 04 00 00 37 35 37 36
+ 04 00 00 37 35 39 35 04 00 00 37 36 30 32 04 00
+ 00 37 36 30 36 04 00 00 37 39 34 32 04 00 00 37
+ 39 37 32 04 00 00 37 39 39 31 04 00 00 38 30 30
+ 39 04 00 00 38 30 32 30 04 00 00 38 30 32 39 04
+ 00 00 38 30 33 34 04 00 00 38 30 33 37 14 00 00
+ 52 65 70 6F 72 74 69 6E 67 20 53 70 65 63 69 61
+ 6C 69 73 74 04 00 00 38 30 35 36 14 00 00 53 65
+ 6B 72 65 74 61 72 69 61 74 20 4F 70 65 72 2E 20
+ 45 55 04 00 00 38 30 36 37 04 00 00 38 30 38 31
+ 04 00 00 38 31 31 31 04 00 00 38 31 33 36 15 00
+ 00 41 73 73 69 73 74 61 6E 74 20 74 6F 20 48 65
+ 61 64 20 53 53 43 04 00 00 38 32 31 39 04 00 00
+ 38 32 39 38 04 00 00 38 33 31 39 04 00 00 38 33
+ 34 32 04 00 00 38 33 36 33 04 00 00 38 34 30 33
+ 04 00 00 38 34 30 34 04 00 00 38 34 30 36 04 00
+ 00 38 34 31 32 04 00 00 38 34 31 33 04 00 00 38
+ 34 31 34 04 00 00 38 34 31 35 11 00 00 53 65 6E
+ 69 6F 72 20 55 57 20 46 61 6B 20 48 55 4B 04 00
+ 00 38 34 32 39 04 00 00 38 34 33 31 04 00 00 38
+ 34 33 33 04 00 00 38 34 33 37 04 00 00 38 34 34
+ 30 04 00 00 38 34 35 31 04 00 00 38 34 35 35 04
+ 00 00 38 34 36 36 04 00 00 38 34 36 37 04 00 00
+ 38 34 36 38 04 00 00 38 34 37 34 04 00 00 38 34
+ 38 30 04 00 00 38 34 38 38 04 00 00 38 34 38 39
+ 04 00 00 38 34 39 36 12 00 00 50 72 6F 6A 65 6B
+ 74 20 53 70 65 7A 69 61 6C 69 73 74 04 00 00 38
+ 35 30 34 04 00 00 38 35 30 37 04 00 00 38 35 30
+ 38 04 00 00 38 35 31 35 04 00 00 38 35 31 39 04
+ 00 00 38 35 32 30 04 00 00 38 35 32 33 04 00 00
+ 38 35 33 39 04 00 00 38 35 35 33 04 00 00 38 35
+ 36 30 04 00 00 38 35 36 34 04 00 00 38 35 36 35
+ 18 00 00 43 6C 69 65 6E 74 20 4D 61 6E 61 67 65
+ 6D 65 6E 74 20 4D 65 6D 62 65 72 04 00 00 38 35
+ 36 36 04 00 00 38 35 36 37 04 00 00 38 35 36 38
+ 04 00 00 38 35 37 32 04 00 00 38 35 37 34 04 00
+ 00 38 35 38 30 04 00 00 38 35 38 31 04 00 00 38
+ 35 38 34 04 00 00 38 35 38 35 04 00 00 38 35 39
+ 36 04 00 00 38 36 30 30 04 00 00 38 36 32 34 04
+ 00 00 38 36 32 38 04 00 00 38 36 33 39 16 00 00
+ 55 57 20 4D 61 6E 61 67 65 72 20 73 77 69 66 74
+ 72 65 2E 63 6F 6D 04 00 00 38 36 34 33 04 00 00
+ 38 36 35 37 19 00 00 48 65 61 64 20 6F 66 20 50
+ 6C 61 6E 2E 26 43 6F 6E 74 72 6F 6C 6C 69 6E 67
+ 04 00 00 38 37 31 33 10 00 00 55 57 20 46 61 63
+ 2E 20 43 61 73 75 61 6C 74 79 04 00 00 38 37 33
+ 39 04 00 00 38 37 34 35 04 00 00 38 37 35 30 19
+ 00 00 55 57 20 4D 61 6E 61 67 65 72 20 46 69 6E
+ 61 6E 63 69 61 6C 20 53 6F 6C 2E 04 00 00 38 37
+ 35 33 04 00 00 38 37 36 33 04 00 00 38 38 30 30
+ 19 00 00 49 54 20 4D 67 72 20 42 75 73 2E 20 45
+ 78 65 63 2E 20 53 79 73 74 65 6D 73 04 00 00 38
+ 38 39 38 04 00 00 38 39 32 30 04 00 00 39 31 31
+ 36 04 00 00 39 31 32 30 04 00 00 39 31 32 36 04
+ 00 00 39 31 35 37 04 00 00 39 31 35 38 04 00 00
+ 39 31 37 39 04 00 00 39 33 30 37 04 00 00 39 33
+ 32 37 04 00 00 39 33 39 39 04 00 00 39 34 39 35
+ 04 00 00 39 34 39 37 04 00 00 39 35 33 33 04 00
+ 00 39 36 31 33 04 00 00 39 36 35 31 04 00 00 39
+ 37 35 31 05 00 00 31 30 30 35 37 05 00 00 31 30
+ 32 31 34 05 00 00 31 30 32 32 36 05 00 00 31 30
+ 32 32 38 05 00 00 31 30 32 33 32 05 00 00 31 30
+ 32 33 38 05 00 00 31 30 32 34 34 05 00 00 31 30
+ 32 34 38 05 00 00 31 30 32 35 30 05 00 00 31 30
+ 32 38 34 05 00 00 31 30 33 37 38 05 00 00 31 30
+ 34 31 31 05 00 00 31 30 34 35 33 05 00 00 31 30
+ 34 38 31 05 00 00 31 30 35 33 33 05 00 00 31 30
+ 35 36 37 16 00 00 48 65 61 64 20 49 6E 74 65 72
+ 6E 61 74 2E 20 53 75 70 70 6F 72 74 05 00 00 31
+ 30 35 38 34 19 00 00 49 54 20 48 65 61 64 20 5A
+ 48 20 26 20 4C 6F 63 2E 20 4F 66 66 69 63 65 73
+ 05 00 00 31 30 36 30 30 05 00 00 31 30 36 30 37
+ 05 00 00 31 30 36 30 38 05 00 00 31 30 36 30 39
+ 05 00 00 31 30 36 31 30 05 00 00 31 30 36 31 36
+ 05 00 00 31 30 36 32 34 05 00 00 31 30 37 30 31
+ 05 00 00 31 30 37 33 34 05 00 00 31 30 37 33 35
+ 02 00 00 41 47 05 00 00 31 30 37 34 38 05 00 00
+ 31 30 38 36 30 16 00 00 49 54 20 4D 61 6E 61 67
+ 65 72 20 73 77 69 66 74 72 65 2E 63 6F 6D 05 00
+ 00 31 30 38 39 38 05 00 00 31 30 39 38 39 05 00
+ 00 31 30 39 39 31 05 00 00 31 31 31 30 36 0F 00
+ 00 43 6F 73 74 20 43 6F 6E 74 72 6F 6C 6C 65 72
+ 05 00 00 31 31 31 33 37 05 00 00 31 31 31 34 31
+ 19 00 00 53 61 63 68 62 65 61 72 62 2E 44 69 76
+ 2E 45 78 65 63 2E 4F 66 66 69 63 65 05 00 00 31
+ 31 31 35 34 05 00 00 31 31 32 33 34 05 00 00 31
+ 31 32 33 37 05 00 00 31 31 32 37 35 05 00 00 31
+ 31 32 37 36 05 00 00 31 31 33 30 39 05 00 00 31
+ 31 33 37 33 05 00 00 31 31 33 39 36 05 00 00 31
+ 31 35 32 33 05 00 00 31 31 36 37 34 05 00 00 31
+ 31 36 39 39 05 00 00 31 31 37 32 33 05 00 00 31
+ 31 37 33 33 05 00 00 31 31 37 34 38 05 00 00 31
+ 31 37 37 36 05 00 00 31 31 37 38 32 05 00 00 31
+ 31 38 31 38 05 00 00 31 31 38 32 37 05 00 00 31
+ 31 38 33 35 05 00 00 31 31 38 38 32 05 00 00 31
+ 31 39 33 35 05 00 00 31 31 39 33 36 05 00 00 31
+ 31 39 34 39 05 00 00 31 32 30 30 38 05 00 00 31
+ 32 30 32 34 05 00 00 31 32 30 38 34 05 00 00 31
+ 32 31 33 34 05 00 00 31 32 31 35 36 05 00 00 31
+ 32 31 38 35 05 00 00 31 32 32 31 31 05 00 00 31
+ 32 32 38 37 05 00 00 31 32 33 31 39 05 00 00 31
+ 32 33 36 34 05 00 00 31 32 33 39 30 05 00 00 31
+ 32 34 34 39 02 00 00 50 4D 05 00 00 31 32 34 35
+ 37 0F 00 00 48 65 61 64 20 50 4D 4F 20 45 75 72
+ 6F 70 65 01 00 00 34 02 00 00 32 34 02 00 00 32
+ 37 02 00 00 34 31 01 00 00 41 02 00 00 35 31 02
+ 00 00 36 30 02 00 00 36 35 02 00 00 37 31 02 00
+ 00 38 30 02 00 00 38 38 02 00 00 39 39 19 00 00
+ 43 6C 69 65 6E 74 20 4D 67 72 20 47 6C 6F 62 61
+ 6C 20 43 6C 69 65 6E 74 73 03 00 00 31 31 38 03
+ 00 00 31 32 39 03 00 00 31 33 32 16 00 00 43 6C
+ 61 69 6D 73 20 4D 67 72 20 73 77 69 66 74 72 65
+ 2E 63 6F 6D 03 00 00 31 37 30 03 00 00 31 37 33
+ 11 00 00 4D 61 6E 61 67 65 72 20 4D 61 72 69 6E
+ 65 20 55 57 03 00 00 31 38 39 11 00 00 55 57 20
+ 4D 61 6E 61 67 65 72 20 44 45 53 49 47 4E 03 00
+ 00 36 37 38 15 00 00 55 6E 64 65 72 77 72 69 74
+ 65 72 20 44 E9 63 65 6E 6E 61 6C 65 03 00 00 38
+ 39 32 03 00 00 39 32 38 03 00 00 39 33 38 03 00
+ 00 39 37 33 03 00 00 39 37 39 04 00 00 31 30 33
+ 30 04 00 00 31 30 37 30 0F 00 00 53 6F 52 69 20
+ 55 57 20 4D 61 6E 61 67 65 72 04 00 00 31 31 31
+ 38 04 00 00 31 34 37 35 04 00 00 31 35 30 31 04
+ 00 00 31 35 32 31 04 00 00 31 35 35 38 04 00 00
+ 31 35 39 32 04 00 00 31 36 30 30 04 00 00 31 36
+ 31 30 04 00 00 31 36 32 39 04 00 00 31 36 35 35
+ 04 00 00 31 37 30 30 16 00 00 48 65 61 64 20 6F
+ 66 20 44 69 76 2E 20 48 52 20 5A FC 72 69 63 68
+ 04 00 00 31 37 31 39 04 00 00 31 37 36 34 04 00
+ 00 31 37 37 34 04 00 00 31 38 30 34 04 00 00 31
+ 38 36 36 04 00 00 31 39 30 31 04 00 00 31 39 33
+ 37 04 00 00 32 30 30 35 04 00 00 32 30 34 38 04
+ 00 00 32 30 37 34 04 00 00 32 31 30 32 04 00 00
+ 32 31 33 37 04 00 00 32 31 36 37 04 00 00 32 31
+ 38 31 04 00 00 32 32 31 30 04 00 00 32 32 34 34
+ 04 00 00 32 32 37 32 04 00 00 32 32 38 30 04 00
+ 00 32 33 31 32 04 00 00 32 33 32 36 17 00 00 44
+ 69 76 2E 20 4F 70 65 72 61 74 2E 20 4F 66 66 69
+ 63 65 72 20 45 55 04 00 00 32 33 36 34 04 00 00
+ 32 33 39 30 04 00 00 32 34 31 30 04 00 00 32 34
+ 32 38 04 00 00 32 34 33 31 04 00 00 32 34 35 35
+ 12 00 00 48 65 61 64 20 6F 66 20 53 53 43 20 5A
+ 75 72 69 63 68 04 00 00 32 36 30 33 04 00 00 32
+ 36 32 35 04 00 00 32 36 37 32 04 00 00 32 36 39
+ 37 04 00 00 32 37 33 33 18 00 00 49 6E 6E 6F 76
+ 61 74 69 6F 6E 2F 4B 6E 6F 77 6C 65 64 67 65 20
+ 4D 67 72 04 00 00 32 37 33 39 04 00 00 32 37 38
+ 36 04 00 00 32 38 30 38 0B 00 00 53 74 61 62 73
+ 6C 65 69 74 65 72 04 00 00 32 38 31 31 17 00 00
+ 48 65 61 64 20 6F 66 20 4D 61 72 6B 65 74 69 6E
+ 67 20 53 20 26 20 4C 04 00 00 32 38 31 36 17 00
+ 00 49 54 20 4D 67 72 20 52 65 69 6E 73 75 72 2E
+ 20 53 79 73 74 65 6D 73 04 00 00 32 38 32 30 04
+ 00 00 32 38 37 33 05 00 00 31 32 35 30 34 05 00
+ 00 31 32 35 33 34 05 00 00 31 32 35 34 33 05 00
+ 00 31 32 35 36 36 05 00 00 31 32 35 39 38 05 00
+ 00 31 32 36 31 31 05 00 00 31 32 36 33 35 05 00
+ 00 31 32 36 35 38 05 00 00 31 32 36 36 36 01 00
+ 00 4E 05 00 00 31 32 36 37 36 05 00 00 31 32 37
+ 33 36 05 00 00 31 32 37 36 38 05 00 00 31 32 38
+ 30 35 05 00 00 31 32 38 32 34 05 00 00 31 32 38
+ 35 30 05 00 00 31 32 39 33 31 05 00 00 31 33 30
+ 30 32
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7 b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7
new file mode 100755
index 0000000000..571474ebdc
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecord2CR7
@@ -0,0 +1,105 @@
+ 3C 00 86 06 05 00 00 31 33 30 37 30 05 00
+ 00 31 32 35 36 37 0F 00 00 4B 56 2D 50 72 61 6B
+ 74 69 6B 61 6E 74 69 6E 02 00 00 33 32 04 00 00
+ 35 38 37 32 04 00 00 38 34 39 35 05 00 00 31 30
+ 34 39 39 05 00 00 31 30 35 30 31 05 00 00 31 30
+ 35 30 33 05 00 00 31 30 35 30 35 05 00 00 31 30
+ 36 38 39 05 00 00 31 30 36 39 31 05 00 00 31 30
+ 37 35 32 05 00 00 31 30 38 35 33 05 00 00 31 30
+ 38 35 34 05 00 00 31 30 38 35 36 05 00 00 31 30
+ 38 35 37 05 00 00 31 30 38 38 30 16 00 00 50 72
+ 6F 6A 65 63 74 20 4F 66 66 69 63 65 20 4D 61 6E
+ 61 67 65 72 13 00 00 43 68 69 65 66 20 4C 65 67
+ 61 6C 20 4F 66 66 69 63 65 72 18 00 00 53 65 63
+ 74 6F 72 20 53 74 72 61 74 65 67 69 73 74 20 45
+ 75 72 6F 70 65 12 00 00 48 65 61 64 20 6F 66 20
+ 41 75 74 6F 6D 61 74 69 6F 6E 17 00 00 48 65 61
+ 64 20 46 75 6E 64 20 6F 66 20 46 75 6E 64 73 20
+ 55 6E 69 74 0C 00 00 43 4D 20 41 73 73 69 73 74
+ 61 6E 74 18 00 00 48 65 61 64 20 48 75 6D 61 6E
+ 20 52 65 73 6F 75 72 63 65 73 20 53 52 49 14 00
+ 00 51 75 61 6E 74 69 74 61 74 69 76 65 20 41 6E
+ 61 6C 79 73 74 12 00 00 55 6D 77 65 6C 74 62 65
+ 61 75 66 74 72 61 67 74 65 72 12 00 00 54 68 69
+ 72 64 20 79 65 61 72 20 41 6E 61 6C 79 73 74 17
+ 00 00 48 65 61 64 20 43 75 73 74 6F 64 79 20 4D
+ 61 6E 61 67 65 6D 65 6E 74 0E 00 00 56 69 63 65
+ 20 50 72 65 73 69 64 65 6E 74 11 00 00 50 72 6F
+ 6A 65 6B 74 6C 65 69 74 65 72 20 52 53 41 0D 00
+ 00 50 72 6F 67 72 61 6D 6D 69 65 72 65 72 19 00
+ 00 44 65 70 2E 48 65 61 64 20 46 69 6E 61 6E 63
+ 2E 20 41 63 63 6F 75 6E 74 2E 19 00 00 53 65 6E
+ 69 6F 72 20 49 6E 66 6F 72 6D 2E 20 53 70 65 63
+ 69 61 6C 69 73 74 14 00 00 48 65 61 64 20 43 6C
+ 69 65 6E 74 20 52 65 6C 61 74 69 6F 6E 0A 00 00
+ 43 6F 6E 73 75 6C 74 61 6E 74 15 00 00 48 65 61
+ 64 20 42 75 73 69 6E 65 73 73 20 41 6E 61 6C 79
+ 73 74 18 00 00 48 65 61 64 20 43 6C 69 65 6E 74
+ 20 4D 67 6D 74 20 53 79 73 74 65 6D 73 15 00 00
+ 48 65 61 64 20 4B 6E 6F 77 6C 2E 26 49 6E 66 2E
+ 20 4D 67 6D 74 19 00 00 4C 65 69 74 65 72 20 42
+ 75 63 68 68 2F 42 65 72 69 63 68 74 65 72 73 74
+ 2E 19 00 00 50 72 6F 6A 2E 4D 67 72 2E 20 43 65
+ 6E 74 72 65 20 6F 66 20 43 6F 6D 70 2E 19 00 00
+ 41 73 73 2E 20 47 72 70 2E 20 43 6F 6D 70 6C 69
+ 61 6E 63 65 20 4F 66 66 2E 10 00 00 48 65 61 64
+ 20 6F 66 20 52 65 73 65 61 72 63 68 12 00 00 53
+ 6F 66 74 77 61 72 65 20 41 72 63 68 69 74 65 63
+ 74 13 00 00 48 65 61 64 20 6F 66 20 49 54 20 54
+ 72 61 69 6E 69 6E 67 19 00 00 4F 70 65 72 61 74
+ 69 76 65 72 20 42 65 74 72 69 65 62 73 6C 65 69
+ 74 65 72 12 00 00 41 64 6D 69 6E 2E 20 4D 69 74
+ 61 72 62 65 69 74 65 72 02 00 00 47 57 16 00 00
+ 54 65 61 6D 6C 2E 20 43 6F 73 74 20 41 63 63 6F
+ 75 6E 74 69 6E 67 18 00 00 48 65 61 64 20 52 65
+ 67 69 6F 6E 61 6C 20 50 4D 4F 20 5A 75 72 69 63
+ 68 04 00 00 35 37 34 34 04 00 00 36 33 30 37 05
+ 00 00 31 30 39 30 31 04 00 00 36 34 35 31 04 00
+ 00 34 35 30 30 05 00 00 31 31 36 34 37 05 00 00
+ 31 32 37 30 30 04 00 00 33 38 34 30 04 00 00 36
+ 37 39 33 05 00 00 31 32 39 30 36 04 00 00 35 33
+ 32 36 04 00 00 36 38 35 33 05 00 00 31 32 38 35
+ 34 04 00 00 35 35 38 31 05 00 00 31 32 39 36 35
+ 04 00 00 33 30 38 37 04 00 00 34 33 36 31 04 00
+ 00 33 39 37 30 04 00 00 35 32 38 39 04 00 00 38
+ 35 38 38 05 00 00 31 30 36 39 30 05 00 00 31 33
+ 31 34 37 04 00 00 36 39 38 34 05 00 00 31 31 31
+ 33 31 04 00 00 36 38 32 30 04 00 00 34 33 35 36
+ 04 00 00 35 35 38 32 04 00 00 33 30 31 34 04 00
+ 00 31 34 34 33 04 00 00 35 32 38 36 04 00 00 37
+ 32 32 37 05 00 00 31 31 39 37 32 04 00 00 34 35
+ 35 34 04 00 00 34 32 36 35 04 00 00 33 36 35 36
+ 04 00 00 38 30 37 31 03 00 00 32 39 30 04 00 00
+ 35 39 31 38 04 00 00 36 39 33 31 04 00 00 35 36
+ 33 30 04 00 00 36 35 34 30 04 00 00 38 34 35 34
+ 04 00 00 38 30 36 31 04 00 00 35 30 31 35 05 00
+ 00 34 32 31 30 34 0C 00 00 55 6E 64 65 72 77 72
+ 69 74 65 72 2C 04 00 00 37 32 35 36 04 00 00 37
+ 36 37 34 04 00 00 37 37 38 36 04 00 00 38 37 31
+ 34 04 00 00 38 37 31 39 04 00 00 36 33 36 35 04
+ 00 00 38 39 35 37 04 00 00 32 37 31 38 04 00 00
+ 36 32 39 31 05 00 00 31 31 39 34 37 04 00 00 33
+ 30 33 33 04 00 00 38 34 36 30 04 00 00 36 32 36
+ 36 04 00 00 33 32 39 39 04 00 00 37 38 38 39 04
+ 00 00 32 37 33 30 05 00 00 31 31 33 38 31 05 00
+ 00 31 30 36 34 38 04 00 00 37 33 37 33 04 00 00
+ 35 30 35 30 04 00 00 38 36 31 39 04 00 00 37 31
+ 34 36 04 00 00 34 33 31 33 04 00 00 35 38 33 35
+ 04 00 00 38 37 35 38 04 00 00 37 30 37 31 05 00
+ 00 31 33 30 36 36 04 00 00 37 37 36 35 04 00 00
+ 34 34 36 38 05 00 00 31 31 38 36 31 04 00 00 35
+ 38 39 34 04 00 00 32 34 33 38 04 00 00 33 31 38
+ 38 04 00 00 34 32 35 37 03 00 00 31 35 38 04 00
+ 00 39 32 34 39 12 00 00 41 73 73 6F 63 69 61 74
+ 65 20 44 69 72 65 63 74 6F 72 03 00 00 36 31 36
+ 05 00 00 31 31 30 36 34 04 00 00 34 36 32 36 04
+ 00 00 36 33 31 37 05 00 00 31 31 35 35 33 05 00
+ 00 31 31 32 39 38 04 00 00 32 32 35 34 04 00 00
+ 39 35 33 31 04 00 00 38 33 31 38 02 00 00 34 35
+ 04 00 00 35 34 33 30 04 00 00 37 30 37 36 04 00
+ 00 36 38 36 34 05 00 00 31 32 34 35 38 04 00 00
+ 35 34 38 35 05 00 00 38 30 30 39 33 04 00 00 35
+ 39 37 31 04 00 00 36 34 37 32 04 00 00 36 36 31
+ 39 05 00 00 31 31 34 31 30 04 00 00 35 32 39 36
+ 04 00 00 38 36 33 30 04 00 00 38 30 32 38 04 00
+ 00 31 38 32 36 04 00 00 36 38 35 31
diff --git a/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR b/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR
new file mode 100755
index 0000000000..c35783de8b
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/BigSSTRecordCR
@@ -0,0 +1,225 @@
+3C 00 FD 0D 00 6C 05 00 00 47 2D 35 31 35 04
+00 00 32 37 38 38 04 00 00 32 32 34 38 04 00 00
+34 38 30 37 03 00 00 32 32 37 13 00 00 50 6C 79
+6D 6F 75 74 68 20 50 54 20 43 72 75 69 73 65 72
+18 00 00 53 74 61 72 20 54 72 65 6B 20 53 70 61
+63 65 20 53 68 69 70 20 53 65 74 3B 00 00 54 4F
+53 20 45 6E 74 65 72 70 72 69 73 65 2C 20 4B 6C
+69 6E 67 6F 6E 20 42 61 74 74 6C 65 63 72 75 69
+73 65 72 2C 20 52 6F 6D 75 6C 61 6E 20 42 69 72
+64 20 6F 66 20 50 72 65 79 14 00 00 46 6F 63 6B
+65 2D 57 75 6C 66 20 46 77 31 39 30 20 44 2D 39
+05 00 00 32 34 32 32 38 12 00 00 46 65 72 72 61
+72 69 20 33 36 30 20 4D 6F 64 65 6E 61 07 00 00
+38 35 2D 35 36 30 37 0D 00 00 43 2D 34 37 20 53
+6B 79 74 72 61 69 6E 11 00 00 43 6C 61 73 73 69
+63 20 41 69 72 66 72 61 6D 65 73 03 00 00 34 33
+39 15 00 00 42 72 69 73 74 6F 6C 20 42 6C 65 6E
+68 65 69 6D 20 4D 6B 20 49 19 00 00 46 69 6E 6E
+69 73 68 2F 59 75 67 6F 73 6C 61 76 20 6D 61 72
+6B 69 6E 67 73 05 00 00 35 31 30 33 38 0F 00 00
+4A 75 6E 6B 65 72 73 20 4A 75 38 37 47 2D 32 16
+00 00 22 53 75 70 65 72 20 44 65 74 61 69 6C 20
+47 75 6E 20 50 6F 64 22 05 00 00 35 31 30 34 30
+0C 00 00 54 79 70 68 6F 6F 6E 20 4D 2E 49 42 0E
+00 00 22 53 75 70 65 72 20 44 65 74 61 69 6C 22
+05 00 00 34 38 30 36 31 04 00 00 36 36 37 37 04
+00 00 5A 30 30 35 09 00 00 4D 6F 74 6F 72 69 7A
+65 64 07 00 00 38 35 2D 35 38 34 31 39 00 00 77
+2F 56 65 72 6C 69 6E 64 65 6E 20 64 65 74 61 69
+6C 20 73 65 74 20 31 34 37 34 20 61 6E 64 20 54
+72 75 65 20 44 65 74 61 69 6C 73 20 77 68 65 65
+6C 73 20 34 38 30 31 37 45 00 00 77 2F 57 61 72
+72 69 6F 72 20 57 41 20 57 31 30 30 31 20 44 4F
+2D 33 33 35 20 22 50 66 69 65 6C 22 20 44 65 74
+61 69 6C 20 53 65 74 2C 20 61 6C 73 6F 20 56 65
+72 6C 69 6E 64 65 6E 20 73 65 74 20 31 36 32 39
+04 00 00 36 37 39 30 0D 00 00 43 75 72 74 69 73
+73 20 50 2D 33 36 41 36 00 00 77 2F 20 53 71 75
+61 64 72 6F 6E 20 63 61 6E 6F 70 79 20 61 6E 64
+20 52 61 72 65 70 6C 61 6E 65 73 20 59 50 2D 33
+37 20 63 6F 6E 76 65 72 73 69 6F 6E 20 6B 69 74
+07 00 00 38 35 2D 37 36 33 33 15 00 00 56 6F 6C
+6B 73 77 61 67 65 6E 20 56 61 6E 20 43 61 6D 70
+65 72 04 00 00 38 32 34 38 0F 00 00 48 61 72 64
+20 48 61 74 20 48 61 75 6C 65 72 04 00 00 38 37
+38 39 1A 00 01 43 00 75 00 74 00 2D 00 41 00 77
+00 61 00 79 00 20 00 4D 00 69 00 6C 00 6C 00 65
+00 6E 00 69 00 75 00 6D 00 20 00 46 00 61 00 6C
+00 63 00 6F 00 6E 00 22 21 05 00 00 36 31 30 33
+31 20 00 00 55 2E 53 2E 20 4E 61 76 79 20 42 72
+65 77 73 74 65 72 20 46 32 41 2D 32 20 42 75 66
+66 61 6C 6F 05 00 00 36 30 37 34 30 1D 00 00 55
+2E 53 2E 41 2E 46 2E 20 42 65 6C 6C 20 58 2D 31
+20 4D 61 63 68 20 42 75 73 74 65 72 05 00 00 36
+31 30 34 35 21 00 00 48 79 61 6B 75 73 68 69 6B
+69 20 53 68 69 74 65 69 20 49 49 49 20 52 65 63
+6F 6E 20 50 6C 61 6E 65 05 00 00 36 31 30 34 37
+1E 00 00 4E 6F 72 74 68 20 41 6D 65 72 69 63 61
+6E 20 52 41 46 20 4D 75 73 74 61 6E 67 20 49 49
+49 07 00 00 38 35 2D 32 35 37 32 14 00 00 41 63
+75 72 61 20 49 6E 74 65 67 72 61 20 54 79 70 65
+20 52 07 00 00 38 35 2D 32 34 38 39 10 00 00 35
+36 20 43 68 65 76 79 AE 20 4E 6F 6D 61 64 AE 04
+00 00 32 32 36 39 10 00 00 43 6F 72 76 65 74 74
+65 20 41 6D 65 72 69 63 61 03 00 00 31 30 34 1F
+00 00 4D 65 73 73 65 72 73 63 68 6D 69 74 74 20
+4D 65 2D 33 32 31 20 44 2D 31 20 47 69 67 61 6E
+74 05 00 00 36 31 30 34 38 0F 00 00 44 65 77 6F
+69 74 69 6E 65 20 44 2E 35 32 30 07 00 00 38 35
+2D 31 36 35 36 4B 00 00 77 2F 69 6E 74 65 72 69
+6F 72 20 61 6E 64 20 65 78 74 65 72 69 6F 72 20
+64 65 74 61 69 6C 20 73 65 74 73 2C 20 65 6E 67
+69 6E 65 73 2C 20 77 68 65 65 6C 20 73 65 74 2C
+20 61 6E 64 20 6E 65 77 20 64 65 63 61 6C 73 2C
+20 43 44 04 00 00 4A 54 33 31 0D 00 00 50 2D 35
+31 4B 20 4D 75 73 74 61 6E 67 12 00 00 46 6F 63
+6B 65 2D 57 75 6C 66 65 20 46 77 31 39 30 46 04
+00 00 37 31 33 36 1F 00 00 48 6F 74 20 52 6F 64
+20 43 75 73 74 6F 6D 20 4D 6F 64 65 6C 20 27 41
+27 20 50 69 63 6B 75 70 04 00 00 32 37 35 30 19
+00 00 32 39 20 46 6F 72 64 20 50 69 63 6B 75 70
+20 53 74 72 65 65 74 20 52 6F 64 09 00 00 45 53
+43 69 2F 45 52 54 4C 04 00 00 34 31 30 31 12 00
+00 43 75 72 74 69 73 73 20 50 2D 33 36 41 20 48
+61 77 6B 04 00 00 38 30 32 38 16 00 00 31 39 35
+37 20 46 6F 72 64 20 46 61 69 72 6C 61 6E 65 20
+35 30 30 08 00 00 4D 50 43 2F 45 52 54 4C 04 00
+00 36 32 32 31 0E 00 00 44 65 6F 72 61 20 53 68
+6F 77 20 43 61 72 04 00 00 34 38 30 33 1E 00 00
+42 65 6C 6C 20 58 50 2D 37 37 20 4C 69 67 68 74
+77 65 69 67 68 74 20 46 69 67 68 74 65 72 04 00
+00 4A 54 37 35 0E 00 00 46 34 55 2D 35 4E 20 43
+6F 72 73 61 69 72 04 00 00 38 36 31 39 1A 00 00
+4E 6F 72 74 68 72 6F 70 20 59 42 2D 34 39 20 46
+6C 79 69 6E 67 20 57 69 6E 67 04 00 00 38 31 32
+35 04 00 00 42 6F 61 74 1B 00 00 33 20 69 6E 20
+31 20 43 75 73 74 6F 6D 69 7A 69 6E 67 20 42 6F
+61 74 20 4B 69 74 04 00 00 32 32 37 38 0E 00 00
+43 69 74 61 74 69 6F 6E 20 54 75 72 62 6F 05 00
+00 34 38 30 33 31 1A 00 00 59 61 6B 2D 37 41 20
+57 57 49 49 20 53 6F 76 69 65 74 20 46 69 67 68
+74 65 72 03 00 00 38 36 31 15 00 00 46 6F 63 6B
+65 20 57 75 6C 66 20 54 41 2D 31 35 32 20 48 2D
+31 11 00 00 77 2F 4D 6F 73 6B 69 74 20 65 78 68
+61 75 73 74 73 06 00 00 46 75 6A 69 6D 69 16 00
+00 46 6F 63 6B 65 2D 57 75 6C 66 20 46 77 31 39
+30 41 36 2D 3E 41 39 14 00 00 77 2F 54 72 75 65
+20 44 65 74 61 69 6C 20 77 68 65 65 6C 73 06 00
+00 52 55 31 30 30 32 05 00 00 4D 43 2D 30 35 0A
+00 00 56 6F 6C 6B 73 77 61 67 65 6E 1C 00 00 53
+74 6F 63 6B 20 6F 72 20 41 41 2F 41 6C 74 65 72
+65 64 20 56 57 20 43 6F 75 70 65 07 00 00 38 35
+2D 35 35 31 30 0D 00 00 42 2D 32 36 20 4D 61 72
+61 75 64 65 72 2C 00 00 53 70 65 63 69 61 6C 20
+45 64 69 74 69 6F 6E 20 77 2F 72 65 73 69 6E 20
+70 61 72 74 73 3B 20 73 6B 69 6C 6C 20 6C 65 76
+65 6C 20 33 06 00 00 4D 65 20 33 30 39 04 00 00
+38 35 38 35 19 00 00 45 6C 65 63 74 72 6F 6E 69
+63 20 58 2D 57 69 6E 67 20 46 69 67 68 74 65 72
+04 00 00 38 30 33 36 0D 00 00 50 2D 34 30 4E 20
+57 61 72 68 61 77 6B 09 00 00 50 72 6F 66 69 70
+61 63 6B 06 00 00 48 2D 31 32 31 37 15 00 00 41
+75 73 74 69 6E 20 48 65 61 6C 65 79 20 31 30 30
+2D 53 69 78 03 00 00 32 31 32 11 00 00 54 68 75
+6E 64 65 72 62 6F 6C 74 20 50 2D 34 37 44 03 00
+00 32 31 35 0D 00 00 46 38 46 2D 32 20 42 65 61
+72 63 61 74 03 00 00 4D 50 4D 05 00 00 34 38 30
+32 38 13 00 00 46 6F 63 6B 65 2D 57 75 6C 66 20
+46 77 20 31 39 30 20 53 2F 00 00 45 78 70 65 72
+74 20 53 65 72 69 65 73 3B 20 77 69 74 68 20 72
+65 73 69 6E 20 61 6E 64 20 70 68 6F 74 6F 2D 65
+74 63 68 20 64 65 74 61 69 6C 07 00 00 38 35 2D
+35 37 30 36 12 00 00 42 2D 32 39 20 53 75 70 65
+72 66 6F 72 74 72 65 73 73 16 00 00 77 2F 45 2D
+5A 20 6D 61 73 6B 20 63 61 6E 6F 70 79 20 6D 61
+73 6B 20 00 00 77 2F 64 65 74 61 69 6C 20 73 65
+74 20 61 6E 64 20 4D 6F 73 6B 69 74 20 65 78 68
+61 75 73 74 73 33 00 00 53 6B 69 6C 6C 20 6C 65
+76 65 6C 20 33 2C 20 77 69 74 68 20 72 65 73 69
+6E 20 65 6E 67 69 6E 65 20 28 45 6E 67 69 6E 65
+73 20 26 20 54 68 69 6E 67 73 29 05 00 00 34 38
+30 33 34 13 00 00 46 6F 63 6B 65 2D 57 75 6C 66
+20 46 77 20 31 38 39 20 41 05 00 00 32 34 30 34
+36 17 00 00 4C 6F 74 75 73 20 53 75 70 65 72 20
+37 20 53 65 72 69 65 73 20 49 49 04 00 00 33 34
+33 31 10 00 00 42 2D 32 35 43 2F 44 20 4D 69 74
+63 68 65 6C 6C 09 00 00 54 72 69 6D 61 73 74 65
+72 22 00 00 46 6F 63 6B 65 2D 57 75 6C 66 20 46
+77 31 39 30 41 2D 38 2F 52 31 31 20 4E 61 63 68
+74 6A 61 67 65 72 05 00 00 34 38 30 30 31 16 00
+00 4D 65 73 73 65 72 73 63 68 6D 69 74 74 20 42
+66 31 30 39 4B 2D 34 12 00 00 77 2F 72 65 73 69
+6E 20 64 65 74 61 69 6C 20 73 65 74 04 00 00 32
+37 34 31 18 00 00 46 6F 72 64 20 53 74 72 65 65
+74 20 22 54 22 20 52 6F 61 64 73 74 65 72 04 00
+00 30 31 39 34 0E 00 00 54 68 65 20 53 70 61 63
+65 20 54 61 78 69 02 00 00 4A 31 17 00 00 4D 65
+73 73 65 72 73 63 68 6D 69 74 74 20 42 66 31 30
+39 20 45 2D 33 1F 00 00 77 2F 56 65 72 6C 69 6E
+64 65 6E 20 73 75 70 65 72 2D 74 65 63 68 20 6B
+69 74 20 23 33 38 34 07 00 00 38 35 2D 32 35 31
+37 27 00 00 31 31 20 53 74 65 76 65 20 4B 69 6E
+73 65 72 20 51 75 61 6B 65 72 20 53 74 61 74 65
+20 53 70 72 69 6E 74 20 43 61 72 07 00 00 38 35
+2D 37 33 31 30 03 00 00 31 2F 38 0A 00 00 4D 6F
+74 6F 72 63 79 63 6C 65 21 00 01 58 00 4C 00 22
+21 20 00 31 00 32 00 30 00 30 00 20 00 53 00 70
+00 6F 00 72 00 74 00 73 00 74 00 65 00 72 00 28
+00 52 00 29 00 20 00 31 00 32 00 30 00 30 00 20
+00 43 00 75 00 73 00 74 00 6F 00 6D 00 04 00 00
+36 31 33 35 1A 00 00 36 32 20 50 6F 6E 74 69 61
+63 20 43 61 74 61 6C 69 6E 61 20 43 75 73 74 6F
+6D 03 00 00 39 31 32 0D 00 00 43 75 72 74 69 73
+73 20 52 61 63 65 72 05 00 00 33 31 32 32 30 16
+00 00 32 39 20 46 6F 72 64 20 57 6F 6F 64 79 20
+2F 20 50 69 63 6B 75 70 0B 00 00 52 2E 20 56 2E
+20 52 65 73 69 6E 19 00 00 46 6F 63 6B 65 20 57
+75 6C 66 20 54 61 20 31 35 32 43 2D 30 20 28 56
+37 29 07 00 00 38 35 2D 37 36 37 39 2B 00 00 36
+34 20 46 6F 72 64 20 46 61 69 72 6C 61 6E 65 20
+54 68 75 6E 64 65 72 62 6F 6C 74 20 53 74 72 65
+65 74 20 4D 61 63 68 69 6E 65 04 00 00 38 32 30
+37 21 00 00 31 39 36 37 20 43 68 65 76 72 6F 6C
+65 74 20 49 6D 70 61 6C 61 20 53 75 70 65 72 20
+53 70 6F 72 74 07 00 00 38 35 2D 31 39 31 34 13
+00 00 43 68 72 79 73 6C 65 72 20 50 54 20 43 72
+75 69 73 65 72 05 00 00 36 31 30 35 34 11 00 00
+41 69 63 68 69 20 4D 36 41 31 20 53 65 69 72 65
+6E 07 00 00 38 35 2D 32 31 34 34 0B 00 01 4B 00
+69 00 6C 00 6C 00 65 00 72 00 20 00 42 00 65 00
+65 00 22 21 1A 00 01 42 00 6C 00 61 00 63 00 6B
+00 20 00 54 00 6F 00 70 00 20 00 57 00 61 00 72
+00 72 00 69 00 6F 00 72 00 73 00 22 21 20 00 73
+00 65 00 72 00 69 00 65 00 73 00 05 00 00 33 30
+30 38 39 16 00 00 33 32 20 46 6F 72 64 20 50 68
+61 6E 74 6F 6D 20 56 69 63 6B 69 65 07 00 00 38
+35 2D 34 31 35 31 18 00 00 54 6F 6E 79 20 4E 61
+6E 63 79 27 73 20 52 65 76 65 6C 6C 6C 69 6E 65
+72 07 00 00 38 35 2D 35 38 33 34 0E 00 00 46 2D
+31 31 37 41 20 53 74 65 61 6C 74 68 24 00 00 53
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 2C 20 77 69
+74 68 20 70 68 6F 74 6F 2D 65 74 63 68 20 70 61
+72 74 73 04 00 00 35 36 30 38 0F 00 00 42 2D 32
+34 4A 20 4C 69 62 65 72 61 74 6F 72 04 00 00 4D
+41 2D 37 04 00 00 4D 41 2D 33 1B 00 00 48 65 69
+6E 6B 65 6C 20 48 65 31 36 32 41 2D 32 20 56 6F
+6C 6B 73 6A 61 67 65 72 05 00 00 33 30 32 37 33
+0C 00 00 41 4D 54 20 41 6D 74 72 6F 6E 69 63 04
+00 00 37 38 30 33 14 00 00 54 42 4D 2D 33 2F 54
+42 46 2D 31 43 20 41 76 65 6E 67 65 72 13 00 00
+77 2F 41 65 72 6F 6D 61 73 74 65 72 20 64 65 63
+61 6C 73 04 00 00 37 38 30 36 1B 00 00 53 42 44
+2D 33 2F 53 42 44 2D 34 2F 53 42 44 2D 35 20 44
+61 75 6E 74 6C 65 73 73 05 00 00 36 31 30 37 31
+20 00 00 46 61 69 72 65 79 20 53 77 6F 72 64 66
+69 73 68 20 4D 6B 2E 49 20 46 6C 6F 61 74 70 6C
+61 6E 65 04 00 00 37 35 37 35 10 00 00 44 65 76
+61 73 74 61 74 6F 72 20 54 42 44 2D 31 04 00 00
+32 31 37 39 12 00 00 50 2D 32 36 41 2F 43 20 50
+65 61 73 68 6F 6F 74 65 72 06 00 00 34 35 34 3A
+34 39 09 00 00 43 61 72 61 76 65 6C 6C 65 03 00
+00 35 30 36 0D 00 00 4F 56 2D 31 30 41 20 42 72
+6F 6E 63 6F 07 00 00 38 35 2D 35 39 32 39 11 00
+00 50 2D 34 37 4E 20 54 68 75 6E 64 65 72 62 6F
+6C 74
diff --git a/src/testcases/org/apache/poi/hssf/data/Employee.xls b/src/testcases/org/apache/poi/hssf/data/Employee.xls
new file mode 100755
index 0000000000..bb9be26b9d
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/Employee.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/Simple.xls b/src/testcases/org/apache/poi/hssf/data/Simple.xls
new file mode 100755
index 0000000000..b06799fea5
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/Simple.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls b/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls
new file mode 100755
index 0000000000..7a980800c7
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/SimpleChart.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls
new file mode 100755
index 0000000000..758b341906
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithFormula.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls
new file mode 100755
index 0000000000..11b81aeca2
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithSkip.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls b/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls
new file mode 100755
index 0000000000..b5793d251b
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/SimpleWithStyling.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/rk.xls b/src/testcases/org/apache/poi/hssf/data/rk.xls
new file mode 100755
index 0000000000..5fcc558648
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/rk.xls
Binary files differ
diff --git a/src/testcases/org/apache/poi/hssf/data/test_properties1 b/src/testcases/org/apache/poi/hssf/data/test_properties1
new file mode 100755
index 0000000000..d4800280ec
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/data/test_properties1
@@ -0,0 +1,11 @@
+# Set root category priority to DEBUG and its only appender to A1.
+log4j.rootCategory=DEBUG, A1
+
+# A1 is set to be a FileAppender.
+log4j.appender.A1=org.apache.log4j.FileAppender
+log4j.appender.A1.File=p1.log
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+#log4j.category.org.apache.cocoon.poi=WARN
diff --git a/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java b/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java
new file mode 100644
index 0000000000..be582ab1e7
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/record/TestRecordFactory.java
@@ -0,0 +1,167 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.record;
+
+import junit.framework.TestCase;
+
+/**
+ * Tests the record factory
+ * @author Glen Stampoultzis (gstamp at iprimus dot com dot au)
+ * @author Andrew C. Oliver (acoliver at apache dot org)
+ */
+
+public class TestRecordFactory
+ extends TestCase
+{
+
+ /**
+ * Creates new TestRecordFactory
+ * @param testCaseName
+ */
+
+ public TestRecordFactory(String testCaseName)
+ {
+ super(testCaseName);
+ }
+
+ /**
+ * TEST NAME: Test Basic Record Construction <P>
+ * OBJECTIVE: Test that the RecordFactory given the required parameters for know
+ * record types can construct the proper record w/values.<P>
+ * SUCCESS: Record factory creates the records with the expected values.<P>
+ * FAILURE: The wrong records are creates or contain the wrong values <P>
+ *
+ */
+
+ public void testBasicRecordConstruction()
+ throws Exception
+ {
+ short recType = BOFRecord.sid;
+ byte[] data = new byte[]
+ {
+ 0, 6, 5, 0, -2, 28, -51, 7, -55, 64, 0, 0, 6, 1, 0, 0
+ };
+ short size = 16;
+ Record[] record = RecordFactory.createRecord(recType, size, data);
+
+ assertEquals(BOFRecord.class.getName(),
+ record[ 0 ].getClass().getName());
+ BOFRecord bofRecord = ( BOFRecord ) record[ 0 ];
+
+ assertEquals(7422, bofRecord.getBuild());
+ assertEquals(1997, bofRecord.getBuildYear());
+ assertEquals(16585, bofRecord.getHistoryBitMask());
+ assertEquals(20, bofRecord.getRecordSize());
+ assertEquals(262, bofRecord.getRequiredVersion());
+ assertEquals(2057, bofRecord.getSid());
+ assertEquals(5, bofRecord.getType());
+ assertEquals(1536, bofRecord.getVersion());
+ recType = MMSRecord.sid;
+ size = 2;
+ data = new byte[]
+ {
+ 0, 0
+ };
+ record = RecordFactory.createRecord(recType, size, data);
+ assertEquals(MMSRecord.class.getName(),
+ record[ 0 ].getClass().getName());
+ MMSRecord mmsRecord = ( MMSRecord ) record[ 0 ];
+
+ assertEquals(0, mmsRecord.getAddMenuCount());
+ assertEquals(0, mmsRecord.getDelMenuCount());
+ assertEquals(6, mmsRecord.getRecordSize());
+ assertEquals(193, mmsRecord.getSid());
+ }
+
+ /**
+ * TEST NAME: Test Special Record Construction <P>
+ * OBJECTIVE: Test that the RecordFactory given the required parameters for
+ * constructing a RKRecord will return a NumberRecord.<P>
+ * SUCCESS: Record factory creates the Number record with the expected values.<P>
+ * FAILURE: The wrong records are created or contain the wrong values <P>
+ *
+ */
+
+ public void testSpecial()
+ throws Exception
+ {
+ short recType = RKRecord.sid;
+ byte[] data = new byte[]
+ {
+ 0, 0, 0, 0, 21, 0, 0, 0, 0, 0
+ };
+ short size = 10;
+ Record[] record = RecordFactory.createRecord(recType, size, data);
+
+ assertEquals(NumberRecord.class.getName(),
+ record[ 0 ].getClass().getName());
+ NumberRecord numberRecord = ( NumberRecord ) record[ 0 ];
+
+ assertEquals(0, numberRecord.getColumn());
+ assertEquals(18, numberRecord.getRecordSize());
+ assertEquals(0, numberRecord.getRow());
+ assertEquals(515, numberRecord.getSid());
+ assertEquals(0.0, numberRecord.getValue(), 0.001);
+ assertEquals(21, numberRecord.getXFIndex());
+ }
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.hssf.record.TestRecordFactory");
+ junit.textui.TestRunner.run(TestRecordFactory.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java
new file mode 100644
index 0000000000..56e6fec764
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java
@@ -0,0 +1,574 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.record;
+
+import org.apache.poi.util.*;
+
+import junit.framework.*;
+
+import java.io.*;
+
+import java.util.*;
+
+/**
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestSSTRecord
+ extends TestCase
+{
+ private String _test_file_path;
+ private static final String _test_file_path_property =
+ "HSSF.testdata.path";
+
+ /**
+ * Creates new TestSSTRecord
+ *
+ * @param name
+ */
+
+ public TestSSTRecord(String name)
+ {
+ super(name);
+ _test_file_path = System.getProperty(_test_file_path_property);
+ }
+
+ /**
+ * test processContinueRecord
+ *
+ * @exception IOException
+ */
+
+ public void testProcessContinueRecord()
+ throws IOException
+ {
+ byte[] testdata = readTestData("BigSSTRecord");
+ byte[] input = new byte[ testdata.length - 4 ];
+
+ System.arraycopy(testdata, 4, input, 0, input.length);
+ SSTRecord record =
+ new SSTRecord(LittleEndian.getShort(testdata, 0),
+ LittleEndian.getShort(testdata, 2), input);
+ byte[] continueRecord = readTestData("BigSSTRecordCR");
+
+ input = new byte[ continueRecord.length - 4 ];
+ System.arraycopy(continueRecord, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ assertEquals(1464, record.getNumStrings());
+ assertEquals(688, record.getNumUniqueStrings());
+ assertEquals(688, record.countStrings());
+ byte[] ser_output = record.serialize();
+ int offset = 0;
+ short type = LittleEndian.getShort(ser_output, offset);
+
+ offset += LittleEndianConsts.SHORT_SIZE;
+ short length = LittleEndian.getShort(ser_output, offset);
+
+ offset += LittleEndianConsts.SHORT_SIZE;
+ byte[] recordData = new byte[ length ];
+
+ System.arraycopy(ser_output, offset, recordData, 0, length);
+ offset += length;
+ SSTRecord testRecord = new SSTRecord(type, length, recordData);
+
+ assertEquals(ContinueRecord.sid,
+ LittleEndian.getShort(ser_output, offset));
+ offset += LittleEndianConsts.SHORT_SIZE;
+ length = LittleEndian.getShort(ser_output, offset);
+ offset += LittleEndianConsts.SHORT_SIZE;
+ byte[] cr = new byte[ length ];
+
+ System.arraycopy(ser_output, offset, cr, 0, length);
+ offset += length;
+ assertEquals(offset, ser_output.length);
+ testRecord.processContinueRecord(cr);
+ assertEquals(record, testRecord);
+
+ // testing based on new bug report
+ testdata = readTestData("BigSSTRecord2");
+ input = new byte[ testdata.length - 4 ];
+ System.arraycopy(testdata, 4, input, 0, input.length);
+ record = new SSTRecord(LittleEndian.getShort(testdata, 0),
+ LittleEndian.getShort(testdata, 2), input);
+ byte[] continueRecord1 = readTestData("BigSSTRecord2CR1");
+
+ input = new byte[ continueRecord1.length - 4 ];
+ System.arraycopy(continueRecord1, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord2 = readTestData("BigSSTRecord2CR2");
+
+ input = new byte[ continueRecord2.length - 4 ];
+ System.arraycopy(continueRecord2, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord3 = readTestData("BigSSTRecord2CR3");
+
+ input = new byte[ continueRecord3.length - 4 ];
+ System.arraycopy(continueRecord3, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord4 = readTestData("BigSSTRecord2CR4");
+
+ input = new byte[ continueRecord4.length - 4 ];
+ System.arraycopy(continueRecord4, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord5 = readTestData("BigSSTRecord2CR5");
+
+ input = new byte[ continueRecord5.length - 4 ];
+ System.arraycopy(continueRecord5, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord6 = readTestData("BigSSTRecord2CR6");
+
+ input = new byte[ continueRecord6.length - 4 ];
+ System.arraycopy(continueRecord6, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ byte[] continueRecord7 = readTestData("BigSSTRecord2CR7");
+
+ input = new byte[ continueRecord7.length - 4 ];
+ System.arraycopy(continueRecord7, 4, input, 0, input.length);
+ record.processContinueRecord(input);
+ assertEquals(158642, record.getNumStrings());
+ assertEquals(5249, record.getNumUniqueStrings());
+ assertEquals(5249, record.countStrings());
+ ser_output = record.serialize();
+ offset = 0;
+ type = LittleEndian.getShort(ser_output, offset);
+ offset += LittleEndianConsts.SHORT_SIZE;
+ length = LittleEndian.getShort(ser_output, offset);
+ offset += LittleEndianConsts.SHORT_SIZE;
+ recordData = new byte[ length ];
+ System.arraycopy(ser_output, offset, recordData, 0, length);
+ offset += length;
+ testRecord = new SSTRecord(type, length, recordData);
+ for (int count = 0; count < 7; count++)
+ {
+ assertEquals(ContinueRecord.sid,
+ LittleEndian.getShort(ser_output, offset));
+ offset += LittleEndianConsts.SHORT_SIZE;
+ length = LittleEndian.getShort(ser_output, offset);
+ offset += LittleEndianConsts.SHORT_SIZE;
+ cr = new byte[ length ];
+ System.arraycopy(ser_output, offset, cr, 0, length);
+ testRecord.processContinueRecord(cr);
+ offset += length;
+ }
+ assertEquals(offset, ser_output.length);
+ assertEquals(record, testRecord);
+ }
+
+ /**
+ * Test capability of handling mondo big strings
+ *
+ * @exception IOException
+ */
+
+ public void testHugeStrings()
+ throws IOException
+ {
+ SSTRecord record = new SSTRecord();
+ byte[][] bstrings =
+ {
+ new byte[ 9000 ], new byte[ 7433 ], new byte[ 9002 ],
+ new byte[ 16998 ]
+ };
+ String[] strings = new String[ bstrings.length ];
+ int total_length = 0;
+
+ for (int k = 0; k < bstrings.length; k++)
+ {
+ Arrays.fill(bstrings[ k ], ( byte ) ('a' + k));
+ strings[ k ] = new String(bstrings[ k ]);
+ record.addString(strings[ k ]);
+ total_length += 3 + bstrings[ k ].length;
+ }
+
+ // add overhead of SST record
+ total_length += 8;
+
+ // add overhead of broken strings
+ total_length += 4;
+
+ // add overhead of six records
+ total_length += (6 * 4);
+ byte[] content = new byte[ record.getRecordSize() ];
+
+ record.serialize(0, content);
+ assertEquals(total_length, content.length);
+ for (int index = 0; index != content.length; )
+ {
+ short record_type = LittleEndian.getShort(content, index);
+
+ index += LittleEndianConsts.SHORT_SIZE;
+ short record_length = LittleEndian.getShort(content, index);
+
+ index += LittleEndianConsts.SHORT_SIZE;
+ byte[] data = new byte[ record_length ];
+
+ System.arraycopy(content, index, data, 0, record_length);
+ index += record_length;
+ if (record_type == SSTRecord.sid)
+ {
+ record = new SSTRecord(record_type, record_length, data);
+ }
+ else
+ {
+ record.processContinueRecord(data);
+ }
+ }
+ assertEquals(strings.length, record.getNumStrings());
+ assertEquals(strings.length, record.getNumUniqueStrings());
+ assertEquals(strings.length, record.countStrings());
+ for (int k = 0; k < strings.length; k++)
+ {
+ assertEquals(strings[ k ], record.getString(k));
+ }
+ record = new SSTRecord();
+ bstrings[ 1 ] = new byte[ bstrings[ 1 ].length - 1 ];
+ for (int k = 0; k < bstrings.length; k++)
+ {
+ if ((bstrings[ k ].length % 2) == 1)
+ {
+ Arrays.fill(bstrings[ k ], ( byte ) ('a' + k));
+ strings[ k ] = new String(bstrings[ k ]);
+ }
+ else
+ {
+ char[] data = new char[ bstrings[ k ].length / 2 ];
+
+ Arrays.fill(data, ( char ) ('\u2122' + k));
+ strings[ k ] = new String(data);
+ }
+ record.addString(strings[ k ]);
+ }
+ content = new byte[ record.getRecordSize() ];
+ record.serialize(0, content);
+ total_length--;
+ assertEquals(total_length, content.length);
+ for (int index = 0; index != content.length; )
+ {
+ short record_type = LittleEndian.getShort(content, index);
+
+ index += LittleEndianConsts.SHORT_SIZE;
+ short record_length = LittleEndian.getShort(content, index);
+
+ index += LittleEndianConsts.SHORT_SIZE;
+ byte[] data = new byte[ record_length ];
+
+ System.arraycopy(content, index, data, 0, record_length);
+ index += record_length;
+ if (record_type == SSTRecord.sid)
+ {
+ record = new SSTRecord(record_type, record_length, data);
+ }
+ else
+ {
+ record.processContinueRecord(data);
+ }
+ }
+ assertEquals(strings.length, record.getNumStrings());
+ assertEquals(strings.length, record.getNumUniqueStrings());
+ assertEquals(strings.length, record.countStrings());
+ for (int k = 0; k < strings.length; k++)
+ {
+ assertEquals(strings[ k ], record.getString(k));
+ }
+ }
+
+ /**
+ * test SSTRecord boundary conditions
+ *
+ * @exception IOException
+ */
+
+ public void testSSTRecordBug()
+ throws IOException
+ {
+
+ // create an SSTRecord and write a certain pattern of strings
+ // to it ... then serialize it and verify the content
+ SSTRecord record = new SSTRecord();
+
+ // the record will start with two integers, then this string
+ // ... that will eat up 16 of the 8224 bytes that the record
+ // can hold
+ record.addString("Hello");
+
+ // now we have an additional 8208 bytes, which is an exact
+ // multiple of 16 bytes
+ long testvalue = 1000000000000L;
+
+ for (int k = 0; k < 2000; k++)
+ {
+ record.addString(String.valueOf(testvalue++));
+ }
+ byte[] content = new byte[ record.getRecordSize() ];
+
+ record.serialize(0, content);
+ assertEquals(( byte ) 13, content[ 4 + 8228 ]);
+ assertEquals(( byte ) 13, content[ 4 + 8228 * 2 ]);
+ assertEquals(( byte ) 13, content[ 4 + 8228 * 3 ]);
+ }
+
+ /**
+ * test simple addString
+ */
+
+ public void testSimpleAddString()
+ {
+ SSTRecord record = new SSTRecord();
+ String s1 = "Hello world";
+
+ // \u2122 is the encoding of the trademark symbol ...
+ String s2 = "Hello world\u2122";
+
+ assertEquals(0, record.addString(s1));
+ assertEquals(s1, record.getString(0));
+ assertEquals(1, record.countStrings());
+ assertEquals(1, record.getNumStrings());
+ assertEquals(1, record.getNumUniqueStrings());
+ assertEquals(0, record.addString(s1));
+ assertEquals(s1, record.getString(0));
+ assertEquals(1, record.countStrings());
+ assertEquals(2, record.getNumStrings());
+ assertEquals(1, record.getNumUniqueStrings());
+ assertEquals(1, record.addString(s2));
+ assertEquals(s2, record.getString(1));
+ assertEquals(2, record.countStrings());
+ assertEquals(3, record.getNumStrings());
+ assertEquals(2, record.getNumUniqueStrings());
+ Iterator iter = record.getStrings();
+
+ while (iter.hasNext())
+ {
+ UnicodeString ucs = ( UnicodeString ) iter.next();
+
+ if (ucs.getString().equals(s1))
+ {
+ assertEquals(( byte ) 0, ucs.getOptionFlags());
+ }
+ else if (ucs.getString().equals(s2))
+ {
+ assertEquals(( byte ) 1, ucs.getOptionFlags());
+ }
+ else
+ {
+ fail("cannot match string: " + ucs.getString());
+ }
+ }
+ }
+
+ /**
+ * test reader constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReaderConstructor()
+ throws IOException
+ {
+ byte[] testdata = readTestData("BigSSTRecord");
+ byte[] input = new byte[ testdata.length - 4 ];
+
+ System.arraycopy(testdata, 4, input, 0, input.length);
+ SSTRecord record = new SSTRecord(LittleEndian.getShort(testdata, 0),
+ LittleEndian.getShort(testdata, 2),
+ input);
+
+ assertEquals(1464, record.getNumStrings());
+ assertEquals(688, record.getNumUniqueStrings());
+ assertEquals(492, record.countStrings());
+ assertEquals(1, record.getExpectedChars());
+ assertEquals("Consolidated B-24J Liberator The Dragon & His Tai",
+ record.getUnfinishedString());
+ assertEquals(52, record.getTotalLength());
+ assertEquals(3, record.getStringDataOffset());
+ assertTrue(!record.isWideChar());
+ }
+
+ /**
+ * test simple constructor
+ */
+
+ public void testSimpleConstructor()
+ {
+ SSTRecord record = new SSTRecord();
+
+ assertEquals(0, record.getNumStrings());
+ assertEquals(0, record.getNumUniqueStrings());
+ assertEquals(0, record.countStrings());
+ assertEquals(0, record.getExpectedChars());
+ assertEquals("", record.getUnfinishedString());
+ assertEquals(0, record.getTotalLength());
+ assertEquals(0, record.getStringDataOffset());
+ assertTrue(!record.isWideChar());
+ byte[] output = record.serialize();
+ byte[] expected =
+ {
+ ( byte ) record.getSid(), ( byte ) (record.getSid() >> 8),
+ ( byte ) 8, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0
+ };
+
+ assertEquals(expected.length, output.length);
+ for (int k = 0; k < expected.length; k++)
+ {
+ assertEquals(String.valueOf(k), expected[ k ], output[ k ]);
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing hssf.record.SSTRecord functionality");
+ junit.textui.TestRunner.run(TestSSTRecord.class);
+ }
+
+ private byte [] readTestData(String filename)
+ throws IOException
+ {
+ File file = new File(_test_file_path
+ + File.separator
+ + filename);
+ FileInputStream stream = new FileInputStream(file);
+ int characterCount = 0;
+ byte b = ( byte ) 0;
+ List bytes = new ArrayList();
+ boolean done = false;
+
+ while (!done)
+ {
+ int count = stream.read();
+
+ switch (count)
+ {
+
+ case '0' :
+ case '1' :
+ case '2' :
+ case '3' :
+ case '4' :
+ case '5' :
+ case '6' :
+ case '7' :
+ case '8' :
+ case '9' :
+ b <<= 4;
+ b += ( byte ) (count - '0');
+ characterCount++;
+ if (characterCount == 2)
+ {
+ bytes.add(new Byte(b));
+ characterCount = 0;
+ b = ( byte ) 0;
+ }
+ break;
+
+ case 'A' :
+ case 'B' :
+ case 'C' :
+ case 'D' :
+ case 'E' :
+ case 'F' :
+ b <<= 4;
+ b += ( byte ) (count + 10 - 'A');
+ characterCount++;
+ if (characterCount == 2)
+ {
+ bytes.add(new Byte(b));
+ characterCount = 0;
+ b = ( byte ) 0;
+ }
+ break;
+
+ case 'a' :
+ case 'b' :
+ case 'c' :
+ case 'd' :
+ case 'e' :
+ case 'f' :
+ b <<= 4;
+ b += ( byte ) (count + 10 - 'a');
+ characterCount++;
+ if (characterCount == 2)
+ {
+ bytes.add(new Byte(b));
+ characterCount = 0;
+ b = ( byte ) 0;
+ }
+ break;
+
+ case -1 :
+ done = true;
+ break;
+
+ default :
+ break;
+ }
+ }
+ stream.close();
+ Byte[] polished = ( Byte [] ) bytes.toArray(new Byte[ 0 ]);
+ byte[] rval = new byte[ polished.length ];
+
+ for (int j = 0; j < polished.length; j++)
+ {
+ rval[ j ] = polished[ j ].byteValue();
+ }
+ return rval;
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java
new file mode 100644
index 0000000000..4dfd84107c
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java
@@ -0,0 +1,209 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+/*
+ * TestCellStyle.java
+ *
+ * Created on December 11, 2001, 5:51 PM
+ */
+package org.apache.poi.hssf.usermodel;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test cell styling functionality
+ *
+ * @author Andrew C. Oliver
+ */
+
+public class TestCellStyle
+ extends TestCase
+{
+
+ /** Creates a new instance of TestCellStyle */
+
+ public TestCellStyle(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * TEST NAME: Test Write Sheet Font <P>
+ * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values and styled with fonts.<P>
+ * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects
+ * Last row, first row is tested against the correct values (99,0).<P>
+ * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good.
+ * HSSFSheet last row or first row is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ */
+
+ public void testWriteSheetFont()
+ throws IOException
+ {
+ File file = File.createTempFile("testWriteSheetFont",
+ ".xls");
+ FileOutputStream out = new FileOutputStream(file);
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = null;
+ HSSFCell c = null;
+ HSSFFont fnt = wb.createFont();
+ HSSFCellStyle cs = wb.createCellStyle();
+
+ fnt.setColor(HSSFFont.COLOR_RED);
+ fnt.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
+ cs.setFont(fnt);
+ for (short rownum = ( short ) 0; rownum < 100; rownum++)
+ {
+ r = s.createRow(rownum);
+
+ // r.setRowNum(( short ) rownum);
+ for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
+ {
+ c = r.createCell(cellnum, HSSFCell.CELL_TYPE_NUMERIC);
+ c.setCellValue(rownum * 10000 + cellnum
+ + ((( double ) rownum / 1000)
+ + (( double ) cellnum / 10000)));
+ c = r.createCell(( short ) (cellnum + 1),
+ HSSFCell.CELL_TYPE_STRING);
+ c.setCellValue("TEST");
+ c.setCellStyle(cs);
+ }
+ }
+ wb.write(out);
+ out.close();
+ assertEquals("FILE LENGTH == 87040", file.length(), 87040);
+ assertEquals("LAST ROW == 99", 99, s.getLastRowNum());
+ assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum());
+
+ // assert((s.getLastRowNum() == 99));
+ }
+
+ /**
+ * TEST NAME: Test Write Sheet Style <P>
+ * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values and styled with colors
+ * and borders.<P>
+ * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects
+ * Last row, first row is tested against the correct values (99,0).<P>
+ * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good.
+ * HSSFSheet last row or first row is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ */
+
+ public void testWriteSheetStyle()
+ throws IOException
+ {
+ File file = File.createTempFile("testWriteSheetStyle",
+ ".xls");
+ FileOutputStream out = new FileOutputStream(file);
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = null;
+ HSSFCell c = null;
+ HSSFFont fnt = wb.createFont();
+ HSSFCellStyle cs = wb.createCellStyle();
+ HSSFCellStyle cs2 = wb.createCellStyle();
+
+ cs.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+ cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);
+ cs.setBorderRight(HSSFCellStyle.BORDER_THIN);
+ cs.setBorderTop(HSSFCellStyle.BORDER_THIN);
+ cs.setFillForegroundColor(( short ) 0xA);
+ cs.setFillPattern(( short ) 1);
+ fnt.setColor(( short ) 0xf);
+ fnt.setItalic(true);
+ cs2.setFillForegroundColor(( short ) 0x0);
+ cs2.setFillPattern(( short ) 1);
+ cs2.setFont(fnt);
+ for (short rownum = ( short ) 0; rownum < 100; rownum++)
+ {
+ r = s.createRow(rownum);
+
+ // r.setRowNum(( short ) rownum);
+ for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
+ {
+ c = r.createCell(cellnum, HSSFCell.CELL_TYPE_NUMERIC);
+ c.setCellValue(rownum * 10000 + cellnum
+ + ((( double ) rownum / 1000)
+ + (( double ) cellnum / 10000)));
+ c.setCellStyle(cs);
+ c = r.createCell(( short ) (cellnum + 1),
+ HSSFCell.CELL_TYPE_STRING);
+ c.setCellValue("TEST");
+ c.setCellStyle(cs2);
+ }
+ }
+ wb.write(out);
+ out.close();
+ assertEquals("FILE LENGTH == 87040", file.length(), 87040);
+ assertEquals("LAST ROW == 99", 99, s.getLastRowNum());
+ assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum());
+
+ // assert((s.getLastRowNum() == 99));
+ }
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.hssf.usermodel.HSSFCellStyle");
+ junit.textui.TestRunner.run(TestCellStyle.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
new file mode 100644
index 0000000000..1528f91bfc
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
@@ -0,0 +1,99 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import junit.framework.TestCase;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * Class TestHSSFDateUtil
+ *
+ *
+ * @author
+ * @version %I%, %G%
+ */
+
+public class TestHSSFDateUtil
+ extends TestCase
+{
+ public TestHSSFDateUtil(String s)
+ {
+ super(s);
+ }
+
+ /**
+ * Checks the date conversion functions in the HSSFDateUtil class.
+ */
+
+ public void testDateConversion()
+ throws Exception
+ {
+
+ // Iteratating over the hours exposes any rounding issues.
+ for (int hour = 0; hour < 23; hour++)
+ {
+ GregorianCalendar date = new GregorianCalendar(2002, 0, 1,
+ hour, 1, 1);
+ double excelDate =
+ HSSFDateUtil.getExcelDate(date.getTime());
+
+ assertEquals("Checking hour = " + hour, date.getTime().getTime(),
+ HSSFDateUtil.getJavaDate(excelDate).getTime());
+ }
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
new file mode 100644
index 0000000000..d41ce73f2d
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
@@ -0,0 +1,170 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.model.Sheet;
+import org.apache.poi.hssf.record.VCenterRecord;
+import org.apache.poi.hssf.record.WSBoolRecord;
+
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+
+/**
+ * Class TestHSSFSheet
+ *
+ *
+ * @author
+ * @version %I%, %G%
+ */
+
+public class TestHSSFSheet
+ extends TestCase
+{
+ public TestHSSFSheet(String s)
+ {
+ super(s);
+ }
+
+ /**
+ * Test the gridset field gets set as expected.
+ */
+
+ public void testBackupRecord()
+ throws Exception
+ {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ Sheet sheet = s.getSheet();
+
+ assertEquals(true, sheet.getGridsetRecord().getGridset());
+ s.setGridsPrinted(true);
+ assertEquals(false, sheet.getGridsetRecord().getGridset());
+ }
+
+ /**
+ * Test vertically centered output.
+ */
+
+ public void testVerticallyCenter()
+ throws Exception
+ {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ Sheet sheet = s.getSheet();
+ VCenterRecord record =
+ ( VCenterRecord ) sheet.findFirstRecordBySid(VCenterRecord.sid);
+
+ assertEquals(false, record.getVCenter());
+ s.setVerticallyCenter(true);
+ assertEquals(true, record.getVCenter());
+
+ // wb.write(new FileOutputStream("c:\\test.xls"));
+ }
+
+ /**
+ * Test WSBboolRecord fields get set in the user model.
+ */
+
+ public void testWSBool()
+ {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ Sheet sheet = s.getSheet();
+ WSBoolRecord record =
+ ( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+
+ // Check defaults
+ assertEquals(true, record.getAlternateExpression());
+ assertEquals(true, record.getAlternateFormula());
+ assertEquals(false, record.getAutobreaks());
+ assertEquals(false, record.getDialog());
+ assertEquals(false, record.getDisplayGuts());
+ assertEquals(true, record.getFitToPage());
+ assertEquals(false, record.getRowSumsBelow());
+ assertEquals(false, record.getRowSumsRight());
+
+ // Alter
+ s.setAlternativeExpression(false);
+ s.setAlternativeFormula(false);
+ s.setAutobreaks(true);
+ s.setDialog(true);
+ s.setDisplayGuts(true);
+ s.setFitToPage(false);
+ s.setRowSumsBelow(true);
+ s.setRowSumsRight(true);
+
+ // Check
+ assertEquals(false, record.getAlternateExpression());
+ assertEquals(false, record.getAlternateFormula());
+ assertEquals(true, record.getAutobreaks());
+ assertEquals(true, record.getDialog());
+ assertEquals(true, record.getDisplayGuts());
+ assertEquals(false, record.getFitToPage());
+ assertEquals(true, record.getRowSumsBelow());
+ assertEquals(true, record.getRowSumsRight());
+ assertEquals(false, s.getAlternateExpression());
+ assertEquals(false, s.getAlternateFormula());
+ assertEquals(true, s.getAutobreaks());
+ assertEquals(true, s.getDialog());
+ assertEquals(true, s.getDisplayGuts());
+ assertEquals(false, s.getFitToPage());
+ assertEquals(true, s.getRowSumsBelow());
+ assertEquals(true, s.getRowSumsRight());
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java
new file mode 100644
index 0000000000..1c53b1c07f
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestReadWriteChart.java
@@ -0,0 +1,116 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import junit.framework.TestCase;
+
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.hssf.model.Sheet;
+import org.apache.poi.hssf.record.Record;
+import org.apache.poi.hssf.record.BOFRecord;
+import org.apache.poi.hssf.record.EOFRecord;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+
+import java.util.List;
+import java.util.Iterator;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * @author Glen Stampoultzis (gstamp at iprimus dot com dot au)
+ */
+
+public class TestReadWriteChart
+ extends TestCase
+{
+ public TestReadWriteChart(String s)
+ {
+ super(s);
+ }
+
+ /**
+ * In the presence of a chart we need to make sure BOF/EOF records still exist.
+ */
+
+ public void testBOFandEOFRecords()
+ throws Exception
+ {
+ String path = System.getProperty("HSSF.testdata.path");
+ String filename = path + "/SimpleChart.xls";
+ POIFSFileSystem fs =
+ new POIFSFileSystem(new FileInputStream(filename));
+ HSSFWorkbook workbook = new HSSFWorkbook(fs);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+ HSSFRow firstRow = sheet.getRow(0);
+ HSSFCell firstCell = firstRow.getCell(( short ) 0);
+
+ assertEquals(new GregorianCalendar(2000, 0, 1, 10, 51, 2).getTime(),
+ HSSFDateUtil
+ .getJavaDate(firstCell.getNumericCellValue()));
+ HSSFRow row = sheet.createRow(( short ) 15);
+ HSSFCell cell = row.createCell(( short ) 1,
+ HSSFCell.CELL_TYPE_NUMERIC);
+
+ cell.setCellValue(22);
+ Sheet newSheet = workbook.getSheetAt(0).getSheet();
+ List records = newSheet.getRecords();
+
+ assertTrue(records.get(0) instanceof BOFRecord);
+ assertTrue(records.get(records.size() - 1) instanceof EOFRecord);
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java
new file mode 100644
index 0000000000..85a7129c9c
--- /dev/null
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java
@@ -0,0 +1,643 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.hssf.usermodel;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.hssf.util.*;
+import org.apache.poi.hssf.model.Workbook;
+import org.apache.poi.hssf.record.BackupRecord;
+import org.apache.poi.hssf.record.LabelSSTRecord;
+import org.apache.poi.hssf.record.Record;
+import org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate;
+
+/**
+ * Class to test Workbook functionality
+ *
+ * @author Andrew C. Oliver
+ */
+
+public class TestWorkbook
+ extends TestCase
+{
+ private static final String LAST_NAME_KEY = "lastName";
+ private static final String FIRST_NAME_KEY = "firstName";
+ private static final String SSN_KEY = "ssn";
+ private static final String REPLACE_ME = "replaceMe";
+ private static final String REPLACED = "replaced";
+ private static final String DO_NOT_REPLACE = "doNotReplace";
+ private static final String EMPLOYEE_INFORMATION = "Employee Info";
+ private static final String LAST_NAME_VALUE = "Bush";
+ private static final String FIRST_NAME_VALUE = "George";
+ private static final String SSN_VALUE = "555555555";
+
+ /**
+ * Constructor TestWorkbook
+ *
+ * @param name
+ */
+
+ public TestWorkbook(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * TEST NAME: Test Write Sheet Simple <P>
+ * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values.<P>
+ * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects
+ * Last row, first row is tested against the correct values (99,0).<P>
+ * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good.
+ * HSSFSheet last row or first row is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ */
+
+ public void testWriteSheetSimple()
+ throws IOException
+ {
+ File file = File.createTempFile("testWriteSheetSimple",
+ ".xls");
+ FileOutputStream out = new FileOutputStream(file);
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = null;
+ HSSFCell c = null;
+
+ for (short rownum = ( short ) 0; rownum < 100; rownum++)
+ {
+ r = s.createRow(rownum);
+
+ // r.setRowNum(( short ) rownum);
+ for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
+ {
+ c = r.createCell(cellnum);
+ c.setCellValue(rownum * 10000 + cellnum
+ + ((( double ) rownum / 1000)
+ + (( double ) cellnum / 10000)));
+ c = r.createCell(( short ) (cellnum + 1));
+ c.setCellValue("TEST");
+ }
+ }
+ wb.write(out);
+ out.close();
+ assertEquals("FILE LENGTH == 87040", 87040,
+ file.length()); // changed because of new sheet behavior
+ assertEquals("LAST ROW == 99", 99, s.getLastRowNum());
+ assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum());
+
+ // assert((s.getLastRowNum() == 99));
+ }
+
+ /**
+ * TEST NAME: Test Write/Modify Sheet Simple <P>
+ * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values,
+ * remove some rows, yet still have a valid file/data.<P>
+ * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects
+ * Last row, first row is tested against the correct values (74,25).<P>
+ * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good.
+ * HSSFSheet last row or first row is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ */
+
+ public void testWriteModifySheetSimple()
+ throws IOException
+ {
+ File file = File.createTempFile("testWriteSheetSimple",
+ ".xls");
+ FileOutputStream out = new FileOutputStream(file);
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = null;
+ HSSFCell c = null;
+
+ for (short rownum = ( short ) 0; rownum < 100; rownum++)
+ {
+ r = s.createRow(rownum);
+
+ // r.setRowNum(( short ) rownum);
+ for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
+ {
+ c = r.createCell(cellnum);
+ c.setCellValue(rownum * 10000 + cellnum
+ + ((( double ) rownum / 1000)
+ + (( double ) cellnum / 10000)));
+ c = r.createCell(( short ) (cellnum + 1));
+ c.setCellValue("TEST");
+ }
+ }
+ for (short rownum = ( short ) 0; rownum < 25; rownum++)
+ {
+ r = s.getRow(rownum);
+ s.removeRow(r);
+ }
+ for (short rownum = ( short ) 75; rownum < 100; rownum++)
+ {
+ r = s.getRow(rownum);
+ s.removeRow(r);
+ }
+ wb.write(out);
+ out.close();
+
+ // System.out.println(file.length());
+ // assertEquals("FILE LENGTH == 87552",file.length(), 87552);
+ // System.out.println(s.getLastRowNum());
+ assertEquals("FILE LENGTH == 45568", 45568,
+ file.length()); // changed due to new sheet behavior (<3)
+ assertEquals("LAST ROW == 74", 74, s.getLastRowNum());
+ assertEquals("FIRST ROW == 25", 25, s.getFirstRowNum());
+ }
+
+ /**
+ * TEST NAME: Test Read Simple <P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet (Simple.xls).<P>
+ * SUCCESS: HSSF reads the sheet. Matches values in their particular positions.<P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF cannot identify values
+ * in the sheet in their known positions.<P>
+ *
+ * @author Greg Merrill
+ * @author Andrew C. Oliver
+ */
+
+ public void testReadSimple()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/Simple.xls";
+ FileInputStream stream = new FileInputStream(filename);
+ POIFSFileSystem fs = new POIFSFileSystem(stream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fs);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+
+ assertEquals(REPLACE_ME,
+ sheet.getRow(( short ) 0).getCell(( short ) 0)
+ .getStringCellValue());
+ stream.close();
+ }
+
+ /**
+ * TEST NAME: Test Read Employee Simple <P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet (Employee.xls).<P>
+ * SUCCESS: HSSF reads the sheet. Matches values in their particular positions.<P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF cannot identify values
+ * in the sheet in their known positions.<P>
+ *
+ * @author Greg Merrill
+ * @author Andrew C. Oliver
+ */
+
+ public void testReadEmployeeSimple()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/Employee.xls";
+ FileInputStream stream = new FileInputStream(filename);
+ POIFSFileSystem fs = new POIFSFileSystem(stream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fs);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+
+ assertEquals(EMPLOYEE_INFORMATION,
+ sheet.getRow(1).getCell(( short ) 1)
+ .getStringCellValue());
+ assertEquals(LAST_NAME_KEY,
+ sheet.getRow(3).getCell(( short ) 2)
+ .getStringCellValue());
+ assertEquals(FIRST_NAME_KEY,
+ sheet.getRow(4).getCell(( short ) 2)
+ .getStringCellValue());
+ assertEquals(SSN_KEY,
+ sheet.getRow(5).getCell(( short ) 2)
+ .getStringCellValue());
+ stream.close();
+ }
+
+ /**
+ * TEST NAME: Test Modify Sheet Simple <P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet with a string value and replace
+ * it with another string value.<P>
+ * SUCCESS: HSSF reads a sheet. HSSF replaces the cell value with another cell value. HSSF
+ * writes the sheet out to another file. HSSF reads the result and ensures the value
+ * has been properly replaced. <P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts.
+ * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value
+ * is incorrect or has not been replaced. <P>
+ *
+ * @author Andrew C. Oliver
+ * @author Greg Merrill
+ */
+
+ public void testModifySimple()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/Simple.xls";
+ FileInputStream instream = new FileInputStream(filename);
+ POIFSFileSystem fsin = new POIFSFileSystem(instream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fsin);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+ HSSFCell cell =
+ sheet.getRow(( short ) 0).getCell(( short ) 0);
+
+ cell.setCellValue(REPLACED);
+ File destination = File.createTempFile("SimpleResult",
+ ".xls");
+ FileOutputStream outstream = new FileOutputStream(destination);
+
+ workbook.write(outstream);
+ instream.close();
+ outstream.close();
+ instream = new FileInputStream(destination);
+ workbook = new HSSFWorkbook(new POIFSFileSystem(instream));
+ sheet = workbook.getSheetAt(0);
+ cell = sheet.getRow(( short ) 0).getCell(( short ) 0);
+ assertEquals(REPLACED, cell.getStringCellValue());
+ instream.close();
+ }
+
+ /**
+ * TEST NAME: Test Modify Sheet Simple With Skipped cells<P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace
+ * them with other string values while not replacing other cells.<P>
+ * SUCCESS: HSSF reads a sheet. HSSF replaces the cell value with another cell value. HSSF
+ * writes the sheet out to another file. HSSF reads the result and ensures the value
+ * has been properly replaced and unreplaced values are still unreplaced. <P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts.
+ * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value
+ * is incorrect or has not been replaced or the incorrect cell has its value replaced
+ * or is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ * @author Greg Merrill
+ */
+
+ public void testModifySimpleWithSkip()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/SimpleWithSkip.xls";
+ FileInputStream instream = new FileInputStream(filename);
+ POIFSFileSystem fsin = new POIFSFileSystem(instream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fsin);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+ HSSFCell cell =
+ sheet.getRow(( short ) 0).getCell(( short ) 1);
+
+ cell.setCellValue(REPLACED);
+ cell = sheet.getRow(( short ) 1).getCell(( short ) 0);
+ cell.setCellValue(REPLACED);
+ File destination =
+ File.createTempFile("SimpleWithSkipResult", ".xls");
+ FileOutputStream outstream = new FileOutputStream(destination);
+
+ workbook.write(outstream);
+ instream.close();
+ outstream.close();
+ instream = new FileInputStream(destination);
+ workbook = new HSSFWorkbook(new POIFSFileSystem(instream));
+ sheet = workbook.getSheetAt(0);
+ cell = sheet.getRow(( short ) 0).getCell(( short ) 1);
+ assertEquals(REPLACED, cell.getStringCellValue());
+ cell = sheet.getRow(( short ) 0).getCell(( short ) 0);
+ assertEquals(DO_NOT_REPLACE, cell.getStringCellValue());
+ cell = sheet.getRow(( short ) 1).getCell(( short ) 0);
+ assertEquals(REPLACED, cell.getStringCellValue());
+ cell = sheet.getRow(( short ) 1).getCell(( short ) 1);
+ assertEquals(DO_NOT_REPLACE, cell.getStringCellValue());
+ instream.close();
+ }
+
+ /**
+ * TEST NAME: Test Modify Sheet With Styling<P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace
+ * them with other string values despite any styling. In this release of HSSF styling will
+ * probably be lost and is NOT tested.<P>
+ * SUCCESS: HSSF reads a sheet. HSSF replaces the cell values with other cell values. HSSF
+ * writes the sheet out to another file. HSSF reads the result and ensures the value
+ * has been properly replaced. <P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts.
+ * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value
+ * is incorrect or has not been replaced. <P>
+ *
+ * @author Andrew C. Oliver
+ * @author Greg Merrill
+ */
+
+ public void testModifySimpleWithStyling()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/SimpleWithStyling.xls";
+ FileInputStream instream = new FileInputStream(filename);
+ POIFSFileSystem fsin = new POIFSFileSystem(instream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fsin);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+
+ for (int k = 0; k < 4; k++)
+ {
+ HSSFCell cell = sheet.getRow(( short ) k).getCell(( short ) 0);
+
+ cell.setCellValue(REPLACED);
+ }
+ File destination =
+ File.createTempFile("SimpleWithStylingResult", ".xls");
+ FileOutputStream outstream = new FileOutputStream(destination);
+
+ workbook.write(outstream);
+ instream.close();
+ outstream.close();
+ instream = new FileInputStream(destination);
+ workbook = new HSSFWorkbook(new POIFSFileSystem(instream));
+ sheet = workbook.getSheetAt(0);
+ for (int k = 0; k < 4; k++)
+ {
+ HSSFCell cell = sheet.getRow(( short ) k).getCell(( short ) 0);
+
+ assertEquals(REPLACED, cell.getStringCellValue());
+ }
+ instream.close();
+ }
+
+ /**
+ * TEST NAME: Test Modify Employee Sheet<P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet with string values and replace
+ * them with other string values despite any styling. In this release of HSSF styling will
+ * probably be lost and is NOT tested.<P>
+ * SUCCESS: HSSF reads a sheet. HSSF replaces the cell values with other cell values. HSSF
+ * writes the sheet out to another file. HSSF reads the result and ensures the value
+ * has been properly replaced. <P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF does not write the sheet or excepts.
+ * HSSF does not re-read the sheet or excepts. Upon re-reading the sheet the value
+ * is incorrect or has not been replaced. <P>
+ *
+ * @author Andrew C. Oliver
+ * @author Greg Merrill
+ */
+
+ public void testModifyEmployee()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/Employee.xls";
+ FileInputStream instream = new FileInputStream(filename);
+ POIFSFileSystem fsin = new POIFSFileSystem(instream);
+ HSSFWorkbook workbook = new HSSFWorkbook(fsin);
+ HSSFSheet sheet = workbook.getSheetAt(0);
+ HSSFCell cell =
+ sheet.getRow(( short ) 3).getCell(( short ) 2);
+
+ cell.setCellValue(LAST_NAME_VALUE);
+ cell = sheet.getRow(( short ) 4).getCell(( short ) 2);
+ cell.setCellValue(FIRST_NAME_VALUE);
+ cell = sheet.getRow(( short ) 5).getCell(( short ) 2);
+ cell.setCellValue(SSN_VALUE);
+ File destination = File.createTempFile("EmployeeResult",
+ ".xls");
+ FileOutputStream outstream = new FileOutputStream(destination);
+
+ workbook.write(outstream);
+ instream.close();
+ outstream.close();
+ instream = new FileInputStream(destination);
+ workbook = new HSSFWorkbook(new POIFSFileSystem(instream));
+ sheet = workbook.getSheetAt(0);
+ assertEquals(EMPLOYEE_INFORMATION,
+ sheet.getRow(1).getCell(( short ) 1)
+ .getStringCellValue());
+ assertEquals(LAST_NAME_VALUE,
+ sheet.getRow(3).getCell(( short ) 2)
+ .getStringCellValue());
+ assertEquals(FIRST_NAME_VALUE,
+ sheet.getRow(4).getCell(( short ) 2)
+ .getStringCellValue());
+ assertEquals(SSN_VALUE,
+ sheet.getRow(5).getCell(( short ) 2)
+ .getStringCellValue());
+ instream.close();
+ }
+
+ /**
+ * TEST NAME: Test Read Sheet with an RK number<P>
+ * OBJECTIVE: Test that HSSF can read a simple spreadsheet with and RKRecord and correctly
+ * identify the cell as numeric and convert it to a NumberRecord. <P>
+ * SUCCESS: HSSF reads a sheet. HSSF returns that the cell is a numeric type cell. <P>
+ * FAILURE: HSSF does not read a sheet or excepts. HSSF incorrectly indentifies the cell<P>
+ *
+ * @author Siggi Cherem
+ * @author Andrew C. Oliver (acoliver at apache dot org)
+ */
+
+ public void testReadSheetWithRK()
+ throws IOException
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ filename = filename + "/rk.xls";
+
+ // a.xls has a value on position (0,0)
+ FileInputStream in = new FileInputStream(filename);
+ POIFSFileSystem fs = new POIFSFileSystem(in);
+ HSSFWorkbook h = new HSSFWorkbook(fs);
+ HSSFSheet s = h.getSheetAt(0);
+ HSSFRow r = s.getRow(0);
+ HSSFCell c = r.getCell(( short ) 0);
+ int a = c.getCellType();
+
+ assertEquals(a, c.CELL_TYPE_NUMERIC);
+ }
+
+ /**
+ * TEST NAME: Test Write/Modify Sheet Simple <P>
+ * OBJECTIVE: Test that HSSF can create a simple spreadsheet with numeric and string values,
+ * remove some rows, yet still have a valid file/data.<P>
+ * SUCCESS: HSSF creates a sheet. Filesize matches a known good. HSSFSheet objects
+ * Last row, first row is tested against the correct values (74,25).<P>
+ * FAILURE: HSSF does not create a sheet or excepts. Filesize does not match the known good.
+ * HSSFSheet last row or first row is incorrect. <P>
+ *
+ * @author Andrew C. Oliver
+ */
+
+ public void testWriteModifySheetMerged()
+ throws IOException
+ {
+ File file = File.createTempFile("testWriteSheetMerged",
+ ".xls");
+ FileOutputStream out = new FileOutputStream(file);
+ FileInputStream in = null;
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ HSSFRow r = null;
+ HSSFCell c = null;
+
+ for (short rownum = ( short ) 0; rownum < 100; rownum++)
+ {
+ r = s.createRow(rownum);
+
+ // r.setRowNum(( short ) rownum);
+ for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
+ {
+ c = r.createCell(cellnum);
+ c.setCellValue(rownum * 10000 + cellnum
+ + ((( double ) rownum / 1000)
+ + (( double ) cellnum / 10000)));
+ c = r.createCell(( short ) (cellnum + 1));
+ c.setCellValue("TEST");
+ }
+ }
+ s.addMergedRegion(new Region(( short ) 0, ( short ) 0, ( short ) 10,
+ ( short ) 10));
+ s.addMergedRegion(new Region(( short ) 30, ( short ) 5, ( short ) 40,
+ ( short ) 15));
+ wb.write(out);
+ out.close();
+ in = new FileInputStream(file);
+ wb = new HSSFWorkbook(new POIFSFileSystem(in));
+ s = wb.getSheetAt(0);
+ Region r1 = s.getMergedRegionAt(0);
+ Region r2 = s.getMergedRegionAt(1);
+
+ in.close();
+
+ // System.out.println(file.length());
+ // assertEquals("FILE LENGTH == 87552",file.length(), 87552);
+ // System.out.println(s.getLastRowNum());
+ assertEquals("REGION1 = 0,0,10,10", 0,
+ new Region(( short ) 0, ( short ) 0, ( short ) 10,
+ ( short ) 10).compareTo(r1));
+ assertEquals("REGION2 == 30,5,40,15", 0,
+ new Region(( short ) 30, ( short ) 5, ( short ) 40,
+ ( short ) 15).compareTo(r2));
+ }
+
+ /**
+ * Test the backup field gets set as expected.
+ */
+
+ public void testBackupRecord()
+ throws Exception
+ {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet s = wb.createSheet();
+ Workbook workbook = wb.getWorkbook();
+ BackupRecord record = workbook.getBackupRecord();
+
+ assertEquals(0, record.getBackup());
+ wb.setBackupFlag(true);
+ assertEquals(1, record.getBackup());
+ }
+
+ /**
+ * This tests is for bug [ #506658 ] Repeating output.
+ *
+ * We need to make sure only one LabelSSTRecord is produced.
+ */
+
+ public void testRepeatingBug()
+ throws Exception
+ {
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ HSSFSheet sheet = workbook.createSheet("Design Variants");
+ HSSFRow row = sheet.createRow(( short ) 2);
+ HSSFCell cell = row.createCell(( short ) 1);
+
+ cell.setCellValue("Class");
+ cell = row.createCell(( short ) 2);
+
+ // workbook.write(new FileOutputStream("/a2.xls"));
+ ValueRecordsAggregate valueAggregate =
+ ( ValueRecordsAggregate ) sheet.getSheet()
+ .findFirstRecordBySid(ValueRecordsAggregate.sid);
+ int sstRecords = 0;
+ Iterator iterator = valueAggregate.getIterator();
+
+ while (iterator.hasNext())
+ {
+ if ((( Record ) iterator.next()).getSid() == LabelSSTRecord.sid)
+ {
+ sstRecords++;
+ }
+ }
+ assertEquals(1, sstRecords);
+ }
+
+ public static void main(String [] ignored_args)
+ {
+ String filename = System.getProperty("HSSF.testdata.path");
+
+ // assume andy is running this in the debugger
+ if (filename == null)
+ {
+ System.setProperty(
+ "HSSF.testdata.path",
+ "/home/andy/npoi3/poi/production/testcases/net/sourceforge/poi/hssf/data");
+ }
+ System.out
+ .println("Testing org.apache.poi.hssf.usermodel.HSSFWorkbook");
+ junit.textui.TestRunner.run(TestWorkbook.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java b/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java
new file mode 100644
index 0000000000..9a5899456e
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/eventfilesystem/Listener.java
@@ -0,0 +1,80 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.eventfilesystem;
+
+/**
+ * Class Listener
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @version %I%, %G%
+ */
+
+class Listener
+ implements POIFSReaderListener
+{
+
+ /**
+ * Process a POIFSReaderEvent that this listener had registered
+ * for
+ *
+ * @param event the POIFSReaderEvent
+ */
+
+ public void processPOIFSReaderEvent(POIFSReaderEvent event)
+ {
+ }
+} // end class Listener
+
diff --git a/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java b/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java
new file mode 100644
index 0000000000..ea67a5d327
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/eventfilesystem/TestPOIFSReaderRegistry.java
@@ -0,0 +1,224 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.eventfilesystem;
+
+import junit.framework.*;
+
+import java.util.*;
+
+import org.apache.poi.poifs.filesystem.POIFSDocumentPath;
+
+/**
+ * Class to test POIFSReaderRegistry functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestPOIFSReaderRegistry
+ extends TestCase
+{
+ private POIFSReaderListener[] listeners =
+ {
+ new Listener(), new Listener(), new Listener(), new Listener()
+ };
+ private POIFSDocumentPath[] paths =
+ {
+ new POIFSDocumentPath(), new POIFSDocumentPath(new String[]
+ {
+ "a"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "b"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "c"
+ })
+ };
+ private String[] names =
+ {
+ "a0", "a1", "a2", "a3"
+ };
+
+ /**
+ * Constructor TestPOIFSReaderRegistry
+ *
+ * @param name
+ */
+
+ public TestPOIFSReaderRegistry(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test empty registry
+ */
+
+ public void testEmptyRegistry()
+ {
+ POIFSReaderRegistry registry = new POIFSReaderRegistry();
+
+ for (int j = 0; j < paths.length; j++)
+ {
+ for (int k = 0; k < names.length; k++)
+ {
+ Iterator listeners = registry.getListeners(paths[ j ],
+ names[ k ]);
+
+ assertTrue(!listeners.hasNext());
+ }
+ }
+ }
+
+ /**
+ * Test mixed registration operations
+ */
+
+ public void testMixedRegistrationOperations()
+ {
+ POIFSReaderRegistry registry = new POIFSReaderRegistry();
+
+ for (int j = 0; j < listeners.length; j++)
+ {
+ for (int k = 0; k < paths.length; k++)
+ {
+ for (int n = 0; n < names.length; n++)
+ {
+ if ((j != k) && (k != n))
+ {
+ registry.registerListener(listeners[ j ], paths[ k ],
+ names[ n ]);
+ }
+ }
+ }
+ }
+ for (int k = 0; k < paths.length; k++)
+ {
+ for (int n = 0; n < names.length; n++)
+ {
+ Iterator listeners = registry.getListeners(paths[ k ],
+ names[ n ]);
+
+ if (k == n)
+ {
+ assertTrue(!listeners.hasNext());
+ }
+ else
+ {
+ Set registeredListeners = new HashSet();
+
+ while (listeners.hasNext())
+ {
+ registeredListeners.add(listeners.next());
+ }
+ assertEquals(this.listeners.length - 1,
+ registeredListeners.size());
+ for (int j = 0; j < this.listeners.length; j++)
+ {
+ if (j == k)
+ {
+ assertTrue(!registeredListeners
+ .contains(this.listeners[ j ]));
+ }
+ else
+ {
+ assertTrue(registeredListeners
+ .contains(this.listeners[ j ]));
+ }
+ }
+ }
+ }
+ }
+ for (int j = 0; j < listeners.length; j++)
+ {
+ registry.registerListener(listeners[ j ]);
+ }
+ for (int k = 0; k < paths.length; k++)
+ {
+ for (int n = 0; n < names.length; n++)
+ {
+ Iterator listeners =
+ registry.getListeners(paths[ k ], names[ n ]);
+ Set registeredListeners = new HashSet();
+
+ while (listeners.hasNext())
+ {
+ registeredListeners.add(listeners.next());
+ }
+ assertEquals(this.listeners.length,
+ registeredListeners.size());
+ for (int j = 0; j < this.listeners.length; j++)
+ {
+ assertTrue(registeredListeners
+ .contains(this.listeners[ j ]));
+ }
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.eventfilesystem.POIFSReaderRegistry");
+ junit.textui.TestRunner.run(TestPOIFSReaderRegistry.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java b/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java
new file mode 100644
index 0000000000..0ed493d64f
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/ReaderWriter.java
@@ -0,0 +1,224 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.util.*;
+
+import java.io.*;
+
+import org.apache.poi.poifs.eventfilesystem.POIFSReader;
+import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent;
+import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener;
+
+/**
+ * Test (Proof of concept) program that employs the
+ * POIFSReaderListener and POIFSWriterListener interfaces
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class ReaderWriter
+ implements POIFSReaderListener, POIFSWriterListener
+{
+ private POIFSFileSystem filesystem;
+ private DirectoryEntry root;
+
+ // keys are DocumentDescriptors, values are byte[]s
+ private Map dataMap;
+
+ /**
+ * Constructor ReaderWriter
+ *
+ *
+ * @param filesystem
+ *
+ */
+
+ ReaderWriter(final POIFSFileSystem filesystem)
+ {
+ this.filesystem = filesystem;
+ root = this.filesystem.getRoot();
+ dataMap = new HashMap();
+ }
+
+ /**
+ * Method main
+ *
+ *
+ * @param args
+ *
+ * @exception IOException
+ *
+ */
+
+ public static void main(String [] args)
+ throws IOException
+ {
+ if (args.length != 2)
+ {
+ System.err.println(
+ "two arguments required: one input file name and one output file name");
+ }
+ else
+ {
+ POIFSReader reader = new POIFSReader();
+ POIFSFileSystem filesystem = new POIFSFileSystem();
+
+ reader.registerListener(new ReaderWriter(filesystem));
+ FileInputStream istream = new FileInputStream(args[ 0 ]);
+
+ reader.read(istream);
+ istream.close();
+ FileOutputStream ostream = new FileOutputStream(args[ 1 ]);
+
+ filesystem.writeFilesystem(ostream);
+ ostream.close();
+ }
+ }
+
+ /* ********** START implementation of POIFSReaderListener ********** */
+
+ /**
+ * Process a POIFSReaderEvent that this listener had registered
+ * for
+ *
+ * @param event the POIFSReaderEvent
+ */
+
+ public void processPOIFSReaderEvent(final POIFSReaderEvent event)
+ {
+ DocumentInputStream istream = event.getStream();
+ POIFSDocumentPath path = event.getPath();
+ String name = event.getName();
+
+ try
+ {
+ int size = istream.available();
+ byte[] data = new byte[ istream.available() ];
+
+ istream.read(data);
+ DocumentDescriptor descriptor = new DocumentDescriptor(path,
+ name);
+
+ System.out.println("adding document: " + descriptor + " (" + size
+ + " bytes)");
+ dataMap.put(descriptor, data);
+ int pathLength = path.length();
+ DirectoryEntry entry = root;
+
+ for (int k = 0; k < path.length(); k++)
+ {
+ String componentName = path.getComponent(k);
+ Entry nextEntry = null;
+
+ try
+ {
+ nextEntry = entry.getEntry(componentName);
+ }
+ catch (FileNotFoundException ignored)
+ {
+ try
+ {
+ nextEntry = entry.createDirectory(componentName);
+ }
+ catch (IOException e)
+ {
+ System.out.println("Unable to create directory");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+ entry = ( DirectoryEntry ) nextEntry;
+ }
+ entry.createDocument(name, size, this);
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+
+ /* ********** END implementation of POIFSReaderListener ********** */
+ /* ********** START implementation of POIFSWriterListener ********** */
+
+ /**
+ * Process a POIFSWriterEvent that this listener had registered
+ * for
+ *
+ * @param event the POIFSWriterEvent
+ */
+
+ public void processPOIFSWriterEvent(final POIFSWriterEvent event)
+ {
+ try
+ {
+ DocumentDescriptor descriptor =
+ new DocumentDescriptor(event.getPath(), event.getName());
+
+ System.out.println("looking up document: " + descriptor + " ("
+ + event.getLimit() + " bytes)");
+ event.getStream().write(( byte [] ) dataMap.get(descriptor));
+ }
+ catch (IOException e)
+ {
+ System.out.println("Unable to write document");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ /* ********** END implementation of POIFSWriterListener ********** */
+} // end public class ReaderWriter
+
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java
new file mode 100644
index 0000000000..289bf8c04b
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDirectoryNode.java
@@ -0,0 +1,289 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.DirectoryProperty;
+import org.apache.poi.poifs.property.DocumentProperty;
+
+/**
+ * Class to test DirectoryNode functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDirectoryNode
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDirectoryNode
+ *
+ * @param name
+ */
+
+ public TestDirectoryNode(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test trivial constructor (a DirectoryNode with no children)
+ *
+ * @exception IOException
+ */
+
+ public void testEmptyConstructor()
+ throws IOException
+ {
+ POIFSFileSystem fs = new POIFSFileSystem();
+ DirectoryProperty property1 = new DirectoryProperty("parent");
+ DirectoryProperty property2 = new DirectoryProperty("child");
+ DirectoryNode parent = new DirectoryNode(property1, fs, null);
+ DirectoryNode node = new DirectoryNode(property2, fs,
+ parent);
+
+ assertEquals(0, parent.getPath().length());
+ assertEquals(1, node.getPath().length());
+ assertEquals("child", node.getPath().getComponent(0));
+
+ // verify that getEntries behaves correctly
+ int count = 0;
+ Iterator iter = node.getEntries();
+
+ while (iter.hasNext())
+ {
+ count++;
+ iter.next();
+ }
+ assertEquals(0, count);
+
+ // verify behavior of isEmpty
+ assertTrue(node.isEmpty());
+
+ // verify behavior of getEntryCount
+ assertEquals(0, node.getEntryCount());
+
+ // verify behavior of getEntry
+ try
+ {
+ node.getEntry("foo");
+ fail("should have caught FileNotFoundException");
+ }
+ catch (FileNotFoundException ignored)
+ {
+
+ // as expected
+ }
+
+ // verify behavior of isDirectoryEntry
+ assertTrue(node.isDirectoryEntry());
+
+ // verify behavior of getName
+ assertEquals(property2.getName(), node.getName());
+
+ // verify behavior of isDocumentEntry
+ assertTrue(!node.isDocumentEntry());
+
+ // verify behavior of getParent
+ assertEquals(parent, node.getParent());
+ }
+
+ /**
+ * test non-trivial constructor (a DirectoryNode with children)
+ *
+ * @exception IOException
+ */
+
+ public void testNonEmptyConstructor()
+ throws IOException
+ {
+ DirectoryProperty property1 = new DirectoryProperty("parent");
+ DirectoryProperty property2 = new DirectoryProperty("child1");
+
+ property1.addChild(property2);
+ property1.addChild(new DocumentProperty("child2", 2000));
+ property2.addChild(new DocumentProperty("child3", 30000));
+ DirectoryNode node = new DirectoryNode(property1,
+ new POIFSFileSystem(), null);
+
+ // verify that getEntries behaves correctly
+ int count = 0;
+ Iterator iter = node.getEntries();
+
+ while (iter.hasNext())
+ {
+ count++;
+ iter.next();
+ }
+ assertEquals(2, count);
+
+ // verify behavior of isEmpty
+ assertTrue(!node.isEmpty());
+
+ // verify behavior of getEntryCount
+ assertEquals(2, node.getEntryCount());
+
+ // verify behavior of getEntry
+ DirectoryNode child1 = ( DirectoryNode ) node.getEntry("child1");
+
+ child1.getEntry("child3");
+ node.getEntry("child2");
+ try
+ {
+ node.getEntry("child3");
+ fail("should have caught FileNotFoundException");
+ }
+ catch (FileNotFoundException ignored)
+ {
+
+ // as expected
+ }
+
+ // verify behavior of isDirectoryEntry
+ assertTrue(node.isDirectoryEntry());
+
+ // verify behavior of getName
+ assertEquals(property1.getName(), node.getName());
+
+ // verify behavior of isDocumentEntry
+ assertTrue(!node.isDocumentEntry());
+
+ // verify behavior of getParent
+ assertNull(node.getParent());
+ }
+
+ /**
+ * test deletion methods
+ *
+ * @exception IOException
+ */
+
+ public void testDeletion()
+ throws IOException
+ {
+ POIFSFileSystem fs = new POIFSFileSystem();
+ DirectoryEntry root = fs.getRoot();
+
+ // verify cannot delete the root directory
+ assertTrue(!root.delete());
+ DirectoryEntry dir = fs.createDirectory("myDir");
+
+ assertTrue(!root.isEmpty());
+
+ // verify can delete empty directory
+ assertTrue(dir.delete());
+ dir = fs.createDirectory("NextDir");
+ DocumentEntry doc =
+ dir.createDocument("foo",
+ new ByteArrayInputStream(new byte[ 1 ]));
+
+ assertTrue(!dir.isEmpty());
+
+ // verify cannot delete empty directory
+ assertTrue(!dir.delete());
+ assertTrue(doc.delete());
+
+ // verify now we can delete it
+ assertTrue(dir.delete());
+ assertTrue(root.isEmpty());
+ }
+
+ /**
+ * test change name methods
+ *
+ * @exception IOException
+ */
+
+ public void testRename()
+ throws IOException
+ {
+ POIFSFileSystem fs = new POIFSFileSystem();
+ DirectoryEntry root = fs.getRoot();
+
+ // verify cannot rename the root directory
+ assertTrue(!root.renameTo("foo"));
+ DirectoryEntry dir = fs.createDirectory("myDir");
+
+ assertTrue(dir.renameTo("foo"));
+ assertEquals("foo", dir.getName());
+ DirectoryEntry dir2 = fs.createDirectory("myDir");
+
+ assertTrue(!dir2.renameTo("foo"));
+ assertEquals("myDir", dir2.getName());
+ assertTrue(dir.renameTo("FirstDir"));
+ assertTrue(dir2.renameTo("foo"));
+ assertEquals("foo", dir2.getName());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.filesystem.DirectoryNode");
+ junit.textui.TestRunner.run(TestDirectoryNode.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java
new file mode 100644
index 0000000000..522b3ed7e0
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocument.java
@@ -0,0 +1,319 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+import org.apache.poi.poifs.property.DocumentProperty;
+import org.apache.poi.poifs.storage.RawDataBlock;
+import org.apache.poi.poifs.storage.SmallDocumentBlock;
+
+/**
+ * Class to test POIFSDocument functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocument
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocument
+ *
+ * @param name
+ */
+
+ public TestDocument(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Integration test -- really about all we can do
+ *
+ * @exception IOException
+ */
+
+ public void testPOIFSDocument()
+ throws IOException
+ {
+
+ // verify correct number of blocks get created for document
+ // that is exact multituple of block size
+ POIFSDocument document;
+ byte[] array = new byte[ 4096 ];
+
+ for (int j = 0; j < array.length; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ document = new POIFSDocument("foo", new ByteArrayInputStream(array));
+ checkDocument(document, array);
+
+ // verify correct number of blocks get created for document
+ // that is not an exact multiple of block size
+ array = new byte[ 4097 ];
+ for (int j = 0; j < array.length; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ document = new POIFSDocument("bar", new ByteArrayInputStream(array));
+ checkDocument(document, array);
+
+ // verify correct number of blocks get created for document
+ // that is small
+ array = new byte[ 4095 ];
+ for (int j = 0; j < array.length; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ document = new POIFSDocument("_bar", new ByteArrayInputStream(array));
+ checkDocument(document, array);
+
+ // verify correct number of blocks get created for document
+ // that is rather small
+ array = new byte[ 199 ];
+ for (int j = 0; j < array.length; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ document = new POIFSDocument("_bar2",
+ new ByteArrayInputStream(array));
+ checkDocument(document, array);
+
+ // verify that output is correct
+ array = new byte[ 4097 ];
+ for (int j = 0; j < array.length; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ document = new POIFSDocument("foobar",
+ new ByteArrayInputStream(array));
+ checkDocument(document, array);
+ document.setStartBlock(0x12345678); // what a big file!!
+ DocumentProperty property = document.getDocumentProperty();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ property.writeData(stream);
+ byte[] output = stream.toByteArray();
+ byte[] array2 =
+ {
+ ( byte ) 'f', ( byte ) 0, ( byte ) 'o', ( byte ) 0, ( byte ) 'o',
+ ( byte ) 0, ( byte ) 'b', ( byte ) 0, ( byte ) 'a', ( byte ) 0,
+ ( byte ) 'r', ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 14,
+ ( byte ) 0, ( byte ) 2, ( byte ) 1, ( byte ) -1, ( byte ) -1,
+ ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1,
+ ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1, ( byte ) -1,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0x78, ( byte ) 0x56, ( byte ) 0x34,
+ ( byte ) 0x12, ( byte ) 1, ( byte ) 16, ( byte ) 0, ( byte ) 0,
+ ( byte ) 0, ( byte ) 0, ( byte ) 0, ( byte ) 0
+ };
+
+ assertEquals(array2.length, output.length);
+ for (int j = 0; j < output.length; j++)
+ {
+ assertEquals("Checking property offset " + j, array2[ j ],
+ output[ j ]);
+ }
+ }
+
+ private POIFSDocument makeCopy(POIFSDocument document, byte [] input,
+ byte [] data)
+ throws IOException
+ {
+ POIFSDocument copy = null;
+
+ if (input.length >= 4096)
+ {
+ RawDataBlock[] blocks =
+ new RawDataBlock[ (input.length + 511) / 512 ];
+ ByteArrayInputStream stream = new ByteArrayInputStream(data);
+ int index = 0;
+
+ while (true)
+ {
+ RawDataBlock block = new RawDataBlock(stream);
+
+ if (block.eof())
+ {
+ break;
+ }
+ blocks[ index++ ] = block;
+ }
+ copy = new POIFSDocument("test" + input.length, blocks,
+ input.length);
+ }
+ else
+ {
+ copy = new POIFSDocument(
+ "test" + input.length,
+ ( SmallDocumentBlock [] ) document.getSmallBlocks(),
+ input.length);
+ }
+ return copy;
+ }
+
+ private void checkDocument(final POIFSDocument document,
+ final byte [] input)
+ throws IOException
+ {
+ int big_blocks = 0;
+ int small_blocks = 0;
+ int total_output = 0;
+
+ if (input.length >= 4096)
+ {
+ big_blocks = (input.length + 511) / 512;
+ total_output = big_blocks * 512;
+ }
+ else
+ {
+ small_blocks = (input.length + 63) / 64;
+ total_output = 0;
+ }
+ checkValues(
+ big_blocks, small_blocks, total_output,
+ makeCopy(
+ document, input,
+ checkValues(
+ big_blocks, small_blocks, total_output, document,
+ input)), input);
+ }
+
+ private byte [] checkValues(int big_blocks, int small_blocks,
+ int total_output, POIFSDocument document,
+ byte [] input)
+ throws IOException
+ {
+ assertEquals(document, document.getDocumentProperty().getDocument());
+ int increment = ( int ) Math.sqrt(input.length);
+
+ for (int j = 1; j <= input.length; j += increment)
+ {
+ byte[] buffer = new byte[ j ];
+ int offset = 0;
+
+ for (int k = 0; k < (input.length / j); k++)
+ {
+ document.read(buffer, offset);
+ for (int n = 0; n < buffer.length; n++)
+ {
+ assertEquals("checking byte " + (k * j) + n,
+ input[ (k * j) + n ], buffer[ n ]);
+ }
+ offset += j;
+ }
+ }
+ assertEquals(big_blocks, document.countBlocks());
+ assertEquals(small_blocks, document.getSmallBlocks().length);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ document.writeBlocks(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(total_output, output.length);
+ int limit = Math.min(total_output, input.length);
+
+ for (int j = 0; j < limit; j++)
+ {
+ assertEquals("Checking document offset " + j, input[ j ],
+ output[ j ]);
+ }
+ for (int j = limit; j < output.length; j++)
+ {
+ assertEquals("Checking document offset " + j, ( byte ) -1,
+ output[ j ]);
+ }
+ return output;
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.filesystem.POIFSDocument");
+ junit.textui.TestRunner.run(TestDocument.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java
new file mode 100644
index 0000000000..3dbcb1be1e
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentDescriptor.java
@@ -0,0 +1,248 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import junit.framework.*;
+
+/**
+ * Class to test DocumentDescriptor functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentDescriptor
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocumentDescriptor
+ *
+ * @param name
+ */
+
+ public TestDocumentDescriptor(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test equality
+ */
+
+ public void testEquality()
+ {
+ String[] names =
+ {
+ "c1", "c2", "c3", "c4", "c5"
+ };
+ POIFSDocumentPath a1 = new POIFSDocumentPath();
+ POIFSDocumentPath a2 = new POIFSDocumentPath(null);
+ POIFSDocumentPath a3 = new POIFSDocumentPath(new String[ 0 ]);
+ POIFSDocumentPath a4 = new POIFSDocumentPath(a1, null);
+ POIFSDocumentPath a5 = new POIFSDocumentPath(a1,
+ new String[ 0 ]);
+ POIFSDocumentPath[] paths =
+ {
+ a1, a2, a3, a4, a5
+ };
+
+ for (int j = 0; j < paths.length; j++)
+ {
+ for (int k = 0; k < paths.length; k++)
+ {
+ for (int m = 0; m < names.length; m++)
+ {
+ DocumentDescriptor d1 = new DocumentDescriptor(paths[ j ],
+ names[ m ]);
+
+ for (int n = 0; n < names.length; n++)
+ {
+ DocumentDescriptor d2 =
+ new DocumentDescriptor(paths[ k ], names[ n ]);
+
+ if (m == n)
+ {
+ assertEquals("" + j + "," + k + "," + m + ","
+ + n, d1, d2);
+ }
+ else
+ {
+ assertTrue("" + j + "," + k + "," + m + "," + n,
+ !d1.equals(d2));
+ }
+ }
+ }
+ }
+ }
+ a2 = new POIFSDocumentPath(a1, new String[]
+ {
+ "foo"
+ });
+ a3 = new POIFSDocumentPath(a2, new String[]
+ {
+ "bar"
+ });
+ a4 = new POIFSDocumentPath(a3, new String[]
+ {
+ "fubar"
+ });
+ a5 = new POIFSDocumentPath(a4, new String[]
+ {
+ "foobar"
+ });
+ POIFSDocumentPath[] builtUpPaths =
+ {
+ a1, a2, a3, a4, a5
+ };
+ POIFSDocumentPath[] fullPaths =
+ {
+ new POIFSDocumentPath(), new POIFSDocumentPath(new String[]
+ {
+ "foo"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar", "foobar"
+ })
+ };
+
+ for (int k = 0; k < builtUpPaths.length; k++)
+ {
+ for (int j = 0; j < fullPaths.length; j++)
+ {
+ for (int m = 0; m < names.length; m++)
+ {
+ DocumentDescriptor d1 =
+ new DocumentDescriptor(fullPaths[ j ], names[ m ]);
+
+ for (int n = 0; n < names.length; n++)
+ {
+ DocumentDescriptor d2 =
+ new DocumentDescriptor(builtUpPaths[ k ],
+ names[ n ]);
+
+ if ((k == j) && (m == n))
+ {
+ assertEquals("" + j + "," + k + "," + m + ","
+ + n, d1, d2);
+ }
+ else
+ {
+ assertTrue("" + j + "," + k + "," + m + "," + n,
+ !(d1.equals(d2)));
+ }
+ }
+ }
+ }
+ }
+ POIFSDocumentPath[] badPaths =
+ {
+ new POIFSDocumentPath(new String[]
+ {
+ "_foo"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "_bar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "_fubar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar", "_foobar"
+ })
+ };
+
+ for (int k = 0; k < builtUpPaths.length; k++)
+ {
+ for (int j = 0; j < badPaths.length; j++)
+ {
+ for (int m = 0; m < names.length; m++)
+ {
+ DocumentDescriptor d1 =
+ new DocumentDescriptor(badPaths[ j ], names[ m ]);
+
+ for (int n = 0; n < names.length; n++)
+ {
+ DocumentDescriptor d2 =
+ new DocumentDescriptor(builtUpPaths[ k ],
+ names[ n ]);
+
+ assertTrue("" + j + "," + k + "," + m + "," + n,
+ !(d1.equals(d2)));
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.eventfilesystem.DocumentDescriptor");
+ junit.textui.TestRunner.run(TestDocumentDescriptor.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java
new file mode 100644
index 0000000000..e77fee566a
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentInputStream.java
@@ -0,0 +1,472 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.DirectoryProperty;
+import org.apache.poi.poifs.property.DocumentProperty;
+import org.apache.poi.poifs.storage.RawDataBlock;
+
+/**
+ * Class to test DocumentInputStream functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentInputStream
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocumentInputStream
+ *
+ * @param name
+ *
+ * @exception IOException
+ */
+
+ public TestDocumentInputStream(String name)
+ throws IOException
+ {
+ super(name);
+ int blocks = (_workbook_size + 511) / 512;
+
+ _workbook_data = new byte[ 512 * blocks ];
+ Arrays.fill(_workbook_data, ( byte ) -1);
+ for (int j = 0; j < _workbook_size; j++)
+ {
+ _workbook_data[ j ] = ( byte ) (j * j);
+ }
+ RawDataBlock[] rawBlocks = new RawDataBlock[ blocks ];
+ ByteArrayInputStream stream =
+ new ByteArrayInputStream(_workbook_data);
+
+ for (int j = 0; j < blocks; j++)
+ {
+ rawBlocks[ j ] = new RawDataBlock(stream);
+ }
+ POIFSDocument document = new POIFSDocument("Workbook", rawBlocks,
+ _workbook_size);
+
+ _workbook = new DocumentNode(
+ document.getDocumentProperty(),
+ new DirectoryNode(
+ new DirectoryProperty("Root Entry"), null, null));
+ }
+
+ private DocumentNode _workbook;
+ private byte[] _workbook_data;
+ private static final int _workbook_size = 5000;
+
+ // non-even division of _workbook_size, also non-even division of
+ // any block size
+ private static final int _buffer_size = 6;
+
+ /**
+ * test constructor
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+
+ assertEquals(_workbook_size, stream.available());
+ }
+
+ /**
+ * test available() behavior
+ *
+ * @exception IOException
+ */
+
+ public void testAvailable()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+
+ assertEquals(_workbook_size, stream.available());
+ stream.close();
+ try
+ {
+ stream.available();
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test mark/reset/markSupported.
+ *
+ * @exception IOException
+ */
+
+ public void testMarkFunctions()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+ byte[] buffer = new byte[ _workbook_size / 5 ];
+
+ stream.read(buffer);
+ for (int j = 0; j < buffer.length; j++)
+ {
+ assertEquals("checking byte " + j, _workbook_data[ j ],
+ buffer[ j ]);
+ }
+ assertEquals(_workbook_size - buffer.length, stream.available());
+ stream.reset();
+ assertEquals(_workbook_size, stream.available());
+ stream.read(buffer);
+ stream.mark(12);
+ stream.read(buffer);
+ assertEquals(_workbook_size - (2 * buffer.length),
+ stream.available());
+ for (int j = buffer.length; j < (2 * buffer.length); j++)
+ {
+ assertEquals("checking byte " + j, _workbook_data[ j ],
+ buffer[ j - buffer.length ]);
+ }
+ stream.reset();
+ assertEquals(_workbook_size - buffer.length, stream.available());
+ stream.read(buffer);
+ assertEquals(_workbook_size - (2 * buffer.length),
+ stream.available());
+ for (int j = buffer.length; j < (2 * buffer.length); j++)
+ {
+ assertEquals("checking byte " + j, _workbook_data[ j ],
+ buffer[ j - buffer.length ]);
+ }
+ assertTrue(stream.markSupported());
+ }
+
+ /**
+ * test simple read method
+ *
+ * @exception IOException
+ */
+
+ public void testReadSingleByte()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+ int remaining = _workbook_size;
+
+ for (int j = 0; j < _workbook_size; j++)
+ {
+ assertEquals("validating byte " + j, _workbook_data[ j ],
+ ( byte ) stream.read());
+ remaining--;
+ assertEquals("checking remaining after reading byte " + j,
+ remaining, stream.available());
+ }
+ assertEquals(-1, stream.read());
+ stream.close();
+ try
+ {
+ stream.read();
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * Test buffered read
+ *
+ * @exception IOException
+ */
+
+ public void testBufferRead()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+
+ try
+ {
+ stream.read(null);
+ fail("Should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+
+ // as expected
+ }
+
+ // test reading zero length buffer
+ assertEquals(0, stream.read(new byte[ 0 ]));
+ assertEquals(_workbook_size, stream.available());
+ byte[] buffer = new byte[ _buffer_size ];
+ int offset = 0;
+
+ while (stream.available() >= buffer.length)
+ {
+ assertEquals(_buffer_size, stream.read(buffer));
+ for (int j = 0; j < buffer.length; j++)
+ {
+ assertEquals("in main loop, byte " + offset,
+ _workbook_data[ offset ], buffer[ j ]);
+ offset++;
+ }
+ assertEquals("offset " + offset, _workbook_size - offset,
+ stream.available());
+ }
+ assertEquals(_workbook_size % _buffer_size, stream.available());
+ Arrays.fill(buffer, ( byte ) 0);
+ int count = stream.read(buffer);
+
+ assertEquals(_workbook_size % _buffer_size, count);
+ for (int j = 0; j < count; j++)
+ {
+ assertEquals("past main loop, byte " + offset,
+ _workbook_data[ offset ], buffer[ j ]);
+ offset++;
+ }
+ assertEquals(_workbook_size, offset);
+ for (int j = count; j < buffer.length; j++)
+ {
+ assertEquals("checking remainder, byte " + j, 0, buffer[ j ]);
+ }
+ assertEquals(-1, stream.read(buffer));
+ stream.close();
+ try
+ {
+ stream.read(buffer);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * Test complex buffered read
+ *
+ * @exception IOException
+ */
+
+ public void testComplexBufferRead()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+
+ try
+ {
+ stream.read(null, 0, 1);
+ fail("Should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+
+ // as expected
+ }
+
+ // test illegal offsets and lengths
+ try
+ {
+ stream.read(new byte[ 5 ], -4, 0);
+ fail("Should have caught IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ stream.read(new byte[ 5 ], 0, -4);
+ fail("Should have caught IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ stream.read(new byte[ 5 ], 0, 6);
+ fail("Should have caught IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+
+ // test reading zero
+ assertEquals(0, stream.read(new byte[ 5 ], 0, 0));
+ assertEquals(_workbook_size, stream.available());
+ byte[] buffer = new byte[ _workbook_size ];
+ int offset = 0;
+
+ while (stream.available() >= _buffer_size)
+ {
+ Arrays.fill(buffer, ( byte ) 0);
+ assertEquals(_buffer_size,
+ stream.read(buffer, offset, _buffer_size));
+ for (int j = 0; j < offset; j++)
+ {
+ assertEquals("checking byte " + j, 0, buffer[ j ]);
+ }
+ for (int j = offset; j < (offset + _buffer_size); j++)
+ {
+ assertEquals("checking byte " + j, _workbook_data[ j ],
+ buffer[ j ]);
+ }
+ for (int j = offset + _buffer_size; j < buffer.length; j++)
+ {
+ assertEquals("checking byte " + j, 0, buffer[ j ]);
+ }
+ offset += _buffer_size;
+ assertEquals("offset " + offset, _workbook_size - offset,
+ stream.available());
+ }
+ assertEquals(_workbook_size % _buffer_size, stream.available());
+ Arrays.fill(buffer, ( byte ) 0);
+ int count = stream.read(buffer, offset,
+ _workbook_size % _buffer_size);
+
+ assertEquals(_workbook_size % _buffer_size, count);
+ for (int j = 0; j < offset; j++)
+ {
+ assertEquals("checking byte " + j, 0, buffer[ j ]);
+ }
+ for (int j = offset; j < buffer.length; j++)
+ {
+ assertEquals("checking byte " + j, _workbook_data[ j ],
+ buffer[ j ]);
+ }
+ assertEquals(_workbook_size, offset + count);
+ for (int j = count; j < offset; j++)
+ {
+ assertEquals("byte " + j, 0, buffer[ j ]);
+ }
+ assertEquals(-1, stream.read(buffer, 0, 1));
+ stream.close();
+ try
+ {
+ stream.read(buffer, 0, 1);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test skip
+ *
+ * @exception IOException
+ */
+
+ public void testSkip()
+ throws IOException
+ {
+ DocumentInputStream stream = new DocumentInputStream(_workbook);
+
+ assertEquals(_workbook_size, stream.available());
+ int count = stream.available();
+
+ while (stream.available() >= _buffer_size)
+ {
+ assertEquals(_buffer_size, stream.skip(_buffer_size));
+ count -= _buffer_size;
+ assertEquals(count, stream.available());
+ }
+ assertEquals(_workbook_size % _buffer_size,
+ stream.skip(_buffer_size));
+ assertEquals(0, stream.available());
+ stream.reset();
+ assertEquals(_workbook_size, stream.available());
+ assertEquals(_workbook_size, stream.skip(_workbook_size * 2));
+ assertEquals(0, stream.available());
+ stream.reset();
+ assertEquals(_workbook_size, stream.available());
+ assertEquals(_workbook_size,
+ stream.skip(2 + ( long ) Integer.MAX_VALUE));
+ assertEquals(0, stream.available());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.filesystem.DocumentInputStream");
+ junit.textui.TestRunner.run(TestDocumentInputStream.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java
new file mode 100644
index 0000000000..7a63ad7c69
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentNode.java
@@ -0,0 +1,142 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.io.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.DirectoryProperty;
+import org.apache.poi.poifs.property.DocumentProperty;
+import org.apache.poi.poifs.storage.RawDataBlock;
+
+/**
+ * Class to test DocumentNode functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentNode
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocumentNode
+ *
+ * @param name
+ */
+
+ public TestDocumentNode(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test constructor
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ DirectoryProperty property1 = new DirectoryProperty("directory");
+ RawDataBlock[] rawBlocks = new RawDataBlock[ 4 ];
+ ByteArrayInputStream stream =
+ new ByteArrayInputStream(new byte[ 2048 ]);
+
+ for (int j = 0; j < 4; j++)
+ {
+ rawBlocks[ j ] = new RawDataBlock(stream);
+ }
+ POIFSDocument document = new POIFSDocument("document", rawBlocks,
+ 2000);
+ DocumentProperty property2 = document.getDocumentProperty();
+ DirectoryNode parent = new DirectoryNode(property1, null, null);
+ DocumentNode node = new DocumentNode(property2, parent);
+
+ // verify we can retrieve the document
+ assertEquals(property2.getDocument(), node.getDocument());
+
+ // verify we can get the size
+ assertEquals(property2.getSize(), node.getSize());
+
+ // verify isDocumentEntry returns true
+ assertTrue(node.isDocumentEntry());
+
+ // verify isDirectoryEntry returns false
+ assertTrue(!node.isDirectoryEntry());
+
+ // verify getName behaves correctly
+ assertEquals(property2.getName(), node.getName());
+
+ // verify getParent behaves correctly
+ assertEquals(parent, node.getParent());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.filesystem.DocumentNode");
+ junit.textui.TestRunner.run(TestDocumentNode.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java
new file mode 100644
index 0000000000..de0d241919
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestDocumentOutputStream.java
@@ -0,0 +1,257 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.DirectoryProperty;
+import org.apache.poi.poifs.property.DocumentProperty;
+import org.apache.poi.poifs.storage.RawDataBlock;
+
+/**
+ * Class to test DocumentOutputStream functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentOutputStream
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocumentOutputStream
+ *
+ * @param name
+ *
+ * @exception IOException
+ */
+
+ public TestDocumentOutputStream(String name)
+ throws IOException
+ {
+ super(name);
+ }
+
+ /**
+ * test write(int) behavior
+ *
+ * @exception IOException
+ */
+
+ public void testWrite1()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);
+
+ for (int j = 0; j < 25; j++)
+ {
+ dstream.write(j);
+ }
+ try
+ {
+ dstream.write(0);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+ }
+ byte[] output = stream.toByteArray();
+
+ assertEquals(25, output.length);
+ for (int j = 0; j < 25; j++)
+ {
+ assertEquals(( byte ) j, output[ j ]);
+ }
+ stream.close();
+ }
+
+ /**
+ * test write(byte[]) behavior
+ *
+ * @exception IOException
+ */
+
+ public void testWrite2()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);
+
+ for (int j = 0; j < 6; j++)
+ {
+ byte[] array = new byte[ 4 ];
+
+ Arrays.fill(array, ( byte ) j);
+ dstream.write(array);
+ }
+ try
+ {
+ byte[] array = new byte[ 4 ];
+
+ Arrays.fill(array, ( byte ) 7);
+ dstream.write(array);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+ }
+ byte[] output = stream.toByteArray();
+
+ assertEquals(24, output.length);
+ for (int j = 0; j < 6; j++)
+ {
+ for (int k = 0; k < 4; k++)
+ {
+ assertEquals(String.valueOf((j * 4) + k), ( byte ) j,
+ output[ (j * 4) + k ]);
+ }
+ }
+ stream.close();
+ }
+
+ /**
+ * test write(byte[], int, int) behavior
+ *
+ * @exception IOException
+ */
+
+ public void testWrite3()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);
+ byte[] array = new byte[ 50 ];
+
+ for (int j = 0; j < 50; j++)
+ {
+ array[ j ] = ( byte ) j;
+ }
+ dstream.write(array, 1, 25);
+ try
+ {
+ dstream.write(array, 0, 1);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+ }
+ byte[] output = stream.toByteArray();
+
+ assertEquals(25, output.length);
+ for (int j = 0; j < 25; j++)
+ {
+ assertEquals(( byte ) (j + 1), output[ j ]);
+ }
+ stream.close();
+ }
+
+ /**
+ * test writeFiller()
+ *
+ * @exception IOException
+ */
+
+ public void testWriteFiller()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DocumentOutputStream dstream = new DocumentOutputStream(stream, 25);
+
+ for (int j = 0; j < 25; j++)
+ {
+ dstream.write(j);
+ }
+ try
+ {
+ dstream.write(0);
+ fail("Should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+ }
+ dstream.writeFiller(100, ( byte ) 0xff);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(100, output.length);
+ for (int j = 0; j < 25; j++)
+ {
+ assertEquals(( byte ) j, output[ j ]);
+ }
+ for (int j = 25; j < 100; j++)
+ {
+ assertEquals(String.valueOf(j), ( byte ) 0xff, output[ j ]);
+ }
+ stream.close();
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.filesystem.DocumentOutputStream");
+ junit.textui.TestRunner.run(TestDocumentOutputStream.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java
new file mode 100644
index 0000000000..7781196d14
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSDocumentPath.java
@@ -0,0 +1,370 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.filesystem;
+
+import junit.framework.*;
+
+/**
+ * Class to test POIFSDocumentPath functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestPOIFSDocumentPath
+ extends TestCase
+{
+
+ /**
+ * Constructor TestPOIFSDocumentPath
+ *
+ * @param name
+ */
+
+ public TestPOIFSDocumentPath(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test default constructor
+ */
+
+ public void testDefaultConstructor()
+ {
+ POIFSDocumentPath path = new POIFSDocumentPath();
+
+ assertEquals(0, path.length());
+ }
+
+ /**
+ * Test full path constructor
+ */
+
+ public void testFullPathConstructor()
+ {
+ String[] components =
+ {
+ "foo", "bar", "foobar", "fubar"
+ };
+
+ for (int j = 0; j < components.length; j++)
+ {
+ String[] params = new String[ j ];
+
+ for (int k = 0; k < j; k++)
+ {
+ params[ k ] = components[ k ];
+ }
+ POIFSDocumentPath path = new POIFSDocumentPath(params);
+
+ assertEquals(j, path.length());
+ for (int k = 0; k < j; k++)
+ {
+ assertEquals(components[ k ], path.getComponent(k));
+ }
+ if (j == 0)
+ {
+ assertNull(path.getParent());
+ }
+ else
+ {
+ POIFSDocumentPath parent = path.getParent();
+
+ assertNotNull(parent);
+ assertEquals(j - 1, parent.length());
+ for (int k = 0; k < j - 1; k++)
+ {
+ assertEquals(components[ k ], parent.getComponent(k));
+ }
+ }
+ }
+
+ // test weird variants
+ assertEquals(0, new POIFSDocumentPath(null).length());
+ try
+ {
+ new POIFSDocumentPath(new String[]
+ {
+ "fu", ""
+ });
+ fail("should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+ try
+ {
+ new POIFSDocumentPath(new String[]
+ {
+ "fu", null
+ });
+ fail("should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+ }
+
+ /**
+ * Test relative path constructor
+ */
+
+ public void testRelativePathConstructor()
+ {
+ String[] initialComponents =
+ {
+ "a", "b", "c"
+ };
+
+ for (int n = 0; n < initialComponents.length; n++)
+ {
+ String[] initialParams = new String[ n ];
+
+ for (int k = 0; k < n; k++)
+ {
+ initialParams[ k ] = initialComponents[ k ];
+ }
+ POIFSDocumentPath base =
+ new POIFSDocumentPath(initialParams);
+ String[] components =
+ {
+ "foo", "bar", "foobar", "fubar"
+ };
+
+ for (int j = 0; j < components.length; j++)
+ {
+ String[] params = new String[ j ];
+
+ for (int k = 0; k < j; k++)
+ {
+ params[ k ] = components[ k ];
+ }
+ POIFSDocumentPath path = new POIFSDocumentPath(base, params);
+
+ assertEquals(j + n, path.length());
+ for (int k = 0; k < n; k++)
+ {
+ assertEquals(initialComponents[ k ],
+ path.getComponent(k));
+ }
+ for (int k = 0; k < j; k++)
+ {
+ assertEquals(components[ k ], path.getComponent(k + n));
+ }
+ if ((j + n) == 0)
+ {
+ assertNull(path.getParent());
+ }
+ else
+ {
+ POIFSDocumentPath parent = path.getParent();
+
+ assertNotNull(parent);
+ assertEquals(j + n - 1, parent.length());
+ for (int k = 0; k < (j + n - 1); k++)
+ {
+ assertEquals(path.getComponent(k),
+ parent.getComponent(k));
+ }
+ }
+ }
+
+ // test weird variants
+ assertEquals(n, new POIFSDocumentPath(base, null).length());
+ try
+ {
+ new POIFSDocumentPath(base, new String[]
+ {
+ "fu", ""
+ });
+ fail("should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+ try
+ {
+ new POIFSDocumentPath(base, new String[]
+ {
+ "fu", null
+ });
+ fail("should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+ }
+ }
+
+ /**
+ * test equality
+ */
+
+ public void testEquality()
+ {
+ POIFSDocumentPath a1 = new POIFSDocumentPath();
+ POIFSDocumentPath a2 = new POIFSDocumentPath(null);
+ POIFSDocumentPath a3 = new POIFSDocumentPath(new String[ 0 ]);
+ POIFSDocumentPath a4 = new POIFSDocumentPath(a1, null);
+ POIFSDocumentPath a5 = new POIFSDocumentPath(a1,
+ new String[ 0 ]);
+ POIFSDocumentPath[] paths =
+ {
+ a1, a2, a3, a4, a5
+ };
+
+ for (int j = 0; j < paths.length; j++)
+ {
+ for (int k = 0; k < paths.length; k++)
+ {
+ assertEquals(String.valueOf(j) + "<>" + String.valueOf(k),
+ paths[ j ], paths[ k ]);
+ }
+ }
+ a2 = new POIFSDocumentPath(a1, new String[]
+ {
+ "foo"
+ });
+ a3 = new POIFSDocumentPath(a2, new String[]
+ {
+ "bar"
+ });
+ a4 = new POIFSDocumentPath(a3, new String[]
+ {
+ "fubar"
+ });
+ a5 = new POIFSDocumentPath(a4, new String[]
+ {
+ "foobar"
+ });
+ POIFSDocumentPath[] builtUpPaths =
+ {
+ a1, a2, a3, a4, a5
+ };
+ POIFSDocumentPath[] fullPaths =
+ {
+ new POIFSDocumentPath(), new POIFSDocumentPath(new String[]
+ {
+ "foo"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar", "foobar"
+ })
+ };
+
+ for (int k = 0; k < builtUpPaths.length; k++)
+ {
+ for (int j = 0; j < fullPaths.length; j++)
+ {
+ if (k == j)
+ {
+ assertEquals(String.valueOf(j) + "<>"
+ + String.valueOf(k), fullPaths[ j ],
+ builtUpPaths[ k ]);
+ }
+ else
+ {
+ assertTrue(String.valueOf(j) + "<>" + String.valueOf(k),
+ !(fullPaths[ j ].equals(builtUpPaths[ k ])));
+ }
+ }
+ }
+ POIFSDocumentPath[] badPaths =
+ {
+ new POIFSDocumentPath(new String[]
+ {
+ "_foo"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "_bar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "_fubar"
+ }), new POIFSDocumentPath(new String[]
+ {
+ "foo", "bar", "fubar", "_foobar"
+ })
+ };
+
+ for (int k = 0; k < builtUpPaths.length; k++)
+ {
+ for (int j = 0; j < badPaths.length; j++)
+ {
+ assertTrue(String.valueOf(j) + "<>" + String.valueOf(k),
+ !(fullPaths[ k ].equals(badPaths[ j ])));
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.eventfilesystem.POIFSDocumentPath");
+ junit.textui.TestRunner.run(TestPOIFSDocumentPath.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/property/LocalProperty.java b/src/testcases/org/apache/poi/poifs/property/LocalProperty.java
new file mode 100644
index 0000000000..2a9f1e3ba1
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/LocalProperty.java
@@ -0,0 +1,94 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+class LocalProperty
+ extends Property
+{
+
+ /**
+ * Constructor LocalProperty
+ *
+ * @param index
+ */
+
+ LocalProperty(int index)
+ {
+ super();
+ setName("foo" + index);
+ setIndex(index);
+ }
+
+ /**
+ * Method preWrite
+ */
+
+ protected void preWrite()
+ {
+ }
+
+ /**
+ * Method isDirectory
+ *
+ * @return false
+ */
+
+ public boolean isDirectory()
+ {
+ return false;
+ }
+} // end package-scope class LocalProperty
+
diff --git a/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java b/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java
new file mode 100644
index 0000000000..3ed55270e9
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/TestDirectoryProperty.java
@@ -0,0 +1,437 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.common.PoiFSConstants;
+
+/**
+ * Class to test DirectoryProperty functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDirectoryProperty
+ extends TestCase
+{
+ private DirectoryProperty _property;
+ private byte[] _testblock;
+
+ /**
+ * Constructor TestDirectoryProperty
+ *
+ * @param name
+ */
+
+ public TestDirectoryProperty(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test constructing DirectoryProperty
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ createBasicDirectoryProperty();
+ verifyProperty();
+ }
+
+ /**
+ * Test pre-write functionality
+ *
+ * @exception IOException
+ */
+
+ public void testPreWrite()
+ throws IOException
+ {
+ createBasicDirectoryProperty();
+ _property.preWrite();
+
+ // shouldn't change anything at all
+ verifyProperty();
+ verifyChildren(0);
+
+ // now try adding 1 property
+ createBasicDirectoryProperty();
+ _property.addChild(new LocalProperty(1));
+ _property.preWrite();
+
+ // update children index
+ _testblock[ 0x4C ] = 1;
+ _testblock[ 0x4D ] = 0;
+ _testblock[ 0x4E ] = 0;
+ _testblock[ 0x4F ] = 0;
+ verifyProperty();
+ verifyChildren(1);
+
+ // now try adding 2 properties
+ createBasicDirectoryProperty();
+ _property.addChild(new LocalProperty(1));
+ _property.addChild(new LocalProperty(2));
+ _property.preWrite();
+
+ // update children index
+ _testblock[ 0x4C ] = 2;
+ _testblock[ 0x4D ] = 0;
+ _testblock[ 0x4E ] = 0;
+ _testblock[ 0x4F ] = 0;
+ verifyProperty();
+ verifyChildren(2);
+
+ // beat on the children allocation code
+ for (int count = 1; count < 100; count++)
+ {
+ createBasicDirectoryProperty();
+ for (int j = 1; j < (count + 1); j++)
+ {
+ _property.addChild(new LocalProperty(j));
+ }
+ _property.preWrite();
+ verifyChildren(count);
+ }
+ }
+
+ private void verifyChildren(int count)
+ throws IOException
+ {
+ Iterator iter = _property.getChildren();
+ List children = new ArrayList();
+
+ while (iter.hasNext())
+ {
+ children.add(iter.next());
+ }
+ assertEquals(count, children.size());
+ if (count != 0)
+ {
+ boolean[] found = new boolean[ count ];
+
+ found[ _property.getChildIndex() - 1 ] = true;
+ int total_found = 1;
+
+ Arrays.fill(found, false);
+ iter = children.iterator();
+ while (iter.hasNext())
+ {
+ Property child = ( Property ) iter.next();
+ Child next = child.getNextChild();
+
+ if (next != null)
+ {
+ int index = (( Property ) next).getIndex();
+
+ if (index != -1)
+ {
+ assertTrue("found index " + index + " twice",
+ !found[ index - 1 ]);
+ found[ index - 1 ] = true;
+ total_found++;
+ }
+ }
+ Child previous = child.getPreviousChild();
+
+ if (previous != null)
+ {
+ int index = (( Property ) previous).getIndex();
+
+ if (index != -1)
+ {
+ assertTrue("found index " + index + " twice",
+ !found[ index - 1 ]);
+ found[ index - 1 ] = true;
+ total_found++;
+ }
+ }
+ }
+ assertEquals(count, total_found);
+ }
+ }
+
+ private void createBasicDirectoryProperty()
+ {
+ String name = "MyDirectory";
+
+ _property = new DirectoryProperty(name);
+ _testblock = new byte[ 128 ];
+ int index = 0;
+
+ for (; index < 0x40; index++)
+ {
+ _testblock[ index ] = ( byte ) 0;
+ }
+ int limit = Math.min(31, name.length());
+
+ _testblock[ index++ ] = ( byte ) (2 * (limit + 1));
+ _testblock[ index++ ] = ( byte ) 0;
+ _testblock[ index++ ] = ( byte ) 1;
+ _testblock[ index++ ] = ( byte ) 1;
+ for (; index < 0x50; index++)
+ {
+ _testblock[ index ] = ( byte ) 0xff;
+ }
+ for (; index < 0x80; index++)
+ {
+ _testblock[ index ] = ( byte ) 0;
+ }
+ byte[] name_bytes = name.getBytes();
+
+ for (index = 0; index < limit; index++)
+ {
+ _testblock[ index * 2 ] = name_bytes[ index ];
+ }
+ }
+
+ private void verifyProperty()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512);
+
+ _property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(_testblock.length, output.length);
+ for (int j = 0; j < _testblock.length; j++)
+ {
+ assertEquals("mismatch at offset " + j, _testblock[ j ],
+ output[ j ]);
+ }
+ }
+
+ /**
+ * Test addChild
+ *
+ * @exception IOException
+ */
+
+ public void testAddChild()
+ throws IOException
+ {
+ createBasicDirectoryProperty();
+ _property.addChild(new LocalProperty(1));
+ _property.addChild(new LocalProperty(2));
+ try
+ {
+ _property.addChild(new LocalProperty(1));
+ fail("should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ _property.addChild(new LocalProperty(2));
+ fail("should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ _property.addChild(new LocalProperty(3));
+ }
+
+ /**
+ * Test deleteChild
+ *
+ * @exception IOException
+ */
+
+ public void testDeleteChild()
+ throws IOException
+ {
+ createBasicDirectoryProperty();
+ Property p1 = new LocalProperty(1);
+
+ _property.addChild(p1);
+ try
+ {
+ _property.addChild(new LocalProperty(1));
+ fail("should have caught IOException");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ assertTrue(_property.deleteChild(p1));
+ assertTrue(!_property.deleteChild(p1));
+ _property.addChild(new LocalProperty(1));
+ }
+
+ /**
+ * Test changeName
+ *
+ * @exception IOException
+ */
+
+ public void testChangeName()
+ throws IOException
+ {
+ createBasicDirectoryProperty();
+ Property p1 = new LocalProperty(1);
+ String originalName = p1.getName();
+
+ _property.addChild(p1);
+ assertTrue(_property.changeName(p1, "foobar"));
+ assertEquals("foobar", p1.getName());
+ assertTrue(!_property.changeName(p1, "foobar"));
+ assertEquals("foobar", p1.getName());
+ Property p2 = new LocalProperty(1);
+
+ _property.addChild(p2);
+ assertTrue(!_property.changeName(p1, originalName));
+ assertTrue(_property.changeName(p2, "foo"));
+ assertTrue(_property.changeName(p1, originalName));
+ }
+
+ /**
+ * Test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+ byte[] input =
+ {
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23,
+ ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ verifyReadingProperty(0, input, 0, "Boot Entry");
+ }
+
+ private void verifyReadingProperty(int index, byte [] input, int offset,
+ String name)
+ throws IOException
+ {
+ DirectoryProperty property = new DirectoryProperty(index, input,
+ offset);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(128);
+ byte[] expected = new byte[ 128 ];
+
+ System.arraycopy(input, offset, expected, 0, 128);
+ property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(128, output.length);
+ for (int j = 0; j < 128; j++)
+ {
+ assertEquals("mismatch at offset " + j, expected[ j ],
+ output[ j ]);
+ }
+ assertEquals(index, property.getIndex());
+ assertEquals(name, property.getName());
+ assertTrue(!property.getChildren().hasNext());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.property.DirectoryProperty");
+ junit.textui.TestRunner.run(TestDirectoryProperty.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java b/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java
new file mode 100644
index 0000000000..17297fc4ec
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/TestDocumentProperty.java
@@ -0,0 +1,358 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.DocumentProperty;
+
+/**
+ * Class to test DocumentProperty functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentProperty
+ extends TestCase
+{
+
+ /**
+ * Constructor TestDocumentProperty
+ *
+ * @param name
+ */
+
+ public TestDocumentProperty(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test constructing DocumentPropertys
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+
+ // test with short name, small file
+ verifyProperty("foo", 1234);
+
+ // test with just long enough name, small file
+ verifyProperty("A.really.long.long.long.name123", 2345);
+
+ // test with longer name, just small enough file
+ verifyProperty("A.really.long.long.long.name1234", 4095);
+
+ // test with just long enough file
+ verifyProperty("A.really.long.long.long.name123", 4096);
+ }
+
+ /**
+ * Test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+ byte[] input =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23,
+ ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ verifyReadingProperty(1, input, 128, "Workbook");
+ verifyReadingProperty(2, input, 256, "\005SummaryInformation");
+ verifyReadingProperty(3, input, 384,
+ "\005DocumentSummaryInformation");
+ }
+
+ private void verifyReadingProperty(int index, byte [] input, int offset,
+ String name)
+ throws IOException
+ {
+ DocumentProperty property = new DocumentProperty(index, input,
+ offset);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(128);
+ byte[] expected = new byte[ 128 ];
+
+ System.arraycopy(input, offset, expected, 0, 128);
+ property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(128, output.length);
+ for (int j = 0; j < 128; j++)
+ {
+ assertEquals("mismatch at offset " + j, expected[ j ],
+ output[ j ]);
+ }
+ assertEquals(index, property.getIndex());
+ assertEquals(name, property.getName());
+ }
+
+ private void verifyProperty(String name, int size)
+ throws IOException
+ {
+ DocumentProperty property = new DocumentProperty(name, size);
+
+ if (size >= 4096)
+ {
+ assertTrue(!property.shouldUseSmallBlocks());
+ }
+ else
+ {
+ assertTrue(property.shouldUseSmallBlocks());
+ }
+ byte[] testblock = new byte[ 128 ];
+ int index = 0;
+
+ for (; index < 0x40; index++)
+ {
+ testblock[ index ] = ( byte ) 0;
+ }
+ int limit = Math.min(31, name.length());
+
+ testblock[ index++ ] = ( byte ) (2 * (limit + 1));
+ testblock[ index++ ] = ( byte ) 0;
+ testblock[ index++ ] = ( byte ) 2;
+ testblock[ index++ ] = ( byte ) 1;
+ for (; index < 0x50; index++)
+ {
+ testblock[ index ] = ( byte ) 0xFF;
+ }
+ for (; index < 0x78; index++)
+ {
+ testblock[ index ] = ( byte ) 0;
+ }
+ int sz = size;
+
+ testblock[ index++ ] = ( byte ) sz;
+ sz /= 256;
+ testblock[ index++ ] = ( byte ) sz;
+ sz /= 256;
+ testblock[ index++ ] = ( byte ) sz;
+ sz /= 256;
+ testblock[ index++ ] = ( byte ) sz;
+ for (; index < 0x80; index++)
+ {
+ testblock[ index ] = ( byte ) 0x0;
+ }
+ byte[] name_bytes = name.getBytes();
+
+ for (index = 0; index < limit; index++)
+ {
+ testblock[ index * 2 ] = name_bytes[ index ];
+ }
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512);
+
+ property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(testblock.length, output.length);
+ for (int j = 0; j < testblock.length; j++)
+ {
+ assertEquals("mismatch at offset " + j, testblock[ j ],
+ output[ j ]);
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.property.DocumentProperty");
+ junit.textui.TestRunner.run(TestDocumentProperty.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java b/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java
new file mode 100644
index 0000000000..16d6db7bd1
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/TestPropertyFactory.java
@@ -0,0 +1,2275 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.storage.RawDataBlock;
+
+/**
+ * Class to test PropertyFactory functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestPropertyFactory
+ extends TestCase
+{
+
+ /**
+ * Constructor TestPropertyFactory
+ *
+ * @param name
+ */
+
+ public TestPropertyFactory(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test executing convertToProperties
+ *
+ * @exception IOException
+ */
+
+ public void testConvertToProperties()
+ throws IOException
+ {
+
+ // real data from a real file!
+ byte[] testdata =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x47, ( byte ) 0xA4, ( byte ) 0xDE,
+ ( byte ) 0xEC, ( byte ) 0x65, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x40, ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xA0, ( byte ) 0x7F, ( byte ) 0x29, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0xC0, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x76, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x47, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0x48, ( byte ) 0x3A, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x25, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x27, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x29, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x2D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x30, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x2B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x25, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x27, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x30, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x26, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x42, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0xB2, ( byte ) 0x52, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x40, ( byte ) 0xDA, ( byte ) 0x5B, ( byte ) 0x08,
+ ( byte ) 0x59, ( byte ) 0x56, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x70, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+ ByteArrayInputStream stream = new ByteArrayInputStream(testdata);
+ RawDataBlock[] raw_data =
+ new RawDataBlock[ testdata.length / 512 ];
+
+ for (int j = 0; j < raw_data.length; j++)
+ {
+ raw_data[ j ] = new RawDataBlock(stream);
+ }
+ List properties = PropertyFactory.convertToProperties(raw_data);
+
+ assertEquals(64, properties.size());
+ String[] names =
+ {
+ "Root Entry", null, null, null, null, null, null, null, null,
+ null, null, null, null, "Deal Information", "Deal Description",
+ "Sales Area Code", "Deal Currency", "Outbound Travel Dates",
+ "Maximum Stay", "Maximum Stay Period", "Deal Type", "Sub Deal",
+ "Commission Value", "Fare Type", "FUD Grid Dimensions",
+ "FUD Grid Information", "Double Dealing Indicator",
+ "Business Type", "Umbrella Links and Passengers", "Agents Name",
+ "Number of Passengers", "ALC Codes", "Consortia Codes",
+ "Child Percentage Permitted", "Percentage of Yield",
+ "Net Remit Permitted", "Infant Discount Permitted",
+ "Infant Discount Value", "TRVA Information",
+ "Business Justification", "Surcharge", "Nature of Variation",
+ "Other Refund Text", "Cancellation Fee Percentage",
+ "Cancellation Fee Fixed Value", "Cancellation Fee Currency",
+ "Remarks", "Other Carrier Sectors", "Prorate Comments", null,
+ null, null, null, null, null, null, null, null, null, null, null,
+ null, null, null
+ };
+
+ assertEquals(64, names.length);
+ boolean[] isRoot =
+ {
+ true, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false
+ };
+
+ assertEquals(64, isRoot.length);
+ boolean[] isDocument =
+ {
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false
+ };
+
+ assertEquals(64, isDocument.length);
+ boolean[] isDirectory =
+ {
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, true, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false
+ };
+
+ assertEquals(64, isDirectory.length);
+ boolean[] isNull =
+ {
+ false, true, true, true, true, true, true, true, true, true, true,
+ true, true, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true
+ };
+
+ assertEquals(64, isNull.length);
+ for (int j = 0; j < 64; j++)
+ {
+ if (isNull[ j ])
+ {
+ assertNull("Checking property " + j, properties.get(j));
+ }
+ else
+ {
+ assertNotNull("Checking property " + j, properties.get(j));
+ if (isRoot[ j ])
+ {
+ assertTrue("Checking property " + j,
+ properties.get(j) instanceof RootProperty);
+ }
+ if (isDirectory[ j ])
+ {
+ assertTrue("Checking property " + j,
+ properties.get(j)
+ instanceof DirectoryProperty);
+ }
+ if (isDocument[ j ])
+ {
+ assertTrue("Checking property " + j,
+ properties.get(j) instanceof DocumentProperty);
+ }
+ assertEquals("Checking property " + j, names[ j ],
+ (( Property ) properties.get(j)).getName());
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.property.PropertyFactory");
+ junit.textui.TestRunner.run(TestPropertyFactory.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java b/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java
new file mode 100644
index 0000000000..cfebebe517
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java
@@ -0,0 +1,2684 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.storage.BlockAllocationTableReader;
+import org.apache.poi.poifs.storage.RawDataBlockList;
+
+/**
+ * Class to test PropertyTable functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestPropertyTable
+ extends TestCase
+{
+
+ /**
+ * Constructor TestPropertyTable
+ *
+ * @param name
+ */
+
+ public TestPropertyTable(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test PropertyTable
+ * <p>
+ * Running individual tests of the PropertyTable methods, which is
+ * the traditional way to write unit tests (at least for me),
+ * seems somewhat useless in this case. Of greater relevance: if
+ * one follows the normal steps of creating a PropertyTable, and
+ * then checking the output, does it make sense? In other words,
+ * more of an integration test.
+ * <p>
+ * So, the test consists of creating a PropertyTable instance,
+ * adding three DocumentProperty instances to it, and then getting
+ * the output (including the preWrite phase first), and comparing
+ * it against a real property table extracted from a file known to
+ * be acceptable to Excel.
+ *
+ * @exception IOException
+ */
+
+ public void testWriterPropertyTable()
+ throws IOException
+ {
+
+ // create the PropertyTable
+ PropertyTable table = new PropertyTable();
+
+ // create three DocumentProperty instances and add them to the
+ // PropertyTable
+ DocumentProperty workbook = new DocumentProperty("Workbook",
+ 0x00046777);
+
+ workbook.setStartBlock(0);
+ DocumentProperty summary1 =
+ new DocumentProperty("\005SummaryInformation", 0x00001000);
+
+ summary1.setStartBlock(0x00000234);
+ DocumentProperty summary2 =
+ new DocumentProperty("\005DocumentSummaryInformation",
+ 0x00001000);
+
+ summary2.setStartBlock(0x0000023C);
+ table.addProperty(workbook);
+ RootProperty root = table.getRoot();
+
+ root.addChild(workbook);
+ table.addProperty(summary1);
+ root = table.getRoot();
+ root.addChild(summary1);
+ table.addProperty(summary2);
+ root = table.getRoot();
+ root.addChild(summary2);
+ table.preWrite();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512);
+ byte[] testblock =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ table.writeBlocks(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals("length check #1", testblock.length, output.length);
+ for (int j = 0; j < testblock.length; j++)
+ {
+ assertEquals("content check #1: mismatch at offset " + j,
+ testblock[ j ], output[ j ]);
+ }
+ table.removeProperty(summary1);
+ root = table.getRoot();
+ root.deleteChild(summary1);
+ table.preWrite();
+ stream = new ByteArrayOutputStream(512);
+ byte[] testblock2 =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ table.writeBlocks(stream);
+ output = stream.toByteArray();
+ assertEquals("length check #2", testblock2.length, output.length);
+ for (int j = 0; j < testblock2.length; j++)
+ {
+ assertEquals("content check #2: mismatch at offset " + j,
+ testblock2[ j ], output[ j ]);
+ }
+ table.addProperty(summary1);
+ root = table.getRoot();
+ root.addChild(summary1);
+ table.preWrite();
+ stream = new ByteArrayOutputStream(512);
+ byte[] testblock3 =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xfe, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x57, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x6b, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x77, ( byte ) 0x67, ( byte ) 0x04, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x6f, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3c, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x6d, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6e, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6d, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6f, ( byte ) 0x00,
+ ( byte ) 0x6e, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff, ( byte ) 0xff,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ table.writeBlocks(stream);
+ output = stream.toByteArray();
+ assertEquals("length check #3", testblock3.length, output.length);
+ for (int j = 0; j < testblock3.length; j++)
+ {
+ assertEquals("content check #3: mismatch at offset " + j,
+ testblock3[ j ], output[ j ]);
+ }
+ }
+
+ /**
+ * test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+
+ // first, we need the raw data blocks
+ byte[] raw_data_array =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31,
+ ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63,
+ ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30,
+ ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74,
+ ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36,
+ ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74,
+ ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30,
+ ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00,
+ ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65,
+ ( byte ) 0x73, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+ RawDataBlockList data_blocks =
+ new RawDataBlockList(new ByteArrayInputStream(raw_data_array));
+ int[] bat_array =
+ {
+ 15
+ };
+
+ // need to initialize the block list with a block allocation
+ // table
+ new BlockAllocationTableReader(1, bat_array, 0, -2, data_blocks);
+
+ // get property table from the document
+ PropertyTable table = new PropertyTable(0, data_blocks);
+
+ assertEquals(30 * 64, table.getRoot().getSize());
+ int count = 0;
+ Property child = null;
+ Iterator iter = table.getRoot().getChildren();
+
+ while (iter.hasNext())
+ {
+ child = ( Property ) iter.next();
+ ++count;
+ }
+ assertEquals(1, count);
+ assertTrue(child.isDirectory());
+ iter = (( DirectoryProperty ) child).getChildren();
+ count = 0;
+ while (iter.hasNext())
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(35, count);
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.property.PropertyTable");
+ junit.textui.TestRunner.run(TestPropertyTable.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java b/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java
new file mode 100644
index 0000000000..8304647595
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/property/TestRootProperty.java
@@ -0,0 +1,259 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.property;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.common.PoiFSConstants;
+
+/**
+ * Class to test RootProperty functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestRootProperty
+ extends TestCase
+{
+ private RootProperty _property;
+ private byte[] _testblock;
+
+ /**
+ * Constructor TestRootProperty
+ *
+ * @param name
+ */
+
+ public TestRootProperty(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test constructing RootProperty
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ createBasicRootProperty();
+ verifyProperty();
+ }
+
+ private void createBasicRootProperty()
+ {
+ _property = new RootProperty();
+ _testblock = new byte[ 128 ];
+ int index = 0;
+
+ for (; index < 0x40; index++)
+ {
+ _testblock[ index ] = ( byte ) 0;
+ }
+ String name = "Root Entry";
+ int limit = Math.min(31, name.length());
+
+ _testblock[ index++ ] = ( byte ) (2 * (limit + 1));
+ _testblock[ index++ ] = ( byte ) 0;
+ _testblock[ index++ ] = ( byte ) 5;
+ _testblock[ index++ ] = ( byte ) 1;
+ for (; index < 0x50; index++)
+ {
+ _testblock[ index ] = ( byte ) 0xff;
+ }
+ for (; index < 0x74; index++)
+ {
+ _testblock[ index ] = ( byte ) 0;
+ }
+ _testblock[ index++ ] = ( byte ) PoiFSConstants.END_OF_CHAIN;
+ for (; index < 0x78; index++)
+ {
+ _testblock[ index ] = ( byte ) 0xff;
+ }
+ for (; index < 0x80; index++)
+ {
+ _testblock[ index ] = ( byte ) 0;
+ }
+ byte[] name_bytes = name.getBytes();
+
+ for (index = 0; index < limit; index++)
+ {
+ _testblock[ index * 2 ] = name_bytes[ index ];
+ }
+ }
+
+ private void verifyProperty()
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512);
+
+ _property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(_testblock.length, output.length);
+ for (int j = 0; j < _testblock.length; j++)
+ {
+ assertEquals("mismatch at offset " + j, _testblock[ j ],
+ output[ j ]);
+ }
+ }
+
+ /**
+ * test setSize
+ */
+
+ public void testSetSize()
+ {
+ for (int j = 0; j < 10; j++)
+ {
+ createBasicRootProperty();
+ _property.setSize(j);
+ assertEquals("trying block count of " + j, j * 64,
+ _property.getSize());
+ }
+ }
+
+ /**
+ * Test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+ byte[] input =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x08, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x46,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xC0, ( byte ) 0x5C, ( byte ) 0xE8, ( byte ) 0x23,
+ ( byte ) 0x9E, ( byte ) 0x6B, ( byte ) 0xC1, ( byte ) 0x01,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+
+ verifyReadingProperty(0, input, 0, "Root Entry");
+ }
+
+ private void verifyReadingProperty(int index, byte [] input, int offset,
+ String name)
+ throws IOException
+ {
+ RootProperty property = new RootProperty(index, input,
+ offset);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(128);
+ byte[] expected = new byte[ 128 ];
+
+ System.arraycopy(input, offset, expected, 0, 128);
+ property.writeData(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(128, output.length);
+ for (int j = 0; j < 128; j++)
+ {
+ assertEquals("mismatch at offset " + j, expected[ j ],
+ output[ j ]);
+ }
+ assertEquals(index, property.getIndex());
+ assertEquals(name, property.getName());
+ assertTrue(!property.getChildren().hasNext());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.property.RootProperty");
+ junit.textui.TestRunner.run(TestRootProperty.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java b/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java
new file mode 100644
index 0000000000..bd8a814fff
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/LocalProperty.java
@@ -0,0 +1,93 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import org.apache.poi.poifs.property.Property;
+
+class LocalProperty
+ extends Property
+{
+
+ /**
+ * Constructor TestProperty
+ *
+ * @param name name of the property
+ */
+
+ LocalProperty(String name)
+ {
+ super();
+ setName(name);
+ }
+
+ /**
+ * do nothing
+ */
+
+ protected void preWrite()
+ {
+ }
+
+ /**
+ * @return false
+ */
+
+ public boolean isDirectory()
+ {
+ return false;
+ }
+} // end package scope class LocalProperty
+
diff --git a/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java
new file mode 100644
index 0000000000..d4265ce87e
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java
@@ -0,0 +1,243 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+import java.io.*;
+
+import java.util.*;
+
+/**
+ * Class LocalRawDataBlockList
+ *
+ * @author Marc Johnson(mjohnson at apache dot org)
+ */
+
+public class LocalRawDataBlockList
+ extends RawDataBlockList
+{
+ private List _list;
+ private RawDataBlock[] _array;
+
+ /**
+ * Constructor LocalRawDataBlockList
+ *
+ * @exception IOException
+ */
+
+ public LocalRawDataBlockList()
+ throws IOException
+ {
+ super(new ByteArrayInputStream(new byte[ 0 ]));
+ _list = new ArrayList();
+ _array = null;
+ }
+
+ /**
+ * create and a new XBAT block
+ *
+ * @param start index of first BAT block
+ * @param end index of last BAT block
+ * @param chain index of next XBAT block
+ *
+ * @exception IOException
+ */
+
+ public void createNewXBATBlock(final int start, final int end,
+ final int chain)
+ throws IOException
+ {
+ byte[] data = new byte[ 512 ];
+ int offset = 0;
+
+ for (int k = start; k <= end; k++)
+ {
+ LittleEndian.putInt(data, offset, k);
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ while (offset != 508)
+ {
+ LittleEndian.putInt(data, offset, -1);
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ LittleEndian.putInt(data, offset, chain);
+ add(new RawDataBlock(new ByteArrayInputStream(data)));
+ }
+
+ /**
+ * create a BAT block and add it to the list
+ *
+ * @param start_index initial index for the block list
+ *
+ * @exception IOException
+ */
+
+ public void createNewBATBlock(final int start_index)
+ throws IOException
+ {
+ byte[] data = new byte[ 512 ];
+ int offset = 0;
+
+ for (int j = 0; j < 128; j++)
+ {
+ int index = start_index + j;
+
+ if (index % 256 == 0)
+ {
+ LittleEndian.putInt(data, offset, -1);
+ }
+ else if (index % 256 == 255)
+ {
+ LittleEndian.putInt(data, offset, -2);
+ }
+ else
+ {
+ LittleEndian.putInt(data, offset, index + 1);
+ }
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ add(new RawDataBlock(new ByteArrayInputStream(data)));
+ }
+
+ /**
+ * fill the list with dummy blocks
+ *
+ * @param count of blocks
+ *
+ * @exception IOException
+ */
+
+ public void fill(final int count)
+ throws IOException
+ {
+ int limit = 128 * count;
+
+ for (int j = _list.size(); j < limit; j++)
+ {
+ add(new RawDataBlock(new ByteArrayInputStream(new byte[ 0 ])));
+ }
+ }
+
+ /**
+ * add a new block
+ *
+ * @param block new block to add
+ */
+
+ public void add(RawDataBlock block)
+ {
+ _list.add(block);
+ }
+
+ /**
+ * override of remove method
+ *
+ * @param index of block to be removed
+ *
+ * @return desired block
+ *
+ * @exception IOException
+ */
+
+ public ListManagedBlock remove(final int index)
+ throws IOException
+ {
+ ensureArrayExists();
+ RawDataBlock rvalue = null;
+
+ try
+ {
+ rvalue = _array[ index ];
+ if (rvalue == null)
+ {
+ throw new IOException("index " + index + " is null");
+ }
+ _array[ index ] = null;
+ }
+ catch (ArrayIndexOutOfBoundsException ignored)
+ {
+ throw new IOException("Cannot remove block[ " + index
+ + " ]; out of range");
+ }
+ return rvalue;
+ }
+
+ /**
+ * remove the specified block from the list
+ *
+ * @param index the index of the specified block; if the index is
+ * out of range, that's ok
+ */
+
+ public void zap(final int index)
+ {
+ ensureArrayExists();
+ if ((index >= 0) && (index < _array.length))
+ {
+ _array[ index ] = null;
+ }
+ }
+
+ private void ensureArrayExists()
+ {
+ if (_array == null)
+ {
+ _array = ( RawDataBlock [] ) _list.toArray(new RawDataBlock[ 0 ]);
+ }
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java
new file mode 100644
index 0000000000..deb632da28
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestBATBlock.java
@@ -0,0 +1,320 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test BATBlock functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestBATBlock
+ extends TestCase
+{
+
+ /**
+ * Constructor TestBATBlock
+ *
+ * @param name
+ */
+
+ public TestBATBlock(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test the createBATBlocks method. The test involves setting up
+ * various arrays of int's and ensuring that the correct number of
+ * BATBlocks is created for each array, and that the data from
+ * each array is correctly written to the BATBlocks.
+ *
+ * @exception IOException
+ */
+
+ public void testCreateBATBlocks()
+ throws IOException
+ {
+
+ // test 0 length array (basic sanity)
+ BATBlock[] rvalue = BATBlock.createBATBlocks(createTestArray(0));
+
+ assertEquals(0, rvalue.length);
+
+ // test array of length 1
+ rvalue = BATBlock.createBATBlocks(createTestArray(1));
+ assertEquals(1, rvalue.length);
+ verifyContents(rvalue, 1);
+
+ // test array of length 127
+ rvalue = BATBlock.createBATBlocks(createTestArray(127));
+ assertEquals(1, rvalue.length);
+ verifyContents(rvalue, 127);
+
+ // test array of length 128
+ rvalue = BATBlock.createBATBlocks(createTestArray(128));
+ assertEquals(1, rvalue.length);
+ verifyContents(rvalue, 128);
+
+ // test array of length 129
+ rvalue = BATBlock.createBATBlocks(createTestArray(129));
+ assertEquals(2, rvalue.length);
+ verifyContents(rvalue, 129);
+ }
+
+ private int [] createTestArray(int count)
+ {
+ int[] rvalue = new int[ count ];
+
+ for (int j = 0; j < count; j++)
+ {
+ rvalue[ j ] = j;
+ }
+ return rvalue;
+ }
+
+ private void verifyContents(BATBlock [] blocks, int entries)
+ throws IOException
+ {
+ byte[] expected = new byte[ 512 * blocks.length ];
+
+ Arrays.fill(expected, ( byte ) 0xFF);
+ int offset = 0;
+
+ for (int j = 0; j < entries; j++)
+ {
+ expected[ offset++ ] = ( byte ) j;
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ }
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512
+ * blocks.length);
+
+ for (int j = 0; j < blocks.length; j++)
+ {
+ blocks[ j ].writeBlocks(stream);
+ }
+ byte[] actual = stream.toByteArray();
+
+ assertEquals(expected.length, actual.length);
+ for (int j = 0; j < expected.length; j++)
+ {
+ assertEquals(expected[ j ], actual[ j ]);
+ }
+ }
+
+ /**
+ * test createXBATBlocks
+ *
+ * @exception IOException
+ */
+
+ public void testCreateXBATBlocks()
+ throws IOException
+ {
+
+ // test 0 length array (basic sanity)
+ BATBlock[] rvalue = BATBlock.createXBATBlocks(createTestArray(0), 1);
+
+ assertEquals(0, rvalue.length);
+
+ // test array of length 1
+ rvalue = BATBlock.createXBATBlocks(createTestArray(1), 1);
+ assertEquals(1, rvalue.length);
+ verifyXBATContents(rvalue, 1, 1);
+
+ // test array of length 127
+ rvalue = BATBlock.createXBATBlocks(createTestArray(127), 1);
+ assertEquals(1, rvalue.length);
+ verifyXBATContents(rvalue, 127, 1);
+
+ // test array of length 128
+ rvalue = BATBlock.createXBATBlocks(createTestArray(128), 1);
+ assertEquals(2, rvalue.length);
+ verifyXBATContents(rvalue, 128, 1);
+
+ // test array of length 254
+ rvalue = BATBlock.createXBATBlocks(createTestArray(254), 1);
+ assertEquals(2, rvalue.length);
+ verifyXBATContents(rvalue, 254, 1);
+
+ // test array of length 255
+ rvalue = BATBlock.createXBATBlocks(createTestArray(255), 1);
+ assertEquals(3, rvalue.length);
+ verifyXBATContents(rvalue, 255, 1);
+ }
+
+ private void verifyXBATContents(BATBlock [] blocks, int entries,
+ int start_block)
+ throws IOException
+ {
+ byte[] expected = new byte[ 512 * blocks.length ];
+
+ Arrays.fill(expected, ( byte ) 0xFF);
+ int offset = 0;
+
+ for (int j = 0; j < entries; j++)
+ {
+ if ((j % 127) == 0)
+ {
+ if (j != 0)
+ {
+ offset += 4;
+ }
+ }
+ expected[ offset++ ] = ( byte ) j;
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ }
+ for (int j = 0; j < (blocks.length - 1); j++)
+ {
+ offset = 508 + (j * 512);
+ expected[ offset++ ] = ( byte ) (start_block + j + 1);
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ expected[ offset++ ] = 0;
+ }
+ offset = (blocks.length * 512) - 4;
+ expected[ offset++ ] = ( byte ) -2;
+ expected[ offset++ ] = ( byte ) -1;
+ expected[ offset++ ] = ( byte ) -1;
+ expected[ offset++ ] = ( byte ) -1;
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512
+ * blocks.length);
+
+ for (int j = 0; j < blocks.length; j++)
+ {
+ blocks[ j ].writeBlocks(stream);
+ }
+ byte[] actual = stream.toByteArray();
+
+ assertEquals(expected.length, actual.length);
+ for (int j = 0; j < expected.length; j++)
+ {
+ assertEquals("offset " + j, expected[ j ], actual[ j ]);
+ }
+ }
+
+ /**
+ * test calculateXBATStorageRequirements
+ */
+
+ public void testCalculateXBATStorageRequirements()
+ {
+ int[] blockCounts =
+ {
+ 0, 1, 127, 128
+ };
+ int[] requirements =
+ {
+ 0, 1, 1, 2
+ };
+
+ for (int j = 0; j < blockCounts.length; j++)
+ {
+ assertEquals(
+ "requirement for " + blockCounts[ j ], requirements[ j ],
+ BATBlock.calculateXBATStorageRequirements(blockCounts[ j ]));
+ }
+ }
+
+ /**
+ * test entriesPerBlock
+ */
+
+ public void testEntriesPerBlock()
+ {
+ assertEquals(128, BATBlock.entriesPerBlock());
+ }
+
+ /**
+ * test entriesPerXBATBlock
+ */
+
+ public void testEntriesPerXBATBlock()
+ {
+ assertEquals(127, BATBlock.entriesPerXBATBlock());
+ }
+
+ /**
+ * test getXBATChainOffset
+ */
+
+ public void testGetXBATChainOffset()
+ {
+ assertEquals(508, BATBlock.getXBATChainOffset());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing org.apache.poi.poifs.storage.BATBlock");
+ junit.textui.TestRunner.run(TestBATBlock.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java
new file mode 100644
index 0000000000..cd0c116b71
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableReader.java
@@ -0,0 +1,1402 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.common.PoiFSConstants;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+/**
+ * Class to test BlockAllocationTableReader functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestBlockAllocationTableReader
+ extends TestCase
+{
+
+ /**
+ * Constructor TestBlockAllocationTableReader
+ *
+ * @param name
+ */
+
+ public TestBlockAllocationTableReader(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test small block allocation table constructor
+ *
+ * @exception IOException
+ */
+
+ public void testSmallBATConstructor()
+ throws IOException
+ {
+
+ // need to create an array of raw blocks containing the SBAT,
+ // and a small document block list
+ byte[] sbat_data =
+ {
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+ RawDataBlock[] sbats =
+ {
+ new RawDataBlock(new ByteArrayInputStream(sbat_data))
+ };
+ byte[] sbt_data =
+ {
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x28, ( byte ) 0x00,
+ ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65,
+ ( byte ) 0x73, ( byte ) 0x2D, ( byte ) 0x55, ( byte ) 0x37,
+ ( byte ) 0x37, ( byte ) 0x32, ( byte ) 0x37, ( byte ) 0x39,
+ ( byte ) 0x32, ( byte ) 0x2D, ( byte ) 0x28, ( byte ) 0x31,
+ ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63,
+ ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30,
+ ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x40, ( byte ) 0x31,
+ ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x34, ( byte ) 0x31,
+ ( byte ) 0x2D, ( byte ) 0x33, ( byte ) 0x33, ( byte ) 0x29,
+ ( byte ) 0x2E, ( byte ) 0x5A, ( byte ) 0x44, ( byte ) 0x46,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x80, ( byte ) 0x27,
+ ( byte ) 0xE2, ( byte ) 0x40, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x80, ( byte ) 0x27,
+ ( byte ) 0xE2, ( byte ) 0x40, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x08, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x53, ( byte ) 0x61,
+ ( byte ) 0x76, ( byte ) 0x65, ( byte ) 0x64, ( byte ) 0x08,
+ ( byte ) 0x00, ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x53,
+ ( byte ) 0x2E, ( byte ) 0x48, ( byte ) 0x55, ( byte ) 0x53,
+ ( byte ) 0x53, ( byte ) 0x41, ( byte ) 0x49, ( byte ) 0x4E,
+ ( byte ) 0x20, ( byte ) 0x41, ( byte ) 0x20, ( byte ) 0x44,
+ ( byte ) 0x45, ( byte ) 0x56, ( byte ) 0x20, ( byte ) 0x4F,
+ ( byte ) 0x46, ( byte ) 0x46, ( byte ) 0x52, ( byte ) 0x20,
+ ( byte ) 0x55, ( byte ) 0x4B, ( byte ) 0x08, ( byte ) 0x00,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x31, ( byte ) 0x36,
+ ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74,
+ ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30,
+ ( byte ) 0x31, ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05,
+ ( byte ) 0x00, ( byte ) 0x35, ( byte ) 0x2E, ( byte ) 0x33,
+ ( byte ) 0x2E, ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00,
+ ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31,
+ ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63,
+ ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30,
+ ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74,
+ ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36,
+ ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74,
+ ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30,
+ ( byte ) 0x31, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x31, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x17, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x2E, ( byte ) 0x48, ( byte ) 0x55,
+ ( byte ) 0x53, ( byte ) 0x53, ( byte ) 0x41, ( byte ) 0x49,
+ ( byte ) 0x4E, ( byte ) 0x20, ( byte ) 0x41, ( byte ) 0x20,
+ ( byte ) 0x44, ( byte ) 0x45, ( byte ) 0x56, ( byte ) 0x20,
+ ( byte ) 0x4F, ( byte ) 0x46, ( byte ) 0x46, ( byte ) 0x52,
+ ( byte ) 0x20, ( byte ) 0x55, ( byte ) 0x4B, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00
+ };
+ RawDataBlock[] sbts = new RawDataBlock[ 7 ];
+ ByteArrayInputStream sbt_input = new ByteArrayInputStream(sbt_data);
+
+ for (int j = 0; j < 7; j++)
+ {
+ sbts[ j ] = new RawDataBlock(sbt_input);
+ }
+ SmallDocumentBlockList small_blocks =
+ new SmallDocumentBlockList(SmallDocumentBlock.extract(sbts));
+ BlockAllocationTableReader sbat =
+ new BlockAllocationTableReader(sbats, small_blocks);
+ boolean[] isUsed =
+ {
+ false, false, false, false, false, false, false, false, false,
+ false, true, true, true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, true, true, true,
+ true, true, true, true, true, true, true, true, true, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false
+ };
+ int[] nextIndex =
+ {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2,
+ -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
+ -2, 34, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+ };
+
+ for (int j = 0; j < 128; j++)
+ {
+ if (isUsed[ j ])
+ {
+ assertTrue("checking usage of block " + j, sbat.isUsed(j));
+ assertEquals("checking usage of block " + j, nextIndex[ j ],
+ sbat.getNextBlockIndex(j));
+ small_blocks.remove(j);
+ }
+ else
+ {
+ assertTrue("checking usage of block " + j, !sbat.isUsed(j));
+ try
+ {
+ small_blocks.remove(j);
+ fail("removing block " + j + " should have failed");
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+ }
+ }
+
+ /**
+ * Test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+
+ // create a document, minus the header block, and use that to
+ // create a RawDataBlockList. The document will exist entire
+ // of BATBlocks and XBATBlocks
+ //
+ // we will create two XBAT blocks, which will encompass 128
+ // BAT blocks between them, and two extra BAT blocks which
+ // will be in the block array passed to the constructor. This
+ // makes a total of 130 BAT blocks, which will encompass
+ // 16,640 blocks, for a file size of some 8.5 megabytes.
+ //
+ // Naturally, we'll fake that out ...
+ //
+ // map of blocks:
+ // block 0: xbat block 0
+ // block 1: xbat block 1
+ // block 2: bat block 0
+ // block 3: bat block 1
+ // blocks 4-130: bat blocks 2-128, contained in xbat block 0
+ // block 131: bat block 129, contained in xbat block 1
+ // blocks 132-16639: fictitious blocks, faked out. All blocks
+ // whose index is evenly divisible by 256
+ // will be unused
+ LocalRawDataBlockList list = new LocalRawDataBlockList();
+
+ list.createNewXBATBlock(4, 130, 1);
+ list.createNewXBATBlock(131, 131, -2);
+ for (int j = 0; j < 130; j++)
+ {
+ list.createNewBATBlock(j * 128);
+ }
+ list.fill(132);
+ int[] blocks =
+ {
+ 2, 3
+ };
+ BlockAllocationTableReader table =
+ new BlockAllocationTableReader(130, blocks, 2, 0, list);
+
+ for (int i = 0; i < (130 * 128); i++)
+ {
+ if (i % 256 == 0)
+ {
+ assertTrue("verifying block " + i + " is unused",
+ !table.isUsed(i));
+ }
+ else if (i % 256 == 255)
+ {
+ assertEquals("Verify end of chain for block " + i,
+ PoiFSConstants.END_OF_CHAIN,
+ table.getNextBlockIndex(i));
+ }
+ else
+ {
+ assertEquals("Verify next index for block " + i, i + 1,
+ table.getNextBlockIndex(i));
+ }
+ }
+ }
+
+ /**
+ * Test fetchBlocks
+ *
+ * @exception IOException
+ */
+
+ public void testFetchBlocks()
+ throws IOException
+ {
+
+ // strategy:
+ //
+ // 1. set up a single BAT block from which to construct a
+ // BAT. create nonsense blocks in the raw data block list
+ // corresponding to the indices in the BAT block.
+ // 2. The indices will include very short documents (0 and 1
+ // block in length), longer documents, and some screwed up
+ // documents (one with a loop, one that will peek into
+ // another document's data, one that includes an unused
+ // document, one that includes a reserved (BAT) block, one
+ // that includes a reserved (XBAT) block, and one that
+ // points off into space somewhere
+ LocalRawDataBlockList list = new LocalRawDataBlockList();
+ byte[] data = new byte[ 512 ];
+ int offset = 0;
+
+ LittleEndian.putInt(data, offset, -3); // for the BAT block itself
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 1: is at end of file already; start block = -2
+ // document 2: has only one block; start block = 1
+ LittleEndian.putInt(data, offset, -2);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 3: has a loop in it; start block = 2
+ LittleEndian.putInt(data, offset, 2);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 4: peeks into document 2's data; start block = 3
+ LittleEndian.putInt(data, offset, 4);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, 1);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 5: includes an unused block; start block = 5
+ LittleEndian.putInt(data, offset, 6);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, -1);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 6: includes a BAT block; start block = 7
+ LittleEndian.putInt(data, offset, 8);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, 0);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 7: includes an XBAT block; start block = 9
+ LittleEndian.putInt(data, offset, 10);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, -4);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 8: goes off into space; start block = 11;
+ LittleEndian.putInt(data, offset, 1000);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 9: no screw ups; start block = 12;
+ int index = 13;
+
+ for (; offset < 508; offset += LittleEndianConsts.INT_SIZE)
+ {
+ LittleEndian.putInt(data, offset, index++);
+ }
+ LittleEndian.putInt(data, offset, -2);
+ list.add(new RawDataBlock(new ByteArrayInputStream(data)));
+ list.fill(1);
+ int[] blocks =
+ {
+ 0
+ };
+ BlockAllocationTableReader table =
+ new BlockAllocationTableReader(1, blocks, 0, -2, list);
+ int[] start_blocks =
+ {
+ -2, 1, 2, 3, 5, 7, 9, 11, 12
+ };
+ int[] expected_length =
+ {
+ 0, 1, -1, -1, -1, -1, -1, -1, 116
+ };
+
+ for (int j = 0; j < start_blocks.length; j++)
+ {
+ try
+ {
+ ListManagedBlock[] dataBlocks =
+ table.fetchBlocks(start_blocks[ j ], list);
+
+ if (expected_length[ j ] == -1)
+ {
+ fail("document " + j + " should have failed");
+ }
+ else
+ {
+ assertEquals(expected_length[ j ], dataBlocks.length);
+ }
+ }
+ catch (IOException e)
+ {
+ if (expected_length[ j ] == -1)
+ {
+
+ // no problem, we expected a failure here
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.BlockAllocationTableReader");
+ junit.textui.TestRunner.run(TestBlockAllocationTableReader.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java
new file mode 100644
index 0000000000..c751f038b2
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockAllocationTableWriter.java
@@ -0,0 +1,231 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.common.PoiFSConstants;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+/**
+ * Class to test BlockAllocationTableWriter functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestBlockAllocationTableWriter
+ extends TestCase
+{
+
+ /**
+ * Constructor TestBlockAllocationTableWriter
+ *
+ * @param name
+ */
+
+ public TestBlockAllocationTableWriter(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test the allocateSpace method.
+ */
+
+ public void testAllocateSpace()
+ {
+ BlockAllocationTableWriter table =
+ new BlockAllocationTableWriter();
+ int[] blockSizes =
+ {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+ };
+ int expectedIndex = 0;
+
+ for (int j = 0; j < blockSizes.length; j++)
+ {
+ assertEquals(expectedIndex, table.allocateSpace(blockSizes[ j ]));
+ expectedIndex += blockSizes[ j ];
+ }
+ }
+
+ /**
+ * Test the createBlocks method
+ *
+ * @exception IOException
+ */
+
+ public void testCreateBlocks()
+ throws IOException
+ {
+ BlockAllocationTableWriter table = new BlockAllocationTableWriter();
+
+ table.allocateSpace(127);
+ table.createBlocks();
+ verifyBlocksCreated(table, 1);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(128);
+ table.createBlocks();
+ verifyBlocksCreated(table, 2);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(254);
+ table.createBlocks();
+ verifyBlocksCreated(table, 2);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(255);
+ table.createBlocks();
+ verifyBlocksCreated(table, 3);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(13843);
+ table.createBlocks();
+ verifyBlocksCreated(table, 109);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(13844);
+ table.createBlocks();
+ verifyBlocksCreated(table, 110);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(13969);
+ table.createBlocks();
+ verifyBlocksCreated(table, 110);
+ table = new BlockAllocationTableWriter();
+ table.allocateSpace(13970);
+ table.createBlocks();
+ verifyBlocksCreated(table, 111);
+ }
+
+ /**
+ * Test content produced by BlockAllocationTableWriter
+ *
+ * @exception IOException
+ */
+
+ public void testProduct()
+ throws IOException
+ {
+ BlockAllocationTableWriter table = new BlockAllocationTableWriter();
+
+ for (int k = 1; k <= 22; k++)
+ {
+ table.allocateSpace(k);
+ }
+ table.createBlocks();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ table.writeBlocks(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(1024, output.length);
+ byte[] expected = new byte[ 1024 ];
+
+ Arrays.fill(expected, ( byte ) 0xFF);
+ int offset = 0;
+ int block_index = 1;
+
+ for (int k = 1; k <= 22; k++)
+ {
+ int limit = k - 1;
+
+ for (int j = 0; j < limit; j++)
+ {
+ LittleEndian.putInt(expected, offset, block_index++);
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ LittleEndian.putInt(expected, offset,
+ PoiFSConstants.END_OF_CHAIN);
+ offset += 4;
+ block_index++;
+ }
+
+ // add BAT block indices
+ LittleEndian.putInt(expected, offset, block_index++);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(expected, offset, PoiFSConstants.END_OF_CHAIN);
+ for (int k = 0; k < expected.length; k++)
+ {
+ assertEquals("At offset " + k, expected[ k ], output[ k ]);
+ }
+ }
+
+ private void verifyBlocksCreated(BlockAllocationTableWriter table,
+ int count)
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ table.writeBlocks(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals(count * 512, output.length);
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.BlockAllocationTableWriter");
+ junit.textui.TestRunner.run(TestBlockAllocationTableWriter.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java
new file mode 100644
index 0000000000..dcd83fe0a8
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java
@@ -0,0 +1,362 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+/**
+ * Class to test BlockListImpl functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestBlockListImpl
+ extends TestCase
+{
+
+ /**
+ * Constructor TestBlockListImpl
+ *
+ * @param name
+ */
+
+ public TestBlockListImpl(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test zap method
+ *
+ * @exception IOException
+ */
+
+ public void testZap()
+ throws IOException
+ {
+ BlockListImpl list = new BlockListImpl();
+
+ // verify that you can zap anything
+ for (int j = -2; j < 10; j++)
+ {
+ list.zap(j);
+ }
+ RawDataBlock[] blocks = new RawDataBlock[ 5 ];
+
+ for (int j = 0; j < 5; j++)
+ {
+ blocks[ j ] =
+ new RawDataBlock(new ByteArrayInputStream(new byte[ 512 ]));
+ }
+ list.setBlocks(blocks);
+ for (int j = -2; j < 10; j++)
+ {
+ list.zap(j);
+ }
+
+ // verify that all blocks are gone
+ for (int j = 0; j < 5; j++)
+ {
+ try
+ {
+ list.remove(j);
+ fail("removing item " + j + " should not have succeeded");
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+ }
+
+ /**
+ * test remove method
+ *
+ * @exception IOException
+ */
+
+ public void testRemove()
+ throws IOException
+ {
+ BlockListImpl list = new BlockListImpl();
+ RawDataBlock[] blocks = new RawDataBlock[ 5 ];
+ byte[] data = new byte[ 512 * 5 ];
+
+ for (int j = 0; j < 5; j++)
+ {
+ Arrays.fill(data, j * 512, (j * 512) + 512, ( byte ) j);
+ }
+ ByteArrayInputStream stream = new ByteArrayInputStream(data);
+
+ for (int j = 0; j < 5; j++)
+ {
+ blocks[ j ] = new RawDataBlock(stream);
+ }
+ list.setBlocks(blocks);
+
+ // verify that you can't remove illegal indices
+ for (int j = -2; j < 10; j++)
+ {
+ if ((j < 0) || (j >= 5))
+ {
+ try
+ {
+ list.remove(j);
+ fail("removing item " + j + " should have failed");
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+ }
+
+ // verify we can safely and correctly remove all blocks
+ for (int j = 0; j < 5; j++)
+ {
+ byte[] output = list.remove(j).getData();
+
+ for (int k = 0; k < 512; k++)
+ {
+ assertEquals("testing block " + j + ", index " + k,
+ data[ (j * 512) + k ], output[ k ]);
+ }
+ }
+
+ // verify that all blocks are gone
+ for (int j = 0; j < 5; j++)
+ {
+ try
+ {
+ list.remove(j);
+ fail("removing item " + j + " should not have succeeded");
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+ }
+
+ /**
+ * test setBAT
+ *
+ * @exception IOException
+ */
+
+ public void testSetBAT()
+ throws IOException
+ {
+ BlockListImpl list = new BlockListImpl();
+
+ list.setBAT(null);
+ list.setBAT(new BlockAllocationTableReader());
+ try
+ {
+ list.setBAT(new BlockAllocationTableReader());
+ fail("second attempt should have failed");
+ }
+ catch (IOException ignored)
+ {
+ }
+ }
+
+ /**
+ * Test fetchBlocks
+ *
+ * @exception IOException
+ */
+
+ public void testFetchBlocks()
+ throws IOException
+ {
+
+ // strategy:
+ //
+ // 1. set up a single BAT block from which to construct a
+ // BAT. create nonsense blocks in the raw data block list
+ // corresponding to the indices in the BAT block.
+ // 2. The indices will include very short documents (0 and 1
+ // block in length), longer documents, and some screwed up
+ // documents (one with a loop, one that will peek into
+ // another document's data, one that includes an unused
+ // document, one that includes a reserved (BAT) block, one
+ // that includes a reserved (XBAT) block, and one that
+ // points off into space somewhere
+ BlockListImpl list = new BlockListImpl();
+ List raw_blocks = new ArrayList();
+ byte[] data = new byte[ 512 ];
+ int offset = 0;
+
+ LittleEndian.putInt(data, offset, -3); // for the BAT block itself
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 1: is at end of file already; start block = -2
+ // document 2: has only one block; start block = 1
+ LittleEndian.putInt(data, offset, -2);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 3: has a loop in it; start block = 2
+ LittleEndian.putInt(data, offset, 2);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 4: peeks into document 2's data; start block = 3
+ LittleEndian.putInt(data, offset, 4);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, 1);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 5: includes an unused block; start block = 5
+ LittleEndian.putInt(data, offset, 6);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, -1);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 6: includes a BAT block; start block = 7
+ LittleEndian.putInt(data, offset, 8);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, 0);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 7: includes an XBAT block; start block = 9
+ LittleEndian.putInt(data, offset, 10);
+ offset += LittleEndianConsts.INT_SIZE;
+ LittleEndian.putInt(data, offset, -4);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 8: goes off into space; start block = 11;
+ LittleEndian.putInt(data, offset, 1000);
+ offset += LittleEndianConsts.INT_SIZE;
+
+ // document 9: no screw ups; start block = 12;
+ int index = 13;
+
+ for (; offset < 508; offset += LittleEndianConsts.INT_SIZE)
+ {
+ LittleEndian.putInt(data, offset, index++);
+ }
+ LittleEndian.putInt(data, offset, -2);
+ raw_blocks.add(new RawDataBlock(new ByteArrayInputStream(data)));
+ for (int j = raw_blocks.size(); j < 128; j++)
+ {
+ raw_blocks.add(
+ new RawDataBlock(new ByteArrayInputStream(new byte[ 0 ])));
+ }
+ list.setBlocks(( RawDataBlock [] ) raw_blocks
+ .toArray(new RawDataBlock[ 0 ]));
+ int[] blocks =
+ {
+ 0
+ };
+ BlockAllocationTableReader table =
+ new BlockAllocationTableReader(1, blocks, 0, -2, list);
+ int[] start_blocks =
+ {
+ -2, 1, 2, 3, 5, 7, 9, 11, 12
+ };
+ int[] expected_length =
+ {
+ 0, 1, -1, -1, -1, -1, -1, -1, 116
+ };
+
+ for (int j = 0; j < start_blocks.length; j++)
+ {
+ try
+ {
+ ListManagedBlock[] dataBlocks =
+ list.fetchBlocks(start_blocks[ j ]);
+
+ if (expected_length[ j ] == -1)
+ {
+ fail("document " + j + " should have failed");
+ }
+ else
+ {
+ assertEquals(expected_length[ j ], dataBlocks.length);
+ }
+ }
+ catch (IOException e)
+ {
+ if (expected_length[ j ] == -1)
+ {
+
+ // no problem, we expected a failure here
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.storage.BlockListImpl");
+ junit.textui.TestRunner.run(TestBlockListImpl.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java
new file mode 100644
index 0000000000..e346c8556a
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestDocumentBlock.java
@@ -0,0 +1,216 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test DocumentBlock functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestDocumentBlock
+ extends TestCase
+{
+ static final private byte[] _testdata;
+
+ static
+ {
+ _testdata = new byte[ 2000 ];
+ for (int j = 0; j < _testdata.length; j++)
+ {
+ _testdata[ j ] = ( byte ) j;
+ }
+ }
+ ;
+
+ /**
+ * Constructor TestDocumentBlock
+ *
+ * @param name
+ */
+
+ public TestDocumentBlock(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test the writing DocumentBlock constructor.
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ ByteArrayInputStream input = new ByteArrayInputStream(_testdata);
+ int index = 0;
+ int size = 0;
+
+ while (true)
+ {
+ byte[] data = new byte[ Math.min(_testdata.length - index, 512) ];
+
+ System.arraycopy(_testdata, index, data, 0, data.length);
+ DocumentBlock block = new DocumentBlock(input);
+
+ verifyOutput(block, data);
+ size += block.size();
+ if (block.partiallyRead())
+ {
+ break;
+ }
+ index += 512;
+ }
+ assertEquals(_testdata.length, size);
+ }
+
+ /**
+ * test static read method
+ *
+ * @exception IOException
+ */
+
+ public void testRead()
+ throws IOException
+ {
+ DocumentBlock[] blocks = new DocumentBlock[ 4 ];
+ ByteArrayInputStream input = new ByteArrayInputStream(_testdata);
+
+ for (int j = 0; j < 4; j++)
+ {
+ blocks[ j ] = new DocumentBlock(input);
+ }
+ for (int j = 1; j <= 2000; j += 17)
+ {
+ byte[] buffer = new byte[ j ];
+ int offset = 0;
+
+ for (int k = 0; k < (2000 / j); k++)
+ {
+ DocumentBlock.read(blocks, buffer, offset);
+ for (int n = 0; n < buffer.length; n++)
+ {
+ assertEquals("checking byte " + (k * j) + n,
+ _testdata[ (k * j) + n ], buffer[ n ]);
+ }
+ offset += j;
+ }
+ }
+ }
+
+ /**
+ * Test 'reading' constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+ RawDataBlock input =
+ new RawDataBlock(new ByteArrayInputStream(_testdata));
+
+ verifyOutput(new DocumentBlock(input), input.getData());
+ }
+
+ private void verifyOutput(DocumentBlock block, byte [] input)
+ throws IOException
+ {
+ assertEquals(input.length, block.size());
+ if (input.length < 512)
+ {
+ assertTrue(block.partiallyRead());
+ }
+ else
+ {
+ assertTrue(!block.partiallyRead());
+ }
+ ByteArrayOutputStream output = new ByteArrayOutputStream(512);
+
+ block.writeBlocks(output);
+ byte[] copy = output.toByteArray();
+ int j = 0;
+
+ for (; j < input.length; j++)
+ {
+ assertEquals(input[ j ], copy[ j ]);
+ }
+ for (; j < 512; j++)
+ {
+ assertEquals(( byte ) 0xFF, copy[ j ]);
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.storage.DocumentBlock");
+ junit.textui.TestRunner.run(TestDocumentBlock.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java
new file mode 100644
index 0000000000..e02ccd2e76
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockReader.java
@@ -0,0 +1,283 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+/**
+ * Class to test HeaderBlockReader functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestHeaderBlockReader
+ extends TestCase
+{
+
+ /**
+ * Constructor TestHeaderBlockReader
+ *
+ * @param name
+ */
+
+ public TestHeaderBlockReader(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test creating a HeaderBlockReader
+ *
+ * @exception IOException
+ */
+
+ public void testConstructors()
+ throws IOException
+ {
+ byte[] content =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+ HeaderBlockReader block =
+ new HeaderBlockReader(new ByteArrayInputStream(content));
+
+ assertEquals(-2, block.getPropertyStart());
+
+ // verify we can't read a short block
+ byte[] shortblock = new byte[ 511 ];
+
+ System.arraycopy(content, 0, shortblock, 0, 511);
+ try
+ {
+ block =
+ new HeaderBlockReader(new ByteArrayInputStream(shortblock));
+ fail("Should have caught IOException reading a short block");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+
+ // try various forms of corruption
+ for (int index = 0; index < 8; index++)
+ {
+ content[ index ] = ( byte ) (content[ index ] - 1);
+ try
+ {
+ block =
+ new HeaderBlockReader(new ByteArrayInputStream(content));
+ fail("Should have caught IOException corrupting byte "
+ + index);
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+
+ // restore byte value
+ content[ index ] = ( byte ) (content[ index ] + 1);
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.HeaderBlockReader");
+ junit.textui.TestRunner.run(TestHeaderBlockReader.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java
new file mode 100644
index 0000000000..30a9f35c51
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestHeaderBlockWriter.java
@@ -0,0 +1,1061 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
+/**
+ * Class to test HeaderBlockWriter functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestHeaderBlockWriter
+ extends TestCase
+{
+
+ /**
+ * Constructor TestHeaderBlockWriter
+ *
+ * @param name
+ */
+
+ public TestHeaderBlockWriter(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test creating a HeaderBlockWriter
+ *
+ * @exception IOException
+ */
+
+ public void testConstructors()
+ throws IOException
+ {
+ HeaderBlockWriter block = new HeaderBlockWriter();
+ ByteArrayOutputStream output = new ByteArrayOutputStream(512);
+
+ block.writeBlocks(output);
+ byte[] copy = output.toByteArray();
+ byte[] expected =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+
+ assertEquals(expected.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected[ j ], copy[ j ]);
+ }
+
+ // verify we can read a 'good' HeaderBlockWriter (also test
+ // getPropertyStart)
+ block.setPropertyStart(0x87654321);
+ output = new ByteArrayOutputStream(512);
+ block.writeBlocks(output);
+ assertEquals(0x87654321,
+ new HeaderBlockReader(new ByteArrayInputStream(output
+ .toByteArray())).getPropertyStart());
+ }
+
+ /**
+ * Test setting the SBAT start block
+ *
+ * @exception IOException
+ */
+
+ public void testSetSBATStart()
+ throws IOException
+ {
+ HeaderBlockWriter block = new HeaderBlockWriter();
+
+ block.setSBATStart(0x01234567);
+ ByteArrayOutputStream output = new ByteArrayOutputStream(512);
+
+ block.writeBlocks(output);
+ byte[] copy = output.toByteArray();
+ byte[] expected =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+
+ assertEquals(expected.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected[ j ], copy[ j ]);
+ }
+ }
+
+ /**
+ * test setPropertyStart and getPropertyStart
+ *
+ * @exception IOException
+ */
+
+ public void testSetPropertyStart()
+ throws IOException
+ {
+ HeaderBlockWriter block = new HeaderBlockWriter();
+
+ block.setPropertyStart(0x01234567);
+ ByteArrayOutputStream output = new ByteArrayOutputStream(512);
+
+ block.writeBlocks(output);
+ byte[] copy = output.toByteArray();
+ byte[] expected =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+
+ assertEquals(expected.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected[ j ], copy[ j ]);
+ }
+ }
+
+ /**
+ * test setting the BAT blocks; also tests getBATCount,
+ * getBATArray, getXBATCount
+ *
+ * @exception IOException
+ */
+
+ public void testSetBATBlocks()
+ throws IOException
+ {
+
+ // first, a small set of blocks
+ HeaderBlockWriter block = new HeaderBlockWriter();
+ BATBlock[] xbats = block.setBATBlocks(5, 0x01234567);
+
+ assertEquals(0, xbats.length);
+ assertEquals(0, HeaderBlockWriter
+ .calculateXBATStorageRequirements(5));
+ ByteArrayOutputStream output = new ByteArrayOutputStream(512);
+
+ block.writeBlocks(output);
+ byte[] copy = output.toByteArray();
+ byte[] expected =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+
+ assertEquals(expected.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected[ j ], copy[ j ]);
+ }
+
+ // second, a full set of blocks (109 blocks)
+ block = new HeaderBlockWriter();
+ xbats = block.setBATBlocks(109, 0x01234567);
+ assertEquals(0, xbats.length);
+ assertEquals(0, HeaderBlockWriter
+ .calculateXBATStorageRequirements(109));
+ output = new ByteArrayOutputStream(512);
+ block.writeBlocks(output);
+ copy = output.toByteArray();
+ byte[] expected2 =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x70, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x71, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x72, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x73, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x74, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x75, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x76, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x77, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x78, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x79, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x81, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x82, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x83, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x84, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x85, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x86, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x87, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x88, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x89, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x90, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x91, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x92, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x93, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x94, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x95, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x96, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x97, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x98, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x99, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01
+ };
+
+ assertEquals(expected2.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected2[ j ], copy[ j ]);
+ }
+
+ // finally, a really large set of blocks (256 blocks)
+ block = new HeaderBlockWriter();
+ xbats = block.setBATBlocks(256, 0x01234567);
+ assertEquals(2, xbats.length);
+ assertEquals(2, HeaderBlockWriter
+ .calculateXBATStorageRequirements(256));
+ output = new ByteArrayOutputStream(512);
+ block.writeBlocks(output);
+ copy = output.toByteArray();
+ byte[] expected3 =
+ {
+ ( byte ) 0xD0, ( byte ) 0xCF, ( byte ) 0x11, ( byte ) 0xE0,
+ ( byte ) 0xA1, ( byte ) 0xB1, ( byte ) 0x1A, ( byte ) 0xE1,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3B, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0x09, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x46, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x68, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x69, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x6F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x70, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x71, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x72, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x73, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x74, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x75, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x76, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x77, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x78, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x79, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x7F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x80, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x81, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x82, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x83, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x84, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x85, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x86, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x87, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x88, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x89, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x8F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x90, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x91, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x92, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x93, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x94, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x95, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x96, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x97, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x98, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x99, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9A, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9B, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9C, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9D, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9E, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0x9F, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xA9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xAF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xB9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xBF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC4, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC5, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC6, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC7, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC8, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xC9, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCA, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCB, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCC, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCD, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCE, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xCF, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD0, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD1, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD2, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01,
+ ( byte ) 0xD3, ( byte ) 0x45, ( byte ) 0x23, ( byte ) 0x01
+ };
+
+ assertEquals(expected3.length, copy.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("testing byte " + j, expected3[ j ], copy[ j ]);
+ }
+ output = new ByteArrayOutputStream(1028);
+ xbats[ 0 ].writeBlocks(output);
+ xbats[ 1 ].writeBlocks(output);
+ copy = output.toByteArray();
+ int correct = 0x012345D4;
+ int offset = 0;
+ int k = 0;
+
+ for (; k < 127; k++)
+ {
+ assertEquals("XBAT entry " + k, correct,
+ LittleEndian.getInt(copy, offset));
+ correct++;
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ assertEquals("XBAT Chain", 0x01234567 + 257,
+ LittleEndian.getInt(copy, offset));
+ offset += LittleEndianConsts.INT_SIZE;
+ k++;
+ for (; k < 148; k++)
+ {
+ assertEquals("XBAT entry " + k, correct,
+ LittleEndian.getInt(copy, offset));
+ correct++;
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ for (; k < 255; k++)
+ {
+ assertEquals("XBAT entry " + k, -1,
+ LittleEndian.getInt(copy, offset));
+ offset += LittleEndianConsts.INT_SIZE;
+ }
+ assertEquals("XBAT End of chain", -2,
+ LittleEndian.getInt(copy, offset));
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.HeaderBlockWriter");
+ junit.textui.TestRunner.run(TestHeaderBlockWriter.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java
new file mode 100644
index 0000000000..b931ee61c3
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestPropertyBlock.java
@@ -0,0 +1,275 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.Property;
+
+/**
+ * Class to test PropertyBlock functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestPropertyBlock
+ extends TestCase
+{
+
+ /**
+ * Constructor TestPropertyBlock
+ *
+ * @param name
+ */
+
+ public TestPropertyBlock(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test constructing PropertyBlocks
+ *
+ * @exception IOException
+ */
+
+ public void testCreatePropertyBlocks()
+ throws IOException
+ {
+
+ // test with 0 properties
+ List properties = new ArrayList();
+ BlockWritable[] blocks =
+ PropertyBlock.createPropertyBlockArray(properties);
+
+ assertEquals(0, blocks.length);
+
+ // test with 1 property
+ properties.add(new LocalProperty("Root Entry"));
+ blocks = PropertyBlock.createPropertyBlockArray(properties);
+ assertEquals(1, blocks.length);
+ byte[] testblock = new byte[ 512 ];
+
+ for (int j = 0; j < 4; j++)
+ {
+ setDefaultBlock(testblock, j);
+ }
+ testblock[ 0x0000 ] = ( byte ) 'R';
+ testblock[ 0x0002 ] = ( byte ) 'o';
+ testblock[ 0x0004 ] = ( byte ) 'o';
+ testblock[ 0x0006 ] = ( byte ) 't';
+ testblock[ 0x0008 ] = ( byte ) ' ';
+ testblock[ 0x000A ] = ( byte ) 'E';
+ testblock[ 0x000C ] = ( byte ) 'n';
+ testblock[ 0x000E ] = ( byte ) 't';
+ testblock[ 0x0010 ] = ( byte ) 'r';
+ testblock[ 0x0012 ] = ( byte ) 'y';
+ testblock[ 0x0040 ] = ( byte ) 22;
+ verifyCorrect(blocks, testblock);
+
+ // test with 3 properties
+ properties.add(new LocalProperty("workbook"));
+ properties.add(new LocalProperty("summary"));
+ blocks = PropertyBlock.createPropertyBlockArray(properties);
+ assertEquals(1, blocks.length);
+ testblock[ 0x0080 ] = ( byte ) 'w';
+ testblock[ 0x0082 ] = ( byte ) 'o';
+ testblock[ 0x0084 ] = ( byte ) 'r';
+ testblock[ 0x0086 ] = ( byte ) 'k';
+ testblock[ 0x0088 ] = ( byte ) 'b';
+ testblock[ 0x008A ] = ( byte ) 'o';
+ testblock[ 0x008C ] = ( byte ) 'o';
+ testblock[ 0x008E ] = ( byte ) 'k';
+ testblock[ 0x00C0 ] = ( byte ) 18;
+ testblock[ 0x0100 ] = ( byte ) 's';
+ testblock[ 0x0102 ] = ( byte ) 'u';
+ testblock[ 0x0104 ] = ( byte ) 'm';
+ testblock[ 0x0106 ] = ( byte ) 'm';
+ testblock[ 0x0108 ] = ( byte ) 'a';
+ testblock[ 0x010A ] = ( byte ) 'r';
+ testblock[ 0x010C ] = ( byte ) 'y';
+ testblock[ 0x0140 ] = ( byte ) 16;
+ verifyCorrect(blocks, testblock);
+
+ // test with 4 properties
+ properties.add(new LocalProperty("wintery"));
+ blocks = PropertyBlock.createPropertyBlockArray(properties);
+ assertEquals(1, blocks.length);
+ testblock[ 0x0180 ] = ( byte ) 'w';
+ testblock[ 0x0182 ] = ( byte ) 'i';
+ testblock[ 0x0184 ] = ( byte ) 'n';
+ testblock[ 0x0186 ] = ( byte ) 't';
+ testblock[ 0x0188 ] = ( byte ) 'e';
+ testblock[ 0x018A ] = ( byte ) 'r';
+ testblock[ 0x018C ] = ( byte ) 'y';
+ testblock[ 0x01C0 ] = ( byte ) 16;
+ verifyCorrect(blocks, testblock);
+
+ // test with 5 properties
+ properties.add(new LocalProperty("foo"));
+ blocks = PropertyBlock.createPropertyBlockArray(properties);
+ assertEquals(2, blocks.length);
+ testblock = new byte[ 1024 ];
+ for (int j = 0; j < 8; j++)
+ {
+ setDefaultBlock(testblock, j);
+ }
+ testblock[ 0x0000 ] = ( byte ) 'R';
+ testblock[ 0x0002 ] = ( byte ) 'o';
+ testblock[ 0x0004 ] = ( byte ) 'o';
+ testblock[ 0x0006 ] = ( byte ) 't';
+ testblock[ 0x0008 ] = ( byte ) ' ';
+ testblock[ 0x000A ] = ( byte ) 'E';
+ testblock[ 0x000C ] = ( byte ) 'n';
+ testblock[ 0x000E ] = ( byte ) 't';
+ testblock[ 0x0010 ] = ( byte ) 'r';
+ testblock[ 0x0012 ] = ( byte ) 'y';
+ testblock[ 0x0040 ] = ( byte ) 22;
+ testblock[ 0x0080 ] = ( byte ) 'w';
+ testblock[ 0x0082 ] = ( byte ) 'o';
+ testblock[ 0x0084 ] = ( byte ) 'r';
+ testblock[ 0x0086 ] = ( byte ) 'k';
+ testblock[ 0x0088 ] = ( byte ) 'b';
+ testblock[ 0x008A ] = ( byte ) 'o';
+ testblock[ 0x008C ] = ( byte ) 'o';
+ testblock[ 0x008E ] = ( byte ) 'k';
+ testblock[ 0x00C0 ] = ( byte ) 18;
+ testblock[ 0x0100 ] = ( byte ) 's';
+ testblock[ 0x0102 ] = ( byte ) 'u';
+ testblock[ 0x0104 ] = ( byte ) 'm';
+ testblock[ 0x0106 ] = ( byte ) 'm';
+ testblock[ 0x0108 ] = ( byte ) 'a';
+ testblock[ 0x010A ] = ( byte ) 'r';
+ testblock[ 0x010C ] = ( byte ) 'y';
+ testblock[ 0x0140 ] = ( byte ) 16;
+ testblock[ 0x0180 ] = ( byte ) 'w';
+ testblock[ 0x0182 ] = ( byte ) 'i';
+ testblock[ 0x0184 ] = ( byte ) 'n';
+ testblock[ 0x0186 ] = ( byte ) 't';
+ testblock[ 0x0188 ] = ( byte ) 'e';
+ testblock[ 0x018A ] = ( byte ) 'r';
+ testblock[ 0x018C ] = ( byte ) 'y';
+ testblock[ 0x01C0 ] = ( byte ) 16;
+ testblock[ 0x0200 ] = ( byte ) 'f';
+ testblock[ 0x0202 ] = ( byte ) 'o';
+ testblock[ 0x0204 ] = ( byte ) 'o';
+ testblock[ 0x0240 ] = ( byte ) 8;
+ verifyCorrect(blocks, testblock);
+ }
+
+ private void setDefaultBlock(byte [] testblock, int j)
+ {
+ int base = j * 128;
+ int index = 0;
+
+ for (; index < 0x40; index++)
+ {
+ testblock[ base++ ] = ( byte ) 0;
+ }
+ testblock[ base++ ] = ( byte ) 2;
+ testblock[ base++ ] = ( byte ) 0;
+ index += 2;
+ for (; index < 0x44; index++)
+ {
+ testblock[ base++ ] = ( byte ) 0;
+ }
+ for (; index < 0x50; index++)
+ {
+ testblock[ base++ ] = ( byte ) 0xff;
+ }
+ for (; index < 0x80; index++)
+ {
+ testblock[ base++ ] = ( byte ) 0;
+ }
+ }
+
+ private void verifyCorrect(BlockWritable [] blocks, byte [] testblock)
+ throws IOException
+ {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream(512
+ * blocks.length);
+
+ for (int j = 0; j < blocks.length; j++)
+ {
+ blocks[ j ].writeBlocks(stream);
+ }
+ byte[] output = stream.toByteArray();
+
+ assertEquals(testblock.length, output.length);
+ for (int j = 0; j < testblock.length; j++)
+ {
+ assertEquals("mismatch at offset " + j, testblock[ j ],
+ output[ j ]);
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.storage.PropertyBlock");
+ junit.textui.TestRunner.run(TestPropertyBlock.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java
new file mode 100644
index 0000000000..3e508f5bc8
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlock.java
@@ -0,0 +1,176 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test RawDataBlock functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestRawDataBlock
+ extends TestCase
+{
+
+ /**
+ * Constructor TestRawDataBlock
+ *
+ * @param name
+ */
+
+ public TestRawDataBlock(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test creating a normal RawDataBlock
+ *
+ * @exception IOException
+ */
+
+ public void testNormalConstructor()
+ throws IOException
+ {
+ byte[] data = new byte[ 512 ];
+
+ for (int j = 0; j < 512; j++)
+ {
+ data[ j ] = ( byte ) j;
+ }
+ RawDataBlock block = new RawDataBlock(new ByteArrayInputStream(data));
+
+ assertTrue("Should not be at EOF", !block.eof());
+ byte[] out_data = block.getData();
+
+ assertEquals("Should be same length", data.length, out_data.length);
+ for (int j = 0; j < 512; j++)
+ {
+ assertEquals("Should be same value at offset " + j, data[ j ],
+ out_data[ j ]);
+ }
+ }
+
+ /**
+ * Test creating an empty RawDataBlock
+ *
+ * @exception IOException
+ */
+
+ public void testEmptyConstructor()
+ throws IOException
+ {
+ byte[] data = new byte[ 0 ];
+ RawDataBlock block = new RawDataBlock(new ByteArrayInputStream(data));
+
+ assertTrue("Should be at EOF", block.eof());
+ try
+ {
+ block.getData();
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * Test creating a short RawDataBlock
+ */
+
+ public void testShortConstructor()
+ {
+ for (int k = 1; k < 512; k++)
+ {
+ byte[] data = new byte[ k ];
+
+ for (int j = 0; j < k; j++)
+ {
+ data[ j ] = ( byte ) j;
+ }
+ RawDataBlock block = null;
+
+ try
+ {
+ block = new RawDataBlock(new ByteArrayInputStream(data));
+ fail("Should have thrown IOException creating short block");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.storage.RawDataBlock");
+ junit.textui.TestRunner.run(TestRawDataBlock.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java
new file mode 100644
index 0000000000..ef6114c55c
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestRawDataBlockList.java
@@ -0,0 +1,152 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test RawDataBlockList functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestRawDataBlockList
+ extends TestCase
+{
+
+ /**
+ * Constructor TestRawDataBlockList
+ *
+ * @param name
+ */
+
+ public TestRawDataBlockList(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test creating a normal RawDataBlockList
+ *
+ * @exception IOException
+ */
+
+ public void testNormalConstructor()
+ throws IOException
+ {
+ byte[] data = new byte[ 2560 ];
+
+ for (int j = 0; j < 2560; j++)
+ {
+ data[ j ] = ( byte ) j;
+ }
+ new RawDataBlockList(new ByteArrayInputStream(data));
+ }
+
+ /**
+ * Test creating an empty RawDataBlockList
+ *
+ * @exception IOException
+ */
+
+ public void testEmptyConstructor()
+ throws IOException
+ {
+ new RawDataBlockList(new ByteArrayInputStream(new byte[ 0 ]));
+ }
+
+ /**
+ * Test creating a short RawDataBlockList
+ */
+
+ public void testShortConstructor()
+ {
+ for (int k = 2049; k < 2560; k++)
+ {
+ byte[] data = new byte[ k ];
+
+ for (int j = 0; j < k; j++)
+ {
+ data[ j ] = ( byte ) j;
+ }
+ try
+ {
+ new RawDataBlockList(new ByteArrayInputStream(data));
+ fail("Should have thrown IOException creating short block");
+ }
+ catch (IOException ignored)
+ {
+
+ // as expected
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out
+ .println("Testing org.apache.poi.poifs.storage.RawDataBlockList");
+ junit.textui.TestRunner.run(TestRawDataBlockList.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java
new file mode 100644
index 0000000000..9289865acc
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java
@@ -0,0 +1,2181 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.property.PropertyTable;
+import org.apache.poi.poifs.property.RootProperty;
+
+/**
+ * Class to test SmallBlockTableReader functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestSmallBlockTableReader
+ extends TestCase
+{
+
+ /**
+ * Constructor TestSmallBlockTableReader
+ *
+ * @param name
+ */
+
+ public TestSmallBlockTableReader(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test reading constructor
+ *
+ * @exception IOException
+ */
+
+ public void testReadingConstructor()
+ throws IOException
+ {
+
+ // first, we need the raw data blocks
+ byte[] raw_data_array =
+ {
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x45, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x80, ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x32, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x68, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x36, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x55, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x6B, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x3C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x38, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x46, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x34, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x76, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4A, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2E, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x49, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x62, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x2A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x6C, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4F, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x78, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x50, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x67, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x59, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4E, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x66, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x55, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x64, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x44, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x63, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x13, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x54, ( byte ) 0x00, ( byte ) 0x52, ( byte ) 0x00,
+ ( byte ) 0x56, ( byte ) 0x00, ( byte ) 0x41, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x49, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x66, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x50, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x69, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x56, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x0F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x15, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x4D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x78, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x74, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x79, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x16, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x43, ( byte ) 0x00,
+ ( byte ) 0x75, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x17, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x6F, ( byte ) 0x00, ( byte ) 0x72, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x42, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x69, ( byte ) 0x00,
+ ( byte ) 0x6E, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x23, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x19, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x63, ( byte ) 0x00,
+ ( byte ) 0x68, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x21, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1A, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x67, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x6E, ( byte ) 0x00,
+ ( byte ) 0x74, ( byte ) 0x00, ( byte ) 0x73, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x4E, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6D, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x18, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1F, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x46, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x20, ( byte ) 0x00, ( byte ) 0x54, ( byte ) 0x00,
+ ( byte ) 0x79, ( byte ) 0x00, ( byte ) 0x70, ( byte ) 0x00,
+ ( byte ) 0x65, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x1E, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x53, ( byte ) 0x00, ( byte ) 0x75, ( byte ) 0x00,
+ ( byte ) 0x62, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x44, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x61, ( byte ) 0x00, ( byte ) 0x6C, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x12, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x24, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x1D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x41, ( byte ) 0x00, ( byte ) 0x4C, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x20, ( byte ) 0x00,
+ ( byte ) 0x43, ( byte ) 0x00, ( byte ) 0x6F, ( byte ) 0x00,
+ ( byte ) 0x64, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x14, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0x22, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x52, ( byte ) 0x00, ( byte ) 0x65, ( byte ) 0x00,
+ ( byte ) 0x6D, ( byte ) 0x00, ( byte ) 0x61, ( byte ) 0x00,
+ ( byte ) 0x72, ( byte ) 0x00, ( byte ) 0x6B, ( byte ) 0x00,
+ ( byte ) 0x73, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x10, ( byte ) 0x00, ( byte ) 0x02, ( byte ) 0x01,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x1D, ( byte ) 0x00,
+ ( byte ) 0x28, ( byte ) 0x41, ( byte ) 0x29, ( byte ) 0x31,
+ ( byte ) 0x36, ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63,
+ ( byte ) 0x74, ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30,
+ ( byte ) 0x30, ( byte ) 0x31, ( byte ) 0x20, ( byte ) 0x74,
+ ( byte ) 0x6F, ( byte ) 0x20, ( byte ) 0x31, ( byte ) 0x36,
+ ( byte ) 0x2D, ( byte ) 0x4F, ( byte ) 0x63, ( byte ) 0x74,
+ ( byte ) 0x2D, ( byte ) 0x32, ( byte ) 0x30, ( byte ) 0x30,
+ ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x18, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x05, ( byte ) 0x00,
+ ( byte ) 0x6A, ( byte ) 0x61, ( byte ) 0x6D, ( byte ) 0x65,
+ ( byte ) 0x73, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x01, ( byte ) 0x00,
+ ( byte ) 0x31, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x03, ( byte ) 0x00,
+ ( byte ) 0x47, ( byte ) 0x42, ( byte ) 0x50, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x11, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x01, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x02, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x03, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x04, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x05, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x06, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x07, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x08, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x09, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0x0B, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0C, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0x0D, ( byte ) 0x00, ( byte ) 0x00, ( byte ) 0x00,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFE, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF,
+ ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF, ( byte ) 0xFF
+ };
+ RawDataBlockList data_blocks =
+ new RawDataBlockList(new ByteArrayInputStream(raw_data_array));
+ int[] bat_array =
+ {
+ 15
+ };
+
+ // need to initialize the block list with a block allocation
+ // table
+ new BlockAllocationTableReader(1, bat_array, 0, -2, data_blocks);
+
+ // get property table from the document
+ PropertyTable properties = new PropertyTable(0, data_blocks);
+ RootProperty root = properties.getRoot();
+ BlockList bl =
+ SmallBlockTableReader.getSmallDocumentBlocks(data_blocks, root,
+ 14);
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.SmallBlockTableReader");
+ junit.textui.TestRunner.run(TestSmallBlockTableReader.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java
new file mode 100644
index 0000000000..fa3ae504d3
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableWriter.java
@@ -0,0 +1,165 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+import org.apache.poi.poifs.filesystem.POIFSDocument;
+import org.apache.poi.poifs.property.PropertyTable;
+import org.apache.poi.poifs.property.RootProperty;
+
+/**
+ * Class to test SmallBlockTableWriter functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestSmallBlockTableWriter
+ extends TestCase
+{
+
+ /**
+ * Constructor TestSmallBlockTableWriter
+ *
+ * @param name
+ */
+
+ public TestSmallBlockTableWriter(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test writing constructor
+ *
+ * @exception IOException
+ */
+
+ public void testWritingConstructor()
+ throws IOException
+ {
+ List documents = new ArrayList();
+
+ documents.add(
+ new POIFSDocument(
+ "doc340", new ByteArrayInputStream(new byte[ 340 ])));
+ documents.add(
+ new POIFSDocument(
+ "doc5000", new ByteArrayInputStream(new byte[ 5000 ])));
+ documents
+ .add(new POIFSDocument("doc0",
+ new ByteArrayInputStream(new byte[ 0 ])));
+ documents
+ .add(new POIFSDocument("doc1",
+ new ByteArrayInputStream(new byte[ 1 ])));
+ documents
+ .add(new POIFSDocument("doc2",
+ new ByteArrayInputStream(new byte[ 2 ])));
+ documents
+ .add(new POIFSDocument("doc3",
+ new ByteArrayInputStream(new byte[ 3 ])));
+ documents
+ .add(new POIFSDocument("doc4",
+ new ByteArrayInputStream(new byte[ 4 ])));
+ documents
+ .add(new POIFSDocument("doc5",
+ new ByteArrayInputStream(new byte[ 5 ])));
+ documents
+ .add(new POIFSDocument("doc6",
+ new ByteArrayInputStream(new byte[ 6 ])));
+ documents
+ .add(new POIFSDocument("doc7",
+ new ByteArrayInputStream(new byte[ 7 ])));
+ documents
+ .add(new POIFSDocument("doc8",
+ new ByteArrayInputStream(new byte[ 8 ])));
+ documents
+ .add(new POIFSDocument("doc9",
+ new ByteArrayInputStream(new byte[ 9 ])));
+ RootProperty root = new PropertyTable().getRoot();
+ SmallBlockTableWriter sbtw = new SmallBlockTableWriter(documents,
+ root);
+ BlockAllocationTableWriter bat = sbtw.getSBAT();
+
+ // 15 small blocks: 6 for doc340, 0 for doc5000 (too big), 0
+ // for doc0 (no storage needed), 1 each for doc1 through doc9
+ assertEquals(15 * 64, root.getSize());
+
+ // 15 small blocks rounds up to 2 big blocks
+ assertEquals(2, sbtw.countBlocks());
+ int start_block = 1000 + root.getStartBlock();
+
+ sbtw.setStartBlock(start_block);
+ assertEquals(start_block, root.getStartBlock());
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.SmallBlockTableWriter");
+ junit.textui.TestRunner.run(TestSmallBlockTableWriter.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java
new file mode 100644
index 0000000000..6176e5152b
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlock.java
@@ -0,0 +1,346 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import java.util.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test SmallDocumentBlock functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestSmallDocumentBlock
+ extends TestCase
+{
+ static final private byte[] _testdata;
+ static final private int _testdata_size = 2999;
+
+ static
+ {
+ _testdata = new byte[ _testdata_size ];
+ for (int j = 0; j < _testdata.length; j++)
+ {
+ _testdata[ j ] = ( byte ) j;
+ }
+ }
+ ;
+
+ /**
+ * constructor
+ *
+ * @param name
+ */
+
+ public TestSmallDocumentBlock(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test conversion from DocumentBlocks
+ *
+ * @exception IOException
+ */
+
+ public void testConvert1()
+ throws IOException
+ {
+ ByteArrayInputStream stream = new ByteArrayInputStream(_testdata);
+ List documents = new ArrayList();
+
+ while (true)
+ {
+ DocumentBlock block = new DocumentBlock(stream);
+
+ documents.add(block);
+ if (block.partiallyRead())
+ {
+ break;
+ }
+ }
+ SmallDocumentBlock[] results =
+ SmallDocumentBlock
+ .convert(( BlockWritable [] ) documents
+ .toArray(new DocumentBlock[ 0 ]), _testdata_size);
+
+ assertEquals("checking correct result size: ",
+ (_testdata_size + 63) / 64, results.length);
+ ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+ for (int j = 0; j < results.length; j++)
+ {
+ results[ j ].writeBlocks(output);
+ }
+ byte[] output_array = output.toByteArray();
+
+ assertEquals("checking correct output size: ", 64 * results.length,
+ output_array.length);
+ int index = 0;
+
+ for (; index < _testdata_size; index++)
+ {
+ assertEquals("checking output " + index, _testdata[ index ],
+ output_array[ index ]);
+ }
+ for (; index < output_array.length; index++)
+ {
+ assertEquals("checking output " + index, ( byte ) 0xff,
+ output_array[ index ]);
+ }
+ }
+
+ /**
+ * Test conversion from byte array
+ *
+ * @exception IOException;
+ *
+ * @exception IOException
+ */
+
+ public void testConvert2()
+ throws IOException
+ {
+ for (int j = 0; j < 320; j++)
+ {
+ byte[] array = new byte[ j ];
+
+ for (int k = 0; k < j; k++)
+ {
+ array[ k ] = ( byte ) k;
+ }
+ SmallDocumentBlock[] blocks = SmallDocumentBlock.convert(array,
+ 319);
+
+ assertEquals(5, blocks.length);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ for (int k = 0; k < blocks.length; k++)
+ {
+ blocks[ k ].writeBlocks(stream);
+ }
+ stream.close();
+ byte[] output = stream.toByteArray();
+
+ for (int k = 0; k < array.length; k++)
+ {
+ assertEquals(String.valueOf(k), array[ k ], output[ k ]);
+ }
+ for (int k = array.length; k < 320; k++)
+ {
+ assertEquals(String.valueOf(k), ( byte ) 0xFF, output[ k ]);
+ }
+ }
+ }
+
+ /**
+ * Test read method
+ *
+ * @exception IOException
+ */
+
+ public void testRead()
+ throws IOException
+ {
+ ByteArrayInputStream stream = new ByteArrayInputStream(_testdata);
+ List documents = new ArrayList();
+
+ while (true)
+ {
+ DocumentBlock block = new DocumentBlock(stream);
+
+ documents.add(block);
+ if (block.partiallyRead())
+ {
+ break;
+ }
+ }
+ SmallDocumentBlock[] blocks =
+ SmallDocumentBlock
+ .convert(( BlockWritable [] ) documents
+ .toArray(new DocumentBlock[ 0 ]), _testdata_size);
+
+ for (int j = 1; j <= _testdata_size; j += 38)
+ {
+ byte[] buffer = new byte[ j ];
+ int offset = 0;
+
+ for (int k = 0; k < (_testdata_size / j); k++)
+ {
+ SmallDocumentBlock.read(blocks, buffer, offset);
+ for (int n = 0; n < buffer.length; n++)
+ {
+ assertEquals("checking byte " + (k * j) + n,
+ _testdata[ (k * j) + n ], buffer[ n ]);
+ }
+ offset += j;
+ }
+ }
+ }
+
+ /**
+ * test fill
+ *
+ * @exception IOException
+ */
+
+ public void testFill()
+ throws IOException
+ {
+ for (int j = 0; j <= 8; j++)
+ {
+ List foo = new ArrayList();
+
+ for (int k = 0; k < j; k++)
+ {
+ foo.add(new Object());
+ }
+ int result = SmallDocumentBlock.fill(foo);
+
+ assertEquals("correct big block count: ", (j + 7) / 8, result);
+ assertEquals("correct small block count: ", 8 * result,
+ foo.size());
+ for (int m = j; m < foo.size(); m++)
+ {
+ BlockWritable block = ( BlockWritable ) foo.get(m);
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ block.writeBlocks(stream);
+ byte[] output = stream.toByteArray();
+
+ assertEquals("correct output size (block[ " + m + " ]): ",
+ 64, output.length);
+ for (int n = 0; n < 64; n++)
+ {
+ assertEquals("correct value (block[ " + m + " ][ " + n
+ + " ]): ", ( byte ) 0xff, output[ n ]);
+ }
+ }
+ }
+ }
+
+ /**
+ * test calcSize
+ */
+
+ public void testCalcSize()
+ {
+ for (int j = 0; j < 10; j++)
+ {
+ assertEquals("testing " + j, j * 64,
+ SmallDocumentBlock.calcSize(j));
+ }
+ }
+
+ /**
+ * test extract method
+ *
+ * @exception IOException
+ */
+
+ public void testExtract()
+ throws IOException
+ {
+ byte[] data = new byte[ 512 ];
+ int offset = 0;
+
+ for (int j = 0; j < 8; j++)
+ {
+ for (int k = 0; k < 64; k++)
+ {
+ data[ offset++ ] = ( byte ) (k + j);
+ }
+ }
+ RawDataBlock[] blocks =
+ {
+ new RawDataBlock(new ByteArrayInputStream(data))
+ };
+ List output = SmallDocumentBlock.extract(blocks);
+ Iterator iter = output.iterator();
+
+ offset = 0;
+ while (iter.hasNext())
+ {
+ byte[] out_data = (( SmallDocumentBlock ) iter.next()).getData();
+
+ assertEquals("testing block at offset " + offset, 64,
+ out_data.length);
+ for (int j = 0; j < out_data.length; j++)
+ {
+ assertEquals("testing byte at offset " + offset,
+ data[ offset ], out_data[ j ]);
+ offset++;
+ }
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.SmallDocumentBlock");
+ junit.textui.TestRunner.run(TestSmallDocumentBlock.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java
new file mode 100644
index 0000000000..02c3e7013f
--- /dev/null
+++ b/src/testcases/org/apache/poi/poifs/storage/TestSmallDocumentBlockList.java
@@ -0,0 +1,137 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.poifs.storage;
+
+import java.io.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test SmallDocumentBlockList functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestSmallDocumentBlockList
+ extends TestCase
+{
+
+ /**
+ * Constructor TestSmallDocumentBlockList
+ *
+ * @param name
+ */
+
+ public TestSmallDocumentBlockList(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test creating a SmallDocumentBlockList
+ *
+ * @exception IOException
+ */
+
+ public void testConstructor()
+ throws IOException
+ {
+ byte[] data = new byte[ 2560 ];
+
+ for (int j = 0; j < 2560; j++)
+ {
+ data[ j ] = ( byte ) j;
+ }
+ ByteArrayInputStream stream = new ByteArrayInputStream(data);
+ RawDataBlock[] blocks = new RawDataBlock[ 5 ];
+
+ for (int j = 0; j < 5; j++)
+ {
+ blocks[ j ] = new RawDataBlock(stream);
+ }
+ SmallDocumentBlockList sdbl =
+ new SmallDocumentBlockList(SmallDocumentBlock.extract(blocks));
+
+ // proof we added the blocks
+ for (int j = 0; j < 40; j++)
+ {
+ sdbl.remove(j);
+ }
+ try
+ {
+ sdbl.remove(41);
+ fail("there should have been an Earth-shattering ka-boom!");
+ }
+ catch (IOException ignored)
+ {
+
+ // it better have thrown one!!
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println(
+ "Testing org.apache.poi.poifs.storage.SmallDocumentBlockList");
+ junit.textui.TestRunner.run(TestSmallDocumentBlockList.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/LocalTestNode.java b/src/testcases/org/apache/poi/util/LocalTestNode.java
new file mode 100644
index 0000000000..85dba033cc
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/LocalTestNode.java
@@ -0,0 +1,164 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+class LocalTestNode
+ implements Comparable
+{
+ private Comparable _key;
+ private Comparable _value;
+
+ /**
+ * construct a LocalTestNode
+ *
+ * @param key value used to create the key and value
+ */
+
+ LocalTestNode(final int key)
+ {
+ _key = new Integer(key);
+ _value = String.valueOf(key);
+ }
+
+ /**
+ * @param key the unique key associated with the current node.
+ */
+
+ void setKey(Comparable key)
+ {
+ _key = key;
+ }
+
+ /**
+ * @return the unique key associated with the current node
+ */
+
+ Comparable getKey()
+ {
+ return _key;
+ }
+
+ /**
+ * @param value the unique value associated with the current node.
+ */
+
+ void setValue(Comparable value)
+ {
+ _value = value;
+ }
+
+ /**
+ * @return the unique value associated with the current node
+ */
+
+ Comparable getValue()
+ {
+ return _value;
+ }
+
+ /**
+ * Method compareTo
+ *
+ * @param o
+ *
+ * @return
+ */
+
+ public int compareTo(Object o)
+ {
+ LocalTestNode other = ( LocalTestNode ) o;
+ int rval = getKey().compareTo(other.getKey());
+
+ if (rval == 0)
+ {
+ rval = getValue().compareTo(other.getValue());
+ }
+ return rval;
+ }
+
+ /**
+ * Method equals
+ *
+ * @param o
+ *
+ * @return true if equal
+ */
+
+ public boolean equals(Object o)
+ {
+ if (o == null)
+ {
+ return false;
+ }
+ if (!(o.getClass().equals(this.getClass())))
+ {
+ return false;
+ }
+ LocalTestNode node = ( LocalTestNode ) o;
+
+ return (getKey().equals(node.getKey())
+ && getValue().equals(node.getValue()));
+ }
+
+ /**
+ * @return hash code
+ */
+
+ public int hashCode()
+ {
+ return getKey().hashCode() ^ getValue().hashCode();
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestBinaryTree.java b/src/testcases/org/apache/poi/util/TestBinaryTree.java
new file mode 100644
index 0000000000..238eb7c42f
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestBinaryTree.java
@@ -0,0 +1,2815 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.util.*;
+
+/**
+ * Class TestBinaryTree
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestBinaryTree
+ extends TestCase
+{
+
+ /**
+ * constructor
+ *
+ * @param name
+ */
+
+ public TestBinaryTree(final String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test size() method
+ */
+
+ public void testSize()
+ {
+ Map m = new BinaryTree();
+
+ assertEquals(0, m.size());
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ].getValue());
+ assertEquals(k + 1, m.size());
+ }
+ int count = m.size();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.remove(nodes[ k ].getKey());
+ --count;
+ assertEquals(count, m.size());
+
+ // failed remove should not affect size
+ m.remove(nodes[ k ].getKey());
+ assertEquals(count, m.size());
+ }
+ }
+
+ /**
+ * test IsEmpty() method
+ */
+
+ public void testIsEmpty()
+ {
+ Map m = new BinaryTree();
+
+ assertTrue(m.isEmpty());
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ].getValue());
+ assertTrue(!m.isEmpty());
+ }
+ int count = m.size();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.remove(nodes[ k ].getKey());
+ --count;
+ if (count == 0)
+ {
+ assertTrue(m.isEmpty());
+ }
+ else
+ {
+ assertTrue(!m.isEmpty());
+ }
+
+ // failed remove should not affect emptiness
+ m.remove(nodes[ k ].getKey());
+ if (count == 0)
+ {
+ assertTrue(m.isEmpty());
+ }
+ else
+ {
+ assertTrue(!m.isEmpty());
+ }
+ }
+ }
+
+ /**
+ * test containsKey() method
+ */
+
+ public void testContainsKey()
+ {
+ Map m = new BinaryTree();
+
+ try
+ {
+ m.containsKey(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ try
+ {
+ m.containsKey(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ assertTrue(!m.containsKey("foo"));
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ assertTrue(m.containsKey(nodes[ k ].getKey()));
+ }
+ assertTrue(!m.containsKey(new Integer(-1)));
+ try
+ {
+ m.containsKey("foo");
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.remove(nodes[ k ].getKey());
+ assertTrue(!m.containsKey(nodes[ k ].getKey()));
+ }
+ }
+
+ /**
+ * test containsValue() method
+ */
+
+ public void testContainsValue()
+ {
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ assertTrue(m.containsValue(nodes[ k ]));
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.remove(nodes[ k ].getKey());
+ assertTrue(!m.containsValue(nodes[ k ]));
+ }
+ }
+
+ /**
+ * test get() method
+ */
+
+ public void testGet()
+ {
+ Map m = new BinaryTree();
+
+ try
+ {
+ m.get(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ try
+ {
+ m.get(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ assertNull(m.get("foo"));
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ assertSame(m.get(nodes[ k ].getKey()), nodes[ k ]);
+ }
+ assertNull(m.get(new Integer(-1)));
+ try
+ {
+ m.get("foo");
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertNotNull(m.get(nodes[ k ].getKey()));
+ m.remove(nodes[ k ].getKey());
+ assertNull(m.get(nodes[ k ].getKey()));
+ }
+ }
+
+ /**
+ * test put() method
+ */
+
+ public void testPut()
+ {
+ Map m = new BinaryTree();
+
+ try
+ {
+ m.put(new Object(), "foo");
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ try
+ {
+ m.put(null, "foo");
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ m.put("foo", null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ m.put("foo", new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ LocalTestNode[] nodes = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertNull(m.put(nodes[ k ].getKey(), nodes[ k ].getValue()));
+ try
+ {
+ m.put(nodes[ k ].getKey(), "foo");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+ }
+ }
+
+ /**
+ * test remove() method
+ */
+
+ public void testRemove()
+ {
+ BinaryTree m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ try
+ {
+ m.remove(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ m.remove(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ assertNull(m.remove(new Integer(-1)));
+ try
+ {
+ m.remove("foo");
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k += 2)
+ {
+ Comparable key = nodes[ k ].getKey();
+
+ assertNotNull(m.get(key));
+ assertSame(nodes[ k ], m.remove(key));
+ assertNull(m.remove(key));
+ assertNull(m.get(key));
+ }
+ for (int k = 1; k < nodes.length; k += 2)
+ {
+ Comparable key = nodes[ k ].getKey();
+
+ assertNotNull(m.get(key));
+ assertSame(nodes[ k ], m.remove(key));
+ assertNull(m.remove(key));
+ assertNull(m.get(key));
+ }
+ assertTrue(m.isEmpty());
+ }
+
+ /**
+ * Method testPutAll
+ */
+
+ public void testPutAll()
+ {
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ Map m1 = new HashMap();
+
+ m1.put(null, "foo");
+ try
+ {
+ m.putAll(m1);
+ fail("Should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ m1 = new HashMap();
+ m1.put(new Object(), "bar");
+ try
+ {
+ m.putAll(m1);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ m1 = new HashMap();
+ m1.put("fubar", null);
+ try
+ {
+ m.putAll(m1);
+ fail("Should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ m1 = new HashMap();
+ m1.put("fubar", new Object());
+ try
+ {
+ m.putAll(m1);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ m1 = new HashMap();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ].getValue());
+ }
+ m.putAll(m1);
+ assertEquals(nodes.length, m.size());
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertSame(nodes[ k ].getValue(), m.get(nodes[ k ].getKey()));
+ }
+ }
+
+ /**
+ * test clear() method
+ */
+
+ public void testClear()
+ {
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ].getValue());
+ assertTrue(!m.isEmpty());
+ }
+ assertTrue(!m.isEmpty());
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertTrue(m.containsKey(nodes[ k ].getKey()));
+ assertTrue(m.containsValue(nodes[ k ].getValue()));
+ }
+ m.clear();
+ assertTrue(m.isEmpty());
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertTrue(!m.containsKey(nodes[ k ].getKey()));
+ assertTrue(!m.containsValue(nodes[ k ].getValue()));
+ }
+ }
+
+ /**
+ * test keySet() method
+ */
+
+ public void testKeySet()
+ {
+ testKeySet(new BinaryTree());
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testKeySet(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.keySet().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ Set s = m.keySet();
+
+ try
+ {
+ s.remove(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ s.remove(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ Comparable key = nodes[ k ].getKey();
+
+ assertTrue(s.remove(key));
+ assertTrue(!s.contains(key));
+ assertTrue(!m.containsKey(key));
+ assertTrue(!m.containsValue(nodes[ k ]));
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+ Collection c2 = new LinkedList();
+
+ c2.add(new Integer(-99));
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ c2.add(nodes[ k ].getKey());
+ }
+ assertTrue(m.keySet().containsAll(c1));
+ assertTrue(!m.keySet().containsAll(c2));
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ c1.add(new Integer(-55));
+ try
+ {
+ m.keySet().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ assertTrue(!m.keySet().retainAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 1)
+ {
+ c1.add(nodes[ k ].getKey());
+ }
+ }
+ assertTrue(m.keySet().retainAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(m.keySet().retainAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.keySet().removeAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 0)
+ {
+ c1.add(nodes[ k ].getKey());
+ }
+ }
+ assertTrue(m.keySet().removeAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ assertTrue(m.keySet().removeAll(c1));
+ assertTrue(m.size() == 0);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.keySet().clear();
+ assertTrue(m.size() == 0);
+ }
+
+ /**
+ * test values() method
+ */
+
+ public void testValues()
+ {
+ testValues(new BinaryTree());
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testValues(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.values().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ count = m.size();
+ Collection s = m.values();
+
+ for (int k = 0; k < count; k++)
+ {
+ assertTrue(s.remove(nodes[ k ]));
+ assertTrue(!s.contains(nodes[ k ]));
+ assertTrue(!m.containsKey(nodes[ k ].getKey()));
+ assertTrue(!m.containsValue(nodes[ k ]));
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+ Collection c2 = new LinkedList();
+
+ c2.add(new LocalTestNode(-123));
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ c2.add(nodes[ k ]);
+ }
+ assertTrue(m.values().containsAll(c1));
+ assertTrue(!m.values().containsAll(c2));
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ try
+ {
+ m.values().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ assertTrue(!m.values().retainAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 1)
+ {
+ c1.add(nodes[ k ]);
+ }
+ }
+ assertTrue(m.values().retainAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(m.values().retainAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.values().removeAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 0)
+ {
+ c1.add(nodes[ k ]);
+ }
+ }
+ assertTrue(m.values().removeAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ assertTrue(m.values().removeAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.values().clear();
+ assertEquals(0, m.size());
+ }
+
+ /**
+ * test entrySet() method
+ */
+
+ public void testEntrySet()
+ {
+ testEntrySet(new BinaryTree());
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testEntrySet(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ try
+ {
+ (( Map.Entry ) m.entrySet().iterator().next())
+ .setValue(new LocalTestNode(-1));
+ fail("Should have caught UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.entrySet().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ try
+ {
+ m.entrySet().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.entrySet().clear();
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int x = 0;
+
+ for (Iterator iter = m.entrySet().iterator(); iter.hasNext(); )
+ {
+ Map.Entry entry = ( Map.Entry ) iter.next();
+
+ assertSame(entry.getKey(), nodes[ x ].getKey());
+ assertSame(entry.getValue(), nodes[ x ]);
+ x++;
+ }
+ }
+
+ /**
+ * Method testEquals
+ */
+
+ public void testEquals()
+ {
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.equals(null));
+ assertEquals(m, m);
+ Map m1 = new HashMap();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertEquals(m, m1);
+ m1 = new BinaryTree();
+ for (int k = 0; k < (nodes.length - 1); k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.equals(m1));
+ m1 = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ LocalTestNode node1 = new LocalTestNode(-1000);
+
+ m1.put(node1.getKey(), node1);
+ assertTrue(!m.equals(m1));
+ m1 = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ nodes.length - (k + 1) ]);
+ }
+ assertTrue(!m.equals(m1));
+ m1 = new BinaryTree();
+ for (int k = nodes.length - 1; k >= 0; k--)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertEquals(m, m1);
+ }
+
+ /**
+ * test hashCode() method
+ */
+
+ public void testHashCode()
+ {
+ Map m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ Map m1 = new BinaryTree();
+
+ for (int k = nodes.length - 1; k >= 0; k--)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(m.hashCode() == m1.hashCode());
+ }
+
+ /**
+ * test constructors
+ */
+
+ public void testConstructors()
+ {
+ BinaryTree m = new BinaryTree();
+
+ assertTrue(m.isEmpty());
+ BinaryTree m1 = new BinaryTree(m);
+
+ assertTrue(m1.isEmpty());
+ m1 = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m1.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m = new BinaryTree(m1);
+ assertEquals(m, m1);
+ Map m2 = new HashMap();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m2.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m = new BinaryTree(m2);
+ assertEquals(m, m2);
+
+ // reject duplicated values
+ m2 = new HashMap();
+ m2.put("1", "foo");
+ m2.put("2", "foo");
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+ }
+
+ // reject null values
+ m2.put("2", null);
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+
+ // reject non-Comparable values
+ m2.put("2", new Object());
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+
+ // reject incompatible values
+ m2.put("2", new Integer(2));
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+
+ // reject incompatible keys
+ m2.remove("2");
+ m2.put(new Integer(2), "bad key");
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+
+ // reject non-Comparable keys
+ m2.clear();
+ m2.put("1", "foo");
+ m2.put(new Object(), "bad key");
+ try
+ {
+ m = new BinaryTree(m2);
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ }
+
+ /**
+ * test getKeyForValue() method
+ */
+
+ public void testGetKeyForValue()
+ {
+ BinaryTree m = new BinaryTree();
+
+ try
+ {
+ m.getKeyForValue(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ try
+ {
+ m.getKeyForValue(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ assertNull(m.getKeyForValue("foo"));
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ assertSame(m.getKeyForValue(nodes[ k ]), nodes[ k ].getKey());
+ }
+ assertNull(m.getKeyForValue(new LocalTestNode(-1)));
+ try
+ {
+ m.getKeyForValue("foo");
+ fail("Should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ assertNotNull(m.getKeyForValue(nodes[ k ]));
+ m.remove(nodes[ k ].getKey());
+ assertNull(m.getKeyForValue(nodes[ k ]));
+ }
+ }
+
+ /**
+ * test removeValue() method
+ */
+
+ public void testRemoveValue()
+ {
+ BinaryTree m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ try
+ {
+ m.removeValue(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ m.removeValue(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ assertNull(m.remove(new Integer(-1)));
+ try
+ {
+ m.removeValue("foo");
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k += 2)
+ {
+ assertNotNull(m.getKeyForValue(nodes[ k ]));
+ assertSame(nodes[ k ].getKey(), m.removeValue(nodes[ k ]));
+ assertNull(m.removeValue(nodes[ k ]));
+ assertNull(m.getKeyForValue(nodes[ k ]));
+ }
+ for (int k = 1; k < nodes.length; k += 2)
+ {
+ assertNotNull(m.getKeyForValue(nodes[ k ]));
+ assertSame(nodes[ k ].getKey(), m.removeValue(nodes[ k ]));
+ assertNull(m.removeValue(nodes[ k ]));
+ assertNull(m.getKeyForValue(nodes[ k ]));
+ }
+ assertTrue(m.isEmpty());
+ }
+
+ /**
+ * test entrySetByValue() method
+ */
+
+ public void testEntrySetByValue()
+ {
+ testEntrySetByValue(new BinaryTree());
+ BinaryTree m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testEntrySetByValue(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ try
+ {
+ (( Map.Entry ) m.entrySetByValue().iterator().next())
+ .setValue(new LocalTestNode(-1));
+ fail("Should have caught UnsupportedOperationException");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.entrySetByValue().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ try
+ {
+ m.entrySetByValue().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.entrySetByValue().clear();
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int x = 0;
+
+ for (Iterator iter = m.entrySetByValue().iterator(); iter.hasNext(); )
+ {
+ Map.Entry entry = ( Map.Entry ) iter.next();
+
+ assertSame(entry.getKey(), nodes[ x ].getKey());
+ assertSame(entry.getValue(), nodes[ x ]);
+ x++;
+ }
+ }
+
+ /**
+ * test keySetByValue() method
+ */
+
+ public void testKeySetByValue()
+ {
+ testKeySetByValue(new BinaryTree());
+ BinaryTree m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testKeySetByValue(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.keySetByValue().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ Set s = m.keySetByValue();
+
+ try
+ {
+ s.remove(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ s.remove(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ Comparable key = nodes[ k ].getKey();
+
+ assertTrue(s.remove(key));
+ assertTrue(!s.contains(key));
+ assertTrue(!m.containsKey(key));
+ assertTrue(!m.containsValue(nodes[ k ]));
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+ Collection c2 = new LinkedList();
+
+ c2.add(new Integer(-99));
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ c2.add(nodes[ k ].getKey());
+ }
+ assertTrue(m.keySetByValue().containsAll(c1));
+ assertTrue(!m.keySetByValue().containsAll(c2));
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ c1.add(new Integer(-55));
+ try
+ {
+ m.keySetByValue().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ assertTrue(!m.keySetByValue().retainAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 1)
+ {
+ c1.add(nodes[ k ].getKey());
+ }
+ }
+ assertTrue(m.keySetByValue().retainAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(m.keySetByValue().retainAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.keySetByValue().removeAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 0)
+ {
+ c1.add(nodes[ k ].getKey());
+ }
+ }
+ assertTrue(m.keySetByValue().removeAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ].getKey());
+ }
+ assertTrue(m.keySetByValue().removeAll(c1));
+ assertTrue(m.size() == 0);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.keySetByValue().clear();
+ assertTrue(m.size() == 0);
+ }
+
+ /**
+ * test valuesByValue() method
+ */
+
+ public void testValuesByValue()
+ {
+ testValuesByValue(new BinaryTree());
+ BinaryTree m = new BinaryTree();
+ LocalTestNode nodes[] = makeLocalNodes();
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ testValuesByValue(m);
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ int count = m.size();
+
+ for (Iterator iter = m.valuesByValue().iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ iter.remove();
+ --count;
+ assertEquals(count, m.size());
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ count = m.size();
+ Collection s = m.valuesByValue();
+
+ for (int k = 0; k < count; k++)
+ {
+ assertTrue(s.remove(nodes[ k ]));
+ assertTrue(!s.contains(nodes[ k ]));
+ assertTrue(!m.containsKey(nodes[ k ].getKey()));
+ assertTrue(!m.containsValue(nodes[ k ]));
+ }
+ assertTrue(m.isEmpty());
+ m = new BinaryTree();
+ Collection c1 = new LinkedList();
+ Collection c2 = new LinkedList();
+
+ c2.add(new LocalTestNode(-123));
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ c2.add(nodes[ k ]);
+ }
+ assertTrue(m.valuesByValue().containsAll(c1));
+ assertTrue(!m.valuesByValue().containsAll(c2));
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ try
+ {
+ m.valuesByValue().addAll(c1);
+ fail("should have caught exception of addAll()");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ assertTrue(!m.valuesByValue().retainAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 1)
+ {
+ c1.add(nodes[ k ]);
+ }
+ }
+ assertTrue(m.valuesByValue().retainAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(m.valuesByValue().retainAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ assertTrue(!m.valuesByValue().removeAll(c1));
+ assertEquals(nodes.length, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ if (k % 2 == 0)
+ {
+ c1.add(nodes[ k ]);
+ }
+ }
+ assertTrue(m.valuesByValue().removeAll(c1));
+ assertEquals(nodes.length / 2, m.size());
+ m = new BinaryTree();
+ c1 = new LinkedList();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ c1.add(nodes[ k ]);
+ }
+ assertTrue(m.valuesByValue().removeAll(c1));
+ assertEquals(0, m.size());
+ m = new BinaryTree();
+ for (int k = 0; k < nodes.length; k++)
+ {
+ m.put(nodes[ k ].getKey(), nodes[ k ]);
+ }
+ m.valuesByValue().clear();
+ assertEquals(0, m.size());
+ }
+
+ /* ********** START helper methods ********** */
+ private void testKeySet(final Map m)
+ {
+ Set s = m.keySet();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertTrue(s.contains(node.getKey()));
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertTrue(!s.contains(node.getKey()));
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ try
+ {
+ s.contains(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ s.contains(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < m.size(); k++)
+ {
+ assertTrue(s.contains(new Integer(k)));
+ }
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(count, s.size());
+
+ // force the map to have some content
+ m.put(node.getKey(), node);
+ Iterator iter = m.keySet().iterator();
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.remove(node2.getKey());
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ s.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Set remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ iter.next();
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ Iterator iter2 = s.iterator();
+
+ iter2.next();
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ try
+ {
+ iter2.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ int r_count = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ if (iter.next().equals(node.getKey()))
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ }
+ assertEquals(1, r_count);
+ assertTrue(!s.contains(node.getKey()));
+ r_count = 0;
+ m.put(node.getKey(), node);
+ Object[] a1 = s.toArray();
+
+ assertEquals(s.size(), a1.length);
+ if (a1.length > 1)
+ {
+ Comparable first = ( Comparable ) a1[ 0 ];
+
+ for (int k = 1; k < a1.length; k++)
+ {
+ Comparable second = ( Comparable ) a1[ k ];
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ iter = s.iterator();
+ first = ( Comparable ) iter.next();
+ for (; iter.hasNext(); )
+ {
+ Comparable second = ( Comparable ) iter.next();
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ String array2[] = ( String [] ) s.toArray(new String[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ Comparable array2[] =
+ ( Comparable [] ) s.toArray(new Comparable[ 0 ]);
+ Integer array3[] =
+ ( Integer [] ) s.toArray(new Integer[ s.size() ]);
+
+ if (array3.length > 1)
+ {
+ Integer first = array3[ 0 ];
+
+ for (int k = 1; k < array3.length; k++)
+ {
+ Integer second = array3[ k ];
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ s.add("foo");
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals(s, s);
+ Set hs = new HashSet(s);
+
+ assertEquals(s, hs);
+ assertEquals(hs, s);
+ assertTrue(s.hashCode() == hs.hashCode());
+ }
+
+ private void testKeySetByValue(final BinaryTree m)
+ {
+ Set s = m.keySetByValue();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertTrue(s.contains(node.getKey()));
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertTrue(!s.contains(node.getKey()));
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ try
+ {
+ s.contains(null);
+ fail("should have caught NullPointerException");
+ }
+ catch (NullPointerException ignored)
+ {
+ }
+ try
+ {
+ s.contains(new Object());
+ fail("should have caught ClassCastException");
+ }
+ catch (ClassCastException ignored)
+ {
+ }
+ for (int k = 0; k < m.size(); k++)
+ {
+ assertTrue(s.contains(new Integer(k)));
+ }
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(count, s.size());
+
+ // force the map to have some content
+ m.put(node.getKey(), node);
+ Iterator iter = m.keySetByValue().iterator();
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.remove(node2.getKey());
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ s.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Set remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ iter.next();
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ Iterator iter2 = s.iterator();
+
+ iter2.next();
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ try
+ {
+ iter2.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ int r_count = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ if (iter.next().equals(node.getKey()))
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ }
+ assertEquals(1, r_count);
+ assertTrue(!s.contains(node.getKey()));
+ r_count = 0;
+ m.put(node.getKey(), node);
+ Object[] a1 = s.toArray();
+
+ assertEquals(s.size(), a1.length);
+
+// if (a1.length > 1)
+// {
+// Comparable first = ( Comparable ) a1[ 0 ];
+// for (int k = 1; k < a1.length; k++)
+// {
+// Comparable second = ( Comparable ) a1[ k ];
+// assertTrue(first.compareTo(second) < 0);
+// first = second;
+// }
+// iter = s.iterator();
+// first = ( Comparable ) iter.next();
+// for (; iter.hasNext(); )
+// {
+// Comparable second = ( Comparable ) iter.next();
+// assertTrue(first.compareTo(second) < 0);
+// first = second;
+// }
+// }
+ try
+ {
+ String array2[] = ( String [] ) s.toArray(new String[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ Comparable array2[] =
+ ( Comparable [] ) s.toArray(new Comparable[ 0 ]);
+ Integer array3[] =
+ ( Integer [] ) s.toArray(new Integer[ s.size() ]);
+
+// if (array3.length > 1)
+// {
+// Integer first = array3[ 0 ];
+// for (int k = 1; k < array3.length; k++)
+// {
+// Integer second = array3[ k ];
+// assertTrue(first.compareTo(second) < 0);
+// first = second;
+// }
+// }
+ try
+ {
+ s.add("foo");
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals(s, s);
+ Set hs = new HashSet(s);
+
+ assertEquals(s, hs);
+ assertEquals(hs, s);
+ assertTrue(s.hashCode() == hs.hashCode());
+ }
+
+ private void testValues(Map m)
+ {
+ Collection s = m.values();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ assertTrue(!s.contains(node));
+ for (int k = 0; k < m.size(); k++)
+ {
+ assertTrue(s.contains(new LocalTestNode(k)));
+ }
+ m.put(node.getKey(), node);
+ assertTrue(s.contains(node));
+ m.remove(node.getKey());
+ assertTrue(!s.contains(node));
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(s.size(), count);
+ LocalTestNode node4 = new LocalTestNode(-4);
+
+ m.put(node4.getKey(), node4);
+ Iterator iter = s.iterator();
+
+ m.put(node.getKey(), node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ s.remove(node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Set remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ Iterator iter2 = s.iterator();
+
+ try
+ {
+ iter2.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ iter.next();
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ iter2 = s.iterator();
+ while (iter2.hasNext())
+ {
+ iter2.next();
+ }
+ int r_count = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ if (iter.next().equals(node3))
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ }
+ assertEquals(1, r_count);
+ assertTrue(!s.contains(node3));
+ Object[] a1 = s.toArray();
+
+ assertTrue(a1.length == s.size());
+ if (a1.length > 1)
+ {
+ Comparable first = ( Comparable ) a1[ 0 ];
+
+ for (int k = 1; k < a1.length; k++)
+ {
+ Comparable second = ( Comparable ) a1[ k ];
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ iter = s.iterator();
+ first = ( Comparable ) iter.next();
+ for (; iter.hasNext(); )
+ {
+ Comparable second = ( Comparable ) iter.next();
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ String array2[] = ( String [] ) s.toArray(new String[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ m.remove(node.getKey());
+ m.remove(node2.getKey());
+ m.remove(node3.getKey());
+ LocalTestNode array2[] =
+ ( LocalTestNode [] ) s.toArray(new LocalTestNode[ 0 ]);
+ LocalTestNode array3[] =
+ ( LocalTestNode [] ) s.toArray(new LocalTestNode[ s.size() ]);
+
+ if (array3.length > 1)
+ {
+ LocalTestNode first = array3[ 0 ];
+
+ for (int k = 1; k < array3.length; k++)
+ {
+ LocalTestNode second = array3[ k ];
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ s.add(node.getKey());
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals(s, s);
+ Set hs = new HashSet(s);
+
+ assertTrue(!s.equals(hs));
+ assertTrue(!hs.equals(s));
+ }
+
+ private void testValuesByValue(BinaryTree m)
+ {
+ Collection s = m.valuesByValue();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ assertTrue(!s.contains(node));
+ for (int k = 0; k < m.size(); k++)
+ {
+ assertTrue(s.contains(new LocalTestNode(k)));
+ }
+ m.put(node.getKey(), node);
+ assertTrue(s.contains(node));
+ m.remove(node.getKey());
+ assertTrue(!s.contains(node));
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(s.size(), count);
+ LocalTestNode node4 = new LocalTestNode(-4);
+
+ m.put(node4.getKey(), node4);
+ Iterator iter = s.iterator();
+
+ m.put(node.getKey(), node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ s.remove(node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Set remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ Iterator iter2 = s.iterator();
+
+ try
+ {
+ iter2.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ iter.next();
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ m.put(node2.getKey(), node2);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ iter2 = s.iterator();
+ while (iter2.hasNext())
+ {
+ iter2.next();
+ }
+ int r_count = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ if (iter.next().equals(node3))
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ }
+ assertEquals(1, r_count);
+ assertTrue(!s.contains(node3));
+ Object[] a1 = s.toArray();
+
+ assertTrue(a1.length == s.size());
+ try
+ {
+ String array2[] = ( String [] ) s.toArray(new String[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ m.remove(node.getKey());
+ m.remove(node2.getKey());
+ m.remove(node3.getKey());
+ LocalTestNode array2[] =
+ ( LocalTestNode [] ) s.toArray(new LocalTestNode[ 0 ]);
+ LocalTestNode array3[] =
+ ( LocalTestNode [] ) s.toArray(new LocalTestNode[ s.size() ]);
+
+ try
+ {
+ s.add(node.getKey());
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals(s, s);
+ Set hs = new HashSet(s);
+
+ assertTrue(!s.equals(hs));
+ assertTrue(!hs.equals(s));
+ }
+
+ private void testEntrySet(Map m)
+ {
+ Set s = m.entrySet();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(s.size(), count);
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ if (m.size() == 0)
+ {
+ m.put(node2.getKey(), node2);
+ }
+ Iterator iter = s.iterator();
+
+ m.put(node.getKey(), node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.remove(node2.getKey());
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ iter = s.iterator();
+ iter.next();
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ int r_count = 0;
+ int when = m.size() / 2;
+ int timer = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ if (timer == when)
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ timer++;
+ }
+ assertEquals(1, r_count);
+ Iterator iter2 = s.iterator();
+
+ try
+ {
+ iter2.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ iter2 = s.iterator();
+ while (iter2.hasNext())
+ {
+ iter2.next();
+ }
+ LocalTestNode node4 = new LocalTestNode(-4);
+
+ m.put(node4.getKey(), node4);
+ try
+ {
+ iter2.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ Object[] a1 = s.toArray();
+
+ assertTrue(a1.length == s.size());
+ if (a1.length > 1)
+ {
+ Map.Entry first = ( Map.Entry ) a1[ 0 ];
+
+ for (int k = 1; k < a1.length; k++)
+ {
+ Map.Entry second = ( Map.Entry ) a1[ k ];
+
+ assertTrue((( Comparable ) first.getKey())
+ .compareTo(( Comparable ) second.getKey()) < 0);
+ first = second;
+ }
+ iter = s.iterator();
+ first = ( Map.Entry ) iter.next();
+ for (; iter.hasNext(); )
+ {
+ Map.Entry second = ( Map.Entry ) iter.next();
+
+ assertTrue((( Comparable ) first.getKey())
+ .compareTo(( Comparable ) second.getKey()) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ Integer array2[] = ( Integer [] ) s.toArray(new Integer[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ Map.Entry array2[] = ( Map.Entry [] ) s.toArray(new Map.Entry[ 0 ]);
+ Map.Entry array3[] =
+ ( Map.Entry [] ) s.toArray(new Map.Entry[ s.size() ]);
+
+ if (array3.length > 1)
+ {
+ Comparable first =
+ ( Comparable ) (( Map.Entry ) array3[ 0 ]).getKey();
+
+ for (int k = 1; k < array3.length; k++)
+ {
+ Comparable second =
+ ( Comparable ) (( Map.Entry ) array3[ k ]).getKey();
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ s.add(node.getKey());
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals("SetEquality 1", s, s);
+ Set hs = new HashSet(s);
+
+ assertEquals("SetEquality 2", s, hs);
+ assertEquals("SetEquality 3", hs, s);
+ assertTrue(s.hashCode() == hs.hashCode());
+ }
+
+ private void testEntrySetByValue(BinaryTree m)
+ {
+ Set s = m.entrySetByValue();
+
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ LocalTestNode node = new LocalTestNode(-1);
+
+ m.put(node.getKey(), node);
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ m.remove(node.getKey());
+ assertEquals(m.size(), s.size());
+ assertEquals(m.isEmpty(), s.isEmpty());
+ int count = 0;
+
+ for (Iterator iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ ++count;
+ }
+ assertEquals(s.size(), count);
+ LocalTestNode node2 = new LocalTestNode(-2);
+
+ if (m.size() == 0)
+ {
+ m.put(node2.getKey(), node2);
+ }
+ Iterator iter = s.iterator();
+
+ m.put(node.getKey(), node);
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a put");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.remove(node2.getKey());
+ iter = s.iterator();
+ m.remove(node.getKey());
+ try
+ {
+ iter.next();
+ fail("next() should have thrown an exception after a Map remove");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ m.put(node.getKey(), node);
+ iter = s.iterator();
+ count = 0;
+ boolean terminated = false;
+
+ try
+ {
+ while (true)
+ {
+ iter.next();
+ ++count;
+ }
+ }
+ catch (NoSuchElementException ignored)
+ {
+ terminated = true;
+ }
+ assertTrue(terminated);
+ assertEquals(m.size(), count);
+ iter = s.iterator();
+ try
+ {
+ iter.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ iter = s.iterator();
+ iter.next();
+ LocalTestNode node3 = new LocalTestNode(-3);
+
+ m.put(node3.getKey(), node3);
+ try
+ {
+ iter.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ int r_count = 0;
+ int when = m.size() / 2;
+ int timer = 0;
+
+ for (iter = s.iterator(); iter.hasNext(); )
+ {
+ iter.next();
+ if (timer == when)
+ {
+ try
+ {
+ iter.remove();
+ ++r_count;
+ iter.remove();
+ fail("2nd remove should have failed");
+ }
+ catch (IllegalStateException ignored)
+ {
+ assertEquals(1, r_count);
+ }
+ }
+ timer++;
+ }
+ assertEquals(1, r_count);
+ Iterator iter2 = s.iterator();
+
+ try
+ {
+ iter2.remove();
+ fail("Should have thrown exception");
+ }
+ catch (IllegalStateException ignored)
+ {
+ }
+ iter2 = s.iterator();
+ while (iter2.hasNext())
+ {
+ iter2.next();
+ }
+ LocalTestNode node4 = new LocalTestNode(-4);
+
+ m.put(node4.getKey(), node4);
+ try
+ {
+ iter2.remove();
+ fail("should have thrown exception");
+ }
+ catch (ConcurrentModificationException ignored)
+ {
+ }
+ Object[] a1 = s.toArray();
+
+ assertTrue(a1.length == s.size());
+ if (a1.length > 1)
+ {
+ Map.Entry first = ( Map.Entry ) a1[ 0 ];
+
+ for (int k = 1; k < a1.length; k++)
+ {
+ Map.Entry second = ( Map.Entry ) a1[ k ];
+
+ assertTrue((( Comparable ) first.getKey())
+ .compareTo(( Comparable ) second.getKey()) < 0);
+ first = second;
+ }
+ iter = s.iterator();
+ first = ( Map.Entry ) iter.next();
+ for (; iter.hasNext(); )
+ {
+ Map.Entry second = ( Map.Entry ) iter.next();
+
+ assertTrue((( Comparable ) first.getKey())
+ .compareTo(( Comparable ) second.getKey()) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ Integer array2[] = ( Integer [] ) s.toArray(new Integer[ 0 ]);
+
+ if (s.size() != 0)
+ {
+ fail("should have caught exception creating an invalid array");
+ }
+ }
+ catch (ArrayStoreException ignored)
+ {
+ }
+ Map.Entry array2[] = ( Map.Entry [] ) s.toArray(new Map.Entry[ 0 ]);
+ Map.Entry array3[] =
+ ( Map.Entry [] ) s.toArray(new Map.Entry[ s.size() ]);
+
+ if (array3.length > 1)
+ {
+ Comparable first =
+ ( Comparable ) (( Map.Entry ) array3[ 0 ]).getValue();
+
+ for (int k = 1; k < array3.length; k++)
+ {
+ Comparable second =
+ ( Comparable ) (( Map.Entry ) array3[ k ]).getValue();
+
+ assertTrue(first.compareTo(second) < 0);
+ first = second;
+ }
+ }
+ try
+ {
+ s.add(node.getKey());
+ fail("should have thrown an exception");
+ }
+ catch (UnsupportedOperationException ignored)
+ {
+ }
+ assertTrue(!s.equals(null));
+ assertEquals("SetEquality 1", s, s);
+ Set hs = new HashSet(s);
+
+ assertEquals("SetEquality 2", s, hs);
+ assertEquals("SetEquality 3", hs, s);
+ assertTrue(s.hashCode() == hs.hashCode());
+ }
+
+ private LocalTestNode [] makeLocalNodes()
+ {
+ LocalTestNode nodes[] = new LocalTestNode[ 1023 ];
+
+ for (int k = 0; k < nodes.length; k++)
+ {
+ nodes[ k ] = new LocalTestNode(k);
+ }
+ return nodes;
+ }
+
+ /* ********** END helper methods ********** */
+
+ /**
+ * Method main
+ *
+ * @param unused_args
+ */
+
+ public static void main(final String unused_args[])
+ {
+ junit.textui.TestRunner.run(TestBinaryTree.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestBitField.java b/src/testcases/org/apache/poi/util/TestBitField.java
new file mode 100644
index 0000000000..b39f829d35
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestBitField.java
@@ -0,0 +1,326 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+/**
+ * Class to test BitField functionality
+ *
+ * @author Marc Johnson
+ * @author Glen Stampoultzis (gstamp@iprimus.com.au)
+ */
+
+public class TestBitField
+ extends TestCase
+{
+ private static BitField bf_multi = new BitField(0x3F80);
+ private static BitField bf_single = new BitField(0x4000);
+
+ /**
+ * Constructor TestBitField
+ *
+ * @param name
+ */
+
+ public TestBitField(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test the getValue() method
+ */
+
+ public void testGetValue()
+ {
+ assertEquals(bf_multi.getValue(-1), 127);
+ assertEquals(bf_multi.getValue(0), 0);
+ assertEquals(bf_single.getValue(-1), 1);
+ assertEquals(bf_single.getValue(0), 0);
+ }
+
+ /**
+ * test the getShortValue() method
+ */
+
+ public void testGetShortValue()
+ {
+ assertEquals(bf_multi.getShortValue(( short ) -1), ( short ) 127);
+ assertEquals(bf_multi.getShortValue(( short ) 0), ( short ) 0);
+ assertEquals(bf_single.getShortValue(( short ) -1), ( short ) 1);
+ assertEquals(bf_single.getShortValue(( short ) 0), ( short ) 0);
+ }
+
+ /**
+ * test the getRawValue() method
+ */
+
+ public void testGetRawValue()
+ {
+ assertEquals(bf_multi.getRawValue(-1), 0x3F80);
+ assertEquals(bf_multi.getRawValue(0), 0);
+ assertEquals(bf_single.getRawValue(-1), 0x4000);
+ assertEquals(bf_single.getRawValue(0), 0);
+ }
+
+ /**
+ * test the getShortRawValue() method
+ */
+
+ public void testGetShortRawValue()
+ {
+ assertEquals(bf_multi.getShortRawValue(( short ) -1),
+ ( short ) 0x3F80);
+ assertEquals(bf_multi.getShortRawValue(( short ) 0), ( short ) 0);
+ assertEquals(bf_single.getShortRawValue(( short ) -1),
+ ( short ) 0x4000);
+ assertEquals(bf_single.getShortRawValue(( short ) 0), ( short ) 0);
+ }
+
+ /**
+ * test the isSet() method
+ */
+
+ public void testIsSet()
+ {
+ assertTrue(!bf_multi.isSet(0));
+ for (int j = 0x80; j <= 0x3F80; j += 0x80)
+ {
+ assertTrue(bf_multi.isSet(j));
+ }
+ assertTrue(!bf_single.isSet(0));
+ assertTrue(bf_single.isSet(0x4000));
+ }
+
+ /**
+ * test the isAllSet() method
+ */
+
+ public void testIsAllSet()
+ {
+ for (int j = 0; j < 0x3F80; j += 0x80)
+ {
+ assertTrue(!bf_multi.isAllSet(j));
+ }
+ assertTrue(bf_multi.isAllSet(0x3F80));
+ assertTrue(!bf_single.isAllSet(0));
+ assertTrue(bf_single.isAllSet(0x4000));
+ }
+
+ /**
+ * test the setValue() method
+ */
+
+ public void testSetValue()
+ {
+ for (int j = 0; j < 128; j++)
+ {
+ assertEquals(bf_multi.getValue(bf_multi.setValue(0, j)), j);
+ assertEquals(bf_multi.setValue(0, j), j << 7);
+ }
+
+ // verify that excess bits are stripped off
+ assertEquals(bf_multi.setValue(0x3f80, 128), 0);
+ for (int j = 0; j < 2; j++)
+ {
+ assertEquals(bf_single.getValue(bf_single.setValue(0, j)), j);
+ assertEquals(bf_single.setValue(0, j), j << 14);
+ }
+
+ // verify that excess bits are stripped off
+ assertEquals(bf_single.setValue(0x4000, 2), 0);
+ }
+
+ /**
+ * test the setShortValue() method
+ */
+
+ public void testSetShortValue()
+ {
+ for (int j = 0; j < 128; j++)
+ {
+ assertEquals(bf_multi
+ .getShortValue(bf_multi
+ .setShortValue(( short ) 0, ( short ) j)), ( short ) j);
+ assertEquals(bf_multi.setShortValue(( short ) 0, ( short ) j),
+ ( short ) (j << 7));
+ }
+
+ // verify that excess bits are stripped off
+ assertEquals(bf_multi.setShortValue(( short ) 0x3f80, ( short ) 128),
+ ( short ) 0);
+ for (int j = 0; j < 2; j++)
+ {
+ assertEquals(bf_single
+ .getShortValue(bf_single
+ .setShortValue(( short ) 0, ( short ) j)), ( short ) j);
+ assertEquals(bf_single.setShortValue(( short ) 0, ( short ) j),
+ ( short ) (j << 14));
+ }
+
+ // verify that excess bits are stripped off
+ assertEquals(bf_single.setShortValue(( short ) 0x4000, ( short ) 2),
+ ( short ) 0);
+ }
+
+ public void testByte()
+ {
+ assertEquals(1, new BitField(1).setByteBoolean(( byte ) 0, true));
+ assertEquals(2, new BitField(2).setByteBoolean(( byte ) 0, true));
+ assertEquals(4, new BitField(4).setByteBoolean(( byte ) 0, true));
+ assertEquals(8, new BitField(8).setByteBoolean(( byte ) 0, true));
+ assertEquals(16, new BitField(16).setByteBoolean(( byte ) 0, true));
+ assertEquals(32, new BitField(32).setByteBoolean(( byte ) 0, true));
+ assertEquals(64, new BitField(64).setByteBoolean(( byte ) 0, true));
+ assertEquals(-128,
+ new BitField(128).setByteBoolean(( byte ) 0, true));
+ assertEquals(0, new BitField(1).setByteBoolean(( byte ) 1, false));
+ assertEquals(0, new BitField(2).setByteBoolean(( byte ) 2, false));
+ assertEquals(0, new BitField(4).setByteBoolean(( byte ) 4, false));
+ assertEquals(0, new BitField(8).setByteBoolean(( byte ) 8, false));
+ assertEquals(0, new BitField(16).setByteBoolean(( byte ) 16, false));
+ assertEquals(0, new BitField(32).setByteBoolean(( byte ) 32, false));
+ assertEquals(0, new BitField(64).setByteBoolean(( byte ) 64, false));
+ assertEquals(0, new BitField(128).setByteBoolean(( byte ) 128,
+ false));
+ assertEquals(-2, new BitField(1).setByteBoolean(( byte ) 255, false));
+ byte clearedBit = new BitField(0x40).setByteBoolean(( byte ) -63,
+ false);
+
+ assertEquals(false, new BitField(0x40).isSet(clearedBit));
+ }
+
+ /**
+ * test the clear() method
+ */
+
+ public void testClear()
+ {
+ assertEquals(bf_multi.clear(-1), 0xFFFFC07F);
+ assertEquals(bf_single.clear(-1), 0xFFFFBFFF);
+ }
+
+ /**
+ * test the clearShort() method
+ */
+
+ public void testClearShort()
+ {
+ assertEquals(bf_multi.clearShort(( short ) -1), ( short ) 0xC07F);
+ assertEquals(bf_single.clearShort(( short ) -1), ( short ) 0xBFFF);
+ }
+
+ /**
+ * test the set() method
+ */
+
+ public void testSet()
+ {
+ assertEquals(bf_multi.set(0), 0x3F80);
+ assertEquals(bf_single.set(0), 0x4000);
+ }
+
+ /**
+ * test the setShort() method
+ */
+
+ public void testSetShort()
+ {
+ assertEquals(bf_multi.setShort(( short ) 0), ( short ) 0x3F80);
+ assertEquals(bf_single.setShort(( short ) 0), ( short ) 0x4000);
+ }
+
+ /**
+ * test the setBoolean() method
+ */
+
+ public void testSetBoolean()
+ {
+ assertEquals(bf_multi.set(0), bf_multi.setBoolean(0, true));
+ assertEquals(bf_single.set(0), bf_single.setBoolean(0, true));
+ assertEquals(bf_multi.clear(-1), bf_multi.setBoolean(-1, false));
+ assertEquals(bf_single.clear(-1), bf_single.setBoolean(-1, false));
+ }
+
+ /**
+ * test the setShortBoolean() method
+ */
+
+ public void testSetShortBoolean()
+ {
+ assertEquals(bf_multi.setShort(( short ) 0),
+ bf_multi.setShortBoolean(( short ) 0, true));
+ assertEquals(bf_single.setShort(( short ) 0),
+ bf_single.setShortBoolean(( short ) 0, true));
+ assertEquals(bf_multi.clearShort(( short ) -1),
+ bf_multi.setShortBoolean(( short ) -1, false));
+ assertEquals(bf_single.clearShort(( short ) -1),
+ bf_single.setShortBoolean(( short ) -1, false));
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.BitField functionality");
+ junit.textui.TestRunner.run(TestBitField.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestByteField.java b/src/testcases/org/apache/poi/util/TestByteField.java
new file mode 100644
index 0000000000..351dc7a256
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestByteField.java
@@ -0,0 +1,251 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * Title: Unit test for ByteField class
+ * Description: Unit test for ByteField class
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestByteField
+ extends TestCase
+{
+
+ /**
+ * Constructor
+ *
+ * @param name
+ */
+
+ public TestByteField(String name)
+ {
+ super(name);
+ }
+
+ static private final byte[] _test_array =
+ {
+ Byte.MIN_VALUE, ( byte ) -1, ( byte ) 0, ( byte ) 1, Byte.MAX_VALUE
+ };
+
+ /**
+ * Test constructors.
+ */
+
+ public void testConstructors()
+ {
+ try
+ {
+ new ByteField(-1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ ByteField field = new ByteField(2);
+
+ assertEquals(( byte ) 0, field.get());
+ try
+ {
+ new ByteField(-1, ( byte ) 1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ByteField(2, ( byte ) 3);
+ assertEquals(( byte ) 3, field.get());
+ byte[] array = new byte[ 3 ];
+
+ try
+ {
+ new ByteField(-1, ( byte ) 1, array);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ByteField(2, ( byte ) 4, array);
+ assertEquals(( byte ) 4, field.get());
+ assertEquals(( byte ) 4, array[ 2 ]);
+ array = new byte[ 2 ];
+ try
+ {
+ new ByteField(2, ( byte ) 5, array);
+ fail("should have gotten ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array = new byte[ 1 ];
+ new ByteField(0, _test_array[ j ], array);
+ assertEquals(_test_array[ j ], new ByteField(0, array).get());
+ }
+ }
+
+ /**
+ * Test set() methods
+ */
+
+ public void testSet()
+ {
+ ByteField field = new ByteField(0);
+ byte[] array = new byte[ 1 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ assertEquals("testing _1 " + j, _test_array[ j ], field.get());
+ field = new ByteField(0);
+ field.set(_test_array[ j ], array);
+ assertEquals("testing _2 ", _test_array[ j ], field.get());
+ assertEquals("testing _3 ", _test_array[ j ], array[ 0 ]);
+ }
+ }
+
+ /**
+ * Test readFromBytes
+ */
+
+ public void testReadFromBytes()
+ {
+ ByteField field = new ByteField(1);
+ byte[] array = new byte[ 1 ];
+
+ try
+ {
+ field.readFromBytes(array);
+ fail("should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ByteField(0);
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array[ 0 ] = _test_array[ j ];
+ field.readFromBytes(array);
+ assertEquals("testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * Test readFromStream
+ *
+ * @exception IOException
+ */
+
+ public void testReadFromStream()
+ throws IOException
+ {
+ ByteField field = new ByteField(0);
+ byte[] buffer = new byte[ _test_array.length ];
+
+ System.arraycopy(_test_array, 0, buffer, 0, buffer.length);
+ ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
+
+ for (int j = 0; j < buffer.length; j++)
+ {
+ field.readFromStream(stream);
+ assertEquals("Testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * test writeToBytes
+ */
+
+ public void testWriteToBytes()
+ {
+ ByteField field = new ByteField(0);
+ byte[] array = new byte[ 1 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ field.writeToBytes(array);
+ assertEquals("testing ", _test_array[ j ], array[ 0 ]);
+ }
+ }
+
+ /**
+ * Main
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.ByteField functionality");
+ junit.textui.TestRunner.run(TestByteField.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestHexDump.java b/src/testcases/org/apache/poi/util/TestHexDump.java
new file mode 100644
index 0000000000..841d66873a
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestHexDump.java
@@ -0,0 +1,341 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestHexDump
+ extends TestCase
+{
+
+ /**
+ * Creates new TestHexDump
+ *
+ * @param name
+ */
+
+ public TestHexDump(String name)
+ {
+ super(name);
+ }
+
+ private char toHex(final int n)
+ {
+ char[] hexChars =
+ {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C',
+ 'D', 'E', 'F'
+ };
+
+ return hexChars[ n % 16 ];
+ }
+
+ /**
+ * test dump method
+ *
+ * @exception IOException
+ */
+
+ public void testDump()
+ throws IOException
+ {
+ byte[] testArray = new byte[ 256 ];
+
+ for (int j = 0; j < 256; j++)
+ {
+ testArray[ j ] = ( byte ) j;
+ }
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ HexDump.dump(testArray, 0, stream, 0);
+ byte[] outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ];
+
+ for (int j = 0; j < 16; j++)
+ {
+ int offset = (73 + HexDump.EOL.length()) * j;
+
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) ' ';
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) toHex(k);
+ outputArray[ offset++ ] = ( byte ) ' ';
+ }
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k);
+ }
+ System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset,
+ HexDump.EOL.getBytes().length);
+ }
+ byte[] actualOutput = stream.toByteArray();
+
+ assertEquals("array size mismatch", outputArray.length,
+ actualOutput.length);
+ for (int j = 0; j < outputArray.length; j++)
+ {
+ assertEquals("array[ " + j + "] mismatch", outputArray[ j ],
+ actualOutput[ j ]);
+ }
+
+ // verify proper behavior with non-zero offset
+ stream = new ByteArrayOutputStream();
+ HexDump.dump(testArray, 0x10000000, stream, 0);
+ outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ];
+ for (int j = 0; j < 16; j++)
+ {
+ int offset = (73 + HexDump.EOL.length()) * j;
+
+ outputArray[ offset++ ] = ( byte ) '1';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) ' ';
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) toHex(k);
+ outputArray[ offset++ ] = ( byte ) ' ';
+ }
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k);
+ }
+ System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset,
+ HexDump.EOL.getBytes().length);
+ }
+ actualOutput = stream.toByteArray();
+ assertEquals("array size mismatch", outputArray.length,
+ actualOutput.length);
+ for (int j = 0; j < outputArray.length; j++)
+ {
+ assertEquals("array[ " + j + "] mismatch", outputArray[ j ],
+ actualOutput[ j ]);
+ }
+
+ // verify proper behavior with negative offset
+ stream = new ByteArrayOutputStream();
+ HexDump.dump(testArray, 0xFF000000, stream, 0);
+ outputArray = new byte[ 16 * (73 + HexDump.EOL.length()) ];
+ for (int j = 0; j < 16; j++)
+ {
+ int offset = (73 + HexDump.EOL.length()) * j;
+
+ outputArray[ offset++ ] = ( byte ) 'F';
+ outputArray[ offset++ ] = ( byte ) 'F';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) ' ';
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toHex(j);
+ outputArray[ offset++ ] = ( byte ) toHex(k);
+ outputArray[ offset++ ] = ( byte ) ' ';
+ }
+ for (int k = 0; k < 16; k++)
+ {
+ outputArray[ offset++ ] = ( byte ) toAscii((j * 16) + k);
+ }
+ System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset,
+ HexDump.EOL.getBytes().length);
+ }
+ actualOutput = stream.toByteArray();
+ assertEquals("array size mismatch", outputArray.length,
+ actualOutput.length);
+ for (int j = 0; j < outputArray.length; j++)
+ {
+ assertEquals("array[ " + j + "] mismatch", outputArray[ j ],
+ actualOutput[ j ]);
+ }
+
+ // verify proper behavior with non-zero index
+ stream = new ByteArrayOutputStream();
+ HexDump.dump(testArray, 0x10000000, stream, 0x81);
+ outputArray = new byte[ (8 * (73 + HexDump.EOL.length())) - 1 ];
+ for (int j = 0; j < 8; j++)
+ {
+ int offset = (73 + HexDump.EOL.length()) * j;
+
+ outputArray[ offset++ ] = ( byte ) '1';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) '0';
+ outputArray[ offset++ ] = ( byte ) toHex(j + 8);
+ outputArray[ offset++ ] = ( byte ) '1';
+ outputArray[ offset++ ] = ( byte ) ' ';
+ for (int k = 0; k < 16; k++)
+ {
+ int index = 0x81 + (j * 16) + k;
+
+ if (index < 0x100)
+ {
+ outputArray[ offset++ ] = ( byte ) toHex(index / 16);
+ outputArray[ offset++ ] = ( byte ) toHex(index);
+ }
+ else
+ {
+ outputArray[ offset++ ] = ( byte ) ' ';
+ outputArray[ offset++ ] = ( byte ) ' ';
+ }
+ outputArray[ offset++ ] = ( byte ) ' ';
+ }
+ for (int k = 0; k < 16; k++)
+ {
+ int index = 0x81 + (j * 16) + k;
+
+ if (index < 0x100)
+ {
+ outputArray[ offset++ ] = ( byte ) toAscii(index);
+ }
+ }
+ System.arraycopy(HexDump.EOL.getBytes(), 0, outputArray, offset,
+ HexDump.EOL.getBytes().length);
+ }
+ actualOutput = stream.toByteArray();
+ assertEquals("array size mismatch", outputArray.length,
+ actualOutput.length);
+ for (int j = 0; j < outputArray.length; j++)
+ {
+ assertEquals("array[ " + j + "] mismatch", outputArray[ j ],
+ actualOutput[ j ]);
+ }
+
+ // verify proper behavior with negative index
+ try
+ {
+ HexDump.dump(testArray, 0x10000000, new ByteArrayOutputStream(),
+ -1);
+ fail("should have caught ArrayIndexOutOfBoundsException on negative index");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_exception)
+ {
+
+ // as expected
+ }
+
+ // verify proper behavior with index that is too large
+ try
+ {
+ HexDump.dump(testArray, 0x10000000, new ByteArrayOutputStream(),
+ testArray.length);
+ fail("should have caught ArrayIndexOutOfBoundsException on large index");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_exception)
+ {
+
+ // as expected
+ }
+
+ // verify proper behavior with null stream
+ try
+ {
+ HexDump.dump(testArray, 0x10000000, null, 0);
+ fail("should have caught IllegalArgumentException on negative index");
+ }
+ catch (IllegalArgumentException ignored_exception)
+ {
+
+ // as expected
+ }
+ }
+
+ private char toAscii(final int c)
+ {
+ char rval = '.';
+
+ if ((c >= 32) && (c <= 126))
+ {
+ rval = ( char ) c;
+ }
+ return rval;
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.HexDump functionality");
+ junit.textui.TestRunner.run(TestHexDump.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestIntList.java b/src/testcases/org/apache/poi/util/TestIntList.java
new file mode 100644
index 0000000000..28ba20e557
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestIntList.java
@@ -0,0 +1,723 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+/**
+ * Class to test IntList
+ *
+ * @author Marc Johnson
+ */
+
+public class TestIntList
+ extends TestCase
+{
+
+ /**
+ * Constructor TestIntList
+ *
+ * @param name
+ */
+
+ public TestIntList(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test the various IntListconstructors
+ */
+
+ public void testConstructors()
+ {
+ IntList list = new IntList();
+
+ assertTrue(list.isEmpty());
+ list.add(0);
+ list.add(1);
+ IntList list2 = new IntList(list);
+
+ assertEquals(list, list2);
+ IntList list3 = new IntList(2);
+
+ assertTrue(list3.isEmpty());
+ }
+
+ /**
+ * test the add method
+ */
+
+ public void testAdd()
+ {
+ IntList list = new IntList();
+ int[] testArray =
+ {
+ 0, 1, 2, 3, 5
+ };
+
+ for (int j = 0; j < testArray.length; j++)
+ {
+ list.add(testArray[ j ]);
+ }
+ for (int j = 0; j < testArray.length; j++)
+ {
+ assertEquals(testArray[ j ], list.get(j));
+ }
+ assertEquals(testArray.length, list.size());
+
+ // add at the beginning
+ list.add(0, -1);
+ assertEquals(-1, list.get(0));
+ assertEquals(testArray.length + 1, list.size());
+ for (int j = 0; j < testArray.length; j++)
+ {
+ assertEquals(testArray[ j ], list.get(j + 1));
+ }
+
+ // add in the middle
+ list.add(5, 4);
+ assertEquals(4, list.get(5));
+ assertEquals(testArray.length + 2, list.size());
+ for (int j = 0; j < list.size(); j++)
+ {
+ assertEquals(j - 1, list.get(j));
+ }
+
+ // add at the end
+ list.add(list.size(), 6);
+ assertEquals(testArray.length + 3, list.size());
+ for (int j = 0; j < list.size(); j++)
+ {
+ assertEquals(j - 1, list.get(j));
+ }
+
+ // add past end
+ try
+ {
+ list.add(list.size() + 1, 8);
+ fail("should have thrown exception");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+
+ // test growth
+ list = new IntList(0);
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ assertEquals(1000, list.size());
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.get(j));
+ }
+ list = new IntList(0);
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(0, j);
+ }
+ assertEquals(1000, list.size());
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.get(999 - j));
+ }
+ }
+
+ /**
+ * test the addAll method
+ */
+
+ public void testAddAll()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 5; j++)
+ {
+ list.add(j);
+ }
+ IntList list2 = new IntList(0);
+
+ list2.addAll(list);
+ list2.addAll(list);
+ assertEquals(2 * list.size(), list2.size());
+ for (int j = 0; j < 5; j++)
+ {
+ assertEquals(list2.get(j), j);
+ assertEquals(list2.get(j + list.size()), j);
+ }
+ IntList empty = new IntList();
+ int limit = list.size();
+
+ for (int j = 0; j < limit; j++)
+ {
+ assertTrue(list.addAll(j, empty));
+ assertEquals(limit, list.size());
+ }
+ try
+ {
+ list.addAll(limit + 1, empty);
+ fail("should have thrown an exception");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+
+ // try add at beginning
+ empty.addAll(0, list);
+ assertEquals(empty, list);
+
+ // try in the middle
+ empty.addAll(1, list);
+ assertEquals(2 * list.size(), empty.size());
+ assertEquals(list.get(0), empty.get(0));
+ assertEquals(list.get(0), empty.get(1));
+ assertEquals(list.get(1), empty.get(2));
+ assertEquals(list.get(1), empty.get(6));
+ assertEquals(list.get(2), empty.get(3));
+ assertEquals(list.get(2), empty.get(7));
+ assertEquals(list.get(3), empty.get(4));
+ assertEquals(list.get(3), empty.get(8));
+ assertEquals(list.get(4), empty.get(5));
+ assertEquals(list.get(4), empty.get(9));
+
+ // try at the end
+ empty.addAll(empty.size(), list);
+ assertEquals(3 * list.size(), empty.size());
+ assertEquals(list.get(0), empty.get(0));
+ assertEquals(list.get(0), empty.get(1));
+ assertEquals(list.get(0), empty.get(10));
+ assertEquals(list.get(1), empty.get(2));
+ assertEquals(list.get(1), empty.get(6));
+ assertEquals(list.get(1), empty.get(11));
+ assertEquals(list.get(2), empty.get(3));
+ assertEquals(list.get(2), empty.get(7));
+ assertEquals(list.get(2), empty.get(12));
+ assertEquals(list.get(3), empty.get(4));
+ assertEquals(list.get(3), empty.get(8));
+ assertEquals(list.get(3), empty.get(13));
+ assertEquals(list.get(4), empty.get(5));
+ assertEquals(list.get(4), empty.get(9));
+ assertEquals(list.get(4), empty.get(14));
+ }
+
+ /**
+ * test the clear method
+ */
+
+ public void testClear()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 500; j++)
+ {
+ list.add(j);
+ }
+ assertEquals(500, list.size());
+ list.clear();
+ assertEquals(0, list.size());
+ for (int j = 0; j < 500; j++)
+ {
+ list.add(j + 1);
+ }
+ assertEquals(500, list.size());
+ for (int j = 0; j < 500; j++)
+ {
+ assertEquals(j + 1, list.get(j));
+ }
+ }
+
+ /**
+ * test the contains method
+ */
+
+ public void testContains()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j += 2)
+ {
+ list.add(j);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ assertTrue(list.contains(j));
+ }
+ else
+ {
+ assertTrue(!list.contains(j));
+ }
+ }
+ }
+
+ /**
+ * test the containsAll method
+ */
+
+ public void testContainsAll()
+ {
+ IntList list = new IntList();
+
+ assertTrue(list.containsAll(list));
+ for (int j = 0; j < 10; j++)
+ {
+ list.add(j);
+ }
+ IntList list2 = new IntList(list);
+
+ assertTrue(list2.containsAll(list));
+ assertTrue(list.containsAll(list2));
+ list2.add(10);
+ assertTrue(list2.containsAll(list));
+ assertTrue(!list.containsAll(list2));
+ list.add(11);
+ assertTrue(!list2.containsAll(list));
+ assertTrue(!list.containsAll(list2));
+ }
+
+ /**
+ * test the equals method
+ */
+
+ public void testEquals()
+ {
+ IntList list = new IntList();
+
+ assertEquals(list, list);
+ assertTrue(!list.equals(null));
+ IntList list2 = new IntList(200);
+
+ assertEquals(list, list2);
+ assertEquals(list2, list);
+ assertEquals(list.hashCode(), list2.hashCode());
+ list.add(0);
+ list.add(1);
+ list2.add(1);
+ list2.add(0);
+ assertTrue(!list.equals(list2));
+ list2.removeValue(1);
+ list2.add(1);
+ assertEquals(list, list2);
+ assertEquals(list2, list);
+ list2.add(2);
+ assertTrue(!list.equals(list2));
+ assertTrue(!list2.equals(list));
+ }
+
+ /**
+ * test the get method
+ */
+
+ public void testGet()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (int j = 0; j < 1001; j++)
+ {
+ try
+ {
+ assertEquals(j, list.get(j));
+ if (j == 1000)
+ {
+ fail("should have gotten exception");
+ }
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ if (j != 1000)
+ {
+ fail("unexpected IndexOutOfBoundsException");
+ }
+ }
+ }
+ }
+
+ /**
+ * test the indexOf method
+ */
+
+ public void testIndexOf()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j / 2);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertEquals(j * 2, list.indexOf(j));
+ }
+ else
+ {
+ assertEquals(-1, list.indexOf(j));
+ }
+ }
+ }
+
+ /**
+ * test the isEmpty method
+ */
+
+ public void testIsEmpty()
+ {
+ IntList list1 = new IntList();
+ IntList list2 = new IntList(1000);
+ IntList list3 = new IntList(list1);
+
+ assertTrue(list1.isEmpty());
+ assertTrue(list2.isEmpty());
+ assertTrue(list3.isEmpty());
+ list1.add(1);
+ list2.add(2);
+ list3 = new IntList(list2);
+ assertTrue(!list1.isEmpty());
+ assertTrue(!list2.isEmpty());
+ assertTrue(!list3.isEmpty());
+ list1.clear();
+ list2.remove(0);
+ list3.removeValue(2);
+ assertTrue(list1.isEmpty());
+ assertTrue(list2.isEmpty());
+ assertTrue(list3.isEmpty());
+ }
+
+ /**
+ * test the lastIndexOf method
+ */
+
+ public void testLastIndexOf()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j / 2);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertEquals(1 + j * 2, list.lastIndexOf(j));
+ }
+ else
+ {
+ assertEquals(-1, list.indexOf(j));
+ }
+ }
+ }
+
+ /**
+ * test the remove method
+ */
+
+ public void testRemove()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.remove(0));
+ assertEquals(999 - j, list.size());
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(999 - j, list.remove(999 - j));
+ assertEquals(999 - j, list.size());
+ }
+ try
+ {
+ list.remove(0);
+ fail("should have caught IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test the removeValue method
+ */
+
+ public void testRemoveValue()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j / 2);
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertTrue(list.removeValue(j));
+ assertTrue(list.removeValue(j));
+ }
+ assertTrue(!list.removeValue(j));
+ }
+ }
+
+ /**
+ * test the removeAll method
+ */
+
+ public void testRemoveAll()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ IntList listCopy = new IntList(list);
+ IntList listOdd = new IntList();
+ IntList listEven = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ listEven.add(j);
+ }
+ else
+ {
+ listOdd.add(j);
+ }
+ }
+ list.removeAll(listEven);
+ assertEquals(list, listOdd);
+ list.removeAll(listOdd);
+ assertTrue(list.isEmpty());
+ listCopy.removeAll(listOdd);
+ assertEquals(listCopy, listEven);
+ listCopy.removeAll(listEven);
+ assertTrue(listCopy.isEmpty());
+ }
+
+ /**
+ * test the retainAll method
+ */
+
+ public void testRetainAll()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ IntList listCopy = new IntList(list);
+ IntList listOdd = new IntList();
+ IntList listEven = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ listEven.add(j);
+ }
+ else
+ {
+ listOdd.add(j);
+ }
+ }
+ list.retainAll(listOdd);
+ assertEquals(list, listOdd);
+ list.retainAll(listEven);
+ assertTrue(list.isEmpty());
+ listCopy.retainAll(listEven);
+ assertEquals(listCopy, listEven);
+ listCopy.retainAll(listOdd);
+ assertTrue(listCopy.isEmpty());
+ }
+
+ /**
+ * test the set method
+ */
+
+ public void testSet()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (int j = 0; j < 1001; j++)
+ {
+ try
+ {
+ list.set(j, j + 1);
+ if (j == 1000)
+ {
+ fail("Should have gotten exception");
+ }
+ assertEquals(j + 1, list.get(j));
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ if (j != 1000)
+ {
+ fail("premature exception");
+ }
+ }
+ }
+ }
+
+ /**
+ * test the size method
+ */
+
+ public void testSize()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.size());
+ list.add(j);
+ assertEquals(j + 1, list.size());
+ }
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(1000 - j, list.size());
+ list.removeValue(j);
+ assertEquals(999 - j, list.size());
+ }
+ }
+
+ /**
+ * test the toArray method
+ */
+
+ public void testToArray()
+ {
+ IntList list = new IntList();
+
+ for (int j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ int[] a1 = list.toArray();
+
+ assertEquals(a1.length, list.size());
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(a1[ j ], list.get(j));
+ }
+ int[] a2 = new int[ list.size() ];
+ int[] a3 = list.toArray(a2);
+
+ assertSame(a2, a3);
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(a2[ j ], list.get(j));
+ }
+ int[] aShort = new int[ list.size() - 1 ];
+ int[] aLong = new int[ list.size() + 1 ];
+ int[] a4 = list.toArray(aShort);
+ int[] a5 = list.toArray(aLong);
+
+ assertTrue(a4 != aShort);
+ assertTrue(a5 != aLong);
+ assertEquals(a4.length, list.size());
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(a3[ j ], list.get(j));
+ }
+ assertEquals(a5.length, list.size());
+ for (int j = 0; j < 1000; j++)
+ {
+ assertEquals(a5[ j ], list.get(j));
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param unused_args
+ */
+
+ public static void main(String [] unused_args)
+ {
+ System.out.println("Testing util.IntList functionality");
+ junit.textui.TestRunner.run(TestIntList.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestIntegerField.java b/src/testcases/org/apache/poi/util/TestIntegerField.java
new file mode 100644
index 0000000000..df57c86d87
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestIntegerField.java
@@ -0,0 +1,279 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * Test IntegerField code
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestIntegerField
+ extends TestCase
+{
+
+ /**
+ * Constructor
+ *
+ * @param name
+ */
+
+ public TestIntegerField(String name)
+ {
+ super(name);
+ }
+
+ static private final int[] _test_array =
+ {
+ Integer.MIN_VALUE, -1, 0, 1, Integer.MAX_VALUE
+ };
+
+ /**
+ * Test constructors.
+ */
+
+ public void testConstructors()
+ {
+ try
+ {
+ new IntegerField(-1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ IntegerField field = new IntegerField(2);
+
+ assertEquals(0, field.get());
+ try
+ {
+ new IntegerField(-1, 1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new IntegerField(2, 0x12345678);
+ assertEquals(0x12345678, field.get());
+ byte[] array = new byte[ 6 ];
+
+ try
+ {
+ new IntegerField(-1, 1, array);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new IntegerField(2, 0x12345678, array);
+ assertEquals(0x12345678, field.get());
+ assertEquals(( byte ) 0x78, array[ 2 ]);
+ assertEquals(( byte ) 0x56, array[ 3 ]);
+ assertEquals(( byte ) 0x34, array[ 4 ]);
+ assertEquals(( byte ) 0x12, array[ 5 ]);
+ array = new byte[ 5 ];
+ try
+ {
+ new IntegerField(2, 5, array);
+ fail("should have gotten ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array = new byte[ 4 ];
+ new IntegerField(0, _test_array[ j ], array);
+ assertEquals(_test_array[ j ], new IntegerField(0, array).get());
+ }
+ }
+
+ /**
+ * Test set() methods
+ */
+
+ public void testSet()
+ {
+ IntegerField field = new IntegerField(0);
+ byte[] array = new byte[ 4 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ assertEquals("testing _1 " + j, _test_array[ j ], field.get());
+ field = new IntegerField(0);
+ field.set(_test_array[ j ], array);
+ assertEquals("testing _2 ", _test_array[ j ], field.get());
+ assertEquals("testing _3.0 " + _test_array[ j ],
+ ( byte ) (_test_array[ j ] % 256), array[ 0 ]);
+ assertEquals("testing _3.1 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 8) % 256),
+ array[ 1 ]);
+ assertEquals("testing _3.2 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 16) % 256),
+ array[ 2 ]);
+ assertEquals("testing _3.3 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 24) % 256),
+ array[ 3 ]);
+ }
+ }
+
+ /**
+ * Test readFromBytes
+ */
+
+ public void testReadFromBytes()
+ {
+ IntegerField field = new IntegerField(1);
+ byte[] array = new byte[ 4 ];
+
+ try
+ {
+ field.readFromBytes(array);
+ fail("should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new IntegerField(0);
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array[ 0 ] = ( byte ) (_test_array[ j ] % 256);
+ array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ array[ 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256);
+ array[ 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256);
+ field.readFromBytes(array);
+ assertEquals("testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * Test readFromStream
+ *
+ * @exception IOException
+ */
+
+ public void testReadFromStream()
+ throws IOException
+ {
+ IntegerField field = new IntegerField(0);
+ byte[] buffer = new byte[ _test_array.length * 4 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ buffer[ (j * 4) + 0 ] = ( byte ) (_test_array[ j ] % 256);
+ buffer[ (j * 4) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ buffer[ (j * 4) + 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256);
+ buffer[ (j * 4) + 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256);
+ }
+ ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
+
+ for (int j = 0; j < buffer.length / 4; j++)
+ {
+ field.readFromStream(stream);
+ assertEquals("Testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * test writeToBytes
+ */
+
+ public void testWriteToBytes()
+ {
+ IntegerField field = new IntegerField(0);
+ byte[] array = new byte[ 4 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ field.writeToBytes(array);
+ int val = array[ 3 ] << 24;
+
+ val &= 0xFF000000;
+ val += (array[ 2 ] << 16) & 0x00FF0000;
+ val += (array[ 1 ] << 8) & 0x0000FF00;
+ val += (array[ 0 ] & 0x000000FF);
+ assertEquals("testing ", _test_array[ j ], val);
+ }
+ }
+
+ /**
+ * Main
+ *
+ * @param args
+ */
+
+ public static void main(String [] args)
+ {
+ System.out.println("Testing util.IntegerField functionality");
+ junit.textui.TestRunner.run(TestIntegerField.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestLittleEndian.java b/src/testcases/org/apache/poi/util/TestLittleEndian.java
new file mode 100644
index 0000000000..a6e576a20a
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestLittleEndian.java
@@ -0,0 +1,445 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import org.apache.poi.util.LittleEndian.BufferUnderrunException;
+
+import java.io.*;
+
+import junit.framework.*;
+
+/**
+ * Class to test LittleEndian functionality
+ *
+ * @author Marc Johnson
+ */
+
+public class TestLittleEndian
+ extends TestCase
+{
+
+ /**
+ * Constructor TestLittleEndian
+ *
+ * @param name
+ */
+
+ public TestLittleEndian(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test the getShort() method
+ */
+
+ public void testGetShort()
+ {
+ byte[] testdata = new byte[ LittleEndian.SHORT_SIZE + 1 ];
+
+ testdata[ 0 ] = 0x01;
+ testdata[ 1 ] = ( byte ) 0xFF;
+ testdata[ 2 ] = 0x02;
+ short expected[] = new short[ 2 ];
+
+ expected[ 0 ] = ( short ) 0xFF01;
+ expected[ 1 ] = 0x02FF;
+ assertEquals(expected[ 0 ], LittleEndian.getShort(testdata));
+ assertEquals(expected[ 1 ], LittleEndian.getShort(testdata, 1));
+ }
+
+ private static final byte[] _double_array =
+ {
+ 56, 50, -113, -4, -63, -64, -13, 63, 76, -32, -42, -35, 60, -43, 3, 64
+ };
+ private static final double[] _doubles =
+ {
+ 1.23456, 2.47912
+ };
+
+ /**
+ * test the getDouble() method
+ */
+
+ public void testGetDouble()
+ {
+ assertEquals(_doubles[ 0 ], LittleEndian.getDouble(_double_array),
+ 0.000001);
+ assertEquals(_doubles[ 1 ], LittleEndian
+ .getDouble(_double_array, LittleEndian.DOUBLE_SIZE), 0.000001);
+ }
+
+ /**
+ * test the getInt() method
+ */
+
+ public void testGetInt()
+ {
+ byte[] testdata = new byte[ LittleEndian.INT_SIZE + 1 ];
+
+ testdata[ 0 ] = 0x01;
+ testdata[ 1 ] = ( byte ) 0xFF;
+ testdata[ 2 ] = ( byte ) 0xFF;
+ testdata[ 3 ] = ( byte ) 0xFF;
+ testdata[ 4 ] = 0x02;
+ int expected[] = new int[ 2 ];
+
+ expected[ 0 ] = 0xFFFFFF01;
+ expected[ 1 ] = 0x02FFFFFF;
+ assertEquals(expected[ 0 ], LittleEndian.getInt(testdata));
+ assertEquals(expected[ 1 ], LittleEndian.getInt(testdata, 1));
+ }
+
+ /**
+ * test the getLong method
+ */
+
+ public void testGetLong()
+ {
+ byte[] testdata = new byte[ LittleEndian.LONG_SIZE + 1 ];
+
+ testdata[ 0 ] = 0x01;
+ testdata[ 1 ] = ( byte ) 0xFF;
+ testdata[ 2 ] = ( byte ) 0xFF;
+ testdata[ 3 ] = ( byte ) 0xFF;
+ testdata[ 4 ] = ( byte ) 0xFF;
+ testdata[ 5 ] = ( byte ) 0xFF;
+ testdata[ 6 ] = ( byte ) 0xFF;
+ testdata[ 7 ] = ( byte ) 0xFF;
+ testdata[ 8 ] = 0x02;
+ long expected[] = new long[ 2 ];
+
+ expected[ 0 ] = 0xFFFFFFFFFFFFFF01L;
+ expected[ 1 ] = 0x02FFFFFFFFFFFFFFL;
+ assertEquals(expected[ 0 ], LittleEndian.getLong(testdata));
+ assertEquals(expected[ 1 ], LittleEndian.getLong(testdata, 1));
+ }
+
+ /**
+ * test the PutShort method
+ */
+
+ public void testPutShort()
+ {
+ byte[] expected = new byte[ LittleEndian.SHORT_SIZE + 1 ];
+
+ expected[ 0 ] = 0x01;
+ expected[ 1 ] = ( byte ) 0xFF;
+ expected[ 2 ] = 0x02;
+ byte[] received = new byte[ LittleEndian.SHORT_SIZE + 1 ];
+ short testdata[] = new short[ 2 ];
+
+ testdata[ 0 ] = ( short ) 0xFF01;
+ testdata[ 1 ] = 0x02FF;
+ LittleEndian.putShort(received, testdata[ 0 ]);
+ assertTrue(ba_equivalent(received, expected, 0,
+ LittleEndian.SHORT_SIZE));
+ LittleEndian.putShort(received, 1, testdata[ 1 ]);
+ assertTrue(ba_equivalent(received, expected, 1,
+ LittleEndian.SHORT_SIZE));
+ }
+
+ /**
+ * test the putInt method
+ */
+
+ public void testPutInt()
+ {
+ byte[] expected = new byte[ LittleEndian.INT_SIZE + 1 ];
+
+ expected[ 0 ] = 0x01;
+ expected[ 1 ] = ( byte ) 0xFF;
+ expected[ 2 ] = ( byte ) 0xFF;
+ expected[ 3 ] = ( byte ) 0xFF;
+ expected[ 4 ] = 0x02;
+ byte[] received = new byte[ LittleEndian.INT_SIZE + 1 ];
+ int testdata[] = new int[ 2 ];
+
+ testdata[ 0 ] = 0xFFFFFF01;
+ testdata[ 1 ] = 0x02FFFFFF;
+ LittleEndian.putInt(received, testdata[ 0 ]);
+ assertTrue(ba_equivalent(received, expected, 0,
+ LittleEndian.INT_SIZE));
+ LittleEndian.putInt(received, 1, testdata[ 1 ]);
+ assertTrue(ba_equivalent(received, expected, 1,
+ LittleEndian.INT_SIZE));
+ }
+
+ /**
+ * test the putDouble methods
+ */
+
+ public void testPutDouble()
+ {
+ byte[] received = new byte[ LittleEndian.DOUBLE_SIZE + 1 ];
+
+ LittleEndian.putDouble(received, _doubles[ 0 ]);
+ assertTrue(ba_equivalent(received, _double_array, 0,
+ LittleEndian.DOUBLE_SIZE));
+ LittleEndian.putDouble(received, 1, _doubles[ 1 ]);
+ byte[] expected = new byte[ LittleEndian.DOUBLE_SIZE + 1 ];
+
+ System.arraycopy(_double_array, LittleEndian.DOUBLE_SIZE, expected,
+ 1, LittleEndian.DOUBLE_SIZE);
+ assertTrue(ba_equivalent(received, expected, 1,
+ LittleEndian.DOUBLE_SIZE));
+ }
+
+ /**
+ * test the putLong method
+ */
+
+ public void testPutLong()
+ {
+ byte[] expected = new byte[ LittleEndian.LONG_SIZE + 1 ];
+
+ expected[ 0 ] = 0x01;
+ expected[ 1 ] = ( byte ) 0xFF;
+ expected[ 2 ] = ( byte ) 0xFF;
+ expected[ 3 ] = ( byte ) 0xFF;
+ expected[ 4 ] = ( byte ) 0xFF;
+ expected[ 5 ] = ( byte ) 0xFF;
+ expected[ 6 ] = ( byte ) 0xFF;
+ expected[ 7 ] = ( byte ) 0xFF;
+ expected[ 8 ] = 0x02;
+ byte[] received = new byte[ LittleEndian.LONG_SIZE + 1 ];
+ long testdata[] = new long[ 2 ];
+
+ testdata[ 0 ] = 0xFFFFFFFFFFFFFF01L;
+ testdata[ 1 ] = 0x02FFFFFFFFFFFFFFL;
+ LittleEndian.putLong(received, testdata[ 0 ]);
+ assertTrue(ba_equivalent(received, expected, 0,
+ LittleEndian.LONG_SIZE));
+ LittleEndian.putLong(received, 1, testdata[ 1 ]);
+ assertTrue(ba_equivalent(received, expected, 1,
+ LittleEndian.LONG_SIZE));
+ }
+
+ private static byte[] _good_array =
+ {
+ 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
+ 0x02, 0x01, 0x02, 0x01, 0x02
+ };
+ private static byte[] _bad_array =
+ {
+ 0x01
+ };
+
+ /**
+ * test the readShort method
+ */
+
+ public void testReadShort()
+ throws IOException
+ {
+ short expected_value = 0x0201;
+ InputStream stream = new ByteArrayInputStream(_good_array);
+ int count = 0;
+
+ while (true)
+ {
+ short value = LittleEndian.readShort(stream);
+
+ if (value == 0)
+ {
+ break;
+ }
+ assertEquals(value, expected_value);
+ count++;
+ }
+ assertEquals(count,
+ _good_array.length / LittleEndianConsts.SHORT_SIZE);
+ stream = new ByteArrayInputStream(_bad_array);
+ try
+ {
+ LittleEndian.readShort(stream);
+ fail("Should have caught BufferUnderrunException");
+ }
+ catch (BufferUnderrunException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test the readInt method
+ */
+
+ public void testReadInt()
+ throws IOException
+ {
+ int expected_value = 0x02010201;
+ InputStream stream = new ByteArrayInputStream(_good_array);
+ int count = 0;
+
+ while (true)
+ {
+ int value = LittleEndian.readInt(stream);
+
+ if (value == 0)
+ {
+ break;
+ }
+ assertEquals(value, expected_value);
+ count++;
+ }
+ assertEquals(count, _good_array.length / LittleEndianConsts.INT_SIZE);
+ stream = new ByteArrayInputStream(_bad_array);
+ try
+ {
+ LittleEndian.readInt(stream);
+ fail("Should have caught BufferUnderrunException");
+ }
+ catch (BufferUnderrunException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test the readLong method
+ */
+
+ public void testReadLong()
+ throws IOException
+ {
+ long expected_value = 0x0201020102010201L;
+ InputStream stream = new ByteArrayInputStream(_good_array);
+ int count = 0;
+
+ while (true)
+ {
+ long value = LittleEndian.readLong(stream);
+
+ if (value == 0)
+ {
+ break;
+ }
+ assertEquals(value, expected_value);
+ count++;
+ }
+ assertEquals(count,
+ _good_array.length / LittleEndianConsts.LONG_SIZE);
+ stream = new ByteArrayInputStream(_bad_array);
+ try
+ {
+ LittleEndian.readLong(stream);
+ fail("Should have caught BufferUnderrunException");
+ }
+ catch (BufferUnderrunException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test the readFromStream method
+ */
+
+ public void testReadFromStream()
+ throws IOException
+ {
+ InputStream stream = new ByteArrayInputStream(_good_array);
+ byte[] value = LittleEndian.readFromStream(stream,
+ _good_array.length);
+
+ assertTrue(ba_equivalent(value, _good_array, 0, _good_array.length));
+ stream = new ByteArrayInputStream(_good_array);
+ try
+ {
+ value = LittleEndian.readFromStream(stream,
+ _good_array.length + 1);
+ fail("Should have caught BufferUnderrunException");
+ }
+ catch (BufferUnderrunException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ private boolean ba_equivalent(byte [] received, byte [] expected,
+ int offset, int size)
+ {
+ boolean result = true;
+
+ for (int j = offset; j < offset + size; j++)
+ {
+ if (received[ j ] != expected[ j ])
+ {
+ System.out.println("difference at index " + j);
+ result = false;
+ break;
+ }
+ }
+ return result;
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.LittleEndian functionality");
+ junit.textui.TestRunner.run(TestLittleEndian.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestLongField.java b/src/testcases/org/apache/poi/util/TestLongField.java
new file mode 100644
index 0000000000..aa000f5a76
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestLongField.java
@@ -0,0 +1,307 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * Test LongField code
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestLongField
+ extends TestCase
+{
+
+ /**
+ * Constructor
+ *
+ * @param name
+ */
+
+ public TestLongField(String name)
+ {
+ super(name);
+ }
+
+ static private final long[] _test_array =
+ {
+ Long.MIN_VALUE, -1L, 0L, 1L, Long.MAX_VALUE
+ };
+
+ /**
+ * Test constructors.
+ */
+
+ public void testConstructors()
+ {
+ try
+ {
+ new LongField(-1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ LongField field = new LongField(2);
+
+ assertEquals(0L, field.get());
+ try
+ {
+ new LongField(-1, 1L);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new LongField(2, 0x123456789ABCDEF0L);
+ assertEquals(0x123456789ABCDEF0L, field.get());
+ byte[] array = new byte[ 10 ];
+
+ try
+ {
+ new LongField(-1, 1L, array);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new LongField(2, 0x123456789ABCDEF0L, array);
+ assertEquals(0x123456789ABCDEF0L, field.get());
+ assertEquals(( byte ) 0xF0, array[ 2 ]);
+ assertEquals(( byte ) 0xDE, array[ 3 ]);
+ assertEquals(( byte ) 0xBC, array[ 4 ]);
+ assertEquals(( byte ) 0x9A, array[ 5 ]);
+ assertEquals(( byte ) 0x78, array[ 6 ]);
+ assertEquals(( byte ) 0x56, array[ 7 ]);
+ assertEquals(( byte ) 0x34, array[ 8 ]);
+ assertEquals(( byte ) 0x12, array[ 9 ]);
+ array = new byte[ 9 ];
+ try
+ {
+ new LongField(2, 5L, array);
+ fail("should have gotten ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array = new byte[ 8 ];
+ new LongField(0, _test_array[ j ], array);
+ assertEquals(_test_array[ j ], new LongField(0, array).get());
+ }
+ }
+
+ /**
+ * Test set() methods
+ */
+
+ public void testSet()
+ {
+ LongField field = new LongField(0);
+ byte[] array = new byte[ 8 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ assertEquals("testing _1 " + j, _test_array[ j ], field.get());
+ field = new LongField(0);
+ field.set(_test_array[ j ], array);
+ assertEquals("testing _2 ", _test_array[ j ], field.get());
+ assertEquals("testing _3.0 " + _test_array[ j ],
+ ( byte ) (_test_array[ j ] % 256), array[ 0 ]);
+ assertEquals("testing _3.1 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 8) % 256),
+ array[ 1 ]);
+ assertEquals("testing _3.2 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 16) % 256),
+ array[ 2 ]);
+ assertEquals("testing _3.3 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 24) % 256),
+ array[ 3 ]);
+ assertEquals("testing _3.4 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 32) % 256),
+ array[ 4 ]);
+ assertEquals("testing _3.5 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 40) % 256),
+ array[ 5 ]);
+ assertEquals("testing _3.6 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 48) % 256),
+ array[ 6 ]);
+ assertEquals("testing _3.7 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 56) % 256),
+ array[ 7 ]);
+ }
+ }
+
+ /**
+ * Test readFromBytes
+ */
+
+ public void testReadFromBytes()
+ {
+ LongField field = new LongField(1);
+ byte[] array = new byte[ 8 ];
+
+ try
+ {
+ field.readFromBytes(array);
+ fail("should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new LongField(0);
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array[ 0 ] = ( byte ) (_test_array[ j ] % 256);
+ array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ array[ 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256);
+ array[ 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256);
+ array[ 4 ] = ( byte ) ((_test_array[ j ] >> 32) % 256);
+ array[ 5 ] = ( byte ) ((_test_array[ j ] >> 40) % 256);
+ array[ 6 ] = ( byte ) ((_test_array[ j ] >> 48) % 256);
+ array[ 7 ] = ( byte ) ((_test_array[ j ] >> 56) % 256);
+ field.readFromBytes(array);
+ assertEquals("testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * Test readFromStream
+ *
+ * @exception IOException
+ */
+
+ public void testReadFromStream()
+ throws IOException
+ {
+ LongField field = new LongField(0);
+ byte[] buffer = new byte[ _test_array.length * 8 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ buffer[ (j * 8) + 0 ] = ( byte ) (_test_array[ j ] % 256);
+ buffer[ (j * 8) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ buffer[ (j * 8) + 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256);
+ buffer[ (j * 8) + 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256);
+ buffer[ (j * 8) + 4 ] = ( byte ) ((_test_array[ j ] >> 32) % 256);
+ buffer[ (j * 8) + 5 ] = ( byte ) ((_test_array[ j ] >> 40) % 256);
+ buffer[ (j * 8) + 6 ] = ( byte ) ((_test_array[ j ] >> 48) % 256);
+ buffer[ (j * 8) + 7 ] = ( byte ) ((_test_array[ j ] >> 56) % 256);
+ }
+ ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
+
+ for (int j = 0; j < buffer.length / 8; j++)
+ {
+ field.readFromStream(stream);
+ assertEquals("Testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * test writeToBytes
+ */
+
+ public void testWriteToBytes()
+ {
+ LongField field = new LongField(0);
+ byte[] array = new byte[ 8 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ field.writeToBytes(array);
+ long val = (( long ) array[ 7 ]) << 56;
+
+ val &= 0xFF00000000000000L;
+ val += ((( long ) array[ 6 ]) << 48) & 0x00FF000000000000L;
+ val += ((( long ) array[ 5 ]) << 40) & 0x0000FF0000000000L;
+ val += ((( long ) array[ 4 ]) << 32) & 0x000000FF00000000L;
+ val += ((( long ) array[ 3 ]) << 24) & 0x00000000FF000000L;
+ val += ((( long ) array[ 2 ]) << 16) & 0x0000000000FF0000L;
+ val += ((( long ) array[ 1 ]) << 8) & 0x000000000000FF00L;
+ val += (array[ 0 ] & 0x00000000000000FFL);
+ assertEquals("testing ", _test_array[ j ], val);
+ }
+ }
+
+ /**
+ * Main
+ *
+ * @param args
+ */
+
+ public static void main(String [] args)
+ {
+ System.out.println("Testing util.LongField functionality");
+ junit.textui.TestRunner.run(TestLongField.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestPOILogFactory.java b/src/testcases/org/apache/poi/util/TestPOILogFactory.java
new file mode 100644
index 0000000000..6e57520a13
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestPOILogFactory.java
@@ -0,0 +1,141 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import org.apache.log4j.Category;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Glen Stampoultzis (gstamp at iprimus dot com dot au)
+ */
+
+public class TestPOILogFactory
+ extends TestCase
+{
+ private String _test_file_path;
+ private static final String _test_file_path_property =
+ "UTIL.testdata.path";
+ private static final String _fs =
+ System.getProperty("file.separator");
+
+ /**
+ * Creates new TestPOILogFactory
+ *
+ * @param name
+ */
+
+ public TestPOILogFactory(String name)
+ {
+ super(name);
+ _test_file_path = System.getProperty(_test_file_path_property) + _fs;
+ }
+
+ /**
+ * test log creation
+ *
+ * @exception IOException
+ */
+
+ public void testLog()
+ throws IOException
+ {
+
+ // empty log files
+ // check the path exists first
+ assertTrue("Checking for existance of test property directory was "
+ + _test_file_path, new File(_test_file_path).exists());
+ new File("p1.log").delete();
+ new File("p2.log").delete();
+ POILogFactory f1 = new POILogFactory(_test_file_path
+ + "test_properties1", "foo");
+ POILogFactory f2 = new POILogFactory(_test_file_path
+ + "test_properties2", "bar");
+ POILogger l1 = f1.getLogger(f1.getClass());
+ POILogger l2 = f2.getLogger(f2.getClass());
+
+ l1.log(POILogger.WARN, "test1");
+ l2.log(POILogger.WARN, "test2");
+
+ // It appears necessary that sleep is required for files to be
+ // written on Win2000. Tried manually closing appenders with
+ // no luck.
+ try
+ {
+ Thread.sleep(4000);
+ }
+ catch (InterruptedException letBuffersFlush)
+ {
+ }
+ assertTrue(new File("p1.log").length() != 0);
+ assertTrue(new File("p2.log").length() != 0);
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.POILogFactory functionality");
+ junit.textui.TestRunner.run(TestPOILogFactory.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestPOILogger.java b/src/testcases/org/apache/poi/util/TestPOILogger.java
new file mode 100644
index 0000000000..b3c1128020
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestPOILogger.java
@@ -0,0 +1,181 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.TestCase;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+/**
+ * Tests the log class.
+ *
+ * @author Glen Stampoultzis (gstamp at iprimus dot com dot au)
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestPOILogger
+ extends TestCase
+{
+ private String _test_file_path;
+ private static final String _test_file_path_property =
+ "UTIL.testdata.path";
+ private static final String _fs =
+ System.getProperty("file.separator");
+ private static final String _log_file = "POILogger.log";
+
+ /**
+ * Constructor TestPOILogger
+ *
+ *
+ * @param s
+ *
+ */
+
+ public TestPOILogger(String s)
+ {
+ super(s);
+ }
+
+ /**
+ * Method setUp
+ *
+ *
+ * @exception Exception
+ *
+ */
+
+ protected void setUp()
+ throws Exception
+ {
+ super.setUp();
+ _test_file_path = System.getProperty(_test_file_path_property) + _fs;
+ }
+
+ /**
+ * Test different types of log output.
+ *
+ * @exception Exception
+ */
+
+ public void testVariousLogTypes()
+ throws Exception
+ {
+ assertTrue(
+ "Checking for existance of test property directory, looking for "
+ + _test_file_path, new File(_test_file_path).exists());
+ new File(_log_file).delete();
+ POILogFactory f1 = new POILogFactory(_test_file_path
+ + "test_properties3", "foo");
+ POILogger log = f1.getLogger(getClass());
+
+ log.log(POILogger.WARN, "Test = ", new Integer(1));
+ log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %",
+ "2", new Integer(3));
+ log.logFormatted(POILogger.ERROR, "Test param 1 = %, param 2 = %",
+ new int[]
+ {
+ 4, 5
+ });
+ log.logFormatted(POILogger.ERROR,
+ "Test param 1 = %1.1, param 2 = %0.1", new double[]
+ {
+ 4, 5.23
+ });
+
+ // It appears necessary that sleep is required for files to be
+ // written on Win2000. Tried manually closing appenders with
+ // no luck.
+ try
+ {
+ Thread.sleep(4000);
+ }
+ catch (InterruptedException letBuffersFlush)
+ {
+ }
+ String s = fileRead(_log_file);
+
+ assertTrue(s.indexOf("Test = 1") > 0);
+ assertTrue(s.indexOf("Test param 1 = 2, param 2 = 3") > 0);
+ assertTrue(s.indexOf("Test param 1 = 4, param 2 = 5") > 0);
+ assertTrue(s.indexOf("Test param 1 = 4, param 2 = 5.2") > 0);
+ }
+
+ /**
+ * Reads the contents of a file.
+ *
+ * @param fileName The name of the file to read.
+ * @return The file contents or null if read failed.
+ *
+ * @exception Exception
+ */
+
+ public String fileRead(String fileName)
+ throws Exception
+ {
+ StringBuffer buf = new StringBuffer();
+ FileInputStream in = new FileInputStream(fileName);
+ int count;
+ byte[] b = new byte[ 512 ];
+
+ while ((count = in.read(b)) > 0) // blocking read
+ {
+ buf.append(new String(b, 0, count));
+ }
+ in.close();
+ return buf.toString();
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestShortField.java b/src/testcases/org/apache/poi/util/TestShortField.java
new file mode 100644
index 0000000000..810fef0177
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestShortField.java
@@ -0,0 +1,266 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.io.*;
+
+/**
+ * Test ShortField code
+ *
+ * @author Marc Johnson (mjohnson at apache dot org)
+ */
+
+public class TestShortField
+ extends TestCase
+{
+
+ /**
+ * Constructor
+ *
+ * @param name
+ */
+
+ public TestShortField(String name)
+ {
+ super(name);
+ }
+
+ static private final short[] _test_array =
+ {
+ Short.MIN_VALUE, ( short ) -1, ( short ) 0, ( short ) 1,
+ Short.MAX_VALUE
+ };
+
+ /**
+ * Test constructors.
+ */
+
+ public void testConstructors()
+ {
+ try
+ {
+ new ShortField(-1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ ShortField field = new ShortField(2);
+
+ assertEquals(0, field.get());
+ try
+ {
+ new ShortField(-1, ( short ) 1);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ShortField(2, ( short ) 0x1234);
+ assertEquals(0x1234, field.get());
+ byte[] array = new byte[ 4 ];
+
+ try
+ {
+ new ShortField(-1, ( short ) 1, array);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ShortField(2, ( short ) 0x1234, array);
+ assertEquals(( short ) 0x1234, field.get());
+ assertEquals(( byte ) 0x34, array[ 2 ]);
+ assertEquals(( byte ) 0x12, array[ 3 ]);
+ array = new byte[ 3 ];
+ try
+ {
+ new ShortField(2, ( short ) 5, array);
+ fail("should have gotten ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array = new byte[ 2 ];
+ new ShortField(0, _test_array[ j ], array);
+ assertEquals(_test_array[ j ], new ShortField(0, array).get());
+ }
+ }
+
+ /**
+ * Test set() methods
+ */
+
+ public void testSet()
+ {
+ ShortField field = new ShortField(0);
+ byte[] array = new byte[ 2 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ assertEquals("testing _1 " + j, _test_array[ j ], field.get());
+ field = new ShortField(0);
+ field.set(_test_array[ j ], array);
+ assertEquals("testing _2 ", _test_array[ j ], field.get());
+ assertEquals("testing _3.0 " + _test_array[ j ],
+ ( byte ) (_test_array[ j ] % 256), array[ 0 ]);
+ assertEquals("testing _3.1 " + _test_array[ j ],
+ ( byte ) ((_test_array[ j ] >> 8) % 256),
+ array[ 1 ]);
+ }
+ }
+
+ /**
+ * Test readFromBytes
+ */
+
+ public void testReadFromBytes()
+ {
+ ShortField field = new ShortField(1);
+ byte[] array = new byte[ 2 ];
+
+ try
+ {
+ field.readFromBytes(array);
+ fail("should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored_e)
+ {
+
+ // as expected
+ }
+ field = new ShortField(0);
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ array[ 0 ] = ( byte ) (_test_array[ j ] % 256);
+ array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ field.readFromBytes(array);
+ assertEquals("testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * Test readFromStream
+ *
+ * @exception IOException
+ */
+
+ public void testReadFromStream()
+ throws IOException
+ {
+ ShortField field = new ShortField(0);
+ byte[] buffer = new byte[ _test_array.length * 2 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ buffer[ (j * 2) + 0 ] = ( byte ) (_test_array[ j ] % 256);
+ buffer[ (j * 2) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ }
+ ByteArrayInputStream stream = new ByteArrayInputStream(buffer);
+
+ for (int j = 0; j < buffer.length / 2; j++)
+ {
+ field.readFromStream(stream);
+ assertEquals("Testing " + j, _test_array[ j ], field.get());
+ }
+ }
+
+ /**
+ * test writeToBytes
+ */
+
+ public void testWriteToBytes()
+ {
+ ShortField field = new ShortField(0);
+ byte[] array = new byte[ 2 ];
+
+ for (int j = 0; j < _test_array.length; j++)
+ {
+ field.set(_test_array[ j ]);
+ field.writeToBytes(array);
+ short val = ( short ) (array[ 1 ] << 8);
+
+ val &= ( short ) 0xFF00;
+ val += ( short ) (array[ 0 ] & 0x00FF);
+ assertEquals("testing ", _test_array[ j ], val);
+ }
+ }
+
+ /**
+ * Main
+ *
+ * @param args
+ */
+
+ public static void main(String [] args)
+ {
+ System.out.println("Testing util.ShortField functionality");
+ junit.textui.TestRunner.run(TestShortField.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestShortList.java b/src/testcases/org/apache/poi/util/TestShortList.java
new file mode 100644
index 0000000000..87ca2ce5db
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestShortList.java
@@ -0,0 +1,724 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+/**
+ * Class to test ShortList
+ *
+ * @author Marc Johnson
+ */
+
+public class TestShortList
+ extends TestCase
+{
+
+ /**
+ * Constructor TestShortList
+ *
+ * @param name
+ */
+
+ public TestShortList(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test the various ShortListconstructors
+ */
+
+ public void testConstructors()
+ {
+ ShortList list = new ShortList();
+
+ assertTrue(list.isEmpty());
+ list.add(( short ) 0);
+ list.add(( short ) 1);
+ ShortList list2 = new ShortList(list);
+
+ assertEquals(list, list2);
+ ShortList list3 = new ShortList(2);
+
+ assertTrue(list3.isEmpty());
+ }
+
+ /**
+ * test the add method
+ */
+
+ public void testAdd()
+ {
+ ShortList list = new ShortList();
+ short[] testArray =
+ {
+ 0, 1, 2, 3, 5
+ };
+
+ for (int j = 0; j < testArray.length; j++)
+ {
+ list.add(testArray[ j ]);
+ }
+ for (int j = 0; j < testArray.length; j++)
+ {
+ assertEquals(testArray[ j ], list.get(j));
+ }
+ assertEquals(testArray.length, list.size());
+
+ // add at the beginning
+ list.add(0, ( short ) -1);
+ assertEquals(( short ) -1, list.get(0));
+ assertEquals(testArray.length + 1, list.size());
+ for (int j = 0; j < testArray.length; j++)
+ {
+ assertEquals(testArray[ j ], list.get(j + 1));
+ }
+
+ // add in the middle
+ list.add(5, ( short ) 4);
+ assertEquals(( short ) 4, list.get(5));
+ assertEquals(testArray.length + 2, list.size());
+ for (int j = 0; j < list.size(); j++)
+ {
+ assertEquals(( short ) (j - 1), list.get(j));
+ }
+
+ // add at the end
+ list.add(list.size(), ( short ) 6);
+ assertEquals(testArray.length + 3, list.size());
+ for (int j = 0; j < list.size(); j++)
+ {
+ assertEquals(( short ) (j - 1), list.get(j));
+ }
+
+ // add past end
+ try
+ {
+ list.add(list.size() + 1, ( short ) 8);
+ fail("should have thrown exception");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+
+ // test growth
+ list = new ShortList(0);
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ assertEquals(1000, list.size());
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.get(j));
+ }
+ list = new ShortList(0);
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(0, j);
+ }
+ assertEquals(1000, list.size());
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.get(999 - j));
+ }
+ }
+
+ /**
+ * test the addAll method
+ */
+
+ public void testAddAll()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 5; j++)
+ {
+ list.add(j);
+ }
+ ShortList list2 = new ShortList(0);
+
+ list2.addAll(list);
+ list2.addAll(list);
+ assertEquals(2 * list.size(), list2.size());
+ for (short j = 0; j < 5; j++)
+ {
+ assertEquals(list2.get(j), j);
+ assertEquals(list2.get(j + list.size()), j);
+ }
+ ShortList empty = new ShortList();
+ int limit = list.size();
+
+ for (int j = 0; j < limit; j++)
+ {
+ assertTrue(list.addAll(j, empty));
+ assertEquals(limit, list.size());
+ }
+ try
+ {
+ list.addAll(limit + 1, empty);
+ fail("should have thrown an exception");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+
+ // try add at beginning
+ empty.addAll(0, list);
+ assertEquals(empty, list);
+
+ // try in the middle
+ empty.addAll(1, list);
+ assertEquals(2 * list.size(), empty.size());
+ assertEquals(list.get(0), empty.get(0));
+ assertEquals(list.get(0), empty.get(1));
+ assertEquals(list.get(1), empty.get(2));
+ assertEquals(list.get(1), empty.get(6));
+ assertEquals(list.get(2), empty.get(3));
+ assertEquals(list.get(2), empty.get(7));
+ assertEquals(list.get(3), empty.get(4));
+ assertEquals(list.get(3), empty.get(8));
+ assertEquals(list.get(4), empty.get(5));
+ assertEquals(list.get(4), empty.get(9));
+
+ // try at the end
+ empty.addAll(empty.size(), list);
+ assertEquals(3 * list.size(), empty.size());
+ assertEquals(list.get(0), empty.get(0));
+ assertEquals(list.get(0), empty.get(1));
+ assertEquals(list.get(0), empty.get(10));
+ assertEquals(list.get(1), empty.get(2));
+ assertEquals(list.get(1), empty.get(6));
+ assertEquals(list.get(1), empty.get(11));
+ assertEquals(list.get(2), empty.get(3));
+ assertEquals(list.get(2), empty.get(7));
+ assertEquals(list.get(2), empty.get(12));
+ assertEquals(list.get(3), empty.get(4));
+ assertEquals(list.get(3), empty.get(8));
+ assertEquals(list.get(3), empty.get(13));
+ assertEquals(list.get(4), empty.get(5));
+ assertEquals(list.get(4), empty.get(9));
+ assertEquals(list.get(4), empty.get(14));
+ }
+
+ /**
+ * test the clear method
+ */
+
+ public void testClear()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 500; j++)
+ {
+ list.add(j);
+ }
+ assertEquals(500, list.size());
+ list.clear();
+ assertEquals(0, list.size());
+ for (short j = 0; j < 500; j++)
+ {
+ list.add(( short ) (j + 1));
+ }
+ assertEquals(500, list.size());
+ for (short j = 0; j < 500; j++)
+ {
+ assertEquals(j + 1, list.get(j));
+ }
+ }
+
+ /**
+ * test the contains method
+ */
+
+ public void testContains()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j += 2)
+ {
+ list.add(j);
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ assertTrue(list.contains(j));
+ }
+ else
+ {
+ assertTrue(!list.contains(j));
+ }
+ }
+ }
+
+ /**
+ * test the containsAll method
+ */
+
+ public void testContainsAll()
+ {
+ ShortList list = new ShortList();
+
+ assertTrue(list.containsAll(list));
+ for (short j = 0; j < 10; j++)
+ {
+ list.add(j);
+ }
+ ShortList list2 = new ShortList(list);
+
+ assertTrue(list2.containsAll(list));
+ assertTrue(list.containsAll(list2));
+ list2.add(( short ) 10);
+ assertTrue(list2.containsAll(list));
+ assertTrue(!list.containsAll(list2));
+ list.add(( short ) 11);
+ assertTrue(!list2.containsAll(list));
+ assertTrue(!list.containsAll(list2));
+ }
+
+ /**
+ * test the equals method
+ */
+
+ public void testEquals()
+ {
+ ShortList list = new ShortList();
+
+ assertEquals(list, list);
+ assertTrue(!list.equals(null));
+ ShortList list2 = new ShortList(200);
+
+ assertEquals(list, list2);
+ assertEquals(list2, list);
+ assertEquals(list.hashCode(), list2.hashCode());
+ list.add(( short ) 0);
+ list.add(( short ) 1);
+ list2.add(( short ) 1);
+ list2.add(( short ) 0);
+ assertTrue(!list.equals(list2));
+ list2.removeValue(( short ) 1);
+ list2.add(( short ) 1);
+ assertEquals(list, list2);
+ assertEquals(list2, list);
+ list2.add(( short ) 2);
+ assertTrue(!list.equals(list2));
+ assertTrue(!list2.equals(list));
+ }
+
+ /**
+ * test the get method
+ */
+
+ public void testGet()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (short j = 0; j < 1001; j++)
+ {
+ try
+ {
+ assertEquals(j, list.get(j));
+ if (j == 1000)
+ {
+ fail("should have gotten exception");
+ }
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ if (j != 1000)
+ {
+ fail("unexpected IndexOutOfBoundsException");
+ }
+ }
+ }
+ }
+
+ /**
+ * test the indexOf method
+ */
+
+ public void testIndexOf()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(( short ) (j / 2));
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertEquals(j * 2, list.indexOf(j));
+ }
+ else
+ {
+ assertEquals(-1, list.indexOf(j));
+ }
+ }
+ }
+
+ /**
+ * test the isEmpty method
+ */
+
+ public void testIsEmpty()
+ {
+ ShortList list1 = new ShortList();
+ ShortList list2 = new ShortList(1000);
+ ShortList list3 = new ShortList(list1);
+
+ assertTrue(list1.isEmpty());
+ assertTrue(list2.isEmpty());
+ assertTrue(list3.isEmpty());
+ list1.add(( short ) 1);
+ list2.add(( short ) 2);
+ list3 = new ShortList(list2);
+ assertTrue(!list1.isEmpty());
+ assertTrue(!list2.isEmpty());
+ assertTrue(!list3.isEmpty());
+ list1.clear();
+ list2.remove(0);
+ list3.removeValue(( short ) 2);
+ assertTrue(list1.isEmpty());
+ assertTrue(list2.isEmpty());
+ assertTrue(list3.isEmpty());
+ }
+
+ /**
+ * test the lastIndexOf method
+ */
+
+ public void testLastIndexOf()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(( short ) (j / 2));
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertEquals(1 + j * 2, list.lastIndexOf(j));
+ }
+ else
+ {
+ assertEquals(-1, list.indexOf(j));
+ }
+ }
+ }
+
+ /**
+ * test the remove method
+ */
+
+ public void testRemove()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.remove(0));
+ assertEquals(( short ) (999 - j), list.size());
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(( short ) (999 - j),
+ list.remove(( short ) (999 - j)));
+ assertEquals(999 - j, list.size());
+ }
+ try
+ {
+ list.remove(0);
+ fail("should have caught IndexOutOfBoundsException");
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * test the removeValue method
+ */
+
+ public void testRemoveValue()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(( short ) (j / 2));
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j < 500)
+ {
+ assertTrue(list.removeValue(j));
+ assertTrue(list.removeValue(j));
+ }
+ assertTrue(!list.removeValue(j));
+ }
+ }
+
+ /**
+ * test the removeAll method
+ */
+
+ public void testRemoveAll()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ ShortList listCopy = new ShortList(list);
+ ShortList listOdd = new ShortList();
+ ShortList listEven = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ listEven.add(j);
+ }
+ else
+ {
+ listOdd.add(j);
+ }
+ }
+ list.removeAll(listEven);
+ assertEquals(list, listOdd);
+ list.removeAll(listOdd);
+ assertTrue(list.isEmpty());
+ listCopy.removeAll(listOdd);
+ assertEquals(listCopy, listEven);
+ listCopy.removeAll(listEven);
+ assertTrue(listCopy.isEmpty());
+ }
+
+ /**
+ * test the retainAll method
+ */
+
+ public void testRetainAll()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ ShortList listCopy = new ShortList(list);
+ ShortList listOdd = new ShortList();
+ ShortList listEven = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ if (j % 2 == 0)
+ {
+ listEven.add(j);
+ }
+ else
+ {
+ listOdd.add(j);
+ }
+ }
+ list.retainAll(listOdd);
+ assertEquals(list, listOdd);
+ list.retainAll(listEven);
+ assertTrue(list.isEmpty());
+ listCopy.retainAll(listEven);
+ assertEquals(listCopy, listEven);
+ listCopy.retainAll(listOdd);
+ assertTrue(listCopy.isEmpty());
+ }
+
+ /**
+ * test the set method
+ */
+
+ public void testSet()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ for (short j = 0; j < 1001; j++)
+ {
+ try
+ {
+ list.set(j, ( short ) (j + 1));
+ if (j == 1000)
+ {
+ fail("Should have gotten exception");
+ }
+ assertEquals(j + 1, list.get(j));
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ if (j != 1000)
+ {
+ fail("premature exception");
+ }
+ }
+ }
+ }
+
+ /**
+ * test the size method
+ */
+
+ public void testSize()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(j, list.size());
+ list.add(j);
+ assertEquals(j + 1, list.size());
+ }
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(1000 - j, list.size());
+ list.removeValue(j);
+ assertEquals(999 - j, list.size());
+ }
+ }
+
+ /**
+ * test the toArray method
+ */
+
+ public void testToArray()
+ {
+ ShortList list = new ShortList();
+
+ for (short j = 0; j < 1000; j++)
+ {
+ list.add(j);
+ }
+ short[] a1 = list.toArray();
+
+ assertEquals(a1.length, list.size());
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(a1[ j ], list.get(j));
+ }
+ short[] a2 = new short[ list.size() ];
+ short[] a3 = list.toArray(a2);
+
+ assertSame(a2, a3);
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(a2[ j ], list.get(j));
+ }
+ short[] aShort = new short[ list.size() - 1 ];
+ short[] aLong = new short[ list.size() + 1 ];
+ short[] a4 = list.toArray(aShort);
+ short[] a5 = list.toArray(aLong);
+
+ assertTrue(a4 != aShort);
+ assertTrue(a5 != aLong);
+ assertEquals(a4.length, list.size());
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(a3[ j ], list.get(j));
+ }
+ assertEquals(a5.length, list.size());
+ for (short j = 0; j < 1000; j++)
+ {
+ assertEquals(a5[ j ], list.get(j));
+ }
+ }
+
+ /**
+ * main method to run the unit tests
+ *
+ * @param unused_args
+ */
+
+ public static void main(String [] unused_args)
+ {
+ System.out.println("Testing util.ShortList functionality");
+ junit.textui.TestRunner.run(TestShortList.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/TestStringUtil.java b/src/testcases/org/apache/poi/util/TestStringUtil.java
new file mode 100644
index 0000000000..dcb6c2539f
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/TestStringUtil.java
@@ -0,0 +1,315 @@
+
+/* ====================================================================
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2002 The Apache Software Foundation. All rights
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" and
+ * "Apache POI" must not be used to endorse or promote products
+ * derived from this software without prior written permission. For
+ * written permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * "Apache POI", nor may "Apache" appear in their name, without
+ * prior written permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+
+package org.apache.poi.util;
+
+import junit.framework.*;
+
+import java.text.NumberFormat;
+
+/**
+ * Unit test for StringUtil
+ *
+ * @author Marc Johnson (mjohnson at apache dot org
+ * @author Glen Stampoultzis (gstamp at iprimus dot com dot au)
+ */
+
+public class TestStringUtil
+ extends TestCase
+{
+
+ /**
+ * Creates new TestStringUtil
+ *
+ * @param name
+ */
+
+ public TestStringUtil(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * test simple form of getFromUnicode
+ */
+
+ public void testSimpleGetFromUnicode()
+ {
+ byte[] test_data = new byte[ 32 ];
+ int index = 0;
+
+ for (int k = 0; k < 16; k++)
+ {
+ test_data[ index++ ] = ( byte ) 0;
+ test_data[ index++ ] = ( byte ) ('a' + k);
+ }
+ assertEquals("abcdefghijklmnop",
+ StringUtil.getFromUnicode(test_data));
+ }
+
+ /**
+ * Test more complex form of getFromUnicode
+ */
+
+ public void testComplexGetFromUnicode()
+ {
+ byte[] test_data = new byte[ 32 ];
+ int index = 0;
+
+ for (int k = 0; k < 16; k++)
+ {
+ test_data[ index++ ] = ( byte ) 0;
+ test_data[ index++ ] = ( byte ) ('a' + k);
+ }
+ assertEquals("abcdefghijklmno",
+ StringUtil.getFromUnicode(test_data, 0, 15));
+ assertEquals("bcdefghijklmnop",
+ StringUtil.getFromUnicode(test_data, 2, 15));
+ try
+ {
+ StringUtil.getFromUnicode(test_data, -1, 16);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ StringUtil.getFromUnicode(test_data, 32, 16);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ StringUtil.getFromUnicode(test_data, 1, 16);
+ fail("Should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+
+ // as expected
+ }
+ try
+ {
+ StringUtil.getFromUnicode(test_data, 1, -1);
+ fail("Should have caught IllegalArgumentException");
+ }
+ catch (IllegalArgumentException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * Test putCompressedUnicode
+ */
+
+ public void testPutCompressedUnicode()
+ {
+ byte[] output = new byte[ 100 ];
+ byte[] expected_output =
+ {
+ ( byte ) 'H', ( byte ) 'e', ( byte ) 'l', ( byte ) 'l',
+ ( byte ) 'o', ( byte ) ' ', ( byte ) 'W', ( byte ) 'o',
+ ( byte ) 'r', ( byte ) 'l', ( byte ) 'd', ( byte ) 0xAE
+ };
+ String input = new String(expected_output);
+
+ StringUtil.putCompressedUnicode(input, output, 0);
+ for (int j = 0; j < expected_output.length; j++)
+ {
+ assertEquals("testing offset " + j, expected_output[ j ],
+ output[ j ]);
+ }
+ StringUtil.putCompressedUnicode(input, output,
+ 100 - expected_output.length);
+ for (int j = 0; j < expected_output.length; j++)
+ {
+ assertEquals("testing offset " + j, expected_output[ j ],
+ output[ 100 + j - expected_output.length ]);
+ }
+ try
+ {
+ StringUtil.putCompressedUnicode(input, output,
+ 101 - expected_output.length);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ /**
+ * Test putUncompressedUnicode
+ */
+
+ public void testPutUncompressedUnicode()
+ {
+ byte[] output = new byte[ 100 ];
+ String input = "Hello World";
+ byte[] expected_output =
+ {
+ ( byte ) 'H', ( byte ) 0, ( byte ) 'e', ( byte ) 0, ( byte ) 'l',
+ ( byte ) 0, ( byte ) 'l', ( byte ) 0, ( byte ) 'o', ( byte ) 0,
+ ( byte ) ' ', ( byte ) 0, ( byte ) 'W', ( byte ) 0, ( byte ) 'o',
+ ( byte ) 0, ( byte ) 'r', ( byte ) 0, ( byte ) 'l', ( byte ) 0,
+ ( byte ) 'd', ( byte ) 0
+ };
+
+ StringUtil.putUncompressedUnicode(input, output, 0);
+ for (int j = 0; j < expected_output.length; j++)
+ {
+ assertEquals("testing offset " + j, expected_output[ j ],
+ output[ j ]);
+ }
+ StringUtil.putUncompressedUnicode(input, output,
+ 100 - expected_output.length);
+ for (int j = 0; j < expected_output.length; j++)
+ {
+ assertEquals("testing offset " + j, expected_output[ j ],
+ output[ 100 + j - expected_output.length ]);
+ }
+ try
+ {
+ StringUtil.putUncompressedUnicode(input, output,
+ 101 - expected_output.length);
+ fail("Should have caught ArrayIndexOutOfBoundsException");
+ }
+ catch (ArrayIndexOutOfBoundsException ignored)
+ {
+
+ // as expected
+ }
+ }
+
+ public void testFormat()
+ throws Exception
+ {
+ assertEquals("This is a test " + fmt(1.2345, 2, 2),
+ StringUtil.format("This is a test %2.2", new Object[]
+ {
+ new Double(1.2345)
+ }));
+ assertEquals("This is a test " + fmt(1.2345, -1, 3),
+ StringUtil.format("This is a test %.3", new Object[]
+ {
+ new Double(1.2345)
+ }));
+ assertEquals("This is a great test " + fmt(1.2345, -1, 3),
+ StringUtil.format("This is a % test %.3", new Object[]
+ {
+ "great", new Double(1.2345)
+ }));
+ assertEquals("This is a test 1",
+ StringUtil.format("This is a test %", new Object[]
+ {
+ new Integer(1)
+ }));
+ assertEquals("This is a test 1",
+ StringUtil.format("This is a test %", new Object[]
+ {
+ new Integer(1), new Integer(1)
+ }));
+ assertEquals("This is a test 1.x",
+ StringUtil.format("This is a test %1.x", new Object[]
+ {
+ new Integer(1)
+ }));
+ assertEquals("This is a test ?missing data?1.x",
+ StringUtil.format("This is a test %1.x", new Object[]
+ {
+ }));
+ assertEquals("This is a test %1.x",
+ StringUtil.format("This is a test \\%1.x", new Object[]
+ {
+ }));
+ }
+
+ private String fmt(double num, int minIntDigits, int maxFracDigitis)
+ {
+ NumberFormat nf = NumberFormat.getInstance();
+
+ if (minIntDigits != -1)
+ {
+ nf.setMinimumIntegerDigits(minIntDigits);
+ }
+ if (maxFracDigitis != -1)
+ {
+ nf.setMaximumFractionDigits(maxFracDigitis);
+ }
+ return nf.format(num);
+ }
+
+ /**
+ * main
+ *
+ * @param ignored_args
+ */
+
+ public static void main(String [] ignored_args)
+ {
+ System.out.println("Testing util.StringUtil functionality");
+ junit.textui.TestRunner.run(TestStringUtil.class);
+ }
+}
diff --git a/src/testcases/org/apache/poi/util/data/test_properties1 b/src/testcases/org/apache/poi/util/data/test_properties1
new file mode 100755
index 0000000000..41385a88ba
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/data/test_properties1
@@ -0,0 +1,11 @@
+# Set root category priority to DEBUG and its only appender to A1.
+log4j.rootCategory=DEBUG, A1
+
+# A1 is set to be a FileAppender.
+log4j.appender.A1=org.apache.log4j.FileAppender
+log4j.appender.A1.File=p1.log
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+#log4j.category.org.apache.cocoon.poi=WARN \ No newline at end of file
diff --git a/src/testcases/org/apache/poi/util/data/test_properties2 b/src/testcases/org/apache/poi/util/data/test_properties2
new file mode 100755
index 0000000000..5e0e2c5dd9
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/data/test_properties2
@@ -0,0 +1,11 @@
+# Set root category priority to DEBUG and its only appender to A2.
+log4j.rootCategory=DEBUG, A2
+
+# A2 is set to be a FileAppender.
+log4j.appender.A2=org.apache.log4j.FileAppender
+log4j.appender.A2.File=p2.log
+
+# A2 uses PatternLayout.
+log4j.appender.A2.layout=org.apache.log4j.PatternLayout
+log4j.appender.A2.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+#log4j.category.org.apache.cocoon.poi=WARN \ No newline at end of file
diff --git a/src/testcases/org/apache/poi/util/data/test_properties3 b/src/testcases/org/apache/poi/util/data/test_properties3
new file mode 100755
index 0000000000..cb75ef0f97
--- /dev/null
+++ b/src/testcases/org/apache/poi/util/data/test_properties3
@@ -0,0 +1,11 @@
+# Set root category priority to DEBUG and its only appender to A3.
+log4j.rootCategory=DEBUG, A3
+
+# A3 is set to be a FileAppender.
+log4j.appender.A3=org.apache.log4j.FileAppender
+log4j.appender.A3.File=POILogger.log
+
+# A3 uses PatternLayout.
+log4j.appender.A3.layout=org.apache.log4j.PatternLayout
+log4j.appender.A3.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
+#log4j.category.org.apache.cocoon.poi=WARN \ No newline at end of file