1
<?xml version="1.0" encoding="UTF-8"?>
2
<mso xmlns="http://www.example.org/mso" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
	xsi:schemaLocation="http://www.example.org/mso mso.xsd">
4
	<struct name="RecordHeader">
5
		<uint4 name="recVer" />
6
		<uint12 name="recInstance" />
7
		<uint16 name="recType">
8
			<!--
9
					this limitation helps debugging
10
				-->
11
			<limitation expression="&gt;0" />
12
		</uint16>
13
		<uint32 name="recLen" />
14
	</struct>
15
	<struct name="CurrentUserAtom">
16
		<type name="rh" type="RecordHeader">
17
			<limitation name="recVer" value="0" />
18
			<limitation name="recInstance" value="0" />
19
			<limitation name="recType" value="0x0FF6" />
20
		</type>
21
		<uint32 name="size">
22
			<limitation value="0x14" />
23
		</uint32>
24
		<uint32 name="headerToken">
25
			<limitation value="0xE391C05F|0xF3D1C4DF" />
26
		</uint32>
27
		<uint32 name="offsetToCurrentEdit" />
28
		<uint16 name="lenUserName">
29
			<limitation expression="&lt;=255" />
30
		</uint16>
31
		<uint16 name="docFileVersion">
32
			<limitation value="0x03F4" />
33
		</uint16>
34
		<uint8 name="majorVersion">
35
			<limitation value="0x03" />
36
		</uint8>
37
		<uint8 name="minorVersion">
38
			<limitation value="0x00" />
39
		</uint8>
40
		<uint16 name="unused" />
41
		<uint8 name="ansiUserName" count="lenUserName" />
42
		<uint32 name="relVersion">
43
			<limitation value="0x8|0x9" />
44
		</uint32>
45
		<uint16 name="unicodeUserName" count="lenUserName"
46
			condition="rh.recLen&gt;3*lenUserName+0x18" />
47
		<uint8 name="unknown" count="rh.recLen-0x18-3*lenUserName"
48
			condition="rh.recLen-0x18-3*lenUserName&gt;0" />
49
	</struct>
50
	<struct name="TODOS">
51
		<type name="anon" type="Byte" array="true" />
52
	</struct>
53
	<struct name="Byte">
54
		<uint8 name="b" />
55
	</struct>
56
	<struct name="CurrentUserStream">
57
		<type name="anon1" type="CurrentUserAtom" />
58
		<type name="trailing" type="Byte" array="true" />
59
	</struct>
60
	<struct name="PicturesStream">
61
		<type name="anon1" type="OfficeArtBStoreDelay" />
62
		<type name="trailing" type="Byte" array="true" />
63
	</struct>
64
	<struct name="OfficeArtBStoreDelay">
65
		<type name="anon1" array="true" type="OfficeArtBStoreContainerFileBlock" />
66
	</struct>
67
	<struct name="OfficeArtRecordHeader">
68
		<uint4 name="recVer" />
69
		<uint12 name="recInstance" />
70
		<uint16 name="recType" />
71
		<uint32 name="recLen" />
72
	</struct>
73
	<struct name="OfficeArtFBSE">
74
		<type name="rh" type="OfficeArtRecordHeader">
75
			<limitation name="recVer" value="0x2" />
76
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|0x11|0x12" />
77
			<!--
78
				<limitation name="recInstance"
79
				value="0xF01A|0xF01B|0xF01C|0xF01D|0xF01E|0xF01F|0xF029" />
80
			-->
81
			<limitation name="recType" value="0xF007" />
82
		</type>
83
		<uint8 name="btWin32" />
84
		<uint8 name="btMacOS" />
85
		<uint8 name="rgbUid" count="16" />
86
		<uint16 name="tag" />
87
		<uint32 name="size" />
88
		<uint32 name="cRef" />
89
		<uint32 name="foDelay" />
90
		<uint8 name="unused1" />
91
		<uint8 name="cbName" />
92
		<uint8 name="unused2" />
93
		<uint8 name="unused3" />
94
		<uint8 name="nameData" count="cbName" condition="cbName&gt;0" />
95
		<type name="embeddedBlip" type="OfficeArtBlip" condition="rh.recLen &gt; 36 + cbName">
96
			<!--
97
				this limitation is currently not supported because it requires
98
				dynamic introspection <limitation name="rh.recInstance"
99
				value="rh.recInstance" />
100
			-->
101
		</type>
102
	</struct>
103
	<struct name="OfficeArtBlipEMF">
104
		<type name="rh" type="OfficeArtRecordHeader">
105
			<limitation name="recVer" value="0" />
106
			<limitation name="recInstance" value="0x3D4|0x3D5" />
107
			<limitation name="recType" value="0xF01A" />
108
		</type>
109
		<uint8 name="rgbUid1" count="16" />
110
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x3D5" />
111
		<type name="metafileHeader" type="OfficeArtMetafileHeader" />
112
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x3D4)?50:66)" />
113
	</struct>
114
	<struct name="OfficeArtBlipWMF">
115
		<type name="rh" type="OfficeArtRecordHeader">
116
			<limitation name="recVer" value="0" />
117
			<limitation name="recInstance" value="0x216|0x217" />
118
			<limitation name="recType" value="0xF01B" />
119
		</type>
120
		<uint8 name="rgbUid1" count="16" />
121
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x217" />
122
		<type name="metafileHeader" type="OfficeArtMetafileHeader" />
123
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x216)?50:66)" />
124
	</struct>
125
	<struct name="OfficeArtBlipPICT">
126
		<type name="rh" type="OfficeArtRecordHeader">
127
			<limitation name="recVer" value="0" />
128
			<limitation name="recInstance" value="0x542|0x543" />
129
			<limitation name="recType" value="0xF01C" />
130
		</type>
131
		<uint8 name="rgbUid1" count="16" />
132
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x543" />
133
		<type name="metafileHeader" type="OfficeArtMetafileHeader" />
134
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x542)?50:66)" />
135
	</struct>
136
	<struct name="OfficeArtBlipJPEG">
137
		<type name="rh" type="OfficeArtRecordHeader">
138
			<limitation name="recVer" value="0" />
139
			<limitation name="recInstance" value="0x46A|0x46B|0x6E2|0x6E3" />
140
			<limitation name="recType" value="0xF01D" />
141
		</type>
142
		<uint8 name="rgbUid1" count="16" />
143
		<uint8 name="rgbUid2" count="16"
144
			condition="rh.recInstance == 0x46B || rh.recInstance == 0x6E3" />
145
		<uint8 name="tag" />
146
		<uint8 name="BLIPFileData"
147
			count="rh.recLen-((rh.recInstance == 0x46A || rh.recInstance == 0x6E2)?17:33)" />
148
	</struct>
149
	<struct name="OfficeArtBlipPNG">
150
		<type name="rh" type="OfficeArtRecordHeader">
151
			<limitation name="recVer" value="0" />
152
			<limitation name="recInstance" value="0x6E0|0x6E1" />
153
			<limitation name="recType" value="0xF01E" />
154
		</type>
155
		<uint8 name="rgbUid1" count="16" />
156
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x6E1" />
157
		<uint8 name="tag" />
158
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x6E0)?17:33)" />
159
	</struct>
160
	<struct name="OfficeArtBlipDIB">
161
		<type name="rh" type="OfficeArtRecordHeader">
162
			<limitation name="recVer" value="0" />
163
			<limitation name="recInstance" value="0x7A8|0x7A9" />
164
			<limitation name="recType" value="0xF01F" />
165
		</type>
166
		<uint8 name="rgbUid1" count="16" />
167
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x7A9" />
168
		<uint8 name="tag" />
169
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x7A8)?17:33)" />
170
	</struct>
171
	<struct name="OfficeArtBlipTIFF">
172
		<type name="rh" type="OfficeArtRecordHeader">
173
			<limitation name="recVer" value="0" />
174
			<limitation name="recInstance" value="0x6E4|0x6E5" />
175
			<limitation name="recType" value="0xF020" />
176
		</type>
177
		<uint8 name="rgbUid1" count="16" />
178
		<uint8 name="rgbUid2" count="16" condition="rh.recInstance == 0x6E5" />
179
		<uint8 name="tag" />
180
		<uint8 name="BLIPFileData" count="rh.recLen-((rh.recInstance==0x6E4)?17:33)" />
181
	</struct>
182
	<struct name="OfficeArtMetafileHeader">
183
		<uint32 name="cbSize" />
184
		<type name="rcBounds" type="RECT" />
185
		<type name="ptSize" type="POINT" />
186
		<uint32 name="cbsave" />
187
		<uint8 name="compression" />
188
		<uint8 name="filter" />
189
	</struct>
190
	<struct name="RECT">
191
		<int32 name="left" />
192
		<int32 name="top" />
193
		<int32 name="right" />
194
		<int32 name="bottom" />
195
	</struct>
196
	<struct name="POINT">
197
		<int32 name="x" />
198
		<int32 name="y" />
199
	</struct>
200
	<struct name="OfficeArtBlip">
201
		<choice name="anon">
202
			<type type="OfficeArtBlipEMF" />
203
			<type type="OfficeArtBlipWMF" />
204
			<type type="OfficeArtBlipPICT" />
205
			<type type="OfficeArtBlipJPEG" />
206
			<type type="OfficeArtBlipPNG" />
207
			<type type="OfficeArtBlipDIB" />
208
			<type type="OfficeArtBlipTIFF" />
209
		</choice>
210
	</struct>
211
	<struct name="OfficeArtBStoreContainerFileBlock">
212
		<choice name="anon">
213
			<type type="OfficeArtFBSE" />
214
			<type type="OfficeArtBlip" />
215
		</choice>
216
	</struct>
217
	<struct name="PowerPointStructs">
218
		<type name="anon" type="PowerPointStruct" array="true" />
219
	</struct>
220
	<struct name="PowerPointStruct">
221
		<choice name="anon">
222
			<type type="DocumentContainer" />
223
			<type type="MasterOrSlideContainer" />
224
			<type type="PersistDirectoryAtom" />
225
			<type type="NotesContainer" />
226
			<type type="HandoutContainer" />
227
			<type type="SlideContainer" />
228
			<type type="ExOleObjStg" />
229
			<type type="ExControlStg" />
230
			<type type="VbaProjectStg" />
231
			<type type="UserEditAtom" />
232
		</choice>
233
	</struct>
234
	<struct name="DocumentContainer">
235
		<type name="rh" type="RecordHeader">
236
			<limitation name="recVer" value="0xF" />
237
			<limitation name="recInstance" value="0x0" />
238
			<limitation name="recType" value="0x03E8" />
239
		</type>
240
		<type name="documentAtom" type="DocumentAtom" />
241
		<type name="exObjList" type="ExObjListContainer" optional="true" />
242
		<type name="documentTextInfo" type="DocumentTextInfoContainer" />
243
		<type name="soundCollection" type="SoundCollectionContainer"
244
			optional="true" />
245
		<type name="drawingGroup" type="DrawingGroupContainer" />
246
		<type name="masterList" type="MasterListWithTextContainer" />
247
		<type name="docInfoList" type="DocInfoListContainer" optional="true" />
248
		<type name="slideHF" type="SlideHeadersFootersContainer"
249
			optional="true" />
250
		<type name="notesHF" type="NotesHeadersFootersContainer"
251
			optional="true" />
252
		<type name="slideList" type="SlideListWithTextContainer"
253
			optional="true" />
254
		<!--
255
			occurrence of a SlideHeadersFootersContainer after slideList is not
256
			documented
257
		-->
258
		<type name="slideHF2" type="SlideHeadersFootersContainer"
259
			optional="true" />
260
		<type name="notesList" type="NotesListWithTextContainer"
261
			optional="true" />
262
		<type name="slideShowDocInfoAtom" type="SlideShowDocInfoAtom"
263
			optional="true" />
264
		<type name="namedShows" type="NamedShowsContainer" optional="true" />
265
		<type name="summary" type="SummaryContainer" optional="true" />
266
		<type name="docRoutingSlipAtom" type="DocRoutingSlipAtom"
267
			optional="true" />
268
		<type name="printOptionsAtom" type="PrintOptionsAtom" optional="true" />
269
		<type name="unknown0" type="UnknownDocumentContainerChild" array="true" />
270
		<type name="rtCustomTableStylesAtom1" type="RoundTripCustomTableStyles12Atom"
271
			optional="true" />
272
		<type name="unknown1" type="UnknownDocumentContainerChild" array="true" />
273
		<type name="endDocumentAtom" type="EndDocumentAtom" />
274
		<type name="unknown2" type="UnknownDocumentContainerChild" array="true" />
275
		<type name="rtCustomTableStylesAtom2" type="RoundTripCustomTableStyles12Atom"
276
			optional="true" />
277
		<type name="unknown4" type="UnknownDocumentContainerChild" array="true" />
278
		<type name="unknown5" type="TextMasterStyle10Atom" optional="true" />
279
	</struct>
280
	<struct name="SoundCollectionContainer">
281
		<type name="rh" type="RecordHeader">
282
			<limitation name="recVer" value="0xF" />
283
			<!--
284
				must be 5 according to the documentation, but a value of 0 has been
285
				observed
286
			-->
287
			<limitation name="recInstance" value="0|5" />
288
			<limitation name="recType" value="0x7E4" />
289
		</type>
290
		<type name="soundCollectionAtom" type="SoundCollectionAtom" />
291
		<type name="rgSoundContainer" type="SoundContainer" array="true"
292
			size="rh.recLen-12" />
293
	</struct>
294
	<struct name="SoundCollectionAtom">
295
		<type name="rh" type="RecordHeader">
296
			<limitation name="recVer" value="0" />
297
			<limitation name="recInstance" value="0" />
298
			<limitation name="recType" value="0x7e5" />
299
			<limitation name="recLen" value="4" />
300
		</type>
301
		<uint32 name="soundIdSeed" />
302
	</struct>
303
	<struct name="SlideHeadersFootersContainer">
304
		<type name="rh" type="RecordHeader">
305
			<limitation name="recVer" value="0xF" />
306
			<limitation name="recInstance" value="3" />
307
			<limitation name="recType" value="0xFD9" />
308
		</type>
309
		<type name="hfAtom" type="HeadersFootersAtom" />
310
		<type name="userDateAtom" type="UserDateAtom" optional="true" />
311
		<type name="footerAtom" type="FooterAtom" optional="true" />
312
	</struct>
313
	<struct name="NotesHeadersFootersContainer">
314
		<type name="rh" type="RecordHeader">
315
			<limitation name="recVer" value="0xF" />
316
			<limitation name="recInstance" value="4" />
317
			<limitation name="recType" value="0xFD9" />
318
		</type>
319
		<type name="hfAtom" type="HeadersFootersAtom" />
320
		<type name="userDateAtom" type="UserDateAtom" optional="true" />
321
		<type name="headerAtom" type="HeaderAtom" optional="true" />
322
		<type name="footerAtom" type="FooterAtom" optional="true" />
323
	</struct>
324
	<struct name="HeadersFootersAtom">
325
		<type name="rh" type="RecordHeader">
326
			<limitation name="recVer" value="0" />
327
			<limitation name="recInstance" value="0" />
328
			<limitation name="recType" value="0xFDA" />
329
			<limitation name="recLen" value="4" />
330
		</type>
331
		<int16 name="formatId">
332
			<limitation expression="&gt;=0" />
333
			<limitation expression="&lt;=13" />
334
		</int16>
335
		<bit name="fHasDate" />
336
		<bit name="fHasTodayDate" />
337
		<bit name="fHasUserDate" />
338
		<bit name="fHasSlideNumber" />
339
		<bit name="fHasHeader" />
340
		<bit name="fHasFooter" />
341
		<uint2 name="reserved1" />
342
		<uint8 name="reserved2" />
343
	</struct>
344
	<struct name="UserDateAtom">
345
		<type name="rh" type="RecordHeader">
346
			<limitation name="recVer" value="0" />
347
			<limitation name="recInstance" value="0" />
348
			<limitation name="recType" value="0xFBA" />
349
			<limitation name="recLen" expression="%2==0" />
350
			<limitation name="recLen" expression="&lt;=510" />
351
		</type>
352
		<uint16 name="userDate" count="rh.recLen/2" />
353
	</struct>
354
	<struct name="HeaderAtom">
355
		<type name="rh" type="RecordHeader">
356
			<limitation name="recVer" value="0" />
357
			<limitation name="recInstance" value="1" />
358
			<limitation name="recType" value="0xFBA" />
359
			<limitation name="recLen" expression="%2==0" />
360
		</type>
361
		<uint16 name="header" count="rh.recLen/2" />
362
	</struct>
363
	<struct name="FooterAtom">
364
		<type name="rh" type="RecordHeader">
365
			<limitation name="recVer" value="0" />
366
			<limitation name="recInstance" value="2" />
367
			<limitation name="recType" value="0xFBA" />
368
			<limitation name="recLen" expression="%2==0" />
369
		</type>
370
		<uint16 name="footer" count="rh.recLen/2" />
371
	</struct>
372
	<struct name="PerSlideHeadersFootersContainer">
373
		<type name="rh" type="RecordHeader">
374
			<limitation name="recVer" value="0xF" />
375
			<limitation name="recInstance" value="0" />
376
			<limitation name="recType" value="0xFD9" />
377
		</type>
378
		<type name="hfAtom" type="HeadersFootersAtom" />
379
		<type name="userDateAtom" type="UserDateAtom" optional="true" />
380
		<!--
381
			according to Microsoft documentation, there should be no headerAtom
382
			in this struct, however in some ... documents add one. Adding it as
383
			an optional field here still allows such files to be parsed.
384
		-->
385
		<type name="headerAtom" type="HeaderAtom" optional="true" />
386
		<type name="footerAtom" type="FooterAtom" optional="true" />
387
		<!--
388
			according to Microsoft documentation, the userDateAtom must precede
389
			footerAtom, however in some ... documents their order is swapped.
390
			userDateAtom2 allows such files to still be parsed.
391
		-->
392
		<type name="userDateAtom2" type="UserDateAtom" optional="true" />
393
	</struct>
394
	<struct name="EndDocumentAtom">
395
		<type name="rh" type="RecordHeader">
396
			<limitation name="recVer" value="0" />
397
			<limitation name="recInstance" value="0" />
398
			<limitation name="recType" value="0x3EA" />
399
			<limitation name="recLen" value="0" />
400
		</type>
401
	</struct>
402
	<struct name="DocInfoListContainer">
403
		<type name="rh" type="RecordHeader">
404
			<limitation name="recVer" value="0xF" />
405
			<limitation name="recInstance" value="0" />
406
			<limitation name="recType" value="0x7D0" />
407
		</type>
408
		<type name="rgChildRec" type="DocInfoListSubContainerOrAtom"
409
			array="true" />
410
	</struct>
411
	<struct name="DocInfoListSubContainerOrAtom">
412
		<choice name="anon">
413
			<type type="DocProgTagsContainer" />
414
			<type type="NormalViewSetInfoContainer" />
415
			<type type="NotesTextViewInfoContainer" />
416
			<type type="OutlineViewInfoContainer" />
417
			<type type="SlideViewInfoInstance" />
418
			<type type="SorterViewInfoContainer" />
419
			<type type="VBAInfoContainer" />
420
		</choice>
421
	</struct>
422
	<struct name="SlideViewInfoInstance">
423
		<type name="rh" type="RecordHeader">
424
			<limitation name="recVer" value="0xF" />
425
			<limitation name="recInstance" value="0|1" />
426
			<limitation name="recType" value="0x3FA" />
427
		</type>
428
		<type name="slideViewInfoAtom" type="SlideViewInfoAtom" />
429
		<type name="zoomViewInfoAtom" type="ZoomViewInfoAtom" />
430
		<type name="rgGuideAtom" type="GuideAtom" array="true" />
431
	</struct>
432
	<struct name="SlideViewInfoAtom">
433
		<type name="rh" type="RecordHeader">
434
			<limitation name="recVer" value="0" />
435
			<limitation name="recInstance" value="0" />
436
			<limitation name="recType" value="0x3FE" />
437
			<limitation name="recLen" value="3" />
438
		</type>
439
		<uint8 name="unused1" />
440
		<uint8 name="fSnapToGrid" />
441
		<uint8 name="fSnapToShape" />
442
	</struct>
443
	<struct name="ZoomViewInfoAtom">
444
		<type name="rh" type="RecordHeader">
445
			<limitation name="recVer" value="0" />
446
			<limitation name="recInstance" value="0" />
447
			<limitation name="recType" value="0x3FD" />
448
			<limitation name="recLen" value="0x34" />
449
		</type>
450
		<type name="curScale" type="ScalingStruct" />
451
		<uint8 name="unused1" count="24" />
452
		<type name="origin" type="PointStruct" />
453
		<uint8 name="fUseVarScale">
454
			<limitation value="0|1" />
455
		</uint8>
456
		<uint8 name="fDraftMode" />
457
		<uint16 name="unused2" />
458
	</struct>
459
	<struct name="ScalingStruct">
460
		<type name="x" type="RatioStruct" />
461
		<type name="y" type="RatioStruct" />
462
	</struct>
463
	<struct name="GuideAtom">
464
		<type name="rh" type="RecordHeader">
465
			<limitation name="recVer" value="0" />
466
			<limitation name="recInstance" value="7" />
467
			<limitation name="recType" value="0x3FB" />
468
			<limitation name="recLen" value="8" />
469
		</type>
470
		<uint32 name="type">
471
			<limitation value="0|1" />
472
		</uint32>
473
		<int32 name="pos">
474
			<limitation expression="&gt;=-15840" />
475
			<limitation expression="&lt;=32255" />
476
		</int32>
477
	</struct>
478
	<struct name="DocProgTagsContainer">
479
		<type name="rh" type="RecordHeader">
480
			<limitation name="recVer" value="0xF" />
481
			<limitation name="recInstance" value="0|1" />
482
			<limitation name="recType" value="0x1388" />
483
		</type>
484
		<type name="rgChildRec" type="DocProgTagsSubContainerOrAtom"
485
			array="true" size="rh.recLen" />
486
	</struct>
487
	<struct name="DocProgTagsSubContainerOrAtom">
488
		<choice name="anon">
489
			<type type="ProgStringTagContainer" />
490
			<type type="DocProgBinaryTagContainer" />
491
		</choice>
492
	</struct>
493
	<struct name="DocProgBinaryTagContainer">
494
		<type name="rh" type="RecordHeader">
495
			<limitation name="recVer" value="0xF" />
496
			<limitation name="recInstance" value="0" />
497
			<limitation name="recType" value="0x138A" />
498
		</type>
499
		<type name="rec" type="DocProgBinaryTagSubContainerOrAtom" />
500
	</struct>
501
	<struct name="DocProgBinaryTagSubContainerOrAtom">
502
		<choice name="anon">
503
			<type name="__PPT9" type="PP9DocBinaryTagExtension" />
504
			<type name="__PPT10" type="PP10DocBinaryTagExtension" />
505
			<type name="__PPT11" type="PP11DocBinaryTagExtension" />
506
			<type name="__PPT12" type="PP12DocBinaryTagExtension" />
507
			<type name="__unknown" type="UnknownBinaryTag" />
508
		</choice>
509
	</struct>
510
	<struct name="PP9DocBinaryTagExtension">
511
		<type name="rh" type="RecordHeader">
512
			<limitation name="recVer" value="0x0" />
513
			<limitation name="recInstance" value="0" />
514
			<limitation name="recType" value="0x0FBA" />
515
			<limitation name="recLen" value="0x0E" />
516
		</type>
517
		<uint8 name="tagName" count="14" />
518
		<type name="rhData" type="RecordHeader">
519
			<limitation name="recVer" value="0x0" />
520
			<limitation name="recInstance" value="0" />
521
			<limitation name="recType" value="0x138B" />
522
		</type>
523
		<type name="rgTextMasterStyle9" type="TextMasterStyle9Atom" />
524
		<type name="blipCollectionContainer" type="BlipCollection9Container" />
525
		<type name="textDefaultsAtom" type="TextDefaults9Atom" />
526
		<type name="kinsokuContainer" type="Kinsoku9Container" />
527
		<type name="rgExternalHyperlink9" type="ExHyperlink9Container" />
528
		<type name="presAdvisorFlagsAtom" type="PresAdvisorFlags9Atom"
529
			optional="true" />
530
		<type name="envelopeDataAtom" type="EnvelopeData9Atom" optional="true" />
531
		<type name="envelopeFlagsAtom" type="EnvelopeFlags9Atom" />
532
		<type name="htmlDocInfoAtom" type="HTMLDocInfo9Atom" optional="true" />
533
		<type name="htmlPublishInfoAtom" type="HTMLPublishInfo9Container" />
534
		<type name="rgBroadcastDocInfo9" type="BroadcastDocInfo9Container" />
535
		<type name="outlineTextPropsContainer" type="OutlineTextProps9Container" />
536
	</struct>
537
	<struct name="TextMasterStyle9Atom">
538
		<type name="rh" type="RecordHeader">
539
			<limitation name="recVer" value="0x0" />
540
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
541
			<limitation name="recType" value="0x0FAD" />
542
		</type>
543
		<uint16 name="cLevels">
544
			<limitation expression="&lt;=5" />
545
		</uint16>
546
		<type name="lstLvl1" type="TextMasterStyle9Level" condition="cLevels&gt;0" />
547
		<type name="lstLvl2" type="TextMasterStyle9Level" condition="cLevels&gt;1" />
548
		<type name="lstLvl3" type="TextMasterStyle9Level" condition="cLevels&gt;2" />
549
		<type name="lstLvl4" type="TextMasterStyle9Level" condition="cLevels&gt;3" />
550
		<type name="lstLvl5" type="TextMasterStyle9Level" condition="cLevels&gt;4" />
551
	</struct>
552
	<struct name="TextMasterStyle9Level">
553
		<type name="pf9" type="TextPFException9" />
554
		<type name="cf9" type="TextCFException9" />
555
	</struct>
556
	<struct name="TextPFException9">
557
		<type name="masks" type="PFMasks">
558
			<limitation name="hasBullet" value="false" />
559
			<limitation name="bulletHasFont" value="false" />
560
			<limitation name="bulletHasColor" value="false" />
561
			<limitation name="bulletHasSize" value="false" />
562
			<limitation name="bulletFont" value="false" />
563
			<limitation name="bulletColor" value="false" />
564
			<limitation name="bulletSize" value="false" />
565
			<limitation name="bulletChar" value="false" />
566
			<limitation name="leftMargin" value="false" />
567
			<limitation name="indent" value="false" />
568
			<limitation name="align" value="false" />
569
			<limitation name="lineSpacing" value="false" />
570
			<limitation name="spaceBefore" value="false" />
571
			<limitation name="spaceAfter" value="false" />
572
			<limitation name="defaultTabSize" value="false" />
573
			<limitation name="fontAlign" value="false" />
574
			<limitation name="charWrap" value="false" />
575
			<limitation name="wordWrap" value="false" />
576
			<limitation name="overflow" value="false" />
577
			<limitation name="tabStops" value="false" />
578
			<limitation name="textDirection" value="false" />
579
		</type>
580
		<uint16 name="bulletBlipRef" condition="masks.bulletBlip" />
581
		<uint16 name="fBulletHasAutoNumber" condition="masks.bulletHasScheme">
582
			<limitation value="0|1" />
583
		</uint16>
584
		<type name="bulletAutoNumberScheme" condition="masks.bulletScheme"
585
			type="TextAutoNumberScheme" />
586
	</struct>
587
	<struct name="TextAutoNumberScheme">
588
		<uint16 name="scheme">
589
			<limitation
590
				value="0x0000|0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008" />
591
		</uint16>
592
		<uint16 name="startNum">
593
			<limitation expression="&gt;=1" />
594
		</uint16>
595
	</struct>
596
	<struct name="TextCFException9">
597
		<type name="masks" type="CFMasks">
598
			<limitation name="bold" value="false" />
599
			<limitation name="italic" value="false" />
600
			<limitation name="underline" value="false" />
601
			<limitation name="shadow" value="false" />
602
			<limitation name="fehint" value="false" />
603
			<limitation name="kumi" value="false" />
604
			<limitation name="emboss" value="false" />
605
			<limitation name="reserved" value="0" />
606
			<limitation name="typeface" value="false" />
607
			<limitation name="size" value="false" />
608
			<limitation name="color" value="false" />
609
			<limitation name="position" value="false" />
610
			<limitation name="oldEATypeface" value="false" />
611
			<limitation name="ansiTypeface" value="false" />
612
			<limitation name="symbolTypeface" value="false" />
613
			<limitation name="newEATypeface" value="false" />
614
			<limitation name="csTypeface" value="false" />
615
			<limitation name="pp11ext" value="false" />
616
		</type>
617
		<uint4 name="pp10runid" condition="masks.pp10ext" />
618
		<uint20 name="unuseda" condition="masks.pp10ext" />
619
		<uint8 name="unusedb" condition="masks.pp10ext" />
620
	</struct>
621
	<struct name="BlipCollection9Container">
622
		<type name="rh" type="RecordHeader">
623
			<limitation name="recVer" value="0xF" />
624
			<limitation name="recInstance" value="0x0" />
625
			<limitation name="recType" value="0x07F8" />
626
		</type>
627
		<type name="rgBlipEntityAtom" type="BlipEntityAtom" array="true"
628
			size="rh.recLen" />
629
		<!--
630
			ToDo gBlipEntityAtom (variable): An array of BlipEntityAtom record
631
			that specifies picture bullets. It MUST NOT contain more than one
632
			BlipEntityAtom record with the same value of rh.recInstance.
633
		-->
634
	</struct>
635
	<struct name="BlipEntityAtom">
636
		<type name="rh" type="RecordHeader">
637
			<limitation name="recVer" value="0" />
638
			<limitation name="recInstance" expression="&lt;=128" />
639
			<limitation name="recType" value="0x07F9" />
640
		</type>
641
		<uint8 name="winBlipType">
642
			<limitation value="0x02|0x03|0x05|0x06" />
643
		</uint8>
644
		<bit name="unused" />
645
		<type name="blip" type="OfficeArtBStoreContainerFileBlock" />
646
	</struct>
647
	<struct name="TextDefaults9Atom">
648
		<type name="rh" type="RecordHeader">
649
			<limitation name="recVer" value="0x0" />
650
			<limitation name="recInstance" value="0x00" />
651
			<limitation name="recType" value="0x0FB0" />
652
		</type>
653
		<type name="cf9" type="TextCFException9" />
654
		<type name="pf9" type="TextPFException9" />
655
	</struct>
656
	<struct name="Kinsoku9Container">
657
		<type name="rh" type="RecordHeader">
658
			<limitation name="recVer" value="0xF" />
659
			<limitation name="recInstance" value="0x2" />
660
			<limitation name="recType" value="0x0FC8" />
661
		</type>
662
		<type name="kinsoku9Atom" type="Kinsoku9Atom" />
663
		<type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
664
			condition="kinsoku9Atom.korLevel==2 || kinsoku9Atom.scLevel==2 || kinsoku9Atom.tcLevel==2 || kinsoku9Atom.jpnLevel==2" />
665
		<type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
666
			condition="kinsoku9Atom.korLevel==2 || kinsoku9Atom.scLevel==2 || kinsoku9Atom.tcLevel==2 || kinsoku9Atom.jpnLevel==2" />
667
	</struct>
668
	<struct name="Kinsoku9Atom">
669
		<type name="rh" type="RecordHeader">
670
			<limitation name="recVer" value="0x0" />
671
			<limitation name="recInstance" value="0x3" />
672
			<limitation name="recType" value="0x0FD2" />
673
			<limitation name="recLen" value="0x0004" />
674
		</type>
675
		<uint2 name="korLevel">
676
			<limitation value="0x0|0x2" />
677
		</uint2>
678
		<uint2 name="scLevel">
679
			<limitation value="0x0|0x2" />
680
		</uint2>
681
		<uint2 name="tcLevel">
682
			<limitation value="0x0|0x2" />
683
		</uint2>
684
		<uint2 name="jpnLevel">
685
			<limitation value="0x0|0x1|0x2" />
686
		</uint2>
687
		<uint4 name="reserveda">
688
			<limitation value="0" />
689
		</uint4>
690
		<uint20 name="reservedb">
691
			<limitation value="0" />
692
		</uint20>
693
	</struct>
694
	<struct name="ExHyperlink9Container">
695
		<type name="rh" type="RecordHeader">
696
			<limitation name="recVer" value="0xF" />
697
			<limitation name="recInstance" value="0" />
698
			<limitation name="recType" value="0xFE4" />
699
		</type>
700
		<uint8 name="todo" count="rh.recLen" />
701
	</struct>
702
	<struct name="PresAdvisorFlags9Atom">
703
		<type name="rh" type="RecordHeader">
704
			<limitation name="recVer" value="0x0" />
705
			<limitation name="recInstance" value="0" />
706
			<limitation name="recType" value="0x177A" />
707
			<limitation name="recLen" value="0x4" />
708
		</type>
709
		<bit name="fDisableCaseStyleTitleRule" />
710
		<bit name="fDisableCaseStyleBodyRule" />
711
		<bit name="fDisableEndPunctuationTitleRule" />
712
		<bit name="fDisableEndPunctuationBodyRule" />
713
		<bit name="fDisableTooManyBulletsRule" />
714
		<bit name="fDisableFontSizeTitleRule" />
715
		<bit name="fDisableFontSizeBodyRule" />
716
		<bit name="fDisableNumberOfLinesTitleRule" />
717
		<bit name="fDisableNumberOfLinesBodyRule" />
718
		<bit name="fDisableTooManyFontsRule" />
719
		<bit name="fDisablePrintTip" />
720
		<uint5 name="reserveda">
721
			<limitation value="0" />
722
		</uint5>
723
		<uint16 name="reservedb">
724
			<limitation value="0" />
725
		</uint16>
726
	</struct>
727
	<struct name="EnvelopeData9Atom">
728
		<type name="rh" type="RecordHeader">
729
			<limitation name="recVer" value="0x0" />
730
			<limitation name="recInstance" value="0" />
731
			<limitation name="recType" value="0x1785" />
732
		</type>
733
		<uint8 name="todo" count="rh.recLen" />
734
	</struct>
735
	<struct name="EnvelopeFlags9Atom">
736
		<type name="rh" type="RecordHeader">
737
			<limitation name="recVer" value="0x0" />
738
			<limitation name="recInstance" value="0" />
739
			<limitation name="recType" value="0x1784" />
740
			<limitation name="recLen" value="4" />
741
		</type>
742
		<bit name="fHasEnvelope" />
743
		<bit name="fEnvelopeVisible" />
744
		<uint2 name="reserved1">
745
			<limitation value="0" />
746
		</uint2>
747
		<bit name="fEnvelopeDirty" />
748
		<uint3 name="reserved2a">
749
			<limitation value="0" />
750
		</uint3>
751
		<uint8 name="reserved2b">
752
			<limitation value="0" />
753
		</uint8>
754
		<uint16 name="reserved2c">
755
			<limitation value="0" />
756
		</uint16>
757
	</struct>
758
	<struct name="HTMLDocInfo9Atom">
759
		<type name="rh" type="RecordHeader">
760
			<limitation name="recVer" value="0x0" />
761
			<limitation name="recInstance" value="0" />
762
			<limitation name="recType" value="0x177B" />
763
			<limitation name="recLen" value="0x10" />
764
		</type>
765
		<uint32 name="unused1" />
766
		<uint32 name="encoding" />
767
		<!--ToDo Encoding limitation -->
768
		<uint16 name="frameColorType">
769
			<limitation value="0|1|2|3|4|5" />
770
		</uint16>
771
		<uint8 name="screenSize" />
772
		<uint8 name="unused2" />
773
		<uint8 name="outputType" />
774
		<bit name="fShowFrame" />
775
		<bit name="fResizeGraphics" />
776
		<bit name="fOrganizeInFolder" />
777
		<bit name="fUseLongFileNames" />
778
		<bit name="fRelyOnVML" />
779
		<bit name="fAllowPNG" />
780
		<bit name="fShowSlideAnimation" />
781
		<bit name="reserved1">
782
			<limitation value='false' />
783
		</bit>
784
		<uint16 name="unused3" />
785
	</struct>
786
	<struct name="HTMLPublishInfo9Container">
787
		<type name="rh" type="RecordHeader">
788
			<limitation name="recVer" value="0xF" />
789
			<limitation name="recInstance" value="0x0" />
790
			<limitation name="recType" value="0x177D" />
791
		</type>
792
		<uint8 name="todo" count="rh.recLen" />
793
	</struct>
794
	<struct name="BroadcastDocInfo9Container">
795
		<type name="rh" type="RecordHeader">
796
			<limitation name="recVer" value="0xF" />
797
			<limitation name="recInstance" value="0" />
798
			<limitation name="recType" value="0x177E" />
799
		</type>
800
		<uint8 name="todo" count="rh.recLen" />
801
	</struct>
802
	<struct name="OutlineTextProps9Container">
803
		<type name="rh" type="RecordHeader">
804
			<limitation name="recVer" value="0xF" />
805
			<limitation name="recInstance" value="0" />
806
			<limitation name="recType" value="0x0FAE" />
807
		</type>
808
		<type name="rgOutlineTextProps9Entry" type="OutlineTextProps9Entry"
809
			array="true" />
810
	</struct>
811
	<struct name="OutlineTextProps9Entry">
812
		<type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
813
		<type name="styleTextProp9Atom" type="StyleTextProp9Atom" />
814
	</struct>
815
	<struct name="OutlineTextPropsHeaderExAtom">
816
		<type name="rh" type="RecordHeader">
817
			<limitation name="recVer" value="0" />
818
			<limitation name="recInstance" expression="&lt;=5" />
819
			<limitation name="recType" value="0xFAF" />
820
		</type>
821
		<uint8 name="todo" count="rh.recLen" />
822
	</struct>
823
	<struct name="StyleTextProp9Atom">
824
		<type name="rh" type="RecordHeader">
825
			<limitation name="recVer" value="0" />
826
			<limitation name="recInstance" value="0" />
827
			<limitation name="recType" value="0xFAC" />
828
		</type>
829
		<type name="rgStyleTextProp9" type="StyleTextProp9" size="rh.recLen" />
830
	</struct>
831
	<struct name="StyleTextProp9">
832
		<type name="pf9" type="TextPFException9" />
833
		<type name="cf9" type="TextCFException9" />
834
		<type name="si" type="TextSIException">
835
			<limitation name="spell" value="false" />
836
			<limitation name="lang" value="false" />
837
			<limitation name="altLang" value="false" />
838
			<limitation name="smartTag" value="false" />
839
		</type>
840
	</struct>
841
	<struct name="PP10DocBinaryTagExtension">
842
		<type name="rh" type="RecordHeader">
843
			<limitation name="recVer" value="0x0" />
844
			<limitation name="recInstance" value="0" />
845
			<limitation name="recType" value="0x0FBA" />
846
			<limitation name="recLen" value="0x10" />
847
		</type>
848
		<uint8 name="tagName" count="16" />
849
		<type name="rhData" type="RecordHeader">
850
			<limitation name="recVer" value="0x0" />
851
			<limitation name="recInstance" value="0" />
852
			<limitation name="recType" value="0x138B" />
853
		</type>
854
		<type name="fontCollectionContainer" type="FontCollection10Container"
855
			optional="true" />
856
		<type name="rgTextMasterStyle10" type="TextMasterStyle10Atom"
857
			array="true" />
858
		<type name="textDefaultsAtom" type="TextDefaults10Atom" optional="true" />
859
		<type name="gridSpacingAtom" type="GridSpacing10Atom" />
860
		<type name="rgCommentIndex10" type="CommentIndex10Container"
861
			array="true" />
862
		<type name="fontEmbedFlagsAtom" type="FontEmbedFlags10Atom"
863
			optional="true" />
864
		<type name="copyrightAtom" type="CopyrightAtom" optional="true" />
865
		<type name="keywordsAtom" type="KeywordsAtom" optional="true" />
866
		<type name="filterPrivacyFlagsAtom" type="FilterPrivacyFlags10Atom"
867
			optional="true" />
868
		<type name="outlineTextPropsContainer" type="OutlineTextProps10Container"
869
			optional="true" />
870
		<type name="docToolbarStatesAtom" type="DocToolbarStates10Atom"
871
			optional="true" />
872
		<type name="slideListTableContainer" type="SlideListTable10Container"
873
			optional="true" />
874
		<type name="rgDiffTree10Container" type="DiffTree10Container"
875
			optional="true" />
876
		<type name="modifyPasswordAtom" type="ModifyPasswordAtom"
877
			optional="true" />
878
		<type name="photoAlbumInfoAtom" type="PhotoAlbumInfo10Atom"
879
			optional="true" />
880
	</struct>
881
	<struct name="FontCollection10Container">
882
		<type name="rh" type="RecordHeader">
883
			<limitation name="recVer" value="0xF" />
884
			<limitation name="recInstance" value="0x0" />
885
			<limitation name="recType" value="0x07D6" />
886
		</type>
887
		<!-- <uint8 name="todo" count="rh.recLen" /> -->
888
		<type name="rgFontCollectionEntry" type="FontCollectionEntry"
889
			array="true" size="rh.recLen" />
890
	</struct>
891
	<struct name="TextMasterStyle10Atom">
892
		<type name="rh" type="RecordHeader">
893
			<limitation name="recVer" value="0x0" />
894
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
895
			<limitation name="recType" value="0x0FB2" />
896
		</type>
897
		<uint16 name="cLevels">
898
			<limitation expression="&lt;=5" />
899
		</uint16>
900
		<!--
901
			level field of TextMasterStyleLevel is put here, because its presence
902
			depends on this structure and currently child access to parent
903
			properties is not supported
904
		-->
905
		<uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
906
		<type name="lstLvl1" type="TextMasterStyle10Level" condition="cLevels&gt;0" />
907
		<uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
908
		<type name="lstLvl2" type="TextMasterStyle10Level" condition="cLevels&gt;1" />
909
		<uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
910
		<type name="lstLvl3" type="TextMasterStyle10Level" condition="cLevels&gt;2" />
911
		<uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
912
		<type name="lstLvl4" type="TextMasterStyle10Level" condition="cLevels&gt;3" />
913
		<uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
914
		<type name="lstLvl5" type="TextMasterStyle10Level" condition="cLevels&gt;4" />
915
	</struct>
916
	<struct name="TextMasterStyle10Level">
917
		<type name="cf10" type="TextCFException10" />
918
	</struct>
919
	<struct name="TextCFException10">
920
		<type name="masks" type="CFMasks">
921
			<limitation name="bold" value="false" />
922
			<limitation name="italic" value="false" />
923
			<limitation name="underline" value="false" />
924
			<limitation name="shadow" value="false" />
925
			<limitation name="fehint" value="false" />
926
			<limitation name="kumi" value="false" />
927
			<limitation name="emboss" value="false" />
928
			<limitation name="reserved" value="0" />
929
			<limitation name="typeface" value="false" />
930
			<limitation name="size" value="false" />
931
			<limitation name="color" value="false" />
932
			<limitation name="position" value="false" />
933
			<limitation name="pp10ext" value="false" />
934
			<limitation name="oldEATypeface" value="false" />
935
			<limitation name="ansiTypeface" value="false" />
936
			<limitation name="symbolTypeface" value="false" />
937
		</type>
938
		<!--ToDo check it is correct or not -->
939
		<uint16 name="newEAFontRef" condition="masks.newEATypeface" />
940
		<uint16 name="csFontRef" condition="masks.csTypeface" />
941
		<uint32 name="pp11ext" condition="masks.pp11ext" />
942
	</struct>
943
	<struct name="TextDefaults10Atom">
944
		<type name="rh" type="RecordHeader">
945
			<limitation name="recVer" value="0x0" />
946
			<limitation name="recInstance" value="0x0" />
947
			<limitation name="recType" value="0x0FB4" />
948
		</type>
949
		<type name="cf10" type="TextCFException10" />
950
	</struct>
951
	<struct name="GridSpacing10Atom">
952
		<type name="rh" type="RecordHeader">
953
			<limitation name="recVer" value="0x0" />
954
			<limitation name="recInstance" value="0x0" />
955
			<limitation name="recType" value="0x040D" />
956
			<limitation name="recLen" value="0x08" />
957
		</type>
958
		<uint32 name="x">
959
			<limitation expression="&gt;=23224" />
960
			<limitation expression="&lt;=1179648" />
961
		</uint32>
962
		<uint32 name="y">
963
			<!--
964
				TODO: fix generator to handle this expression <limitation
965
				expression="x==y" />
966
			-->
967
			<limitation expression="&gt;=23224" />
968
			<limitation expression="&lt;=1179648" />
969
		</uint32>
970
	</struct>
971
	<struct name="CommentIndex10Container">
972
		<type name="rh" type="RecordHeader">
973
			<limitation name="recVer" value="0xF" />
974
			<limitation name="recInstance" value="0x0" />
975
			<limitation name="recType" value="0x2EE4" />
976
		</type>
977
		<type name="authorNameAtom" type="AuthorNameAtom" optional="true" />
978
		<type name="authorIndexAtom" type="CommentIndex10Atom" optional="true" />
979
	</struct>
980
	<struct name="AuthorNameAtom">
981
		<type name="rh" type="RecordHeader">
982
			<limitation name="recVer" value="0x0" />
983
			<limitation name="recInstance" value="0x0" />
984
			<limitation name="recType" value="0x0FBA" />
985
			<limitation name="recLen" expression="&lt;=104" />
986
			<limitation name="recLen" expression="%2==0" />
987
		</type>
988
		<uint8 name="authorName" count="rh.recLen" />
989
	</struct>
990
	<struct name="CommentIndex10Atom">
991
		<type name="rh" type="RecordHeader">
992
			<limitation name="recVer" value="0x0" />
993
			<limitation name="recInstance" value="0x0" />
994
			<limitation name="recType" value="0x2EE5" />
995
			<limitation name="recLen" value="0x08" />
996
		</type>
997
		<int32 name="colorIndex">
998
			<limitation expression="&gt;=0" />
999
		</int32>
1000
		<int32 name="commentIndexSeed">
1001
			<limitation expression="&gt;=0" />
1002
			<!-- To Do limitation seems tough to do -->
1003
		</int32>
1004
	</struct>
1005
	<struct name="FontEmbedFlags10Atom">
1006
		<type name="rh" type="RecordHeader">
1007
			<limitation name="recVer" value="0x0" />
1008
			<limitation name="recInstance" value="0x0" />
1009
			<limitation name="recType" value="0x32C8" />
1010
			<limitation name="recLen" value="0x04" />
1011
		</type>
1012
		<bit name="fSubset" />
1013
		<bit name="fSubsetOptionConfirmed" />
1014
		<uint14 name="unuseda" />
1015
		<uint16 name="unusedb" />
1016
	</struct>
1017
	<struct name="CopyrightAtom">
1018
		<type name="rh" type="RecordHeader">
1019
			<limitation name="recVer" value="0x0" />
1020
			<limitation name="recInstance" value="0x1" />
1021
			<limitation name="recType" value="0x0FBA" />
1022
			<limitation name="recLen" expression="&lt;=510" />
1023
			<limitation name="recLen" expression="%2==0" />
1024
		</type>
1025
		<uint8 name="copyright" count="rh.recLen" />
1026
	</struct>
1027
	<struct name="KeywordsAtom">
1028
		<type name="rh" type="RecordHeader">
1029
			<limitation name="recVer" value="0x0" />
1030
			<limitation name="recInstance" value="0x2" />
1031
			<limitation name="recType" value="0x0FBA" />
1032
			<limitation name="recLen" expression="&lt;=510" />
1033
			<limitation name="recLen" expression="%2==0" />
1034
		</type>
1035
		<uint8 name="keywords" count="rh.recLen" />
1036
	</struct>
1037
	<struct name="FilterPrivacyFlags10Atom">
1038
		<type name="rh" type="RecordHeader">
1039
			<limitation name="recVer" value="0x0" />
1040
			<limitation name="recInstance" value="0x0" />
1041
			<limitation name="recType" value="0x36B0" />
1042
			<limitation name="recLen" value="0x04" />
1043
		</type>
1044
		<bit name="fRemovePII" />
1045
		<uint7 name="reserved2a">
1046
			<limitation value="0x0" />
1047
		</uint7>
1048
		<uint8 name="reserved2b">
1049
			<limitation value="0x0" />
1050
		</uint8>
1051
		<uint16 name="reserved2c">
1052
			<limitation value="0x0" />
1053
		</uint16>
1054
	</struct>
1055
	<struct name="OutlineTextProps10Container">
1056
		<type name="rh" type="RecordHeader">
1057
			<limitation name="recVer" value="0xF" />
1058
			<limitation name="recInstance" value="0" />
1059
			<limitation name="recType" value="0x0FB3" />
1060
		</type>
1061
		<type name="rgOutlineTextProps10Entry" type="OutlineTextProps10Entry"
1062
			array="true" />
1063
	</struct>
1064
	<struct name="OutlineTextProps10Entry">
1065
		<type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
1066
		<type name="styleTextProp10Atom" type="StyleTextProp10Atom" />
1067
	</struct>
1068
	<struct name="StyleTextProp10Atom">
1069
		<type name="rh" type="RecordHeader">
1070
			<limitation name="recVer" value="0" />
1071
			<limitation name="recInstance" value="0x0" />
1072
			<limitation name="recType" value="0xFB1" />
1073
		</type>
1074
		<type name="rgStyleTextProp10" type="TextCFException10" array="true" />
1075
	</struct>
1076
	<struct name="DocToolbarStates10Atom">
1077
		<type name="rh" type="RecordHeader">
1078
			<limitation name="recVer" value="0x0" />
1079
			<limitation name="recInstance" value="0" />
1080
			<limitation name="recType" value="0x36B1" />
1081
			<limitation name="recLen" value="0x01" />
1082
		</type>
1083
		<bit name="fShowReviewingToolbar" />
1084
		<bit name="fShowReviewingGallery" />
1085
		<uint6 name="reserved">
1086
			<limitation value="0x0" />
1087
		</uint6>
1088
	</struct>
1089
	<struct name="SlideListTable10Container">
1090
		<type name="rh" type="RecordHeader">
1091
			<limitation name="recVer" value="0xF" />
1092
			<limitation name="recInstance" value="0" />
1093
			<limitation name="recType" value="0x2EF1" />
1094
		</type>
1095
		<uint8 name="todo" count="rh.recLen" />
1096
	</struct>
1097
	<struct name="DiffTree10Container">
1098
		<type name="rh" type="RecordHeader">
1099
			<limitation name="recVer" value="0xF" />
1100
			<limitation name="recInstance" value="0" />
1101
			<limitation name="recType" value="0x2EEC" />
1102
		</type>
1103
		<uint8 name="todo" count="rh.recLen" />
1104
	</struct>
1105
	<struct name="ModifyPasswordAtom">
1106
		<type name="rh" type="RecordHeader">
1107
			<limitation name="recVer" value="0x0" />
1108
			<limitation name="recInstance" value="0x03" />
1109
			<limitation name="recType" value="0x0FBA" />
1110
			<limitation name="recLen" expression="&lt;=510" />
1111
			<limitation name="recLen" expression="%2==0" />
1112
		</type>
1113
		<uint8 name="modifyPassword" count="rh.recLen" />
1114
	</struct>
1115
	<struct name="PhotoAlbumInfo10Atom">
1116
		<type name="rh" type="RecordHeader">
1117
			<limitation name="recVer" value="0x0" />
1118
			<limitation name="recInstance" value="0x0" />
1119
			<limitation name="recType" value="0x036B2" />
1120
			<limitation name="recLen" value="0x06" />
1121
		</type>
1122
		<uint8 name="fUseBlackWhite" />
1123
		<uint8 name="fHasCaption" />
1124
		<uint8 name="layout">
1125
			<limitation value="0|1|2|3|4|5|6" />
1126
		</uint8>
1127
		<uint8 name="unused" />
1128
		<uint16 name="frameShape">
1129
			<limitation value="0x0000|0x0001|0x0002|0x0003|0x0004|0x0005|0x0006" />
1130
		</uint16>
1131
	</struct>
1132
	<struct name="PP11DocBinaryTagExtension">
1133
		<type name="rh" type="RecordHeader">
1134
			<limitation name="recVer" value="0x0" />
1135
			<limitation name="recInstance" value="0" />
1136
			<limitation name="recType" value="0x0FBA" />
1137
			<limitation name="recLen" value="0x10" />
1138
		</type>
1139
		<uint8 name="tagName" count="16" />
1140
		<type name="rhData" type="RecordHeader">
1141
			<limitation name="recVer" value="0x0" />
1142
			<limitation name="recInstance" value="0" />
1143
			<limitation name="recType" value="0x138B" />
1144
		</type>
1145
		<type name="smartTagStore11" type="SmartTagStore11Container" />
1146
		<type name="outlineTextProps" type="OutlineTextProps11Container" />
1147
	</struct>
1148
	<struct name="SmartTagStore11Container">
1149
		<type name="rh" type="RecordHeader">
1150
			<limitation name="recVer" value="0xF" />
1151
			<limitation name="recInstance" value="0x0" />
1152
			<limitation name="recType" value="0x36B3" />
1153
		</type>
1154
		<uint8 name="todo" count="rh.recLen" />
1155
	</struct>
1156
	<struct name="OutlineTextProps11Container">
1157
		<type name="rh" type="RecordHeader">
1158
			<limitation name="recVer" value="0xF" />
1159
			<limitation name="recInstance" value="0x0" />
1160
			<limitation name="recType" value="0x0FB5" />
1161
		</type>
1162
		<uint8 name="todo" count="rh.recLen" />
1163
	</struct>
1164
	<struct name="UnknownBinaryTag">
1165
		<type name="tagNameAtom" type="TagNameAtom" />
1166
		<type name="tagData" type="BinaryTagDataBlob" />
1167
	</struct>
1168
	<struct name="BinaryTagDataBlob">
1169
		<type name="rh" type="RecordHeader">
1170
			<limitation name="recVer" value="0x0" />
1171
			<limitation name="recInstance" value="0x0" />
1172
			<limitation name="recType" value="0x138B" />
1173
		</type>
1174
		<uint8 name="data" count="rh.recLen" />
1175
	</struct>
1176
	<struct name="PP12DocBinaryTagExtension">
1177
		<type name="rh" type="RecordHeader">
1178
			<limitation name="recVer" value="0x0" />
1179
			<limitation name="recInstance" value="0" />
1180
			<limitation name="recType" value="0x0FBA" />
1181
			<limitation name="recLen" value="0x10" />
1182
		</type>
1183
		<uint8 name="tagName" count="16" />
1184
		<type name="rhData" type="RecordHeader">
1185
			<limitation name="recVer" value="0x0" />
1186
			<limitation name="recInstance" value="0" />
1187
			<limitation name="recType" value="0x138B" />
1188
		</type>
1189
		<uint8 name="todo" count="rhData.recLen" />
1190
	</struct>
1191
	<struct name="NotesTextViewInfoContainer">
1192
		<type name="rh" type="RecordHeader">
1193
			<limitation name="recVer" value="0xF" />
1194
			<limitation name="recInstance" value="1" />
1195
			<limitation name="recType" value="0x413" />
1196
		</type>
1197
		<type name="zoomViewInfo" type="ZoomViewInfoAtom" />
1198
	</struct>
1199
	<struct name="OutlineViewInfoContainer">
1200
		<type name="rh" type="RecordHeader">
1201
			<limitation name="recVer" value="0xF" />
1202
			<!-- OpenOffice writes 0 here. -->
1203
			<limitation name="recInstance" value="0|1" />
1204
			<limitation name="recType" value="0x407" />
1205
		</type>
1206
		<type name="noZoomViewInfo" type="NoZoomViewInfoAtom" />
1207
	</struct>
1208
	<struct name="NoZoomViewInfoAtom">
1209
		<type name="rh" type="RecordHeader">
1210
			<limitation name="recVer" value="0" />
1211
			<limitation name="recInstance" value="0" />
1212
			<limitation name="recType" value="0x3FD" />
1213
			<limitation name="recLen" value="0x34" />
1214
		</type>
1215
		<type name="curScale" type="ScalingStruct" />
1216
		<uint8 name="unused1" count="24" />
1217
		<type name="origin" type="PointStruct" />
1218
		<uint8 name="unused2" />
1219
		<uint8 name="fDraftMode" />
1220
		<uint16 name="unused3" />
1221
	</struct>
1222
	<struct name="SorterViewInfoContainer">
1223
		<type name="rh" type="RecordHeader">
1224
			<limitation name="recVer" value="0xF" />
1225
			<limitation name="recInstance" value="1" />
1226
			<limitation name="recType" value="0x408" />
1227
		</type>
1228
		<uint8 name="todo" count="rh.recLen" />
1229
	</struct>
1230
	<struct name="VBAInfoContainer">
1231
		<type name="rh" type="RecordHeader">
1232
			<limitation name="recVer" value="0xF" />
1233
			<limitation name="recInstance" value="1" />
1234
			<limitation name="recType" value="0x3FF" />
1235
			<limitation name="recLen" value="0x14" />
1236
		</type>
1237
		<type name="vbaInfoAtom" type="VBAInfoAtom" />
1238
	</struct>
1239
	<struct name="VBAInfoAtom">
1240
		<type name="rh" type="RecordHeader">
1241
			<limitation name="recVer" value="2" />
1242
			<limitation name="recInstance" value="0" />
1243
			<limitation name="recType" value="0x400" />
1244
			<limitation name="recLen" value="0xC" />
1245
		</type>
1246
		<uint32 name="persistIdRef" />
1247
		<uint32 name="fHasMacros">
1248
			<limitation value="0|1" />
1249
		</uint32>
1250
		<uint32 name="version">
1251
			<!-- OpenOffice writes 0 or 1 instead of 2 -->
1252
			<limitation value="0|1|2" />
1253
		</uint32>
1254
	</struct>
1255
	<struct name="NormalViewSetInfoContainer">
1256
		<type name="rh" type="RecordHeader">
1257
			<limitation name="recVer" value="0xF" />
1258
			<limitation name="recInstance" value="1" />
1259
			<limitation name="recType" value="0x414" />
1260
			<limitation name="recLen" value="0x1C" />
1261
		</type>
1262
		<type name="normalViewSetInfoAtom" type="NormalViewSetInfoAtom" />
1263
	</struct>
1264
	<struct name="NormalViewSetInfoAtom">
1265
		<type name="rh" type="RecordHeader">
1266
			<limitation name="recVer" value="0" />
1267
			<limitation name="recInstance" value="0" />
1268
			<limitation name="recType" value="0x415" />
1269
			<limitation name="recLen" value="0x14" />
1270
		</type>
1271
		<type name="leftPortion" type="RatioStruct">
1272
			<!--
1273
				This is not true in a sample doc <limitation
1274
				expression="numer*denom&gt;=0" /> <limitation
1275
				expression="denom/numer&gt;=1" />
1276
			-->
1277
		</type>
1278
		<type name="topPortion" type="RatioStruct">
1279
			<!--
1280
				This is not true in a sample doc <limitation
1281
				expression="numer*denom&gt;=0" /> <limitation
1282
				expression="denom/numer&gt;=1" />
1283
			-->
1284
		</type>
1285
		<uint8 name="vertBarState" />
1286
		<uint8 name="horizBarState" />
1287
		<uint8 name="fPreferSingleSet">
1288
			<limitation value="0|1" />
1289
		</uint8>
1290
		<bit name="fHideThumbnails" />
1291
		<bit name="fBarSnapped" />
1292
		<uint6 name="reserved">
1293
			<limitation value="0" />
1294
		</uint6>
1295
	</struct>
1296
	<struct name="MasterListWithTextContainer">
1297
		<type name="rh" type="RecordHeader">
1298
			<limitation name="recVer" value="0xF" />
1299
			<limitation name="recInstance" value="0x1" />
1300
			<limitation name="recType" value="0x0FF0" />
1301
			<limitation name="recLen" expression="%28==0" />
1302
		</type>
1303
		<type name="rgMasterPersistAtom" type="MasterPersistAtom" count="rh.recLen/28" />
1304
	</struct>
1305
	<struct name="MasterPersistAtom">
1306
		<type name="rh" type="RecordHeader">
1307
			<limitation name="recVer" value="0" />
1308
			<limitation name="recInstance" value="0" />
1309
			<limitation name="recType" value="0x3F3" />
1310
			<limitation name="recLen" value="0x14" />
1311
		</type>
1312
		<uint32 name="persistIdRef" />
1313
		<uint2 name="reserved1">
1314
			<limitation value="0" />
1315
		</uint2>
1316
		<bit name="fNonOutLineData" />
1317
		<uint5 name="reserved2">
1318
			<limitation value="0" />
1319
		</uint5>
1320
		<uint8 name="reserved3">
1321
			<limitation value="0" />
1322
		</uint8>
1323
		<uint16 name="reserved4">
1324
			<limitation value="0" />
1325
		</uint16>
1326
		<uint32 name="reserved5">
1327
			<limitation value="0" />
1328
		</uint32>
1329
		<uint32 name="masterId" />
1330
		<uint32 name="reserved6">
1331
			<limitation value="0" />
1332
		</uint32>
1333
	</struct>
1334
	<struct name="SlideListWithTextContainer">
1335
		<type name="rh" type="RecordHeader">
1336
			<limitation name="recVer" value="0xF" />
1337
			<limitation name="recInstance" value="0x0" />
1338
			<limitation name="recType" value="0x0FF0" />
1339
		</type>
1340
		<type name="rgChildRec" type="SlideListWithTextSubContainerOrAtom"
1341
			array="true" />
1342
	</struct>
1343
	<struct name="NotesListWithTextContainer">
1344
		<type name="rh" type="RecordHeader">
1345
			<limitation name="recVer" value="0xF" />
1346
			<limitation name="recInstance" value="2" />
1347
			<limitation name="recType" value="0x0FF0" />
1348
		</type>
1349
		<type name="rgNotesPersistAtom" type="NotesPersistAtom" array="true" />
1350
	</struct>
1351
	<struct name="NotesPersistAtom">
1352
		<type name="rh" type="RecordHeader">
1353
			<limitation name="recVer" value="0x0" />
1354
			<limitation name="recInstance" value="0" />
1355
			<limitation name="recType" value="0x03F3" />
1356
			<limitation name="recLen" value="0x14" />
1357
		</type>
1358
		<uint32 name="persistIdRef" />
1359
		<uint2 name="reserved1">
1360
			<limitation value="0" />
1361
		</uint2>
1362
		<bit name="fNonOutlineData" />
1363
		<uint5 name="reserved2a">
1364
			<limitation value="0" />
1365
		</uint5>
1366
		<uint8 name="reserved2b">
1367
			<limitation value="0" />
1368
		</uint8>
1369
		<uint16 name="reserved2c">
1370
			<limitation value="0" />
1371
		</uint16>
1372
		<uint32 name="reserved3">
1373
			<limitation value="0" />
1374
		</uint32>
1375
		<uint32 name="notesId" />
1376
		<uint32 name="reserved4">
1377
			<limitation value="0" />
1378
		</uint32>
1379
	</struct>
1380
	<struct name="SlideListWithTextSubContainerOrAtom">
1381
		<type name="slidePersistAtom" type="SlidePersistAtom" />
1382
		<type name="atoms" type="TextContainer" array="true" />
1383
	</struct>
1384
	<!-- our own invention -->
1385
	<struct name="TextContainer">
1386
		<!--
1387
			this is an interpretation of the ABNF in the MS-PPT doc
1388
		-->
1389
		<type name="textHeaderAtom" type="TextHeaderAtom" />
1390
		<choice name="text" optional="true">
1391
			<type type="TextCharsAtom" />
1392
			<type type="TextBytesAtom" />
1393
		</choice>
1394
		<type name="style" type="StyleTextPropAtom" optional="true" />
1395
		<type name="meta" type="TextContainerMeta" array="true" />
1396
		<!--
1397
			perhaps this does not belong here, see
1398
			TextClientDataSubContainerOrAtom
1399
		-->
1400
		<type name="master" type="MasterTextPropAtom" optional="true" />
1401
		<type name="bookmark" type="TextBookmarkAtom" array="true" />
1402
		<!--  this textRuler is not according to the specification -->
1403
		<type name="textRuler" type="TextRulerAtom" optional="true" />
1404
		<type name="specialinfo" type="TextSpecialInfoAtom" optional="true" />
1405
		<type name="interactive" type="TextContainerInteractiveInfo"
1406
			array="true" />
1407
		<!--  this second occurance is not according to the specification -->
1408
		<type name="specialinfo2" type="TextSpecialInfoAtom" optional="true" />
1409
	</struct>
1410
	<!-- our own invention -->
1411
	<struct name="TextContainerMeta">
1412
		<choice name="meta">
1413
			<type type="SlideNumberMCAtom" />
1414
			<type type="DateTimeMCAtom" />
1415
			<type type="GenericDateMCAtom" />
1416
			<type type="HeaderMCAtom" />
1417
			<type type="FooterMCAtom" />
1418
			<type type="RTFDateTimeMCAtom" />
1419
		</choice>
1420
	</struct>
1421
	<!-- our own invention -->
1422
	<struct name="TextContainerInteractiveInfo">
1423
		<choice name="interactive">
1424
			<type type="MouseClickInteractiveInfoContainer" />
1425
			<type type="MouseOverInteractiveInfoContainer" />
1426
			<type type="MouseClickTextInteractiveInfoAtom" />
1427
			<type type="MouseOverTextInteractiveInfoAtom" />
1428
		</choice>
1429
	</struct>
1430
	<struct name="TextClientDataSubContainerOrAtom">
1431
		<choice name="anon">
1432
			<type type="OutlineTextRefAtom" />
1433
			<type type="TextContainer" />
1434
			<type type="TextRulerAtom" />
1435
		</choice>
1436
	</struct>
1437
	<!-- our own invention -->
1438
	<struct name="SlidePersistAtom">
1439
		<type name="rh" type="RecordHeader">
1440
			<limitation name="recVer" value="0" />
1441
			<limitation name="recInstance" value="0" />
1442
			<limitation name="recType" value="0x3F3" />
1443
			<limitation name="recLen" value="0x14" />
1444
		</type>
1445
		<uint32 name="persistIdRef" />
1446
		<bit name="reserved1">
1447
			<limitation value="false" />
1448
		</bit>
1449
		<bit name="fShouldCollapse" />
1450
		<bit name="fNonOutlineData" />
1451
		<uint5 name="reserved2">
1452
			<limitation value="0" />
1453
		</uint5>
1454
		<uint8 name="reserved3">
1455
			<limitation value="0" />
1456
		</uint8>
1457
		<uint16 name="reserved4">
1458
			<limitation value="0" />
1459
		</uint16>
1460
		<int32 name="cTexts">
1461
			<limitation expression="&gt;=0" />
1462
			<limitation expression="&lt;=8" />
1463
		</int32>
1464
		<type name="slideId" type="SlideId" />
1465
		<uint32 name="reserved5">
1466
			<limitation value="0" />
1467
		</uint32>
1468
	</struct>
1469
	<struct name="TextHeaderAtom">
1470
		<type name="rh" type="RecordHeader">
1471
			<limitation name="recVer" value="0" />
1472
			<limitation name="recInstance" value="0|1|2|3|4|5" />
1473
			<limitation name="recType" value="0xF9F" />
1474
			<limitation name="recLen" value="4" />
1475
		</type>
1476
		<uint32 name="textType" />
1477
	</struct>
1478
	<struct name="TextCharsAtom">
1479
		<type name="rh" type="RecordHeader">
1480
			<limitation name="recVer" value="0" />
1481
			<limitation name="recInstance" value="0" />
1482
			<limitation name="recType" value="0xFA0" />
1483
			<limitation name="recLen" expression="%2==0" />
1484
		</type>
1485
		<uint16 name="textChars" count="rh.recLen/2">
1486
			<!-- <limitation value="!0" />-->
1487
		</uint16>
1488
	</struct>
1489
	<struct name="TextBytesAtom">
1490
		<type name="rh" type="RecordHeader">
1491
			<limitation name="recVer" value="0" />
1492
			<limitation name="recInstance" value="0" />
1493
			<limitation name="recType" value="0xFA8" />
1494
		</type>
1495
		<uint8 name="textChars" count="rh.recLen">
1496
			<!-- <limitation value="!0" />-->
1497
		</uint8>
1498
	</struct>
1499
	<struct name="MasterTextPropAtom">
1500
		<type name="rh" type="RecordHeader">
1501
			<limitation name="recVer" value="0" />
1502
			<limitation name="recInstance" value="0" />
1503
			<limitation name="recType" value="0xFA2" />
1504
		</type>
1505
		<type name="rgMasterTextPropRun" type="MasterTextPropRun" array="true"
1506
			size="rh.recLen" />
1507
	</struct>
1508
	<struct name="MasterTextPropRun">
1509
		<uint32 name="count" />
1510
		<uint16 name="indentLevel">
1511
			<limitation expression="&lt;=4" />
1512
		</uint16>
1513
	</struct>
1514
	<struct name="StyleTextPropAtom">
1515
		<type name="rh" type="RecordHeader">
1516
			<limitation name="recVer" value="0" />
1517
			<limitation name="recInstance" value="0" />
1518
			<limitation name="recType" value="0xFA1" />
1519
		</type>
1520
		<!--
1521
			<type name="rgTextPFRun" type="TextPFRun" array="true" /> <type
1522
			name="rgTextCFRun" type="TextCFRun" array="true" />
1523
		-->
1524
		<!-- this one seems very hard to do -->
1525
		<uint8 name="todo" count="rh.recLen" />
1526
		<limitation expression="sum(rgTextPFRun/count)=count(../text/textChars)+1" />
1527
		<limitation expression="sum(rgTextCFRun/count)=count(../text/textChars)" />
1528
	</struct>
1529
	<struct name="TextPFRun">
1530
		<uint32 name="count">
1531
			<limitation expression="&gt;0" />
1532
		</uint32>
1533
		<uint16 name="indentLevel">
1534
			<limitation expression="&lt;=4" />
1535
		</uint16>
1536
		<type name="pf" type="TextPFException">
1537
			<limitation name="masks.leftMargin" value="false" />
1538
			<limitation name="masks.indent" value="false" />
1539
			<limitation name="masks.defaultTabSize" value="false" />
1540
			<limitation name="masks.tabStops" value="false" />
1541
		</type>
1542
	</struct>
1543
	<struct name="TextCFRun">
1544
		<uint32 name="count">
1545
			<limitation expression="&gt;0" />
1546
		</uint32>
1547
		<type name="cf" type="TextCFException" />
1548
	</struct>
1549
	<struct name="SlideNumberMCAtom">
1550
		<type name="rh" type="RecordHeader">
1551
			<limitation name="recVer" value="0" />
1552
			<limitation name="recInstance" value="0" />
1553
			<limitation name="recType" value="0xFD8" />
1554
			<limitation name="recLen" value="4" />
1555
		</type>
1556
		<int32 name="position" />
1557
	</struct>
1558
	<struct name="DateTimeMCAtom">
1559
		<type name="rh" type="RecordHeader">
1560
			<limitation name="recVer" value="0" />
1561
			<limitation name="recInstance" value="0" />
1562
			<limitation name="recType" value="0xFF7" />
1563
			<limitation name="recLen" value="8" />
1564
		</type>
1565
		<int32 name="position" />
1566
		<uint8 name="index" />
1567
		<uint8 name="unused" count="3" />
1568
	</struct>
1569
	<struct name="GenericDateMCAtom">
1570
		<type name="rh" type="RecordHeader">
1571
			<limitation name="recVer" value="0" />
1572
			<limitation name="recInstance" value="0" />
1573
			<limitation name="recType" value="0xFF8" />
1574
			<limitation name="recLen" value="4" />
1575
		</type>
1576
		<int32 name="position" />
1577
	</struct>
1578
	<struct name="HeaderMCAtom">
1579
		<type name="rh" type="RecordHeader">
1580
			<limitation name="recVer" value="0" />
1581
			<limitation name="recInstance" value="0" />
1582
			<limitation name="recType" value="0xFF9" />
1583
			<limitation name="recLen" value="4" />
1584
		</type>
1585
		<int32 name="position" />
1586
	</struct>
1587
	<struct name="FooterMCAtom">
1588
		<type name="rh" type="RecordHeader">
1589
			<limitation name="recVer" value="0" />
1590
			<limitation name="recInstance" value="0" />
1591
			<limitation name="recType" value="0xFFA" />
1592
			<limitation name="recLen" value="4" />
1593
		</type>
1594
		<int32 name="position" />
1595
	</struct>
1596
	<struct name="RTFDateTimeMCAtom">
1597
		<type name="rh" type="RecordHeader">
1598
			<limitation name="recVer" value="0" />
1599
			<limitation name="recInstance" value="0" />
1600
			<limitation name="recType" value="0x1015" />
1601
			<limitation name="recLen" value="0x84" />
1602
		</type>
1603
		<int32 name="position" />
1604
		<uint8 name="format" count="128" />
1605
	</struct>
1606
	<struct name="TextBookmarkAtom">
1607
		<type name="rh" type="RecordHeader">
1608
			<limitation name="recVer" value="0" />
1609
			<limitation name="recInstance" value="0" />
1610
			<limitation name="recType" value="0xFA7" />
1611
			<limitation name="recLen" value="0xC" />
1612
		</type>
1613
		<int32 name="begin" />
1614
		<int32 name="end">
1615
			<!--
1616
				TODO: figure out how to do this <limitation expression="&gt; begin"
1617
				/> <limitation expression="&lt;= begin+255" />
1618
			-->
1619
		</int32>
1620
		<int32 name="bookmarkID" />
1621
	</struct>
1622
	<struct name="TextRange">
1623
		<int32 name="begin" />
1624
		<int32 name="end" />
1625
	</struct>
1626
	<struct name="MouseClickTextInteractiveInfoAtom">
1627
		<type name="rh" type="RecordHeader">
1628
			<limitation name="recVer" value="0" />
1629
			<limitation name="recInstance" value="0" />
1630
			<limitation name="recType" value="0xFDF" />
1631
			<limitation name="recLen" value="8" />
1632
		</type>
1633
		<type name="range" type="TextRange" />
1634
	</struct>
1635
	<struct name="MouseOverTextInteractiveInfoAtom">
1636
		<type name="rh" type="RecordHeader">
1637
			<limitation name="recVer" value="0" />
1638
			<limitation name="recInstance" value="1" />
1639
			<limitation name="recType" value="0xFDF" />
1640
			<limitation name="recLen" value="8" />
1641
		</type>
1642
		<type name="range" type="TextRange" />
1643
	</struct>
1644
	<struct name="SlideId">
1645
		<uint32 name="slideId">
1646
			<limitation expression="&gt;=100" />
1647
			<limitation expression="&lt;2147483647" />
1648
		</uint32>
1649
	</struct>
1650
	<struct name="DocumentTextInfoContainer">
1651
		<type name="rh" type="RecordHeader">
1652
			<limitation name="recVer" value="0xF" />
1653
			<limitation name="recInstance" value="0x0" />
1654
			<limitation name="recType" value="0x03F2" />
1655
		</type>
1656
		<type name="kinsoku" type="KinsokuContainer" optional="true" />
1657
		<type name="fontCollection" type="FontCollectionContainer"
1658
			optional="true" />
1659
		<type name="textCFDefaultsAtom" type="TextCFExceptionAtom"
1660
			optional="true" />
1661
		<type name="textPFDefaultsAtom" type="TextPFExceptionAtom"
1662
			optional="true" />
1663
		<type name="defaultRulerAtom" type="DefaultRulerAtom" optional="true" />
1664
		<type name="textSIDefaultsAtom" type="TextSIExceptionAtom" />
1665
		<type name="textMasterStyleAtom" type="TextMasterStyleAtom" />
1666
		<!--
1667
			a document has been observed that has two TextMasterStyleAtom members
1668
		-->
1669
		<type name="textMasterStyleAtom2" type="TextMasterStyleAtom"
1670
			optional="true" />
1671
	</struct>
1672
	<struct name="TextCFExceptionAtom">
1673
		<type name="rh" type="RecordHeader">
1674
			<limitation name="recVer" value="0x0" />
1675
			<limitation name="recInstance" value="0x0" />
1676
			<limitation name="recType" value="0x0FA4" />
1677
		</type>
1678
		<type name="cf" type="TextCFException" />
1679
	</struct>
1680
	<struct name="DefaultRulerAtom">
1681
		<type name="rh" type="RecordHeader">
1682
			<limitation name="recVer" value="0x0" />
1683
			<limitation name="recInstance" value="0x0" />
1684
			<limitation name="recType" value="0x0FAB" />
1685
		</type>
1686
		<type name="defaultTextRuler" type="TextRuler">
1687
			<limitation name="fDefaultTabSize" value="true" />
1688
			<limitation name="fCLevels" value="true" />
1689
			<limitation name="fTabStops" value="true" />
1690
			<limitation name="fLeftMargin1" value="true" />
1691
			<limitation name="fLeftMargin2" value="true" />
1692
			<limitation name="fLeftMargin3" value="true" />
1693
			<limitation name="fLeftMargin4" value="true" />
1694
			<limitation name="fIndent1" value="true" />
1695
			<limitation name="fIndent2" value="true" />
1696
			<limitation name="fIndent3" value="true" />
1697
			<limitation name="fIndent4" value="true" />
1698
			<limitation name="fIndent5" value="true" />
1699
		</type>
1700
	</struct>
1701
	<struct name="TextRuler">
1702
		<bit name="fDefaultTabSize" />
1703
		<bit name="fCLevels" />
1704
		<bit name="fTabStops" />
1705
		<bit name="fLeftMargin1" />
1706
		<bit name="fLeftMargin2" />
1707
		<bit name="fLeftMargin3" />
1708
		<bit name="fLeftMargin4" />
1709
		<bit name="fLeftMargin5" />
1710
		<bit name="fIndent1" />
1711
		<bit name="fIndent2" />
1712
		<bit name="fIndent3" />
1713
		<bit name="fIndent4" />
1714
		<bit name="fIndent5" />
1715
		<uint3 name="reserved1" />
1716
		<uint16 name="reserved2" />
1717
		<int16 name="cLevels" condition="fCLevels" />
1718
		<uint16 name="defaultTabSize" condition="fDefaultTabSize" />
1719
		<type name="tabs" type="TabStops" condition="fTabStops" />
1720
		<uint16 name="leftMargin1" condition="fLeftMargin1" />
1721
		<uint16 name="indent1" condition="fIndent1" />
1722
		<uint16 name="leftMargin2" condition="fLeftMargin2" />
1723
		<uint16 name="indent2" condition="fIndent2" />
1724
		<uint16 name="leftMargin3" condition="fLeftMargin3" />
1725
		<uint16 name="indent3" condition="fIndent3" />
1726
		<uint16 name="leftMargin4" condition="fLeftMargin4" />
1727
		<uint16 name="indent4" condition="fIndent4" />
1728
		<uint16 name="leftMargin5" condition="fLeftMargin5" />
1729
		<uint16 name="indent5" condition="fIndent5" />
1730
	</struct>
1731
	<struct name="TabStops">
1732
		<uint16 name="count" />
1733
		<type name="rgTabStop" count="count" type="TabStop" />
1734
	</struct>
1735
	<struct name="TabStop">
1736
		<int16 name="position" />
1737
		<uint16 name="type" />
1738
	</struct>
1739
	<struct name="TextPFExceptionAtom">
1740
		<type name="rh" type="RecordHeader">
1741
			<limitation name="recVer" value="0x0" />
1742
			<limitation name="recInstance" value="0x0" />
1743
			<limitation name="recType" value="0x0FA5" />
1744
		</type>
1745
		<uint16 name="reserved" />
1746
		<type name="pf" type="TextPFException" />
1747
	</struct>
1748
	<struct name="TextPFException">
1749
		<type name="masks" type="PFMasks">
1750
			<!--
1751
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1752
				bulletBlip = true
1753
			-->
1754
			<limitation name="bulletBlip" value="false" />
1755
			<!--
1756
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1757
				bulletHasScheme = true
1758
			-->
1759
			<limitation name="bulletHasScheme" value="false" />
1760
			<!--
1761
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1762
				bulletScheme = true
1763
			-->
1764
			<limitation name="bulletScheme" value="false" />
1765
		</type>
1766
		<type name="bulletFlags" type="BulletFlags"
1767
			condition="masks.hasBullet||masks.bulletHasFont||masks.bulletHasColor||masks.bulletHasSize" />
1768
		<int16 name="bulletChar" condition="masks.bulletChar">
1769
			<!--
1770
				OpenOffice violates this constraint, so we do not check it
1771
				<limitation value="!0" />
1772
			-->
1773
		</int16>
1774
		<uint16 name="bulletFontRef" condition="masks.bulletFont" />
1775
		<int16 name="bulletSize" condition="masks.bulletSize" />
1776
		<type name="bulletColor" condition="masks.bulletColor" type="ColorIndexStruct" />
1777
		<uint16 name="textAlignment" condition="masks.align" />
1778
		<int16 name="lineSpacing" condition="masks.lineSpacing" />
1779
		<int16 name="spaceBefore" condition="masks.spaceBefore" />
1780
		<int16 name="spaceAfter" condition="masks.spaceAfter" />
1781
		<uint16 name="leftMargin" condition="masks.leftMargin" />
1782
		<uint16 name="indent" condition="masks.indent" />
1783
		<uint16 name="defaultTabSize" condition="masks.defaultTabSize" />
1784
		<type name="tabStops" type="TabStops" condition="masks.tabStops" />
1785
		<uint16 name="fontAlign" condition="masks.fontAlign" />
1786
		<type name="wrapFlags" type="PFWrapFlags"
1787
			condition="masks.charWrap||masks.wordWrap||masks.overflow" />
1788
		<uint16 name="textDirection" condition="masks.textDirection" />
1789
	</struct>
1790
	<struct name="PFWrapFlags">
1791
		<bit name="charWrap" />
1792
		<bit name="wordWrap" />
1793
		<bit name="overflow" />
1794
		<uint5 name="reserved1" />
1795
		<uint8 name="reserved2" />
1796
	</struct>
1797
	<struct name="ColorIndexStruct">
1798
		<uint8 name="red" />
1799
		<uint8 name="green" />
1800
		<uint8 name="blue" />
1801
		<uint8 name="index">
1802
			<!-- limitation expression="&lt;8 || &gt;253" />-->
1803
		</uint8>
1804
	</struct>
1805
	<struct name="BulletFlags">
1806
		<bit name="fHasBullet" />
1807
		<bit name="fBulletHasFont" />
1808
		<bit name="fBulletHasColor" />
1809
		<bit name="fBulletHasSize" />
1810
		<uint12 name="reserved" />
1811
	</struct>
1812
	<struct name="PFMasks">
1813
		<bit name="hasBullet" />
1814
		<bit name="bulletHasFont" />
1815
		<bit name="bulletHasColor" />
1816
		<bit name="bulletHasSize" />
1817
		<bit name="bulletFont" />
1818
		<bit name="bulletColor" />
1819
		<bit name="bulletSize" />
1820
		<bit name="bulletChar" />
1821
		<bit name="leftMargin" />
1822
		<bit name="unused" />
1823
		<bit name="indent" />
1824
		<bit name="align" />
1825
		<bit name="lineSpacing" />
1826
		<bit name="spaceBefore" />
1827
		<bit name="spaceAfter" />
1828
		<bit name="defaultTabSize" />
1829
		<bit name="fontAlign" />
1830
		<bit name="charWrap" />
1831
		<bit name="wordWrap" />
1832
		<bit name="overflow" />
1833
		<bit name="tabStops" />
1834
		<bit name="textDirection" />
1835
		<bit name="reserved" />
1836
		<bit name="bulletBlip" />
1837
		<bit name="bulletScheme" />
1838
		<bit name="bulletHasScheme" />
1839
		<uint6 name="reserved2" />
1840
	</struct>
1841
	<struct name="TextCFException">
1842
		<type name="masks" type="CFMasks">
1843
			<limitation name="pp10ext" value="false" />
1844
			<limitation name="newEATypeface" value="false" />
1845
			<limitation name="csTypeface" value="false" />
1846
			<limitation name="pp11ext" value="false" />
1847
		</type>
1848
		<type name="fontStyle" type="CFStyle"
1849
			condition="masks.bold || masks.italic || masks.underline || masks.shadow || masks.fehint || masks.kumi || masks.emboss || masks.fHasStyle != 0" />
1850
		<uint16 name="fontRef" condition="masks.typeface" />
1851
		<uint16 name="oldEAFontRef" condition="masks.oldEATypeface" />
1852
		<uint16 name="ansiFontRef" condition="masks.ansiTypeface" />
1853
		<uint16 name="symbolFontRef" condition="masks.symbolTypeface" />
1854
		<uint16 name="fontSize" condition="masks.size">
1855
			<limitation expression="&gt;=1" />
1856
			<limitation expression="&lt;=4000" />
1857
		</uint16>
1858
		<type name="color" condition="masks.color" type="ColorIndexStruct" />
1859
		<int16 name="position" condition="masks.position">
1860
			<limitation expression="&gt;=-100" />
1861
			<limitation expression="&lt;=100" />
1862
		</int16>
1863
	</struct>
1864
	<struct name="CFMasks">
1865
		<bit name="bold" />
1866
		<bit name="italic" />
1867
		<bit name="underline" />
1868
		<bit name="unused1" />
1869
		<bit name="shadow" />
1870
		<bit name="fehint" />
1871
		<bit name="unused2" />
1872
		<bit name="kumi" />
1873
		<bit name="unused3" />
1874
		<bit name="emboss" />
1875
		<uint4 name="fHasStyle" />
1876
		<uint2 name="unused4" />
1877
		<bit name="typeface" />
1878
		<bit name="size" />
1879
		<bit name="color" />
1880
		<bit name="position" />
1881
		<bit name="pp10ext" />
1882
		<bit name="oldEATypeface" />
1883
		<bit name="ansiTypeface" />
1884
		<bit name="symbolTypeface" />
1885
		<bit name="newEATypeface" />
1886
		<bit name="csTypeface" />
1887
		<bit name="pp11ext" />
1888
		<uint5 name="reserved" />
1889
	</struct>
1890
	<struct name="CFStyle">
1891
		<bit name="bold" />
1892
		<bit name="italic" />
1893
		<bit name="underline" />
1894
		<bit name="unused1" />
1895
		<bit name="shadow" />
1896
		<bit name="fehint" />
1897
		<bit name="unused2" />
1898
		<bit name="kumi" />
1899
		<bit name="unused3" />
1900
		<bit name="emboss" />
1901
		<uint4 name="pp9rt" />
1902
		<uint2 name="unused4" />
1903
	</struct>
1904
	<struct name="FontCollectionContainer">
1905
		<type name="rh" type="RecordHeader">
1906
			<limitation name="recVer" value="0xF" />
1907
			<limitation name="recInstance" value="0x0" />
1908
			<limitation name="recType" value="0x07D5" />
1909
		</type>
1910
		<type name="rgFontCollectionEntry" type="FontCollectionEntry"
1911
			array="true" size="rh.recLen" />
1912
	</struct>
1913
	<struct name="FontCollectionEntry">
1914
		<type name="fontEntityAtom" type="FontEntityAtom" />
1915
		<type name="fontEmbedData1" type="FontEmbedDataBlob" optional="true" />
1916
		<type name="fontEmbedData2" type="FontEmbedDataBlob" optional="true" />
1917
		<type name="fontEmbedData3" type="FontEmbedDataBlob" optional="true" />
1918
		<type name="fontEmbedData4" type="FontEmbedDataBlob" optional="true" />
1919
	</struct>
1920
	<struct name="FontEntityAtom">
1921
		<type name="rh" type="RecordHeader">
1922
			<limitation name="recVer" value="0" />
1923
			<limitation name="recInstance" expression="&lt;=128" />
1924
			<limitation name="recType" value="0xFB7" />
1925
			<limitation name="recLen" value="0x44" />
1926
		</type>
1927
		<uint16 name="lfFaceName" count="32" />
1928
		<uint8 name="lfCharSet" />
1929
		<bit name="fEmbedSubsetted" />
1930
		<uint7 name="unused" />
1931
		<bit name="rasterFontType" />
1932
		<bit name="deviceFontType" />
1933
		<bit name="truetypeFontType" />
1934
		<bit name="fNoFontSubstitution" />
1935
		<uint4 name="reserved">
1936
			<limitation value="0" />
1937
		</uint4>
1938
		<uint8 name="lfPitchAndFamily" />
1939
	</struct>
1940
	<struct name="FontEmbedDataBlob">
1941
		<type name="rh" type="RecordHeader">
1942
			<limitation name="recVer" value="0" />
1943
			<limitation name="recInstance" expression="&lt;=3" />
1944
			<limitation name="recType" value="0xFB8" />
1945
		</type>
1946
		<uint8 name="data" count="rh.recLen" />
1947
	</struct>
1948
	<struct name="KinsokuContainer">
1949
		<type name="rh" type="RecordHeader">
1950
			<limitation name="recVer" value="0xF" />
1951
			<limitation name="recInstance" value="0x2" />
1952
			<limitation name="recType" value="0x0FC8" />
1953
		</type>
1954
		<type name="kinsokuAtom" type="KinsokuAtom" />
1955
		<type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
1956
			condition="kinsokuAtom.level==2" />
1957
		<type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
1958
			condition="kinsokuAtom.level==2" />
1959
	</struct>
1960
	<struct name="KinsokuAtom">
1961
		<type name="rh" type="RecordHeader">
1962
			<limitation name="recVer" value="0x0" />
1963
			<limitation name="recInstance" value="0x3" />
1964
			<limitation name="recType" value="0x0FD2" />
1965
			<limitation name="recLen" value="4" />
1966
		</type>
1967
		<uint32 name="level">
1968
			<!--  MS documentation does not allow value 128 -->
1969
			<limitation value="0|1|2|128" />
1970
		</uint32>
1971
	</struct>
1972
	<struct name="KinsokuLeadingAtom">
1973
		<type name="rh" type="RecordHeader">
1974
			<limitation name="recVer" value="0" />
1975
			<limitation name="recInstance" value="0" />
1976
			<limitation name="recType" value="0xFBA" />
1977
			<limitation expression="recLen%2==0" />
1978
		</type>
1979
		<uint16 name="kinsokuLeading" count="rh.recLen/2" />
1980
	</struct>
1981
	<struct name="KinsokuFollowingAtom">
1982
		<type name="rh" type="RecordHeader">
1983
			<limitation name="recVer" value="0" />
1984
			<limitation name="recInstance" value="1 " />
1985
			<limitation name="recType" value="0xFBA" />
1986
			<limitation expression="recLen%2==0" />
1987
		</type>
1988
		<uint16 name="kinsokuFollowing" count="rh.recLen/2" />
1989
	</struct>
1990
	<struct name="TextSpecialInfoAtom">
1991
		<type name="rh" type="RecordHeader">
1992
			<limitation name="recVer" value="0x0" />
1993
			<limitation name="recInstance" value="0x0" />
1994
			<limitation name="recType" value="0xFAA" />
1995
		</type>
1996
		<type name="rgSIRun" type="TextSIRun" array="true" size="rh.recLen" />
1997
	</struct>
1998
	<struct name="TextSIRun">
1999
		<uint32 name="count">
2000
			<limitation expression="&gt;=1" />
2001
		</uint32>
2002
		<type name="si" type="TextSIException" />
2003
	</struct>
2004
	<struct name="TextSIExceptionAtom">
2005
		<type name="rh" type="RecordHeader">
2006
			<limitation name="recVer" value="0x0" />
2007
			<limitation name="recInstance" value="0x0" />
2008
			<limitation name="recType" value="0x0FA9" />
2009
		</type>
2010
		<type name="textSIException" type="TextSIException">
2011
			<limitation name="fPp10ext" value="false" />
2012
			<limitation name="fBidi" value="false" />
2013
			<limitation name="smartTag" value="false" />
2014
		</type>
2015
	</struct>
2016
	<struct name="TextSIException">
2017
		<bit name="spell" />
2018
		<bit name="lang" />
2019
		<bit name="altLang" />
2020
		<bit name="unused1" />
2021
		<bit name="unused2" />
2022
		<bit name="fPp10ext" />
2023
		<bit name="fBidi" />
2024
		<bit name="unused3" />
2025
		<bit name="reserved1" />
2026
		<bit name="smartTag" />
2027
		<uint2 name="reserved2a" />
2028
		<uint20 name="reserved2b" />
2029
		<uint16 name="spellInfo" condition="spell" />
2030
		<uint16 name="lid" condition="lang" />
2031
		<uint16 name="altLid" condition="altLang" />
2032
		<int16 name="bidi" condition="fBidi">
2033
			<limitation value="0|1" />
2034
		</int16>
2035
		<uint4 name="pp10runid" condition="fPp10ext" />
2036
		<uint4 name="reserved3a" condition="fPp10ext" />
2037
		<uint16 name="reserved3b" condition="fPp10ext" />
2038
		<uint7 name="reserved3bc" condition="fPp10ext" />
2039
		<bit name="grammarError" condition="fPp10ext" />
2040
		<type name="smartTags" type="SmartTags" condition="smartTag" />
2041
	</struct>
2042
	<struct name="SmartTags">
2043
		<uint32 name="count" />
2044
		<uint32 name="rgSmartTagIndex" count="count" />
2045
	</struct>
2046
	<struct name="TextMasterStyleAtom">
2047
		<type name="rh" type="RecordHeader">
2048
			<limitation name="recVer" value="0x0" />
2049
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
2050
			<limitation name="recType" value="0x0FA3" />
2051
		</type>
2052
		<uint16 name="cLevels">
2053
			<limitation expression="&lt;=5" />
2054
		</uint16>
2055
		<!--
2056
			level field of TextMasterStyleLevel is put here, because its presence
2057
			depends on this structure and currently child access to parent
2058
			properties is not supported
2059
		-->
2060
		<uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
2061
		<type name="lstLvl1" type="TextMasterStyleLevel" condition="cLevels&gt;0" />
2062
		<uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
2063
		<type name="lstLvl2" type="TextMasterStyleLevel" condition="cLevels&gt;1" />
2064
		<uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
2065
		<type name="lstLvl3" type="TextMasterStyleLevel" condition="cLevels&gt;2" />
2066
		<uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
2067
		<type name="lstLvl4" type="TextMasterStyleLevel" condition="cLevels&gt;3" />
2068
		<uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
2069
		<type name="lstLvl5" type="TextMasterStyleLevel" condition="cLevels&gt;4" />
2070
	</struct>
2071
	<struct name="TextMasterStyleLevel">
2072
		<type name="pf" type="TextPFException" />
2073
		<type name="cf" type="TextCFException" />
2074
	</struct>
2075
	<struct name="ExOleEmbedAtom">
2076
		<type name="rh" type="RecordHeader">
2077
			<limitation name="recVer" value="0x0" />
2078
			<limitation name="recInstance" value="0x0" />
2079
			<limitation name="recType" value="0x0FCD" />
2080
			<limitation name="recLen" value="0x8" />
2081
		</type>
2082
		<uint32 name="exColorFollow">
2083
			<limitation value="0|1|2" />
2084
		</uint32>
2085
		<uint8 name="fCantLockServer" />
2086
		<uint8 name="fNoSizeToServer" />
2087
		<uint8 name="fIsTable" />
2088
		<uint8 name="unused" />
2089
	</struct>
2090
	<struct name="DocumentAtom">
2091
		<type name="rh" type="RecordHeader">
2092
			<limitation name="recVer" value="1" />
2093
			<limitation name="recInstance" value="0x0" />
2094
			<limitation name="recType" value="0x03E9" />
2095
			<limitation name="recLen" value="0x28" />
2096
		</type>
2097
		<type name="slideSize" type="PointStruct" />
2098
		<type name="notesSize" type="PointStruct" />
2099
		<type name="serverZoom" type="RatioStruct">
2100
			<limitation expression="numer*denom &gt; 0" />
2101
		</type>
2102
		<uint32 name="notesMasterPersistIdRef" />
2103
		<uint32 name="handoutMasterPersistIdRef" />
2104
		<uint16 name="firstSlideNumber">
2105
			<limitation expression="&lt;10000" />
2106
		</uint16>
2107
		<uint16 name="slideSizeType">
2108
			<limitation value="0|1|2|3|4|5|6" />
2109
		</uint16>
2110
		<uint8 name="fSaveWithFonts" />
2111
		<uint8 name="fOmitTitlePlace" />
2112
		<uint8 name="fRightToLeft" />
2113
		<uint8 name="fShowComments" />
2114
	</struct>
2115
	<struct name="PointStruct">
2116
		<int32 name="x" />
2117
		<int32 name="y" />
2118
	</struct>
2119
	<struct name="RatioStruct">
2120
		<int32 name="numer" />
2121
		<int32 name="denom">
2122
			<limitation expression="!= 0" />
2123
		</int32>
2124
	</struct>
2125
	<struct name="PersistDirectoryAtom">
2126
		<type name="rh" type="RecordHeader">
2127
			<limitation name="recVer" value="0" />
2128
			<limitation name="recInstance" value="0" />
2129
			<limitation name="recType" value="0x1772" />
2130
		</type>
2131
		<type name="rgPersistDirEntry" type="PersistDirectoryEntry"
2132
			array="true" size="rh.recLen" />
2133
	</struct>
2134
	<struct name="UnknownDocumentContainerChild">
2135
		<type name="rh" type="RecordHeader">
2136
			<limitation name="recType"
2137
				value="0x416|0x41A|0x101A|0x1773|0x1788|0x178c|0x178d" />
2138
		</type>
2139
		<uint8 name="todo" count="rh.recLen" />
2140
	</struct>
2141
	<struct name="UnknownOfficeArtClientDataChild">
2142
		<type name="rh" type="RecordHeader">
2143
			<limitation name="recVer" value="0" />
2144
			<limitation name="recInstance" value="0" />
2145
			<limitation name="recType" value="0xFE8|0x1019" />
2146
		</type>
2147
		<uint8 name="todo" count="rh.recLen" />
2148
	</struct>
2149
	<struct name="UnknownSlideContainerChild">
2150
		<type name="rh" type="RecordHeader">
2151
			<limitation name="recVer" value="0" />
2152
			<limitation name="recInstance" value="0" />
2153
			<limitation name="recType" value="0x101D" />
2154
		</type>
2155
		<uint8 name="todo" count="rh.recLen" />
2156
	</struct>
2157
	<struct name="PersistDirectoryEntry">
2158
		<uint20 name="persistId" />
2159
		<uint12 name="cPersist" />
2160
		<uint32 name="rgPersistOffset" count="cPersist" />
2161
	</struct>
2162
	<struct name="PersistIdRef">
2163
		<uint32 name="anon">
2164
			<!--
2165
				TODO A 4-byte unsigned integer that specifies a reference to a
2166
				persist object. It MUST be 0x00000000 or equal to a persist object
2167
				identifier specified by a PersistDirectoryAtom record. The value
2168
				0x00000000 specifies a null reference.
2169
			-->
2170
		</uint32>
2171
	</struct>
2172
	<struct name="MasterOrSlideContainer">
2173
		<choice name="anon">
2174
			<type type="MainMasterContainer" />
2175
			<type type="SlideContainer" />
2176
		</choice>
2177
	</struct>
2178
	<struct name="MainMasterContainer">
2179
		<type name="rh" type="RecordHeader">
2180
			<limitation name="recVer" value="0xF" />
2181
			<limitation name="recInstance" value="0x0" />
2182
			<limitation name="recType" value="0x03F8" />
2183
		</type>
2184
		<type name="slideAtom" type="SlideAtom" />
2185
		<!--
2186
			it is not documented that a SlideShowSlideInfoAtom may appear here
2187
		-->
2188
		<type name="unknown" type="SlideShowSlideInfoAtom" optional="true" />
2189
		<type name="rgSchemeListElementColorScheme" type="SchemeListElementColorSchemeAtom"
2190
			array="true" />
2191
		<type name="rgTextMasterStyle" type="TextMasterStyleAtom" array="true" />
2192
		<type name="roundTripOArtTextSTyles12Atom" type="RoundTripOArtTextStyles12Atom"
2193
			optional="true" />
2194
		<type name="slideShowInfoAtom" type="SlideShowSlideInfoAtom"
2195
			optional="true" />
2196
		<type name="perSlideHeadersFootersContainer" type="PerSlideHeadersFootersContainer"
2197
			optional="true" />
2198
		<type name="drawing" type="DrawingContainer" />
2199
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2200
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2201
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2202
			optional="true" />
2203
		<type name="rgRoundTripMainMaster" type="RoundTripMainMasterRecord"
2204
			array="true" />
2205
		<type name="templateNameAtom" type="TemplateNameAtom" optional="true" />
2206
		<!--
2207
			it is not documented that a SlideProgTagsContainer may appear here
2208
		-->
2209
		<type name="unknown3" type="SlideProgTagsContainer" optional="true" />
2210
	</struct>
2211
	<struct name="SchemeListElementColorSchemeAtom">
2212
		<type name="rh" type="RecordHeader">
2213
			<limitation name="recVer" value="0" />
2214
			<limitation name="recInstance" value="6" />
2215
			<limitation name="recType" value="0x7F0" />
2216
			<limitation name="recLen" value="0x20" />
2217
		</type>
2218
		<type name="rgSchemeColor" type="ColorStruct" count="8" />
2219
	</struct>
2220
	<struct name="RoundTripOArtTextStyles12Atom">
2221
		<type name="rh" type="RecordHeader">
2222
			<limitation name="recVer" value="0" />
2223
			<limitation name="recInstance" value="0" />
2224
			<limitation name="recType" value="0x423" />
2225
		</type>
2226
		<uint8 name="todo" count="rh.recLen" />
2227
	</struct>
2228
	<struct name="SlideNameAtom">
2229
		<type name="rh" type="RecordHeader">
2230
			<limitation name="recVer" value="0" />
2231
			<limitation name="recInstance" value="3" />
2232
			<limitation name="recType" value="0x0FBA" />
2233
			<limitation name="recLen" expression="%2==0" />
2234
		</type>
2235
		<uint16 name="slideName" count="rh.recLen/2" />
2236
	</struct>
2237
	<struct name="SlideProgTagsContainer">
2238
		<type name="rh" type="RecordHeader">
2239
			<limitation name="recVer" value="0xF" />
2240
			<limitation name="recInstance" value="0" />
2241
			<limitation name="recType" value="0x1388" />
2242
		</type>
2243
		<type name="rgTypeRec" type="SlideProgTagsSubContainerOrAtom"
2244
			array="true" size="rh.recLen" />
2245
	</struct>
2246
	<struct name="SlideProgTagsSubContainerOrAtom">
2247
		<choice name="anon">
2248
			<type type="ProgStringTagContainer" />
2249
			<type type="SlideProgBinaryTagContainer" />
2250
		</choice>
2251
	</struct>
2252
	<struct name="SlideProgBinaryTagContainer">
2253
		<type name="rh" type="RecordHeader">
2254
			<limitation name="recVer" value="0xF" />
2255
			<limitation name="recInstance" value="0" />
2256
			<limitation name="recType" value="0x138A" />
2257
		</type>
2258
		<type name="rec" type="SlideProgBinaryTagSubContainerOrAtom" />
2259
	</struct>
2260
	<struct name="SlideProgBinaryTagSubContainerOrAtom">
2261
		<choice name="anon">
2262
			<type type="PP9SlideBinaryTagExtension" />
2263
			<type type="PP10SlideBinaryTagExtension" />
2264
			<type type="PP12SlideBinaryTagExtension" />
2265
			<type type="UnknownBinaryTag" />
2266
		</choice>
2267
	</struct>
2268
	<struct name="PP9SlideBinaryTagExtension">
2269
		<type name="rh" type="RecordHeader">
2270
			<limitation name="recVer" value="0" />
2271
			<limitation name="recInstance" value="0" />
2272
			<limitation name="recType" value="0xFBA" />
2273
			<limitation name="recLen" value="0xE" />
2274
		</type>
2275
		<uint16 name="tagName" count="7">
2276
			<!-- <limitation value='"___PPT9"' /> -->
2277
		</uint16>
2278
		<type name="rhData" type="RecordHeader">
2279
			<limitation name="recVer" value="0" />
2280
			<limitation name="recInstance" value="0" />
2281
			<limitation name="recType" value="0x138B" />
2282
		</type>
2283
		<type name="rgTextMasterStyleAtom" type="TextMasterStyle9Atom"
2284
			array="true" />
2285
	</struct>
2286
	<struct name="PP10SlideBinaryTagExtension">
2287
		<type name="rh" type="RecordHeader">
2288
			<limitation name="recVer" value="0" />
2289
			<limitation name="recInstance" value="0" />
2290
			<limitation name="recType" value="0xFBA" />
2291
			<limitation name="recLen" value="0x10" />
2292
		</type>
2293
		<uint16 name="tagName" count="8">
2294
			<!-- <limitation value='"___PPT10"' />-->
2295
		</uint16>
2296
		<type name="rhData" type="RecordHeader">
2297
			<limitation name="recVer" value="0" />
2298
			<limitation name="recInstance" value="0" />
2299
			<limitation name="recType" value="0x138B" />
2300
		</type>
2301
		<!--
2302
			<type name="rgTextMasterStyleAtom" type="TextMasterStyle10Atom"
2303
			array="true" /> <type name="rgComment10Container"
2304
			type="Comment10Container" array="true" /> <type
2305
			name="linkedSlideAtom" type="LinkedSlide10Atom" optional="true" />
2306
			<type name="rgLinkedShape10Atom" type="LinedShape10Atom" array="true"
2307
			/> <type name="slideFlagsAtom" type="SlideFlags10Atom"
2308
			optional="true" /> <type name="slideTimeAtom" type="SlideTime10Atom"
2309
			optional="true" /> <type name="hashCodeAtom" type="HashCode10Atom"
2310
			optional="true" /> <type name="extTimeNodeContainer"
2311
			type="ExtTimeNodeContainer" optional="true" /> <type
2312
			name="buildListContainer" type="BuildListContainer" optional="true"
2313
			/>
2314
		-->
2315
		<uint8 name="todo" count="rhData.recLen" />
2316
	</struct>
2317
	<struct name="PP12SlideBinaryTagExtension">
2318
		<type name="rh" type="RecordHeader">
2319
			<limitation name="recVer" value="0" />
2320
			<limitation name="recInstance" value="0" />
2321
			<limitation name="recType" value="0xFBA" />
2322
			<limitation name="recLen" value="0xE" />
2323
		</type>
2324
		<uint16 name="tagName" count="8">
2325
			<!-- <limitation value='"___PPT12"' />-->
2326
		</uint16>
2327
		<type name="rhData" type="RecordHeader">
2328
			<limitation name="recVer" value="0" />
2329
			<limitation name="recInstance" value="0" />
2330
			<limitation name="recType" value="0x138B" />
2331
		</type>
2332
		<uint8 name="todo" count="rhData.recLen" />
2333
	</struct>
2334
	<struct name="ProgStringTagContainer">
2335
		<type name="rh" type="RecordHeader">
2336
			<limitation name="recVer" value="0xF" />
2337
			<limitation name="recInstance" value="0" />
2338
			<limitation name="recType" value="0x1389" />
2339
		</type>
2340
		<type name="tagNameAtom" type="TagNameAtom" />
2341
		<type name="tagValueAtom" type="TagValueAtom" optional="true" />
2342
	</struct>
2343
	<struct name="TagNameAtom">
2344
		<type name="rh" type="RecordHeader">
2345
			<limitation name="recVer" value="0" />
2346
			<limitation name="recInstance" value="0" />
2347
			<limitation name="recType" value="0xFBA" />
2348
			<limitation name="recLen" expression="%2 == 0 " />
2349
		</type>
2350
		<uint16 name="tagName" count="rh.recLen/2" />
2351
	</struct>
2352
	<struct name="TagValueAtom">
2353
		<type name="rh" type="RecordHeader">
2354
			<limitation name="recVer" value="0" />
2355
			<limitation name="recInstance" value="1" />
2356
			<limitation name="recType" value="0xFBA" />
2357
		</type>
2358
		<uint16 name="tagValue" count="rh.recLen/2" />
2359
	</struct>
2360
	<struct name="RoundTripMainMasterRecord">
2361
		<type name="rh" type="RecordHeader">
2362
			<limitation name="recType"
2363
				value="0x41C|0x40E|0x040F|0x41E|0x0423|0x2B0D|0x2B0B|0x041D|0x2B0C|0x101D" />
2364
		</type>
2365
		<uint8 name="todo" count="rh.recLen" />
2366
	</struct>
2367
	<struct name="TemplateNameAtom">
2368
		<type name="rh" type="RecordHeader">
2369
			<limitation name="recVer" value="0" />
2370
			<limitation name="recInstance" value="2" />
2371
			<limitation name="recType" value="0x0FBA" />
2372
			<limitation name="recLen" expression="%2==0" />
2373
		</type>
2374
		<uint16 name="templateName" count="rh.recLen/2" />
2375
	</struct>
2376
	<struct name="SlideContainer">
2377
		<type name="rh" type="RecordHeader">
2378
			<limitation name="recVer" value="0xF" />
2379
			<limitation name="recInstance" value="0x0" />
2380
			<limitation name="recType" value="0x03EE" />
2381
		</type>
2382
		<type name="slideAtom" type="SlideAtom" />
2383
		<type name="slideShowSlideInfoAtom" type="SlideShowSlideInfoAtom"
2384
			optional="true" />
2385
		<type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer"
2386
			optional="true" />
2387
		<type name="rtSlideSyncInfo12" type="RoundTripSlideSyncInfo12Container"
2388
			optional="true" />
2389
		<type name="drawing" type="DrawingContainer" />
2390
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2391
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2392
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2393
			optional="true" />
2394
		<!--
2395
			perhaps this undocumented type is part fo the RoundTripSlideRecord
2396
			collection
2397
		-->
2398
		<type name="unknown" type="UnknownSlideContainerChild" optional="true" />
2399
		<type name="rgRoundTripSlide" type="RoundTripSlideRecord" array="true" />
2400
		<!--
2401
			perhaps this undocumented type is part fo the RoundTripSlideRecord
2402
			collection
2403
		-->
2404
		<type name="unknown2" type="UnknownSlideContainerChild" optional="true" />
2405
	</struct>
2406
	<struct name="RoundTripSlideSyncInfo12Container">
2407
		<type name="rh" type="RecordHeader">
2408
			<limitation name="recVer" value="0xF" />
2409
			<limitation name="recInstance" value="0" />
2410
			<limitation name="recType" value="0x3714" />
2411
		</type>
2412
		<uint8 name="todo" count="rh.recLen" />
2413
	</struct>
2414
	<struct name="NotesContainer">
2415
		<type name="rh" type="RecordHeader">
2416
			<limitation name="recVer" value="0xF" />
2417
			<limitation name="recInstance" value="0" />
2418
			<limitation name="recType" value="0x03F0" />
2419
		</type>
2420
		<type name="notesAtom" type="NotesAtom" />
2421
		<!--
2422
			perSlideHFContainer is not in the documentation
2423
		-->
2424
		<type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer"
2425
			optional="true" />
2426
		<type name="drawing" type="DrawingContainer" />
2427
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2428
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2429
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2430
			optional="true" />
2431
		<!--
2432
			perSlideHFContainer2 is not in the documentation
2433
		-->
2434
		<type name="perSlideHFContainer2" type="PerSlideHeadersFootersContainer"
2435
			optional="true" />
2436
		<type name="rgNotesRoundTripAtom" type="NotesRoundTripAtom"
2437
			array="true" />
2438
	</struct>
2439
	<struct name="NotesAtom">
2440
		<type name="rh" type="RecordHeader">
2441
			<limitation name="recVer" value="1" />
2442
			<limitation name="recInstance" value="0" />
2443
			<limitation name="recType" value="0x3F1" />
2444
			<limitation name="recLen" value="0x8" />
2445
		</type>
2446
		<uint32 name="slideIdRef" />
2447
		<type name="slideFlags" type="SlideFlags" />
2448
		<uint16 name="unused" />
2449
	</struct>
2450
	<struct name="SlideFlags">
2451
		<bit name="fMasterObjects" />
2452
		<bit name="fMasterScheme" />
2453
		<bit name="fMasterBackground" />
2454
		<uint5 name="unused1" />
2455
		<uint8 name="unused2" />
2456
	</struct>
2457
	<struct name="NotesRoundTripAtom">
2458
		<type name="rh" type="RecordHeader">
2459
			<limitation name="recVer" value="0" />
2460
			<limitation name="recInstance" value="0" />
2461
			<limitation name="recType" value="0x40E|0x40F|0x427" />
2462
		</type>
2463
		<uint8 name="todo" count="rh.recLen" />
2464
	</struct>
2465
	<struct name="HandoutContainer">
2466
		<type name="rh" type="RecordHeader">
2467
			<limitation name="recVer" value="0xF" />
2468
			<limitation name="recInstance" value="0" />
2469
			<limitation name="recType" value="0x0FC9" />
2470
		</type>
2471
		<uint8 name="todo" count="rh.recLen" />
2472
	</struct>
2473
	<struct name="ExControlStg">
2474
		<type name="rh" type="RecordHeader">
2475
			<limitation name="recVer" value="0" />
2476
			<limitation name="recInstance" value="0|1" />
2477
			<limitation name="recType" value="0x1011" />
2478
		</type>
2479
		<uint8 name="todo" count="rh.recLen" />
2480
	</struct>
2481
	<struct name="ExOleObjStg">
2482
		<type name="rh" type="RecordHeader">
2483
			<limitation name="recVer" value="0" />
2484
			<limitation name="recInstance" value="0" />
2485
			<limitation name="recType" value="0x1011" />
2486
		</type>
2487
		<uint8 name="todo" count="rh.recLen" />
2488
	</struct>
2489
	<struct name="UserEditAtom">
2490
		<type name="rh" type="RecordHeader">
2491
			<limitation name="recVer" value="0" />
2492
			<limitation name="recInstance" value="0" />
2493
			<limitation name="recType" value="0x0FF5" />
2494
			<limitation name="recLen" value="0x1C|0x20" />
2495
		</type>
2496
		<uint32 name="lastSlideIdRef" />
2497
		<uint16 name="version" />
2498
		<uint8 name="minorVersion">
2499
			<limitation value="0" />
2500
		</uint8>
2501
		<uint8 name="majorVersion">
2502
			<limitation value="3" />
2503
		</uint8>
2504
		<uint32 name="offsetLastEdit">
2505
			<!--  TODO: check with offset of this edit -->
2506
		</uint32>
2507
		<uint32 name="offsetPersistDirectory">
2508
			<!-- <limitation expression="&gt;offsetLastEdit" /> -->
2509
			<!--
2510
				TODO: check with offset of this edit
2511
			-->
2512
		</uint32>
2513
		<uint32 name="docPersistIdRef">
2514
			<limitation value="1" />
2515
		</uint32>
2516
		<uint32 name="persistIdSeed" />
2517
		<uint16 name="lastView">
2518
			<limitation expression="&lt;=18" />
2519
		</uint16>
2520
		<uint16 name="unused" />
2521
		<uint32 name="encryptSessionPersistIdRef" condition="rh.recLen==32" />
2522
	</struct>
2523
	<struct name="VbaProjectStg">
2524
		<type name="rh" type="RecordHeader">
2525
			<limitation name="recVer" value="0" />
2526
			<limitation name="recInstance" value="0|1" />
2527
			<limitation name="recType" value="0x1011" />
2528
		</type>
2529
		<uint8 name="todo" count="rh.recLen" />
2530
	</struct>
2531
	<struct name="SlideAtom">
2532
		<type name="rh" type="RecordHeader">
2533
			<limitation name="recVer" value="0x2" />
2534
			<limitation name="recInstance" value="0x0" />
2535
			<limitation name="recType" value="0x03EF" />
2536
			<limitation name="recLen" value="0x18" />
2537
		</type>
2538
		<uint32 name="geom" />
2539
		<uint8 name="rgPlaceholderTypes" count="8" />
2540
		<uint32 name="masterIdRef" />
2541
		<uint32 name="notesIdRef" />
2542
		<type name="slideFlags" type="SlideFlags" />
2543
		<uint16 name="unused" />
2544
	</struct>
2545
	<struct name="SlideShowSlideInfoAtom">
2546
		<type name="rh" type="RecordHeader">
2547
			<limitation name="recVer" value="0" />
2548
			<limitation name="recInstance" value="0" />
2549
			<limitation name="recType" value="0x03F9" />
2550
			<limitation name="recLen" value="0x10" />
2551
		</type>
2552
		<uint32 name="slidetime" />
2553
		<uint32 name="slideIdRef" />
2554
		<uint8 name="effectDirection" />
2555
		<uint8 name="effectType" />
2556
		<bit name="fManualAdvance" />
2557
		<bit name="reserved" />
2558
		<bit name="fHidden" />
2559
		<bit name="reserved2" />
2560
		<bit name="fSound" />
2561
		<bit name="reserved3" />
2562
		<bit name="fLoopSound" />
2563
		<bit name="reserved4" />
2564
		<bit name="fStopSound" />
2565
		<bit name="freserved5" />
2566
		<bit name="fAutoAdvance" />
2567
		<bit name="reserved6" />
2568
		<bit name="fCursorVisible" />
2569
		<uint3 name="reserved7" />
2570
		<uint8 name="speed" />
2571
		<uint8 name="unused" count="3" />
2572
	</struct>
2573
	<struct name="SlideShowDocInfoAtom">
2574
		<type name="rh" type="RecordHeader">
2575
			<limitation name="recVer" value="1" />
2576
			<limitation name="recInstance" value="0" />
2577
			<limitation name="recType" value="0x0401" />
2578
			<limitation name="recLen" value="0x50" />
2579
		</type>
2580
		<type name="penColor" type="ColorIndexStruct" />
2581
		<int32 name="restartTime" />
2582
		<int16 name="startSlide">
2583
			<limitation expression="&gt;=0" />
2584
		</int16>
2585
		<int16 name="endSlide">
2586
			<limitation expression="&gt;=0" />
2587
		</int16>
2588
		<uint8 name="namedShow" count="64" />
2589
		<bit name="fAutoAdvance" />
2590
		<bit name="fWillSkipBuilds" />
2591
		<bit name="fUseSlideRange" />
2592
		<bit name="fDocUseNamedShow" />
2593
		<bit name="fShowBrowseMode" />
2594
		<bit name="fKioskMode" />
2595
		<bit name="fWillSkipNarration" />
2596
		<bit name="fLoopContinuously" />
2597
		<bit name="fHideScrollBar" />
2598
		<uint7 name="reserved">
2599
			<!--
2600
				This value should be zero, but it is not always zero in practice.
2601
			-->
2602
		</uint7>
2603
		<uint16 name="unused" />
2604
	</struct>
2605
	<struct name="DrawingGroupContainer">
2606
		<type name="rh" type="RecordHeader">
2607
			<limitation name="recVer" value="0xF" />
2608
			<limitation name="recInstance" value="0" />
2609
			<limitation name="recType" value="0x040B" />
2610
		</type>
2611
		<type name="OfficeArtDgg" type="OfficeArtDggContainer" />
2612
	</struct>
2613
	<struct name="DrawingContainer">
2614
		<type name="rh" type="RecordHeader">
2615
			<limitation name="recVer" value="0xF" />
2616
			<limitation name="recInstance" value="0" />
2617
			<limitation name="recType" value="0x040C" />
2618
		</type>
2619
		<type name="OfficeArtDg" type="OfficeArtDgContainer" />
2620
	</struct>
2621
	<struct name="SlideSchemeColorSchemeAtom">
2622
		<type name="rh" type="RecordHeader">
2623
			<limitation name="recVer" value="0" />
2624
			<limitation name="recInstance" value="1" />
2625
			<limitation name="recType" value="0x07F0" />
2626
			<limitation name="recLen" value="0x20" />
2627
		</type>
2628
		<type name="rgSchemeColor" type="ColorStruct" count="8" />
2629
	</struct>
2630
	<struct name="RoundTripSlideRecord">
2631
		<type name="rh" type="RecordHeader">
2632
			<!--  value 0x2b0c is deprecated, but can occur -->
2633
			<limitation name="recType"
2634
				value="0x40E|0x40F|0x41D|0x3714|0x2B0D|0x2B0B|0x2B0C|0x422" />
2635
			<!--
2636
				0x40E|0x40F|0x41C|0x41D|0x41E|0x41F|0x420|0x422|0x423|0x425|0x426|0x427|0x428"
2637
			-->
2638
		</type>
2639
		<uint8 name="todo" count="rh.recLen" />
2640
	</struct>
2641
	<struct name="NamedShowsContainer">
2642
		<type name="rh" type="RecordHeader">
2643
			<limitation name="recVer" value="0xF" />
2644
			<limitation name="recInstance" value="0" />
2645
			<limitation name="recType" value="0x410" />
2646
		</type>
2647
		<uint8 name="todo" count="rh.recLen" />
2648
	</struct>
2649
	<struct name="SummaryContainer">
2650
		<type name="rh" type="RecordHeader">
2651
			<limitation name="recVer" value="0xF" />
2652
			<limitation name="recInstance" value="0" />
2653
			<limitation name="recType" value="0x402" />
2654
		</type>
2655
		<uint8 name="todo" count="rh.recLen" />
2656
	</struct>
2657
	<struct name="DocRoutingSlipAtom">
2658
		<type name="rh" type="RecordHeader">
2659
			<limitation name="recVer" value="0" />
2660
			<limitation name="recInstance" value="0" />
2661
			<limitation name="recType" value="0x406" />
2662
		</type>
2663
		<uint8 name="todo" count="rh.recLen" />
2664
	</struct>
2665
	<struct name="PrintOptionsAtom">
2666
		<type name="rh" type="RecordHeader">
2667
			<limitation name="recVer" value="0" />
2668
			<limitation name="recInstance" value="0" />
2669
			<limitation name="recType" value="0x1770" />
2670
			<limitation name="recLen" value="5" />
2671
		</type>
2672
		<uint8 name="todo" count="rh.recLen" />
2673
	</struct>
2674
	<struct name="RoundTripCustomTableStyles12Atom">
2675
		<type name="rh" type="RecordHeader">
2676
			<!--  value 0xF is not documented -->
2677
			<limitation name="recVer" value="0|0xF" />
2678
			<limitation name="recInstance" value="0" />
2679
			<limitation name="recType" value="0x428" />
2680
		</type>
2681
		<uint8 name="todo" count="rh.recLen" />
2682
	</struct>
2683
	<struct name="RoundTripCompositeMasterId12Atom">
2684
		<type name="rh" type="RecordHeader">
2685
			<limitation name="recVer" value="0" />
2686
			<limitation name="recInstance" value="0" />
2687
			<limitation name="recType" value="0x41D" />
2688
			<limitation name="recLen" value="4" />
2689
		</type>
2690
		<uint32 name="compositeMasterId" />
2691
	</struct>
2692
	<struct name="ColorStruct">
2693
		<uint8 name="red" />
2694
		<uint8 name="green" />
2695
		<uint8 name="blue" />
2696
		<uint8 name="unused" />
2697
	</struct>
2698
	<struct name="ExObjListContainer">
2699
		<type name="rh" type="RecordHeader">
2700
			<limitation name="recVer" value="0xF" />
2701
			<limitation name="recInstance" value="0x0" />
2702
			<limitation name="recType" value="0x0409" />
2703
			<limitation name="recLen" expression="&gt;=12" />
2704
		</type>
2705
		<type name="exObjListAtom" type="ExObjListAtom" />
2706
		<type name="rgChildRec" type="ExObjListSubContainer" array="true"
2707
			size="rh.recLen-12" />
2708
	</struct>
2709
	<struct name="ExObjListAtom">
2710
		<type name="rh" type="RecordHeader">
2711
			<limitation name="recVer" value="0x0" />
2712
			<limitation name="recInstance" value="0x0" />
2713
			<limitation name="recType" value="0x040A" />
2714
			<limitation name="recLen" value="4" />
2715
		</type>
2716
		<int32 name="exObjIdSeed">
2717
			<limitation expression="&gt;=1" />
2718
			<!--
2719
				TODO:exObjIdSeed (4 bytes): A signed integer that specifies a seed
2720
				for creating a new ExObjId or ExHyperlinkId value. It MUST be
2721
				greater than or equal to the largest ExObjId value in the file as
2722
				specified by the ExMediaAtom record or ExOleObjAtom record and MUST
2723
				be greater than or equal to the largest ExHyperlinkId value in the
2724
				file as specified by the ExHyperlinkAtom record. It MUST be greater
2725
				than or equal to 0x00000001.
2726
			-->
2727
		</int32>
2728
	</struct>
2729
	<struct name="ExObjListSubContainer">
2730
		<choice name="anon">
2731
			<type type="ExAviMovieContainer" />
2732
			<type type="ExCDAudioContainer" />
2733
			<type type="ExControlContainer" />
2734
			<type type="ExHyperlinkContainer" />
2735
			<type type="ExMCIMovieContainer" />
2736
			<type type="ExMIDIAudioContainer" />
2737
			<type type="ExOleEmbedContainer" />
2738
			<type type="ExOleLinkContainer" />
2739
			<type type="ExWAVAudioEmbeddedContainer" />
2740
			<type type="ExWAVAudioLinkContainer" />
2741
			<type type="UnknownExObjListSubContainerChild" />
2742
		</choice>
2743
	</struct>
2744
	<struct name="ExAviMovieContainer">
2745
		<type name="rh" type="OfficeArtRecordHeader">
2746
			<limitation name="recVer" value="0xF" />
2747
			<limitation name="recInstance" value="0" />
2748
			<limitation name="recType" value="0x1006" />
2749
		</type>
2750
		<uint8 name="todo" count="rh.recLen" />
2751
	</struct>
2752
	<struct name="ExCDAudioContainer">
2753
		<type name="rh" type="OfficeArtRecordHeader">
2754
			<limitation name="recVer" value="0xF" />
2755
			<limitation name="recInstance" value="0" />
2756
			<limitation name="recType" value="0x100E" />
2757
		</type>
2758
		<uint8 name="todo" count="rh.recLen" />
2759
	</struct>
2760
	<struct name="ExControlContainer">
2761
		<type name="rh" type="OfficeArtRecordHeader">
2762
			<limitation name="recVer" value="0xF" />
2763
			<limitation name="recInstance" value="0" />
2764
			<limitation name="recType" value="0xFEE" />
2765
		</type>
2766
		<type name="exControlAtom" type="ExControlAtom" />
2767
		<type name="exOleObjAtom" type="ExOleObjAtom" />
2768
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
2769
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
2770
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
2771
		<type name="metafile" type="MetafileBlob" optional="true" />
2772
	</struct>
2773
	<struct name="ExControlAtom">
2774
		<type name="rh" type="OfficeArtRecordHeader">
2775
			<limitation name="recVer" value="0" />
2776
			<limitation name="recInstance" value="0" />
2777
			<limitation name="recType" value="0xFFB" />
2778
			<limitation name="recLen" value="4" />
2779
		</type>
2780
		<uint32 name="slideIdRef" />
2781
	</struct>
2782
	<struct name="ExHyperlinkContainer">
2783
		<type name="rh" type="OfficeArtRecordHeader">
2784
			<limitation name="recVer" value="0xF" />
2785
			<limitation name="recInstance" value="0" />
2786
			<limitation name="recType" value="0xFD7" />
2787
		</type>
2788
		<type name="exHyperlinkAtom" type="ExHyperlinkAtom" />
2789
		<type name="friendlyNameAtom" type="FriendlyNameAtom" optional="true" />
2790
		<type name="targetAtom" type="TargetAtom" optional="true" />
2791
		<type name="locationAtom" type="LocationAtom" optional="true" />
2792
	</struct>
2793
	<struct name="ExHyperlinkAtom">
2794
		<type name="rh" type="OfficeArtRecordHeader">
2795
			<limitation name="recVer" value="0" />
2796
			<limitation name="recInstance" value="0" />
2797
			<limitation name="recType" value="0xFD3" />
2798
			<limitation name="recLen" value="4" />
2799
		</type>
2800
		<uint32 name="exHyperLinkId" />
2801
	</struct>
2802
	<struct name="FriendlyNameAtom">
2803
		<type name="rh" type="OfficeArtRecordHeader">
2804
			<limitation name="recVer" value="0" />
2805
			<limitation name="recInstance" value="0" />
2806
			<limitation name="recType" value="0xFBA" />
2807
			<limitation name="recLen" expression="%2==0" />
2808
		</type>
2809
		<uint16 name="friendlyName" count="rh.recLen/2" />
2810
	</struct>
2811
	<struct name="TargetAtom">
2812
		<type name="rh" type="OfficeArtRecordHeader">
2813
			<limitation name="recVer" value="0" />
2814
			<limitation name="recInstance" value="1" />
2815
			<limitation name="recType" value="0xFBA" />
2816
			<limitation name="recLen" expression="%2==0" />
2817
		</type>
2818
		<uint16 name="target" count="rh.recLen/2" />
2819
	</struct>
2820
	<struct name="LocationAtom">
2821
		<type name="rh" type="OfficeArtRecordHeader">
2822
			<limitation name="recVer" value="0" />
2823
			<limitation name="recInstance" value="3" />
2824
			<limitation name="recType" value="0xFBA" />
2825
			<limitation name="recLen" expression="%2==0" />
2826
		</type>
2827
		<uint16 name="location" count="rh.recLen/2" />
2828
	</struct>
2829
	<struct name="ExMCIMovieContainer">
2830
		<type name="rh" type="OfficeArtRecordHeader">
2831
			<limitation name="recVer" value="0xF" />
2832
			<limitation name="recInstance" value="0" />
2833
			<limitation name="recType" value="0x1007" />
2834
		</type>
2835
		<uint8 name="todo" count="rh.recLen" />
2836
	</struct>
2837
	<struct name="ExMIDIAudioContainer">
2838
		<type name="rh" type="OfficeArtRecordHeader">
2839
			<limitation name="recVer" value="0xF" />
2840
			<limitation name="recInstance" value="0" />
2841
			<limitation name="recType" value="0x100D" />
2842
		</type>
2843
		<uint8 name="todo" count="rh.recLen" />
2844
	</struct>
2845
	<struct name="ExWAVAudioEmbeddedContainer">
2846
		<type name="rh" type="OfficeArtRecordHeader">
2847
			<limitation name="recVer" value="0xF" />
2848
			<limitation name="recInstance" value="0" />
2849
			<limitation name="recType" value="0x100F" />
2850
		</type>
2851
		<uint8 name="todo" count="rh.recLen" />
2852
	</struct>
2853
	<struct name="ExWAVAudioLinkContainer">
2854
		<type name="rh" type="OfficeArtRecordHeader">
2855
			<limitation name="recVer" value="0xF" />
2856
			<limitation name="recInstance" value="0" />
2857
			<limitation name="recType" value="0x1010" />
2858
		</type>
2859
		<uint8 name="todo" count="rh.recLen" />
2860
	</struct>
2861
	<struct name="UnknownExObjListSubContainerChild">
2862
		<type name="rh" type="OfficeArtRecordHeader">
2863
			<limitation name="recVer" value="0xF" />
2864
			<limitation name="recInstance" value="0" />
2865
			<limitation name="recType" value="0xFEA" />
2866
		</type>
2867
		<uint8 name="todo" count="rh.recLen" />
2868
	</struct>
2869
	<struct name="ExOleLinkContainer">
2870
		<type name="rh" type="RecordHeader">
2871
			<limitation name="recVer" value="0xF" />
2872
			<limitation name="recInstance" value="0x0" />
2873
			<limitation name="recType" value="0x0FCE" />
2874
		</type>
2875
		<type name="exOleLinkAtom" type="ExOleLinkAtom" />
2876
		<type name="exOleObjAtom" type="ExOleObjAtom" />
2877
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
2878
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
2879
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
2880
		<type name="metafile" type="MetafileBlob" optional="true" />
2881
	</struct>
2882
	<struct name="ExOleEmbedContainer">
2883
		<type name="rh" type="RecordHeader">
2884
			<limitation name="recVer" value="0xF" />
2885
			<limitation name="recInstance" value="0x0" />
2886
			<limitation name="recType" value="0x0FCC" />
2887
		</type>
2888
		<type name="exOleEmbedAtom" type="ExOleEmbedAtom" />
2889
		<type name="exOleObjAtom" type="ExOleObjAtom" />
2890
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
2891
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
2892
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
2893
		<type name="metafile" type="MetafileBlob" optional="true" />
2894
	</struct>
2895
	<struct name="ExOleLinkAtom">
2896
		<type name="rh" type="RecordHeader">
2897
			<limitation name="recVer" value="0x0" />
2898
			<limitation name="recInstance" value="0x0" />
2899
			<limitation name="recType" value="0x0FD1" />
2900
			<limitation name="recLen" value="0xC" />
2901
		</type>
2902
		<uint32 name="slideIdRef">
2903
			<!--
2904
				A 4-byte unsigned integer that specifies a reference to a
2905
				presentation slide. It MUST be 0x00000000 or equal to the value of
2906
				the slideId field of a SlidePersistAtom record. The value 0x00000000
2907
				specifies a null reference.
2908
			-->
2909
		</uint32>
2910
		<uint32 name="oleUpdateMode" />
2911
		<uint32 name="unused" />
2912
	</struct>
2913
	<struct name="ExOleObjAtom">
2914
		<type name="rh" type="RecordHeader">
2915
			<limitation name="recVer" value="0x1" />
2916
			<limitation name="recInstance" value="0x0" />
2917
			<limitation name="recType" value="0x0FC3" />
2918
			<limitation name="recLen" value="0x18" />
2919
		</type>
2920
		<uint32 name="drawAspect" />
2921
		<uint32 name="type" />
2922
		<uint32 name="exObjId" />
2923
		<uint32 name="subType" />
2924
		<uint32 name="persistIdRef" />
2925
		<uint32 name="unused" />
2926
	</struct>
2927
	<struct name="MenuNameAtom">
2928
		<type name="rh" type="RecordHeader">
2929
			<limitation name="recVer" value="0x0" />
2930
			<limitation name="recInstance" value="0x1" />
2931
			<limitation name="recType" value="0x0FBA" />
2932
			<limitation name="recLen" expression="%2 == 0 " />
2933
		</type>
2934
		<uint8 name="menuName" count="rh.recLen" />
2935
	</struct>
2936
	<struct name="ProgIDAtom">
2937
		<type name="rh" type="RecordHeader">
2938
			<limitation name="recVer" value="0x0" />
2939
			<limitation name="recInstance" value="0x2" />
2940
			<limitation name="recType" value="0x0FBA" />
2941
			<limitation name="recLen" expression="%2 == 0 " />
2942
		</type>
2943
		<uint8 name="progId" count="rh.recLen" />
2944
	</struct>
2945
	<struct name="ClipboardNameAtom">
2946
		<type name="rh" type="RecordHeader">
2947
			<limitation name="recVer" value="0x0" />
2948
			<limitation name="recInstance" value="0x3" />
2949
			<limitation name="recType" value="0x0FBA" />
2950
			<limitation name="recLen" expression="%2 == 0 " />
2951
		</type>
2952
		<uint8 name="clipboardName" count="rh.recLen" />
2953
	</struct>
2954
	<struct name="MetafileBlob">
2955
		<type name="rh" type="RecordHeader">
2956
			<limitation name="recVer" value="0x0" />
2957
			<limitation name="recInstance" value="0x0" />
2958
			<limitation name="recType" value="0x0FC1" />
2959
			<limitation name="recLen" expression="&gt;16" />
2960
		</type>
2961
		<int16 name="mm" />
2962
		<int16 name="xExt" />
2963
		<int16 name="yExt" />
2964
		<uint8 name="data" count="rh.recLen-6" />
2965
	</struct>
2966
	<struct name="OfficeArtDggContainer">
2967
		<type name="rh" type="OfficeArtRecordHeader">
2968
			<limitation name="recVer" value="0xF" />
2969
			<limitation name="recInstance" value="0x0" />
2970
			<limitation name="recType" value="0x0F000" />
2971
		</type>
2972
		<type name="drawingGroup" type="OfficeArtFDGGBlock" />
2973
		<type name="blipStore" type="OfficeArtBStoreContainer" optional="true" />
2974
		<!--  different from spec -->
2975
		<type name="drawingPrimaryOptions" type="OfficeArtFOPT" />
2976
		<type name="drawingTertiaryOptions" type="OfficeArtTertiaryFOPT"
2977
			optional="true" />
2978
		<!--
2979
			MS docs do not list drawingTertiaryOptions as optional
2980
		-->
2981
		<type name="colorMRU" type="OfficeArtColorMRUContainer" optional="true" />
2982
		<!--
2983
			MS docs do not list drawingTertiaryOptions as optional
2984
		-->
2985
		<type name="splitColors" type="OfficeArtSplitMenuColorContainer" />
2986
		<!--
2987
			sometimes the order is messed up in openoffice generated documents
2988
			This second blipSore takes that into account, but is not according to
2989
			the specification.
2990
		-->
2991
		<type name="blipStore2" type="OfficeArtBStoreContainer" optional="true" />
2992
		<!--
2993
			MS docs do not mention this instance of OfficeArtTertiaryFOPT
2994
		-->
2995
		<type name="unknown" type="OfficeArtTertiaryFOPT" optional="true" />
2996
	</struct>
2997
	<struct name="OfficeArtDgContainer">
2998
		<type name="rh" type="OfficeArtRecordHeader">
2999
			<limitation name="recVer" value="0xF" />
3000
			<limitation name="recInstance" value="0x0" />
3001
			<limitation name="recType" value="0xF002" />
3002
		</type>
3003
		<type name="drawingData" type="OfficeArtFDG" />
3004
		<!-- MS documentation does not say regroupItems is optional -->
3005
		<type name="regroupItems" type="OfficeArtFRITContainer" optional="true" />
3006
		<type name="groupShape" type="OfficeArtSpgrContainer" />
3007
		<!-- MS documentation does not say shape is optional -->
3008
		<type name="shape" type="OfficeArtSpContainer" optional="true" />
3009
		<type name="deletedShapes" type="OfficeArtSpgrContainerFileBlock"
3010
			array="true" />
3011
		<!--  according to ms spec, solvers is not optional -->
3012
		<type name="solvers" type="OfficeArtSolverContainer" optional="true" />
3013
	</struct>
3014
	<struct name="OfficeArtFDGGBlock">
3015
		<type name="rh" type="OfficeArtRecordHeader">
3016
			<limitation name="recVer" value="0x0" />
3017
			<limitation name="recInstance" value="0x0" />
3018
			<limitation name="recType" value="0x0F006" />
3019
		</type>
3020
		<type name="head" type="OfficeArtFDGG">
3021
			<!-- <limitation expression="cidcl==rh.recLen/8.0-2" /> FIX!-->
3022
		</type>
3023
		<type name="Rgidcl" type="OfficeArtIDCL" count="head.cidcl-1" />
3024
	</struct>
3025
	<struct name="OfficeArtFDGG">
3026
		<uint32 name="spidMax">
3027
			<limitation expression="&lt;67098623" />
3028
		</uint32>
3029
		<uint32 name="cidcl">
3030
			<limitation expression="&lt;268435455" />
3031
		</uint32>
3032
		<uint32 name="cspSaved" />
3033
		<uint32 name="cdgSaved" />
3034
	</struct>
3035
	<struct name="OfficeArtFDG">
3036
		<type name="rh" type="OfficeArtRecordHeader">
3037
			<limitation name="recVer" value="0x0" />
3038
			<limitation name="recInstance" expression="&lt;=4094" />
3039
			<limitation name="recType" value="0x0F008" />
3040
			<limitation name="recLen" value="8" />
3041
		</type>
3042
		<uint32 name="csp" />
3043
		<uint32 name="spidCur" />
3044
	</struct>
3045
	<struct name="OfficeArtFRITContainer">
3046
		<type name="rh" type="OfficeArtRecordHeader">
3047
			<limitation name="recVer" value="0" />
3048
			<limitation name="recType" value="0xF118" />
3049
			<limitation expression="recLen==4*recInstance" />
3050
		</type>
3051
		<type name="rgfrit" type="OfficeArtFRIT" count="rh.recInstance" />
3052
	</struct>
3053
	<struct name="OfficeArtFRIT">
3054
		<uint16 name="fridNew" />
3055
		<uint16 name="fridOld" />
3056
	</struct>
3057
	<struct name="OfficeArtBStoreContainer">
3058
		<type name="rh" type="OfficeArtRecordHeader">
3059
			<limitation name="recVer" value="0xF" />
3060
			<limitation name="recType" value="0x0F001" />
3061
		</type>
3062
		<!--
3063
			OOo can set number of instances to a wrong value, so use rh.recLen
3064
		-->
3065
		<type name="rgfb" type="OfficeArtBStoreContainerFileBlock" array="true"
3066
			size="rh.recLen" />
3067
	</struct>
3068
	<struct name="OfficeArtSpgrContainer">
3069
		<type name="rh" type="OfficeArtRecordHeader">
3070
			<limitation name="recVer" value="0xF" />
3071
			<limitation name="recInstance" value="0" />
3072
			<limitation name="recType" value="0x0F003" />
3073
		</type>
3074
		<type name="rgfb" type="OfficeArtSpgrContainerFileBlock" array="true"
3075
			size="rh.recLen" />
3076
	</struct>
3077
	<struct name="OfficeArtSpgrContainerFileBlock">
3078
		<choice name="anon">
3079
			<type type="OfficeArtSpContainer" />
3080
			<type type="OfficeArtSpgrContainer" />
3081
		</choice>
3082
	</struct>
3083
	<struct name="OfficeArtSpContainer">
3084
		<type name="rh" type="OfficeArtRecordHeader">
3085
			<limitation name="recVer" value="0xF" />
3086
			<limitation name="recInstance" value="0" />
3087
			<limitation name="recType" value="0x0F004" />
3088
		</type>
3089
		<type name="shapeGroup" type="OfficeArtFSPGR" optional="true" />
3090
		<type name="shapeProp" type="OfficeArtFSP" />
3091
		<type name="deletedshape" type="OfficeArtFPSPL" optional="true" />
3092
		<type name="shapePrimaryOptions" type="OfficeArtFOPT" optional="true" />
3093
		<type name="shapeSecondaryOptions1" type="OfficeArtSecondaryFOPT"
3094
			optional="true" />
3095
		<type name="shapeTertiaryOptions1" type="OfficeArtTertiaryFOPT"
3096
			optional="true" />
3097
		<type name="childAnchor" type="OfficeArtChildAnchor" optional="true" />
3098
		<type name="clientAnchor" type="OfficeArtClientAnchor" optional="true" />
3099
		<type name="clientData" type="OfficeArtClientData" optional="true" />
3100
		<type name="clientTextbox" type="OfficeArtClientTextBox"
3101
			optional="true" />
3102
		<!--
3103
			Only exists if shapeSecondaryOptions1 does not. -->
3104
		<type name="shapeSecondaryOptions2" type="OfficeArtSecondaryFOPT"
3105
			optional="true" />
3106
		<!--
3107
			Only exists if shapeTertiaryOptions1 does not. -->
3108
		<type name="shapeTertiaryOptions2" type="OfficeArtTertiaryFOPT"
3109
			optional="true" />
3110
	</struct>
3111
	<struct name="OfficeArtSolverContainer">
3112
		<type name="rh" type="OfficeArtRecordHeader">
3113
			<limitation name="recVer" value="0xF" />
3114
			<limitation name="recType" value="0xF005" />
3115
		</type>
3116
		<type name="rgfb" type="OfficeArtSolverContainerFileBlock" array="true" />
3117
	</struct>
3118
	<struct name="OfficeArtSolverContainerFileBlock">
3119
		<choice name="anon">
3120
			<type type="OfficeArtFConnectorRule" />
3121
			<type type="OfficeArtFArcRule" />
3122
			<type type="OfficeArtFCalloutRule" />
3123
		</choice>
3124
	</struct>
3125
	<struct name="OfficeArtFConnectorRule">
3126
		<type name="rh" type="OfficeArtRecordHeader">
3127
			<limitation name="recVer" value="1" />
3128
			<limitation name="recInstance" value="0" />
3129
			<limitation name="recType" value="0xF012" />
3130
			<limitation name="recLen" value="0x18" />
3131
		</type>
3132
		<uint32 name="ruid" />
3133
		<uint32 name="spidA" />
3134
		<uint32 name="spidB" />
3135
		<uint32 name="spidC" />
3136
		<uint32 name="cptiA" />
3137
		<uint32 name="cptiB" />
3138
	</struct>
3139
	<struct name="OfficeArtFArcRule">
3140
		<type name="rh" type="OfficeArtRecordHeader">
3141
			<limitation name="recVer" value="0" />
3142
			<limitation name="recInstance" value="0" />
3143
			<limitation name="recType" value="0xF014" />
3144
			<limitation name="recLen" value="8" />
3145
		</type>
3146
		<uint32 name="ruid" />
3147
		<uint32 name="spid" />
3148
	</struct>
3149
	<struct name="OfficeArtFCalloutRule">
3150
		<type name="rh" type="OfficeArtRecordHeader">
3151
			<limitation name="recVer" value="0" />
3152
			<limitation name="recInstance" value="0" />
3153
			<limitation name="recType" value="0xF017" />
3154
			<limitation name="recLen" value="8" />
3155
		</type>
3156
		<uint32 name="ruid" />
3157
		<uint32 name="spid" />
3158
	</struct>
3159
	<struct name="OfficeArtFSPGR">
3160
		<type name="rh" type="OfficeArtRecordHeader">
3161
			<limitation name="recVer" value="0x1" />
3162
			<limitation name="recInstance" value="0" />
3163
			<limitation name="recType" value="0x0F009" />
3164
			<limitation name="recLen" value="0x10" />
3165
		</type>
3166
		<int32 name="xLeft" />
3167
		<int32 name="yTop" />
3168
		<int32 name="xRight" />
3169
		<int32 name="yBottom" />
3170
	</struct>
3171
	<struct name="OfficeArtFSP">
3172
		<type name="rh" type="OfficeArtRecordHeader">
3173
			<limitation name="recVer" value="0x2" />
3174
			<limitation name="recInstance" expression="&lt;= 202" />
3175
			<limitation name="recType" value="0x0F00A" />
3176
			<limitation name="recLen" value="8" />
3177
		</type>
3178
		<uint32 name="spid" />
3179
		<bit name="fGroup" />
3180
		<bit name="fChild" />
3181
		<bit name="fPatriarch" />
3182
		<bit name="fDeleted" />
3183
		<bit name="fOleShape" />
3184
		<bit name="fHaveMaster" />
3185
		<bit name="fFlipH" />
3186
		<bit name="fFlipV" />
3187
		<bit name="fConnector" />
3188
		<bit name="fHaveAnchor" />
3189
		<bit name="fBackground" />
3190
		<bit name="fHaveSpt" />
3191
		<uint20 name="unused1" />
3192
	</struct>
3193
	<struct name="OfficeArtFOPT">
3194
		<type name="rh" type="OfficeArtRecordHeader">
3195
			<limitation name="recVer" value="0x3" />
3196
			<limitation name="recType" value="0x0F00B" />
3197
		</type>
3198
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3199
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3200
	</struct>
3201
	<struct name="OfficeArtSecondaryFOPT">
3202
		<type name="rh" type="OfficeArtRecordHeader">
3203
			<limitation name="recVer" value="3" />
3204
			<limitation name="recType" value="0xF121" />
3205
		</type>
3206
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3207
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3208
	</struct>
3209
	<struct name="OfficeArtTertiaryFOPT">
3210
		<type name="rh" type="OfficeArtRecordHeader">
3211
			<limitation name="recVer" value="3" />
3212
			<limitation name="recType" value="0xF122" />
3213
		</type>
3214
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3215
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3216
	</struct>
3217
	<!-- This type is invented to make OPTE specific parsing possible -->
3218
	<struct name="OfficeArtFOPTEChoice">
3219
		<choice name="anon">
3220
			<type type="ProtectionBooleanProperties" />
3221
			<type type="adjust2Value" />
3222
			<type type="adjust3Value" />
3223
			<type type="ITxid" />
3224
			<type type="DxTextLeft" />
3225
			<type type="DyTextTop" />
3226
			<type type="DxTextRight" />
3227
			<type type="DyTextBottom" />
3228
			<type type="WrapText" />
3229
			<type type="AnchorText" />
3230
			<type type="TextBooleanProperties" />
3231
			<type type="HspNext" />
3232
			<type type="Pib" />
3233
			<type type="PibName" />
3234
			<type type="ShapePath" />
3235
			<type type="GeometryBooleanProperties" />
3236
			<type type="FillType" />
3237
			<type type="FillColor" />
3238
			<type type="FillBackColor" />
3239
			<type type="FillBlip" />
3240
			<type type="FillStyleBooleanProperties" />
3241
			<type type="LineColor" />
3242
			<type type="LineOpacity" />
3243
			<type type="LineBackColor" />
3244
			<type type="LineFillBlip" />
3245
			<type type="LineWidth" />
3246
			<type type="LineStyle" />
3247
			<type type="LineDashing" />
3248
			<type type="FillRectRight" />
3249
			<type type="FillRectBottom" />
3250
			<type type="WzFillId" />
3251
			<type type="LineStyleBooleanProperties" />
3252
			<type type="LineStartArrowhead" />
3253
			<type type="LineEndArrowhead" />
3254
			<type type="LineStartArrowWidth" />
3255
			<type type="LineStartArrowLength" />
3256
			<type type="LineEndArrowWidth" />
3257
			<type type="LineEndArrowLength" />
3258
			<type type="LineJoinStyle" />
3259
			<type type="ShadowColor" />
3260
			<type type="ShadowOpacity" />
3261
			<type type="ShadowOffsetX" />
3262
			<type type="ShadowOffsetY" />
3263
			<type type="ShadowStyleBooleanPropertiesr" />
3264
			<type type="ShapeBooleanProperties" />
3265
			<type type="HspMaster" />
3266
			<type type="Rotation" />
3267
			<type type="LidRegroup" />
3268
			<type type="BWMode" />
3269
			<type type="OfficeArtFOPTE" />
3270
		</choice>
3271
	</struct>
3272
	<!--
3273
		<struct name="OfficeArtFOPTEComplexData"> <uint8 name="data" count="0"
3274
		/> (../fopt[_position]/opid.fComplex)?../fopt[_position]/op:0" />
3275
3276
		</struct>
3277
	-->
3278
	<struct name="ProtectionBooleanProperties">
3279
		<type name="opid" type="OfficeArtFOPTEOPID">
3280
			<limitation name="opid" value="0x007F" />
3281
			<limitation name="fBid" value="false" />
3282
			<limitation name="fComplex" value="false" />
3283
		</type>
3284
		<bit name="fLockAgainstGrouping" />
3285
		<bit name="fLockAdjustHandles" />
3286
		<bit name="fLockText" />
3287
		<bit name="fLockVertices" />
3288
		<bit name="fLockCropping" />
3289
		<bit name="fLockAgainstSelect" />
3290
		<bit name="fLockPosition" />
3291
		<bit name="fLockAspectRatio" />
3292
		<bit name="fLockRotation" />
3293
		<bit name="fLockAgainstUngrouping" />
3294
		<uint6 name="unused6" />
3295
		<bit name="fUsefLockAgainstGrouping" />
3296
		<bit name="fUseLockAdjustHandles" />
3297
		<bit name="fUseLockText" />
3298
		<bit name="fUsefLockVertices" />
3299
		<bit name="fUsefLockCropping" />
3300
		<bit name="fUsefLockAgainstSelect" />
3301
		<bit name="fUsefLockPosition" />
3302
		<bit name="fUsefLockAspectRatio" />
3303
		<bit name="fUsefLockRotation" />
3304
		<bit name="fUsefLockAgainstUngrouping" />
3305
		<uint6 name="unused2" />
3306
	</struct>
3307
	<struct name="FixedPoint">
3308
		<int16 name="integral" />
3309
		<uint16 name="fractional" />
3310
	</struct>
3311
	<struct name="Rotation">
3312
		<type name="opid" type="OfficeArtFOPTEOPID">
3313
			<limitation name="opid" value="0x0004" />
3314
			<limitation name="fBid" value="false" />
3315
			<limitation name="fComplex" value="false" />
3316
		</type>
3317
		<type name="rotation" type="FixedPoint" />
3318
	</struct>
3319
	<struct name="ITxid">
3320
		<type name="opid" type="OfficeArtFOPTEOPID">
3321
			<limitation name="opid" value="0x0080" />
3322
			<limitation name="fBid" value="false" />
3323
			<limitation name="fComplex" value="false" />
3324
		</type>
3325
		<int32 name="iTxid" />
3326
	</struct>
3327
	<struct name="DxTextLeft">
3328
		<type name="opid" type="OfficeArtFOPTEOPID">
3329
			<limitation name="opid" value="0x0081" />
3330
			<limitation name="fBid" value="false" />
3331
			<limitation name="fComplex" value="false" />
3332
		</type>
3333
		<int32 name="dxTextLeft" />
3334
	</struct>
3335
	<struct name="DyTextTop">
3336
		<type name="opid" type="OfficeArtFOPTEOPID">
3337
			<limitation name="opid" value="0x0082" />
3338
			<limitation name="fBid" value="false" />
3339
			<limitation name="fComplex" value="false" />
3340
		</type>
3341
		<int32 name="dyTextTop" />
3342
	</struct>
3343
	<struct name="DxTextRight">
3344
		<type name="opid" type="OfficeArtFOPTEOPID">
3345
			<limitation name="opid" value="0x0083" />
3346
			<limitation name="fBid" value="false" />
3347
			<limitation name="fComplex" value="false" />
3348
		</type>
3349
		<int32 name="dxTextRight" />
3350
	</struct>
3351
	<struct name="DyTextBottom">
3352
		<type name="opid" type="OfficeArtFOPTEOPID">
3353
			<limitation name="opid" value="0x0084" />
3354
			<limitation name="fBid" value="false" />
3355
			<limitation name="fComplex" value="false" />
3356
		</type>
3357
		<int32 name="dyTextBottom" />
3358
	</struct>
3359
	<struct name="WrapText">
3360
		<type name="opid" type="OfficeArtFOPTEOPID">
3361
			<limitation name="opid" value="0x0085" />
3362
			<limitation name="fBid" value="false" />
3363
			<limitation name="fComplex" value="false" />
3364
		</type>
3365
		<uint32 name="wrapText">
3366
			<limitation expression="&lt;5" />
3367
		</uint32>
3368
	</struct>
3369
	<struct name="AnchorText">
3370
		<type name="opid" type="OfficeArtFOPTEOPID">
3371
			<limitation name="opid" value="0x0087" />
3372
			<limitation name="fBid" value="false" />
3373
			<limitation name="fComplex" value="false" />
3374
		</type>
3375
		<uint32 name="anchorText">
3376
			<limitation expression="&lt;=9" />
3377
		</uint32>
3378
	</struct>
3379
	<struct name="TextBooleanProperties">
3380
		<type name="opid" type="OfficeArtFOPTEOPID">
3381
			<limitation name="opid" value="0x00BF" />
3382
			<limitation name="fBid" value="false" />
3383
			<limitation name="fComplex" value="false" />
3384
		</type>
3385
		<bit name="unused1" />
3386
		<bit name="fFitShapeToText" />
3387
		<bit name="unused2" />
3388
		<bit name="fAutoTextMargin" />
3389
		<bit name="fSelectText" />
3390
		<uint3 name="unused3a" />
3391
		<uint8 name="unused3b" />
3392
		<bit name="unused4" />
3393
		<bit name="fUsefFitShapeToText" />
3394
		<bit name="unused5" />
3395
		<bit name="fUsefAutoTextMargin" />
3396
		<bit name="fUsefSelectText" />
3397
		<uint3 name="unused6a" />
3398
		<uint8 name="unused6b" />
3399
	</struct>
3400
	<struct name="HspNext">
3401
		<type name="opid" type="OfficeArtFOPTEOPID">
3402
			<limitation name="opid" value="0x008A" />
3403
			<limitation name="fBid" value="false" />
3404
			<limitation name="fComplex" value="false" />
3405
		</type>
3406
		<int32 name="hspNext" />
3407
	</struct>
3408
	<struct name="Pib">
3409
		<type name="opid" type="OfficeArtFOPTEOPID">
3410
			<limitation name="opid" value="0x0104" />
3411
		</type>
3412
		<uint32 name="pib" />
3413
	</struct>
3414
	<struct name="PibName">
3415
		<type name="opid" type="OfficeArtFOPTEOPID">
3416
			<limitation name="opid" value="0x0105" />
3417
		</type>
3418
		<uint32 name="pibName" />
3419
	</struct>
3420
	<struct name="ShapePath">
3421
		<type name="opid" type="OfficeArtFOPTEOPID">
3422
			<limitation name="opid" value="0x0144" />
3423
			<limitation name="fBid" value="false" />
3424
			<limitation name="fComplex" value="false" />
3425
		</type>
3426
		<uint32 name="shapePath">
3427
			<limitation expression="&lt;=4" />
3428
		</uint32>
3429
	</struct>
3430
	<struct name="adjust2Value">
3431
		<type name="opid" type="OfficeArtFOPTEOPID">
3432
			<limitation name="opid" value="0x0148" />
3433
			<limitation name="fBid" value="false" />
3434
			<limitation name="fComplex" value="false" />
3435
		</type>
3436
		<int32 name="adjust2value" />
3437
	</struct>
3438
	<struct name="adjust3Value">
3439
		<type name="opid" type="OfficeArtFOPTEOPID">
3440
			<limitation name="opid" value="0x0149" />
3441
			<limitation name="fBid" value="false" />
3442
			<limitation name="fComplex" value="false" />
3443
		</type>
3444
		<int32 name="adjust3value" />
3445
	</struct>
3446
	<struct name="GeometryBooleanProperties">
3447
		<type name="opid" type="OfficeArtFOPTEOPID">
3448
			<limitation name="opid" value="0x017F" />
3449
			<limitation name="fBid" value="false" />
3450
			<limitation name="fComplex" value="false" />
3451
		</type>
3452
		<bit name="fFillOk" />
3453
		<bit name="fFillShadeShapeOK" />
3454
		<bit name="fGtextOK" />
3455
		<bit name="fLineOK" />
3456
		<bit name="f3DOK" />
3457
		<bit name="fShadowOK" />
3458
		<bit name="unuseda" />
3459
		<bit name="unusedb" />
3460
		<uint8 name="unused2" />
3461
		<bit name="fUsefFillOK" />
3462
		<bit name="fUsefFillShadeShapeOK" />
3463
		<bit name="fUsefGtextOK" />
3464
		<bit name="fUsefLineOK" />
3465
		<bit name="fUsef3DOK" />
3466
		<bit name="fUsefShadowOK" />
3467
		<bit name="unused3a" />
3468
		<bit name="unused3b" />
3469
		<uint8 name="unused4" />
3470
	</struct>
3471
	<struct name="FillType">
3472
		<type name="opid" type="OfficeArtFOPTEOPID">
3473
			<limitation name="opid" value="0x0180" />
3474
			<limitation name="fBid" value="false" />
3475
			<limitation name="fComplex" value="false" />
3476
		</type>
3477
		<uint32 name="fillType">
3478
			<limitation expression="&lt;=9" />
3479
		</uint32>
3480
	</struct>
3481
	<struct name="FillColor">
3482
		<type name="opid" type="OfficeArtFOPTEOPID">
3483
			<limitation name="opid" value="0x0181" />
3484
			<limitation name="fBid" value="false" />
3485
			<limitation name="fComplex" value="false" />
3486
		</type>
3487
		<type name="fillColor" type="OfficeArtCOLORREF" />
3488
	</struct>
3489
	<struct name="FillBackColor">
3490
		<type name="opid" type="OfficeArtFOPTEOPID">
3491
			<limitation name="opid" value="0x0183" />
3492
			<limitation name="fBid" value="false" />
3493
			<limitation name="fComplex" value="false" />
3494
		</type>
3495
		<type name="fillBackColor" type="OfficeArtCOLORREF" />
3496
	</struct>
3497
	<struct name="FillBlip">
3498
		<type name="opid" type="OfficeArtFOPTEOPID">
3499
			<limitation name="opid" value="0x0186" />
3500
		</type>
3501
		<uint32 name="fillBlip" />
3502
	</struct>
3503
	<struct name="FillRectRight">
3504
		<type name="opid" type="OfficeArtFOPTEOPID">
3505
			<limitation name="opid" value="0x0193" />
3506
			<limitation name="fBid" value="false" />
3507
			<limitation name="fComplex" value="false" />
3508
		</type>
3509
		<int32 name="fillRectRight" />
3510
	</struct>
3511
	<struct name="FillRectBottom">
3512
		<type name="opid" type="OfficeArtFOPTEOPID">
3513
			<limitation name="opid" value="0x0194" />
3514
			<limitation name="fBid" value="false" />
3515
			<limitation name="fComplex" value="false" />
3516
		</type>
3517
		<int32 name="fillRectBottom" />
3518
	</struct>
3519
	<struct name="FillStyleBooleanProperties">
3520
		<type name="opid" type="OfficeArtFOPTEOPID">
3521
			<limitation name="opid" value="0x01BF" />
3522
			<limitation name="fBid" value="false" />
3523
			<limitation name="fComplex" value="false" />
3524
		</type>
3525
		<bit name="fNoFillHitText" />
3526
		<bit name="fillUseRect" />
3527
		<bit name="fillShape" />
3528
		<bit name="fHitTestFill" />
3529
		<bit name="fFilled" />
3530
		<bit name="fUseShapeAnchor" />
3531
		<bit name="fRecolorFillAsPicture" />
3532
		<bit name="unused1a" />
3533
		<uint8 name="unused1b" />
3534
		<bit name="fUseNoFillHitTest" />
3535
		<bit name="fUseFillUseRext" />
3536
		<bit name="fUseFillShape" />
3537
		<bit name="fUseHitTestFill" />
3538
		<bit name="fUseFilled" />
3539
		<bit name="fUseUseShapeAnchor" />
3540
		<bit name="fUsefRecolorFillAsPicture" />
3541
		<bit name="unused2a" />
3542
		<uint8 name="unused2b" />
3543
	</struct>
3544
	<struct name="LineColor">
3545
		<type name="opid" type="OfficeArtFOPTEOPID">
3546
			<limitation name="opid" value="0x01C0" />
3547
			<limitation name="fBid" value="false" />
3548
			<limitation name="fComplex" value="false" />
3549
		</type>
3550
		<type name="lineColor" type="OfficeArtCOLORREF" />
3551
	</struct>
3552
	<struct name="LineOpacity">
3553
		<type name="opid" type="OfficeArtFOPTEOPID">
3554
			<limitation name="opid" value="0x01C1" />
3555
			<limitation name="fBid" value="false" />
3556
			<limitation name="fComplex" value="false" />
3557
		</type>
3558
		<int32 name="lineOpacity">
3559
			<limitation expression="&gt;=0" />
3560
			<limitation expression="&lt;=65536" />
3561
		</int32>
3562
	</struct>
3563
	<struct name="LineBackColor">
3564
		<type name="opid" type="OfficeArtFOPTEOPID">
3565
			<limitation name="opid" value="0x01C2" />
3566
		</type>
3567
		<type name="lineBackColor" type="OfficeArtCOLORREF" />
3568
	</struct>
3569
	<struct name="LineFillBlip">
3570
		<type name="opid" type="OfficeArtFOPTEOPID">
3571
			<limitation name="opid" value="0x01C5" />
3572
		</type>
3573
		<uint32 name="lineFillBlip" />
3574
	</struct>
3575
	<struct name="LineWidth">
3576
		<type name="opid" type="OfficeArtFOPTEOPID">
3577
			<limitation name="opid" value="0x01CB" />
3578
			<limitation name="fBid" value="false" />
3579
			<limitation name="fComplex" value="false" />
3580
		</type>
3581
		<!--
3582
			default = 0x2535 english metric units. 1587.5 EMUs is 1 Master Units
3583
		-->
3584
		<uint32 name="lineWidth" />
3585
	</struct>
3586
	<struct name="LineStyle">
3587
		<type name="opid" type="OfficeArtFOPTEOPID">
3588
			<limitation name="opid" value="0x01CD" />
3589
			<limitation name="fBid" value="false" />
3590
			<limitation name="fComplex" value="false" />
3591
		</type>
3592
		<uint32 name="lineStyle" />
3593
	</struct>
3594
	<struct name="LineDashing">
3595
		<type name="opid" type="OfficeArtFOPTEOPID">
3596
			<limitation name="opid" value="0x01CE" />
3597
			<limitation name="fBid" value="false" />
3598
			<limitation name="fComplex" value="false" />
3599
		</type>
3600
		<uint32 name="lineDashing" />
3601
	</struct>
3602
	<struct name="LineStartArrowhead">
3603
		<type name="opid" type="OfficeArtFOPTEOPID">
3604
			<limitation name="opid" value="0x01D0" />
3605
			<limitation name="fBid" value="false" />
3606
			<limitation name="fComplex" value="false" />
3607
		</type>
3608
		<uint32 name="lineStartArrowhead">
3609
			<limitation expression="&lt;=8" />
3610
		</uint32>
3611
	</struct>
3612
	<struct name="LineEndArrowhead">
3613
		<type name="opid" type="OfficeArtFOPTEOPID">
3614
			<limitation name="opid" value="0x01D1" />
3615
			<limitation name="fBid" value="false" />
3616
			<limitation name="fComplex" value="false" />
3617
		</type>
3618
		<uint32 name="lineEndArrowhead">
3619
			<limitation expression="&lt;=8" />
3620
		</uint32>
3621
	</struct>
3622
	<struct name="LineStartArrowWidth">
3623
		<type name="opid" type="OfficeArtFOPTEOPID">
3624
			<limitation name="opid" value="0x01D2" />
3625
			<limitation name="fBid" value="false" />
3626
			<limitation name="fComplex" value="false" />
3627
		</type>
3628
		<uint32 name="lineStartArrowWidth" />
3629
	</struct>
3630
	<struct name="LineStartArrowLength">
3631
		<type name="opid" type="OfficeArtFOPTEOPID">
3632
			<limitation name="opid" value="0x01D3" />
3633
			<limitation name="fBid" value="false" />
3634
			<limitation name="fComplex" value="false" />
3635
		</type>
3636
		<uint32 name="lineStartArrowLength" />
3637
	</struct>
3638
	<struct name="LineEndArrowWidth">
3639
		<type name="opid" type="OfficeArtFOPTEOPID">
3640
			<limitation name="opid" value="0x01D4" />
3641
			<limitation name="fBid" value="false" />
3642
			<limitation name="fComplex" value="false" />
3643
		</type>
3644
		<uint32 name="lineEndArrowWidth" />
3645
	</struct>
3646
	<struct name="LineEndArrowLength">
3647
		<type name="opid" type="OfficeArtFOPTEOPID">
3648
			<limitation name="opid" value="0x01D5" />
3649
			<limitation name="fBid" value="false" />
3650
			<limitation name="fComplex" value="false" />
3651
		</type>
3652
		<uint32 name="lineEndArrowLength" />
3653
	</struct>
3654
	<struct name="LineJoinStyle">
3655
		<type name="opid" type="OfficeArtFOPTEOPID">
3656
			<limitation name="opid" value="0x01D6" />
3657
			<limitation name="fBid" value="false" />
3658
			<limitation name="fComplex" value="false" />
3659
		</type>
3660
		<uint32 name="lineJoinStyle">
3661
			<limitation expression="&lt;=2" />
3662
		</uint32>
3663
	</struct>
3664
	<struct name="LineStyleBooleanProperties">
3665
		<type name="opid" type="OfficeArtFOPTEOPID">
3666
			<limitation name="opid" value="0x01FF" />
3667
			<limitation name="fBid" value="false" />
3668
			<limitation name="fComplex" value="false" />
3669
		</type>
3670
		<bit name="fNoLineDrawDash" />
3671
		<bit name="fLineFillShape" />
3672
		<bit name="fHitTestLine" />
3673
		<bit name="fLine" />
3674
		<bit name="fArrowHeadsOK" />
3675
		<bit name="fInsetPenOK" />
3676
		<bit name="fInsetPen" />
3677
		<bit name="reserved1" />
3678
		<bit name="reserved2" />
3679
		<bit name="fLineOpaqueBackColor" />
3680
		<uint6 name="unused1" />
3681
		<bit name="fUseNoLineDrawDash" />
3682
		<bit name="fUseLineFillShape" />
3683
		<bit name="fUseHitTestLine" />
3684
		<bit name="fUsefLine" />
3685
		<bit name="fUsefArrowHeadsOK" />
3686
		<bit name="fUseInsetPenOK" />
3687
		<bit name="fUseInsetPen" />
3688
		<bit name="unused2" />
3689
		<bit name="unused3" />
3690
		<bit name="fUsefLineOpaqueBackColor" />
3691
		<uint6 name="unused4" />
3692
	</struct>
3693
	<struct name="ShadowColor">
3694
		<type name="opid" type="OfficeArtFOPTEOPID">
3695
			<limitation name="opid" value="0x0201" />
3696
			<limitation name="fBid" value="false" />
3697
			<limitation name="fComplex" value="false" />
3698
		</type>
3699
		<type name="shadowColor" type="OfficeArtCOLORREF" />
3700
	</struct>
3701
	<struct name="ShadowOpacity">
3702
		<type name="opid" type="OfficeArtFOPTEOPID">
3703
			<limitation name="opid" value="0x0204" />
3704
			<limitation name="fBid" value="false" />
3705
			<limitation name="fComplex" value="false" />
3706
		</type>
3707
		<type name="shadowOpacity" type="FixedPoint" />
3708
	</struct>
3709
	<struct name="ShadowOffsetX">
3710
		<type name="opid" type="OfficeArtFOPTEOPID">
3711
			<limitation name="opid" value="0x0205" />
3712
			<limitation name="fBid" value="false" />
3713
			<limitation name="fComplex" value="false" />
3714
		</type>
3715
		<int32 name="shadowOffsetX" />
3716
	</struct>
3717
	<struct name="ShadowOffsetY">
3718
		<type name="opid" type="OfficeArtFOPTEOPID">
3719
			<limitation name="opid" value="0x0206" />
3720
			<limitation name="fBid" value="false" />
3721
			<limitation name="fComplex" value="false" />
3722
		</type>
3723
		<int32 name="shadowOffsetY" />
3724
	</struct>
3725
	<struct name="ShadowStyleBooleanPropertiesr">
3726
		<type name="opid" type="OfficeArtFOPTEOPID">
3727
			<limitation name="opid" value="0x023F" />
3728
			<limitation name="fBid" value="false" />
3729
			<limitation name="fComplex" value="false" />
3730
		</type>
3731
		<bit name="fshadowObscured" />
3732
		<bit name="fShadow" />
3733
		<uint14 name="unused1" />
3734
		<bit name="fUsefshadowObscured" />
3735
		<bit name="fUsefShadow" />
3736
		<uint14 name="unused2" />
3737
	</struct>
3738
	<struct name="HspMaster">
3739
		<type name="opid" type="OfficeArtFOPTEOPID">
3740
			<limitation name="opid" value="0x0301" />
3741
			<limitation name="fBid" value="false" />
3742
			<limitation name="fComplex" value="false" />
3743
		</type>
3744
		<uint32 name="hspMaster" />
3745
	</struct>
3746
	<struct name="BWMode">
3747
		<type name="opid" type="OfficeArtFOPTEOPID">
3748
			<limitation name="opid" value="0x0304" />
3749
			<limitation name="fBid" value="false" />
3750
			<limitation name="fComplex" value="false" />
3751
		</type>
3752
		<uint32 name="bWMode">
3753
			<limitation expression="&lt;=10" />
3754
		</uint32>
3755
	</struct>
3756
	<struct name="ShapeBooleanProperties">
3757
		<type name="opid" type="OfficeArtFOPTEOPID">
3758
			<limitation name="opid" value="0x033F" />
3759
			<limitation name="fBid" value="false" />
3760
			<limitation name="fComplex" value="false" />
3761
		</type>
3762
		<bit name="fBackground" />
3763
		<bit name="reserved1" />
3764
		<bit name="fInitiator" />
3765
		<bit name="fLockShapeType" />
3766
		<bit name="fPreferRelativeResize" />
3767
		<bit name="fOleIcon" />
3768
		<bit name="fFlipVOverride" />
3769
		<bit name="fFlipHOverride" />
3770
		<bit name="fPolicyBarcode" />
3771
		<bit name="fPolicyLabel" />
3772
		<bit name="unused1" />
3773
		<bit name="unused2" />
3774
		<uint4 name="unused3" />
3775
		<bit name="fUsefBackground" />
3776
		<bit name="unused4" />
3777
		<bit name="fUsefInitiator" />
3778
		<bit name="fUsefLockShapeType" />
3779
		<bit name="fusePreferrelativeResize" />
3780
		<bit name="fUsefOleIcon" />
3781
		<bit name="fUsefFlipVOverride" />
3782
		<bit name="fUsefFlipHOverride" />
3783
		<bit name="fUsefPolicyBarcode" />
3784
		<bit name="fUsefPolicyLabel" />
3785
		<bit name="unused5" />
3786
		<bit name="unused6" />
3787
		<uint4 name="unused7" />
3788
	</struct>
3789
	<struct name="LidRegroup">
3790
		<type name="opid" type="OfficeArtFOPTEOPID">
3791
			<limitation name="opid" value="0x0388" />
3792
			<limitation name="fBid" value="false" />
3793
			<limitation name="fComplex" value="false" />
3794
		</type>
3795
		<uint32 name="lidRegroup" />
3796
	</struct>
3797
	<struct name="WzFillId">
3798
		<type name="opid" type="OfficeArtFOPTEOPID">
3799
			<limitation name="opid" value="0x0403" />
3800
		</type>
3801
		<int32 name="wzFillId" />
3802
	</struct>
3803
	<struct name="OfficeArtCOLORREF">
3804
		<uint8 name="red" />
3805
		<uint8 name="green" />
3806
		<uint8 name="blue" />
3807
		<bit name="fPaletteIndex" />
3808
		<bit name="fPaletteRGB" />
3809
		<bit name="fSystemRGB" />
3810
		<bit name="fSchemeIndex" />
3811
		<bit name="fSysIndex" />
3812
		<bit name="unused1" />
3813
		<bit name="unused2" />
3814
		<bit name="unused3" />
3815
	</struct>
3816
	<struct name="OfficeArtChildAnchor">
3817
		<type name="rh" type="OfficeArtRecordHeader">
3818
			<limitation name="recVer" value="0" />
3819
			<limitation name="recInstance" value="0" />
3820
			<limitation name="recType" value="0xF00F" />
3821
			<limitation name="recLen" value="0x10" />
3822
		</type>
3823
		<int32 name="xLeft" />
3824
		<int32 name="yTop" />
3825
		<int32 name="xRight" />
3826
		<int32 name="yBottom" />
3827
	</struct>
3828
	<struct name="OfficeArtClientAnchor">
3829
		<type name="rh" type="OfficeArtRecordHeader">
3830
			<limitation name="recVer" value="0" />
3831
			<limitation name="recInstance" value="0" />
3832
			<limitation name="recType" value="0xF010" />
3833
			<limitation name="recLen" value="0x8|0x10" />
3834
		</type>
3835
		<type name="rect1" type="SmallRectStruct" condition="rh.recLen==0x8" />
3836
		<type name="rect2" type="RectStruct" condition="rh.recLen==0x10" />
3837
	</struct>
3838
	<struct name="OfficeArtFPSPL">
3839
		<type name="rh" type="OfficeArtRecordHeader">
3840
			<limitation name="recVer" value="0" />
3841
			<limitation name="recInstance" value="0" />
3842
			<limitation name="recType" value="0xF11D" />
3843
			<limitation name="recLen" value="4" />
3844
		</type>
3845
		<uint30 name="spid" />
3846
		<bit name="reserved1" />
3847
		<bit name="fLast" />
3848
	</struct>
3849
	<struct name="RectStruct">
3850
		<int32 name="top" />
3851
		<int32 name="left" />
3852
		<int32 name="right" />
3853
		<int32 name="bottom" />
3854
	</struct>
3855
	<struct name="SmallRectStruct">
3856
		<int16 name="top" />
3857
		<int16 name="left" />
3858
		<int16 name="right" />
3859
		<int16 name="bottom" />
3860
	</struct>
3861
	<struct name="OfficeArtClientData">
3862
		<type name="rh" type="OfficeArtRecordHeader">
3863
			<limitation name="recVer" value="0xF" />
3864
			<limitation name="recInstance" value="0" />
3865
			<limitation name="recType" value="0xF011" />
3866
		</type>
3867
		<type name="shapeFlagsAtom" type="ShapeFlagsAtom" optional="true" />
3868
		<type name="shapeFlags10Atom" type="ShapeFlags10Atom" optional="true" />
3869
		<type name="exObjRefAtom" type="ExObjRefAtom" optional="true" />
3870
		<type name="animationInfo" type="AnimationInfoContainer"
3871
			optional="true" />
3872
		<type name="mouseClickInteractiveInfo" type="MouseClickInteractiveInfoContainer"
3873
			optional="true" />
3874
		<type name="mouseOverInteractiveInfo" type="MouseOverInteractiveInfoContainer"
3875
			optional="true" />
3876
		<!--  sometimes this array occurs here -->
3877
		<type name="rgShapeClientRoundtripData0" type="ShapeClientRoundtripDataSubcontainerOrAtom"
3878
			array="true" />
3879
		<type name="placeholderAtom" type="PlaceholderAtom" optional="true" />
3880
		<type name="recolorInfoAtom" type="RecolorInfoAtom" optional="true" />
3881
		<type name="unknown1" type="UnknownOfficeArtClientDataChild"
3882
			optional="true" />
3883
		<type name="rgShapeClientRoundtripData" type="ShapeClientRoundtripDataSubcontainerOrAtom"
3884
			array="true" />
3885
		<type name="unknown2" type="UnknownOfficeArtClientDataChild"
3886
			optional="true" />
3887
	</struct>
3888
	<struct name="ShapeFlagsAtom">
3889
		<type name="rh" type="OfficeArtRecordHeader">
3890
			<limitation name="recVer" value="0" />
3891
			<limitation name="recInstance" value="0" />
3892
			<limitation name="recType" value="0xBDB" />
3893
			<limitation name="recLen" value="1" />
3894
		</type>
3895
		<uint8 name="todo" count="rh.recLen" />
3896
	</struct>
3897
	<struct name="ShapeFlags10Atom">
3898
		<type name="rh" type="OfficeArtRecordHeader">
3899
			<limitation name="recVer" value="0" />
3900
			<limitation name="recInstance" value="0" />
3901
			<limitation name="recType" value="0xBDC" />
3902
			<limitation name="recLen" value="1" />
3903
		</type>
3904
		<uint8 name="todo" count="rh.recLen" />
3905
	</struct>
3906
	<struct name="ExObjRefAtom">
3907
		<type name="rh" type="OfficeArtRecordHeader">
3908
			<limitation name="recVer" value="0" />
3909
			<limitation name="recInstance" value="0" />
3910
			<limitation name="recType" value="0xBC1" />
3911
			<limitation name="recLen" value="4" />
3912
		</type>
3913
		<uint32 name="exObjIdRef" />
3914
	</struct>
3915
	<struct name="AnimationInfoContainer">
3916
		<type name="rh" type="OfficeArtRecordHeader">
3917
			<limitation name="recVer" value="0xF" />
3918
			<limitation name="recInstance" value="0" />
3919
			<limitation name="recType" value="0x1014" />
3920
		</type>
3921
		<type name="animationAtom" type="AnimationInfoAtom" />
3922
		<type name="animationSound" type="SoundContainer" optional="true" />
3923
	</struct>
3924
	<struct name="AnimationInfoAtom">
3925
		<type name="rh" type="OfficeArtRecordHeader">
3926
			<limitation name="recVer" value="0x1" />
3927
			<limitation name="recInstance" value="0" />
3928
			<limitation name="recType" value="0xFF1" />
3929
			<limitation name="recLen" value="0x1C" />
3930
		</type>
3931
		<uint8 name="todo" count="0x1C" />
3932
	</struct>
3933
	<struct name="SoundContainer">
3934
		<type name="rh" type="OfficeArtRecordHeader">
3935
			<limitation name="recVer" value="0xF" />
3936
			<limitation name="recInstance" value="0" />
3937
			<limitation name="recType" value="0x7E6" />
3938
		</type>
3939
		<uint8 name="todo" count="rh.recLen" />
3940
	</struct>
3941
	<struct name="MouseClickInteractiveInfoContainer">
3942
		<type name="rh" type="RecordHeader">
3943
			<limitation name="recVer" value="0xF" />
3944
			<limitation name="recInstance" value="0" />
3945
			<limitation name="recType" value="0xFF2" />
3946
		</type>
3947
		<type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
3948
		<type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
3949
	</struct>
3950
	<struct name="MouseOverInteractiveInfoContainer">
3951
		<type name="rh" type="RecordHeader">
3952
			<limitation name="recVer" value="0xF" />
3953
			<limitation name="recInstance" value="1" />
3954
			<limitation name="recType" value="0xFF2" />
3955
		</type>
3956
		<type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
3957
		<type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
3958
	</struct>
3959
	<struct name="InteractiveInfoAtom">
3960
		<type name="rh" type="RecordHeader">
3961
			<limitation name="recVer" value="0" />
3962
			<limitation name="recInstance" value="0" />
3963
			<!--  value should be 0xFF3, but value 0xFF2 has been observed too -->
3964
			<limitation name="recType" value="0xFF2|0xFF3" />
3965
			<limitation name="recLen" value="0x10" />
3966
		</type>
3967
		<uint32 name="soundIdRef" />
3968
		<uint32 name="exHyperlinkIdRef" />
3969
		<uint8 name="action">
3970
			<limitation expression="&lt;8" />
3971
		</uint8>
3972
		<uint8 name="oleVerb">
3973
			<limitation expression="&lt;3" />
3974
		</uint8>
3975
		<uint8 name="jump">
3976
			<limitation expression="&lt;7" />
3977
		</uint8>
3978
		<bit name="fAnimated" />
3979
		<bit name="fStopSound" />
3980
		<bit name="fCustomSoundReturn" />
3981
		<bit name="fVisited" />
3982
		<uint4 name="reserved" />
3983
		<uint8 name="hyperlinkType" />
3984
		<uint8 name="unused" count="3" />
3985
	</struct>
3986
	<struct name="MacroNameAtom">
3987
		<type name="rh" type="RecordHeader">
3988
			<limitation name="recVer" value="0" />
3989
			<limitation name="recInstance" value="2" />
3990
			<limitation name="recType" value="0xFBA" />
3991
			<limitation name="recLen" expression="%2==0" />
3992
		</type>
3993
		<uint8 name="macroName" count="rh.recLen" />
3994
	</struct>
3995
	<struct name="PlaceholderAtom">
3996
		<type name="rh" type="OfficeArtRecordHeader">
3997
			<limitation name="recVer" value="0" />
3998
			<limitation name="recInstance" value="0" />
3999
			<limitation name="recType" value="0xBC3" />
4000
			<limitation name="recLen" value="8" />
4001
		</type>
4002
		<int32 name="position" />
4003
		<uint8 name="placementId" />
4004
		<uint8 name="size" />
4005
		<uint16 name="unused" />
4006
	</struct>
4007
	<struct name="RecolorInfoAtom">
4008
		<type name="rh" type="OfficeArtRecordHeader">
4009
			<limitation name="recVer" value="0" />
4010
			<limitation name="recInstance" value="0" />
4011
			<limitation name="recType" value="0xFE7" />
4012
		</type>
4013
		<uint8 name="todo" count="rh.recLen" />
4014
	</struct>
4015
	<struct name="OutlineTextRefAtom">
4016
		<type name="rh" type="OfficeArtRecordHeader">
4017
			<limitation name="recVer" value="0" />
4018
			<limitation name="recInstance" value="0" />
4019
			<limitation name="recType" value="0xF9E" />
4020
			<limitation name="recLen" value="4" />
4021
		</type>
4022
		<int32 name="index">
4023
			<limitation expression="&gt;=0" />
4024
		</int32>
4025
	</struct>
4026
	<struct name="ShapeClientRoundtripDataSubcontainerOrAtom">
4027
		<!--
4028
			<type name="rh" type="OfficeArtRecordHeader"> <limitation
4029
			name="recType" value="0x1388|0xBDD|0x41F|0x420|0x426" /> </type>
4030
			<uint8 name="todo" count="rh.recLen" />
4031
		-->
4032
		<choice name="anon">
4033
			<type type="ShapeProgsTagContainer" />
4034
			<type type="RoundTripNewPlaceHolderId12Atom" />
4035
			<type type="RoundTripShapeId12Atom" />
4036
			<type type="RoundTripHFPlaceholder12Atom" />
4037
			<type type="RoundTripShapeCheckSumForCustomLayouts12Atom" />
4038
		</choice>
4039
	</struct>
4040
	<struct name="ShapeProgsTagContainer">
4041
		<type name="rh" type="OfficeArtRecordHeader">
4042
			<limitation name="recVer" value="0xF" />
4043
			<limitation name="recInstance" value="0|1|2" />
4044
			<limitation name="recType" value="0x1388" />
4045
		</type>
4046
		<uint8 name="todo" count="rh.recLen" />
4047
	</struct>
4048
	<struct name="RoundTripNewPlaceHolderId12Atom">
4049
		<type name="rh" type="OfficeArtRecordHeader">
4050
			<limitation name="recVer" value="0" />
4051
			<limitation name="recInstance" value="0" />
4052
			<limitation name="recType" value="0xBDD" />
4053
			<limitation name="recLen" value="1" />
4054
		</type>
4055
		<uint8 name="newPlaceHolderId" />
4056
	</struct>
4057
	<struct name="RoundTripShapeId12Atom">
4058
		<type name="rh" type="OfficeArtRecordHeader">
4059
			<limitation name="recVer" value="0" />
4060
			<limitation name="recInstance" value="0" />
4061
			<limitation name="recType" value="0x41F" />
4062
			<limitation name="recLen" value="4" />
4063
		</type>
4064
		<uint32 name="shapeId" />
4065
	</struct>
4066
	<struct name="RoundTripHFPlaceholder12Atom">
4067
		<type name="rh" type="OfficeArtRecordHeader">
4068
			<limitation name="recVer" value="0" />
4069
			<limitation name="recInstance" value="0" />
4070
			<limitation name="recType" value="0x420" />
4071
			<limitation name="recLen" value="1" />
4072
		</type>
4073
		<uint8 name="placeHolderId" />
4074
	</struct>
4075
	<struct name="RoundTripShapeCheckSumForCustomLayouts12Atom">
4076
		<type name="rh" type="OfficeArtRecordHeader">
4077
			<limitation name="recVer" value="0" />
4078
			<limitation name="recInstance" value="0" />
4079
			<limitation name="recType" value="0x426" />
4080
			<!--  documentations says this field should be size 8 -->
4081
			<limitation name="recLen" value="8|40" />
4082
		</type>
4083
		<uint32 name="shapeCheckSum" />
4084
		<uint32 name="textCheckSum" />
4085
		<uint8 name="unknown" count="rh.recLen-8" />
4086
	</struct>
4087
	<struct name="OfficeArtClientTextBox">
4088
		<type name="rh" type="OfficeArtRecordHeader">
4089
			<limitation name="recVer" value="0|0xF" />
4090
			<!--  documentation says value should be 0 -->
4091
			<limitation name="recInstance" value="0" />
4092
			<limitation name="recType" value="0xF00D" />
4093
		</type>
4094
		<type name="rgChildRec" array="true" size="rh.recLen"
4095
			type="TextClientDataSubContainerOrAtom" />
4096
	</struct>
4097
	<struct name="TextRulerAtom">
4098
		<type name="rh" type="RecordHeader">
4099
			<limitation name="recVer" value="0" />
4100
			<limitation name="recInstance" value="0" />
4101
			<limitation name="recType" value="0xFA6" />
4102
		</type>
4103
		<type name="textRuler" type="TextRuler" />
4104
	</struct>
4105
	<struct name="OfficeArtIDCL">
4106
		<uint32 name="dgid" />
4107
		<uint32 name="cspidCur" />
4108
	</struct>
4109
	<struct name="OfficeArtFOPTE">
4110
		<type name="opid" type="OfficeArtFOPTEOPID" />
4111
		<int32 name="op" />
4112
	</struct>
4113
	<struct name="OfficeArtFOPTEOPID">
4114
		<uint14 name="opid" />
4115
		<bit name="fBid" />
4116
		<bit name="fComplex" />
4117
	</struct>
4118
	<struct name="OfficeArtColorMRUContainer">
4119
		<type name="rh" type="OfficeArtRecordHeader">
4120
			<limitation name="recVer" value="0x0" />
4121
			<limitation name="recType" value="0xF11A" />
4122
			<limitation expression="recLen==4*recInstance" />
4123
		</type>
4124
		<type name="rgmsocr" type="MSOCR" count="rh.recInstance" />
4125
	</struct>
4126
	<struct name="MSOCR">
4127
		<uint8 name="red" />
4128
		<uint8 name="green" />
4129
		<uint8 name="blue" />
4130
		<uint3 name="unused1" />
4131
		<bit name="fSchemeIndex" />
4132
		<uint4 name="unused2" />
4133
		<!--
4134
			an addition limitation is needed that says that if fSchemeIndex ==1
4135
			then green and blue must be 0
4136
		-->
4137
	</struct>
4138
	<struct name="OfficeArtSplitMenuColorContainer">
4139
		<type name="rh" type="OfficeArtRecordHeader">
4140
			<limitation name="recVer" value="0x0" />
4141
			<limitation name="recInstance" value="0x4" />
4142
			<limitation name="recType" value="0xF11E" />
4143
			<limitation name="recLen" value="0x10" />
4144
		</type>
4145
		<type name="smca" type="MSOCR" count="4" />
4146
	</struct>
4147
	<struct name="todo">
4148
		<!--
4149
			a placeholder for structures that are not in the document
4150
			specification yet
4151
		-->
4152
		<type name="rh" type="RecordHeader">
4153
			<!--
4154
				disallow structures that are implemented <limitation name="recType"
4155
				value="!1000" />
4156
			-->
4157
		</type>
4158
		<uint8 name="anon" count="rh.recLen" />
4159
	</struct>
4160
	<struct name="WordDocument">
4161
		<type name="fib" type="Fib" />
4162
	</struct>
4163
	<struct name="Fib">
4164
		<type name="base" type="FibBase" />
4165
		<uint16 name="csw">
4166
			<limitation value="14" />
4167
		</uint16>
4168
		<type name="fibRgW" type="FibRgW97" />
4169
		<uint16 name="cslw">
4170
			<limitation value="22" />
4171
		</uint16>
4172
		<type name="fibRgLw" type="FibRgLw97" />
4173
		<uint16 name="cbRgFcLcb">
4174
			<limitation value="0x5D|0x6C|0x88|0xA4|0xB7" />
4175
		</uint16>
4176
		<type name="fibRgFcLcbBlob" type="FibRgFcLcb97" />
4177
		<type name="fibRgFcLcbBlob2" type="FibRgFcLcb2000" condition="cbRgFcLcb&gt;=0x6C" />
4178
		<type name="fibRgFcLcbBlob3" type="FibRgFcLcb2002" condition="cbRgFcLcb&gt;=0x88" />
4179
		<uint16 name="cswNew">
4180
			<limitation value="0|2|5" />
4181
		</uint16>
4182
		<uint8 name="fibRgCswNew" count="2*cswNew" />
4183
		<!--  <type name="fibRgCswNew" type="fibRgCswNew" />-->
4184
		<uint8 name="trail" count="fibRgLw.cbMac-156-8*cbRgFcLcb-2*cswNew" />
4185
	</struct>
4186
	<struct name="FibBase">
4187
		<uint16 name="wIdent">
4188
			<limitation value="0xA5EC" />
4189
		</uint16>
4190
		<uint16 name="nFib">
4191
			<limitation value="0xC0|0xC1|0xC2|0x101|0x10B|0x10C|0x112" />
4192
		</uint16>
4193
		<uint16 name="unused" />
4194
		<uint16 name="lid" />
4195
		<uint16 name="pnNext" />
4196
		<bit name="fDot" />
4197
		<bit name="fGlsy" />
4198
		<bit name="fComplex" />
4199
		<bit name="fHasPic" />
4200
		<uint4 name="cQuickSaves" />
4201
		<bit name="fEncrypted" />
4202
		<bit name="fWhichTblStm" />
4203
		<bit name="fReadOnlyRecommended" />
4204
		<bit name="fWriteReservation" />
4205
		<bit name="fExtChar" />
4206
		<bit name="fLoadOverride" />
4207
		<bit name="fFarEast" />
4208
		<bit name="fObfuscated" />
4209
		<uint16 name="nFibBack">
4210
			<limitation value="0xBF|0xC1" />
4211
		</uint16>
4212
		<uint32 name="IKey" />
4213
		<uint8 name="envr">
4214
			<limitation value="0" />
4215
		</uint8>
4216
		<bit name="fMac">
4217
			<limitation value="false" />
4218
		</bit>
4219
		<bit name="fEmptySpecial" />
4220
		<bit name="fLoadOverridePage" />
4221
		<bit name="reserved1" />
4222
		<bit name="reserved2" />
4223
		<uint3 name="fSpare0" />
4224
		<uint16 name="reserved3">
4225
			<limitation value="0" />
4226
		</uint16>
4227
		<uint16 name="reserved4">
4228
			<limitation value="0" />
4229
		</uint16>
4230
		<uint32 name="reserved5" />
4231
		<uint32 name="reserved6" />
4232
	</struct>
4233
	<struct name="FibRgW97">
4234
		<uint16 name="reserved1" />
4235
		<uint16 name="reserved2" />
4236
		<uint16 name="reserved3" />
4237
		<uint16 name="reserved4" />
4238
		<uint16 name="reserved5" />
4239
		<uint16 name="reserved6" />
4240
		<uint16 name="reserved7" />
4241
		<uint16 name="reserved8" />
4242
		<uint16 name="reserved9" />
4243
		<uint16 name="reserved10" />
4244
		<uint16 name="reserved11" />
4245
		<uint16 name="reserved12" />
4246
		<uint16 name="reserved13" />
4247
		<uint16 name="lidFE" />
4248
	</struct>
4249
	<struct name="FibRgLw97">
4250
		<uint32 name="cbMac" />
4251
		<uint32 name="reserved1" />
4252
		<uint32 name="reserved2" />
4253
		<int32 name="ccpText">
4254
			<limitation expression="&gt;=0" />
4255
		</int32>
4256
		<int32 name="ccpFtn">
4257
			<limitation expression="&gt;=0" />
4258
		</int32>
4259
		<int32 name="ccpHdd">
4260
			<limitation expression="&gt;=0" />
4261
		</int32>
4262
		<uint32 name="reserved3">
4263
			<limitation value="0" />
4264
		</uint32>
4265
		<int32 name="ccpAtn">
4266
			<limitation expression="&gt;=0" />
4267
		</int32>
4268
		<int32 name="ccpEdn">
4269
			<limitation expression="&gt;=0" />
4270
		</int32>
4271
		<int32 name="ccpTxbx">
4272
			<limitation expression="&gt;=0" />
4273
		</int32>
4274
		<int32 name="ccpHdrTxbx">
4275
			<limitation expression="&gt;=0" />
4276
		</int32>
4277
		<uint32 name="reserved4" />
4278
		<uint32 name="reserved5" />
4279
		<uint32 name="reserved6" />
4280
		<uint32 name="reserved7" />
4281
		<uint32 name="reserved8" />
4282
		<uint32 name="reserved9" />
4283
		<uint32 name="reserved10" />
4284
		<uint32 name="reserved11" />
4285
		<uint32 name="reserved12" />
4286
		<uint32 name="reserved13">
4287
			<limitation value="0" />
4288
		</uint32>
4289
		<uint32 name="reserved14">
4290
			<limitation value="0" />
4291
		</uint32>
4292
	</struct>
4293
	<struct name="FibRgFcLcb97">
4294
		<uint32 name="fcStshfOrig" />
4295
		<uint32 name="lcbStshfOrig" />
4296
		<uint32 name="fcStshf" />
4297
		<uint32 name="lcbStshf" />
4298
		<uint32 name="fcPlcffndRef" />
4299
		<uint32 name="lcbPlcffndRef" />
4300
		<uint32 name="fcPlcffndTxt" />
4301
		<uint32 name="lcbPlcffndTxt" />
4302
		<uint32 name="fcPlcfandRef" />
4303
		<uint32 name="lcbPlcfandRef" />
4304
		<uint32 name="fcPlcfandTxt" />
4305
		<uint32 name="lcbPlcfandTxt" />
4306
		<uint32 name="fcPlcfSed" />
4307
		<uint32 name="lcbPlcfSed" />
4308
		<uint32 name="fcPlcPad" />
4309
		<uint32 name="lcbPlcPad" />
4310
		<uint32 name="fcPlcfPhe" />
4311
		<uint32 name="lcbPlcfPhe" />
4312
		<uint32 name="fcSttbfGlsy" />
4313
		<uint32 name="lcbSttbfGlsy" />
4314
		<uint32 name="fcPlcfGlsy" />
4315
		<uint32 name="lcbPlcfGlsy" />
4316
		<uint32 name="fcPlcfHdd" />
4317
		<uint32 name="lcbPlcfHdd" />
4318
		<uint32 name="fcPlcfBteChpx" />
4319
		<uint32 name="lcbPlcfBteChpx" />
4320
		<uint32 name="fcPlcfBtePapx" />
4321
		<uint32 name="lcbPlcfBtePapx" />
4322
		<uint32 name="fcPlcfSea" />
4323
		<uint32 name="lcbPlcfSea" />
4324
		<uint32 name="fcSttbfFfn" />
4325
		<uint32 name="lcbSttbfFfn" />
4326
		<uint32 name="fcPlcfFldMom" />
4327
		<uint32 name="lcbPlcfFldMom" />
4328
		<uint32 name="fcPlcfFldHdr" />
4329
		<uint32 name="lcbPlcfFldHdr" />
4330
		<uint32 name="fcPlcfFldFtn" />
4331
		<uint32 name="lcbPlcfFldFtn" />
4332
		<uint32 name="fcPlcfFldAtn" />
4333
		<uint32 name="lcbPlcfFldAtn" />
4334
		<uint32 name="fcPlcfFldMcr" />
4335
		<uint32 name="lcbPlcfFldMcr" />
4336
		<uint32 name="fcSttbfBkmk" />
4337
		<uint32 name="lcbSttbfBkmk" />
4338
		<uint32 name="fcPlcfBkf" />
4339
		<uint32 name="lcbPlcfBkf" />
4340
		<uint32 name="fcPlcfBkl" />
4341
		<uint32 name="lcbPlcfBkl" />
4342
		<uint32 name="fcCmds" />
4343
		<uint32 name="lcbCmds" />
4344
		<uint32 name="fcUnused1" />
4345
		<uint32 name="lcbUnused1" />
4346
		<uint32 name="fcSttbfMcr" />
4347
		<uint32 name="lcbSttbfMcr" />
4348
		<uint32 name="fcPrDrvr" />
4349
		<uint32 name="lcbPrDrvr" />
4350
		<uint32 name="fcPrEnvPort" />
4351
		<uint32 name="lcbPrEnvPort" />
4352
		<uint32 name="fcPrEnvLand" />
4353
		<uint32 name="lcbPrEnvLand" />
4354
		<uint32 name="fcWss" />
4355
		<uint32 name="lcbWss" />
4356
		<uint32 name="fcDop" />
4357
		<uint32 name="lcbDop" />
4358
		<uint32 name="fcSttbfAssoc" />
4359
		<uint32 name="lcbSttbfAssoc" />
4360
		<uint32 name="fcClx" />
4361
		<uint32 name="lcbClx" />
4362
		<uint32 name="fcPlcfPgdFtn" />
4363
		<uint32 name="lcbPlcfPgdFtn" />
4364
		<uint32 name="fcAutosaveSource" />
4365
		<uint32 name="lcbAutosaveSource" />
4366
		<uint32 name="fcGrpXstAtnOwners" />
4367
		<uint32 name="lcbGrpXstAtnOwners" />
4368
		<uint32 name="fcSttbfAtnBkmk" />
4369
		<uint32 name="lcbSttbfAtnBkmk" />
4370
		<uint32 name="fcUnused2" />
4371
		<uint32 name="lcbUnused2" />
4372
		<uint32 name="fcUnused3" />
4373
		<uint32 name="lcbUnused3" />
4374
		<uint32 name="fcPlcSpaMom" />
4375
		<uint32 name="lcbPlcSpaMom" />
4376
		<uint32 name="fcPlcSpaHdr" />
4377
		<uint32 name="lcbPlcSpaHdr" />
4378
		<uint32 name="fcPlcfAtnBkf" />
4379
		<uint32 name="lcbPlcfAtnBkf" />
4380
		<uint32 name="fcPlcfAtnBkl" />
4381
		<uint32 name="lcbPlcfAtnBkl" />
4382
		<uint32 name="fcPms" />
4383
		<uint32 name="lcbPms" />
4384
		<uint32 name="fcFormFldSttbs" />
4385
		<uint32 name="lcbFormFldSttbs" />
4386
		<uint32 name="fcPlcfendRef" />
4387
		<uint32 name="lcbPlcfendRef" />
4388
		<uint32 name="fcPlcfendTxt" />
4389
		<uint32 name="lcbPlcfendTxt" />
4390
		<uint32 name="fcPlcfFldEdn" />
4391
		<uint32 name="lcbPlcfFldEdn" />
4392
		<uint32 name="fcUnused4" />
4393
		<uint32 name="lcbUnused4" />
4394
		<uint32 name="fcDggInfo" />
4395
		<uint32 name="lcbDggInfo" />
4396
		<uint32 name="fcSttbfRMark" />
4397
		<uint32 name="lcbSttbfRMark" />
4398
		<uint32 name="fcSttbfCaption" />
4399
		<uint32 name="lcbSttbfCaption" />
4400
		<uint32 name="fcSttbfAutoCaption" />
4401
		<uint32 name="lcbSttbfAutoCaption" />
4402
		<uint32 name="fcPlcfWkb" />
4403
		<uint32 name="lcbPlcfWkb" />
4404
		<uint32 name="fcPlcfSpl" />
4405
		<uint32 name="lcbPlcfSpl" />
4406
		<uint32 name="fcPlcftxbxTxt" />
4407
		<uint32 name="lcbPlcftxbxTxt" />
4408
		<uint32 name="fcPlcfFldTxbx" />
4409
		<uint32 name="lcbPlcfFldTxbx" />
4410
		<uint32 name="fcPlcfHdrtxbxTxt" />
4411
		<uint32 name="lcbPlcfHdrtxbxTxt" />
4412
		<uint32 name="fcPlcffldHdrTxbx" />
4413
		<uint32 name="lcbPlcffldHdrTxbx" />
4414
		<uint32 name="fcStwUser" />
4415
		<uint32 name="lcbStwUser" />
4416
		<uint32 name="fcSttbTtmbd" />
4417
		<uint32 name="lcbSttbTtmbd" />
4418
		<uint32 name="fcCookieData" />
4419
		<uint32 name="lcbCookieData" />
4420
		<uint32 name="fcPgdMotherOldOld" />
4421
		<uint32 name="lcbPgdMotherOldOld" />
4422
		<uint32 name="fcBkdMotherOldOld" />
4423
		<uint32 name="lcbBkdMotherOldOld" />
4424
		<uint32 name="fcPgdFtnOldOld" />
4425
		<uint32 name="lcbPgdFtnOldOld" />
4426
		<uint32 name="fcBkdFtnOldOld" />
4427
		<uint32 name="lcbBkdFtnOldOld" />
4428
		<uint32 name="fcPgdEdnOldOld" />
4429
		<uint32 name="lcbPgdEdnOldOld" />
4430
		<uint32 name="fcBkdEdnOldOld" />
4431
		<uint32 name="lcbBkdEdnOldOld" />
4432
		<uint32 name="fcSttbfIntlFld" />
4433
		<uint32 name="lcbSttbfIntlFld" />
4434
		<uint32 name="fcRouteSlip" />
4435
		<uint32 name="lcbRouteSlip" />
4436
		<uint32 name="fcSttbSavedBy" />
4437
		<uint32 name="lcbSttbSavedBy" />
4438
		<uint32 name="fcSttbFnm" />
4439
		<uint32 name="lcbSttbFnm" />
4440
		<uint32 name="fcPlfLst" />
4441
		<uint32 name="lcbPlfLst" />
4442
		<uint32 name="fcPlfLfo" />
4443
		<uint32 name="lcbPlfLfo" />
4444
		<uint32 name="fcPlcfTxbxBkd" />
4445
		<uint32 name="lcbPlcfTxbxBkd" />
4446
		<uint32 name="fcPlcfTxbxHdrBkd" />
4447
		<uint32 name="lcbPlcfTxbxHdrBkd" />
4448
		<uint32 name="fcDocUndoWord9" />
4449
		<uint32 name="lcbDocUndoWord9" />
4450
		<uint32 name="fcRgbUse" />
4451
		<uint32 name="lcbRgbUse" />
4452
		<uint32 name="fcUsp" />
4453
		<uint32 name="lcbUsp" />
4454
		<uint32 name="fcUskf" />
4455
		<uint32 name="lcbUskf" />
4456
		<uint32 name="fcPlcupcRgbUse" />
4457
		<uint32 name="lcbPlcupcRgbUse" />
4458
		<uint32 name="fcPlcupcUsp" />
4459
		<uint32 name="lcbPlcupcUsp" />
4460
		<uint32 name="fcSttbGlsyStyle" />
4461
		<uint32 name="lcbSttbGlsyStyle" />
4462
		<uint32 name="fcPlgosl" />
4463
		<uint32 name="lcbPlgosl" />
4464
		<uint32 name="fcPlcocx" />
4465
		<uint32 name="lcbPlcocx" />
4466
		<uint32 name="fcPlcfBteLvc" />
4467
		<uint32 name="lcbPlcfBteLvc" />
4468
		<uint32 name="dwLowDateTime" />
4469
		<uint32 name="dwHighDateTime" />
4470
		<uint32 name="fcPlcfLvcPre10" />
4471
		<uint32 name="lcbPlcfLvcPre10" />
4472
		<uint32 name="fcPlcfAsumy" />
4473
		<uint32 name="lcbPlcfAsumy" />
4474
		<uint32 name="fcPlcfGram" />
4475
		<uint32 name="lcbPlcfGram" />
4476
		<uint32 name="fcSttbListNames" />
4477
		<uint32 name="lcbSttbListNames" />
4478
		<uint32 name="fcSttbfUssr" />
4479
		<uint32 name="lcbSttbfUssr" />
4480
	</struct>
4481
	<struct name="FibRgFcLcb2000">
4482
		<uint32 name="fcPlcfTch" />
4483
		<uint32 name="lcbPlcfTch" />
4484
		<uint32 name="fcRmdThreading" />
4485
		<uint32 name="lcbRmdThreading" />
4486
		<uint32 name="fcMid" />
4487
		<uint32 name="lcbMid" />
4488
		<uint32 name="fcSttbRgtplc" />
4489
		<uint32 name="lcbSttbRgtplc" />
4490
		<uint32 name="fcMsoEnvelope" />
4491
		<uint32 name="lcbMsoEnvelope" />
4492
		<uint32 name="fcPlcfLad" />
4493
		<uint32 name="lcbPlcfLad" />
4494
		<uint32 name="fcRgDofr" />
4495
		<uint32 name="lcbRgDofr" />
4496
		<uint32 name="fcPlcosl" />
4497
		<uint32 name="lcbPlcosl" />
4498
		<uint32 name="fcPlcfCookieOld" />
4499
		<uint32 name="lcbPlcfCookieOld" />
4500
		<uint32 name="fcPgdMotherOld" />
4501
		<uint32 name="lcbPgdMotherOld" />
4502
		<uint32 name="fcBkdMotherOld" />
4503
		<uint32 name="lcbBkdMotherOld" />
4504
		<uint32 name="fcPgdFtnOld" />
4505
		<uint32 name="lcbPgdFtnOld" />
4506
		<uint32 name="fcBkdFtnOld" />
4507
		<uint32 name="lcbBkdFtnOld" />
4508
		<uint32 name="fcPgdEdnOld" />
4509
		<uint32 name="lcbPgdEdnOld" />
4510
		<uint32 name="fcBkdEdnOld" />
4511
		<uint32 name="lcbBkdEdnOld" />
4512
	</struct>
4513
	<struct name="FibRgFcLcb2002">
4514
		<uint32 name="fcUnused1" />
4515
		<uint32 name="lcbUnused1" />
4516
		<uint32 name="fcPlcfPgp" />
4517
		<uint32 name="lcbPlcfPgp" />
4518
		<uint32 name="fcPlcfuim" />
4519
		<uint32 name="lcbPlcfuim" />
4520
		<uint32 name="fcPlfguidUim" />
4521
		<uint32 name="lcbPlfguidUim" />
4522
		<uint32 name="fcAtrdExtra" />
4523
		<uint32 name="lcbAtrdExtra" />
4524
		<uint32 name="fcPlrsid" />
4525
		<uint32 name="lcbPlrsid" />
4526
		<uint32 name="fcSttbfBkmkFactoid" />
4527
		<uint32 name="lcbSttbfBkmkFactoid" />
4528
		<uint32 name="fcPlcfBkfFactoid" />
4529
		<uint32 name="lcbPlcfBkfFactoid" />
4530
		<uint32 name="fcPlcfcookie" />
4531
		<uint32 name="lcbPlcfcookie" />
4532
		<uint32 name="fcPlcfBklFactoid" />
4533
		<uint32 name="lcbPlcfBklFactoid" />
4534
		<uint32 name="fcFactoidData" />
4535
		<uint32 name="lcbFactoidData" />
4536
		<uint32 name="fcDocUndo" />
4537
		<uint32 name="lcbDocUndo" />
4538
		<uint32 name="fcSttbfBkmkFcc" />
4539
		<uint32 name="lcbSttbfBkmkFcc" />
4540
		<uint32 name="fcPlcfBkfFcc" />
4541
		<uint32 name="lcbPlcfBkfFcc" />
4542
		<uint32 name="fcPlcfBklFcc" />
4543
		<uint32 name="lcbPlcfBklFcc" />
4544
		<uint32 name="fcSttbfbkmkBPRepairs" />
4545
		<uint32 name="lcbSttbfbkmkBPRepairs" />
4546
		<uint32 name="fcPlcfbkfBPRepairs" />
4547
		<uint32 name="lcbPlcfbkfBPRepairs" />
4548
		<uint32 name="fcPlcfbklBPRepairs" />
4549
		<uint32 name="lcbPlcfbklBPRepairs" />
4550
		<uint32 name="fcPmsNew" />
4551
		<uint32 name="lcbPmsNew" />
4552
		<uint32 name="fcODSO" />
4553
		<uint32 name="lcbODSO" />
4554
		<uint32 name="fcPlcfpmiOldXP" />
4555
		<uint32 name="lcbPlcfpmiOldXP" />
4556
		<uint32 name="fcPlcfpmiNewXP" />
4557
		<uint32 name="lcbPlcfpmiNewXP" />
4558
		<uint32 name="fcPlcfpmiMixedXP" />
4559
		<uint32 name="lcbPlcfpmiMixedXP" />
4560
		<uint32 name="fcUnused2" />
4561
		<uint32 name="lcbUnused2" />
4562
		<uint32 name="fcPlcffactoid" />
4563
		<uint32 name="lcbPlcffactoid" />
4564
	</struct>
4565
	<struct name="Table">
4566
		<type name="stsh" type="STSH" size="468" />
4567
		<type name="plcfSed" type="PlcfSed" size="20" />
4568
		<!--
4569
			size should be gotten from lcbPlcfSed
4570
		-->
4571
		<type name="plcfHdd" type="Plcfhdd" size="52" />
4572
		<type name="plcfBteChpx" type="PlcBteChpx" size="12" />
4573
		<type name="plcfBtePapx" type="PlcfBtePapx" size="12" />
4574
		<type name="cmds" type="Tcg" size="12" />
4575
		<type name="clx" type="Clx" size="21" />
4576
		<type name="sttbfFfn" type="SttbfFfn" size="246" />
4577
		<uint8 name="dop" count="600" />
4578
	</struct>
4579
	<struct name="STSH">
4580
		<type name="lpstshi" type="LPStshi" />
4581
		<type name="rglpstd" type="LPStd" count="20" />
4582
	</struct>
4583
	<struct name="LPStshi">
4584
		<uint16 name="cbSthi" />
4585
		<uint8 name="stshi" count="cbSthi" />
4586
	</struct>
4587
	<struct name="LPStd">
4588
		<uint16 name="cbStd" />
4589
		<uint8 name="std" count="cbStd" />
4590
		<uint8 name="padding" condition="cbStd%2==1" />
4591
	</struct>
4592
	<struct name="PlcfSed">
4593
		<uint32 name="aCP" count="2" />
4594
		<type name="aSed" type="Sed" count="1" />
4595
	</struct>
4596
	<struct name="Sed">
4597
		<uint16 name="fn" />
4598
		<int32 name="fcSepx" />
4599
		<uint16 name="fnMpr" />
4600
		<uint32 name="fcMpr" />
4601
	</struct>
4602
	<struct name="Plcfhdd">
4603
		<uint32 name="aCP" count="13" />
4604
	</struct>
4605
	<struct name="PlcBteChpx">
4606
		<uint32 name="aCP" count="2" />
4607
		<uint32 name="aPnBteChpx" count="1" />
4608
	</struct>
4609
	<struct name="PlcfBtePapx">
4610
		<uint32 name="aCP" count="2" />
4611
		<uint32 name="aPnBteChpx" count="1" />
4612
	</struct>
4613
	<struct name="Tcg">
4614
		<uint8 name="nTcgVer">
4615
			<limitation value="0" />
4616
		</uint8>
4617
		<uint8 name="todo" count="11" />
4618
	</struct>
4619
	<struct name="Clx">
4620
		<type name="RgPrc" type="Pcr" array="true" />
4621
		<type name="pcdt" type="Pcdt" />
4622
	</struct>
4623
	<struct name="Pcr">
4624
		<uint8 name="clxt">
4625
			<limitation value="1" />
4626
		</uint8>
4627
		<type name="prcData" type="PrcData" />
4628
	</struct>
4629
	<struct name="PrcData">
4630
		<int16 name="cbGrpprl">
4631
			<limitation expression="&gt;=0" />
4632
			<limitation expression="&lt;=16290" />
4633
			<limitation expression="%2==0" />
4634
		</int16>
4635
		<type name="GrpPrl" type="Sprm" count="cbGrpprl/2" />
4636
	</struct>
4637
	<struct name="Sprm">
4638
		<uint9 name="ispmd" />
4639
		<bit name="fSpec" />
4640
		<uint3 name="sgc" />
4641
		<uint3 name="spra" />
4642
	</struct>
4643
	<struct name="Pcdt">
4644
		<uint8 name="clxt">
4645
			<limitation value="2" />
4646
		</uint8>
4647
		<uint32 name="lcb" />
4648
		<type name="PlcPcd" type="Pcd" count="lcb/8" />
4649
	</struct>
4650
	<struct name="Pcd">
4651
		<bit name="fNoParaLast" />
4652
		<bit name="fR1" />
4653
		<bit name="fDirtly">
4654
			<limitation value="false" />
4655
		</bit>
4656
		<bit name="fR2" />
4657
		<uint12 name="fR3" />
4658
		<type name="fc" type="FCompressed" />
4659
		<type name="prm" type="Prm" />
4660
	</struct>
4661
	<struct name="FCompressed">
4662
		<uint30 name="fc" />
4663
		<bit name="fCompressed" />
4664
		<bit name="r1" />
4665
	</struct>
4666
	<struct name="Prm">
4667
		<choice name="prm">
4668
			<type type="Prm0" />
4669
			<type type="Prm1" />
4670
		</choice>
4671
	</struct>
4672
	<struct name="Prm0">
4673
		<bit name="fComplex">
4674
			<limitation value="false" />
4675
		</bit>
4676
		<uint7 name="isprm" />
4677
		<uint8 name="val" />
4678
	</struct>
4679
	<struct name="Prm1">
4680
		<bit name="fComplex">
4681
			<limitation value="true" />
4682
		</bit>
4683
		<uint15 name="igrpprl" />
4684
	</struct>
4685
	<struct name="SttbfFfn">
4686
		<uint16 name="cData" />
4687
		<uint16 name="cbExtra">
4688
			<limitation value="0" />
4689
		</uint16>
4690
		<type name="data" type="SttbfFfnEntry" count="cData" />
4691
	</struct>
4692
	<struct name="SttbfFfnEntry">
4693
		<uint8 name="cchData" />
4694
		<uint8 name="Data" count="cchData" />
4695
	</struct>
4696
	<struct name="CodePageString">
4697
		<!--  limitation here is complicated: todo -->
4698
		<uint32 name="size">
4699
			<!--  <limitation expression="%2==0" /> -->
4700
		</uint32>
4701
		<!--  needs padding to a multiple of 4 -->
4702
		<uint8 name="characters" count="4*(size/4)+((size%4!=0)?4:0)" />
4703
	</struct>
4704
	<struct name="FILETIME">
4705
		<uint32 name="dwLowDateTime" />
4706
		<uint32 name="dwHighDateTime" />
4707
	</struct>
4708
	<struct name="ClipboardData">
4709
		<uint32 name="size" />
4710
		<uint32 name="format" />
4711
		<!--  needs padding to a multiple of 4 -->
4712
		<uint8 name="data" count="4*(size/4)+((size%4!=0)?4:0)-4" />
4713
	</struct>
4714
	<struct name="PropertyIdentifierAndOffset">
4715
		<uint32 name="propertyIdentifier" />
4716
		<uint32 name="offset" />
4717
	</struct>
4718
	<struct name="TypedPropertyValue">
4719
		<!--
4720
			size="../PropertySetStream._count()"">
4721
		-->
4722
		<uint16 name="type" />
4723
		<uint16 name="padding">
4724
			<!-- 	<limitation value="0" />-->
4725
		</uint16>
4726
		<uint16 name="vt_I2" condition="type==2" />
4727
		<uint16 name="paddingI2" condition="type==2" />
4728
		<uint32 name="vg_ERROR" condition="type==10" />
4729
		<type name="vt_lpstr" type="CodePageString" condition="type==30" />
4730
		<type name="vg_FILETIME" type="FILETIME" condition="type==64" />
4731
		<type name="vg_CF" type="ClipboardData" condition="type==71" />
4732
		<!--
4733
			<uint8 name="padding"
4734
			count="../PropertySetStream[position()=this._arraypos]" />
4735
		-->
4736
	</struct>
4737
	<struct name="PropertySet">
4738
		<uint32 name="size" />
4739
		<uint32 name="numProperties" />
4740
		<type name="propertyIdentifierAndOffset" type="PropertyIdentifierAndOffset"
4741
			count="numProperties" />
4742
		<type name="property" type="TypedPropertyValue" count="numProperties" />
4743
	</struct>
4744
	<struct name="PropertySetStream">
4745
		<uint16 name="byteOrder">
4746
			<limitation value="0xFFFE" />
4747
		</uint16>
4748
		<uint16 name="version" />
4749
		<uint32 name="systemIdentifier" />
4750
		<uint8 name="clsID" count="16" />
4751
		<uint32 name="numPropertySets">
4752
			<limitation value="1|2" />
4753
		</uint32>
4754
		<uint8 name="fmtID0" count="16" />
4755
		<uint32 name="offset0" />
4756
		<uint8 name="fmtID1" count="16" condition="numPropertySets==2" />
4757
		<uint32 name="offset1" condition="numPropertySets==2" />
4758
		<type name="propertySet1" type="PropertySet" />
4759
		<type name="propertySet2" type="PropertySet" condition="numPropertySets==2" />
4760
		<type name="padding" type="Byte" array="true" />
4761
	</struct>
4762
	<struct name="SummaryInformationPropertySetStream">
4763
		<type name="propertySet" type="PropertySetStream">
4764
			<limitation name="version" value="0" />
4765
		</type>
4766
	</struct>
4767
	<struct name="DocumentSummaryInformationPropertySetStream">
4768
		<type name="propertySet" type="PropertySetStream">
4769
			<limitation name="version" value="0" />
4770
		</type>
4771
	</struct>
4772
	<stream name="PowerPointDocument" key="PowerPoint Document"
4773
		type="PowerPointStructs" />
4774
	<stream name="CurrentUser" key="Current User" type="CurrentUserStream" />
4775
	<stream name="Pictures" key="Pictures" type="OfficeArtBStoreDelay" />
4776
	<stream name="WordDocument" key="WordDocument" type="WordDocument" />
4777
	<stream name="1Table" key="1Table" type="Table" />
4778
	<stream name="SummaryInformation" key="SummaryInformation"
4779
		type="SummaryInformationPropertySetStream" />
4780
	<stream name="DocumentSummaryInformation" key="DocumentSummaryInformation"
4781
		type="DocumentSummaryInformationPropertySetStream" />
4782
	<!--
4783
		two temporary streams to work around the fact that we cannot parse
4784
		StyleTextPropAtom
4785
	-->
4786
	<stream name="textPFRun" key="textPFRun" type="TextPFRun" />
4787
	<stream name="textCFRun" key="textCFRun" type="TextCFRun" />
4788
</mso>