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
		<uint32 name="recLen" />
9
	</struct>
10
	<struct name="CurrentUserAtom">
11
		<type name="rh" type="RecordHeader">
12
			<limitation name="recVer" value="0" />
13
			<limitation name="recInstance" value="0" />
14
			<limitation name="recType" value="0x0FF6" />
15
		</type>
16
		<uint32 name="size">
17
			<limitation value="0x14" />
18
		</uint32>
19
		<uint32 name="headerToken">
20
			<limitation value="0xE391C05F|0xF3D1C4DF" />
21
		</uint32>
22
		<uint32 name="offsetToCurrentEdit" />
23
		<uint16 name="lenUserName">
24
			<limitation expression="&lt;=255" />
25
		</uint16>
26
		<uint16 name="docFileVersion">
27
			<limitation value="0x03F4" />
28
		</uint16>
29
		<uint8 name="majorVersion">
30
			<limitation value="0x03" />
31
		</uint8>
32
		<uint8 name="minorVersion">
33
			<limitation value="0x00" />
34
		</uint8>
35
		<uint16 name="unused" />
36
		<uint8 name="ansiUserName" count="lenUserName" />
37
		<uint32 name="relVersion">
38
			<limitation value="0x8|0x9" />
39
		</uint32>
40
		<uint16 name="unicodeUserName" count="lenUserName"
41
			condition="rh.recLen&gt;3*lenUserName+0x18" />
42
		<uint8 name="unknown" count="rh.recLen-0x18-3*lenUserName"
43
			condition="rh.recLen-0x18-3*lenUserName&gt;0" />
44
	</struct>
45
	<struct name="TODOS">
46
		<type name="anon" type="Byte" array="true" />
47
	</struct>
48
	<struct name="Byte">
49
		<uint8 name="b" />
50
	</struct>
51
	<struct name="ZeroByte">
52
		<uint8 name="b">
53
			<limitation value="0" />
54
		</uint8>
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="rgfb" 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" optional="true" />
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 type="PP9DocBinaryTagExtension" />
504
			<type type="PP10DocBinaryTagExtension" />
505
			<type type="PP11DocBinaryTagExtension" />
506
			<type type="PP12DocBinaryTagExtension" />
507
			<type 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
			array="true" />
525
		<type name="blipCollectionContainer" type="BlipCollection9Container"
526
			optional="true" />
527
		<type name="textDefaultsAtom" type="TextDefaults9Atom" optional="true" />
528
		<type name="kinsokuContainer" type="Kinsoku9Container" optional="true" />
529
		<type name="rgExternalHyperlink9" type="ExHyperlink9Container"
530
			array="true" />
531
		<type name="presAdvisorFlagsAtom" type="PresAdvisorFlags9Atom"
532
			optional="true" />
533
		<type name="envelopeDataAtom" type="EnvelopeData9Atom" optional="true" />
534
		<type name="envelopeFlagsAtom" type="EnvelopeFlags9Atom"
535
			optional="true" />
536
		<type name="htmlDocInfoAtom" type="HTMLDocInfo9Atom" optional="true" />
537
		<type name="htmlPublishInfoAtom" type="HTMLPublishInfo9Container"
538
			optional="true" />
539
		<type name="rgBroadcastDocInfo9" type="BroadcastDocInfo9Container"
540
			array="true" />
541
		<type name="outlineTextPropsContainer" type="OutlineTextProps9Container"
542
			optional="true" />
543
	</struct>
544
	<struct name="TextMasterStyle9Atom">
545
		<type name="rh" type="RecordHeader">
546
			<limitation name="recVer" value="0x0" />
547
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
548
			<limitation name="recType" value="0x0FAD" />
549
		</type>
550
		<uint16 name="cLevels">
551
			<limitation expression="&lt;=5" />
552
		</uint16>
553
		<type name="lstLvl1" type="TextMasterStyle9Level" condition="cLevels&gt;0" />
554
		<type name="lstLvl2" type="TextMasterStyle9Level" condition="cLevels&gt;1" />
555
		<type name="lstLvl3" type="TextMasterStyle9Level" condition="cLevels&gt;2" />
556
		<type name="lstLvl4" type="TextMasterStyle9Level" condition="cLevels&gt;3" />
557
		<type name="lstLvl5" type="TextMasterStyle9Level" condition="cLevels&gt;4" />
558
	</struct>
559
	<struct name="TextMasterStyle9Level">
560
		<type name="pf9" type="TextPFException9" />
561
		<type name="cf9" type="TextCFException9" />
562
	</struct>
563
	<struct name="TextPFException9">
564
		<type name="masks" type="PFMasks">
565
			<limitation name="hasBullet" value="false" />
566
			<limitation name="bulletHasFont" value="false" />
567
			<limitation name="bulletHasColor" value="false" />
568
			<limitation name="bulletHasSize" value="false" />
569
			<limitation name="bulletFont" value="false" />
570
			<limitation name="bulletColor" value="false" />
571
			<limitation name="bulletSize" value="false" />
572
			<limitation name="bulletChar" value="false" />
573
			<limitation name="leftMargin" value="false" />
574
			<limitation name="indent" value="false" />
575
			<limitation name="align" value="false" />
576
			<limitation name="lineSpacing" value="false" />
577
			<limitation name="spaceBefore" value="false" />
578
			<limitation name="spaceAfter" value="false" />
579
			<limitation name="defaultTabSize" value="false" />
580
			<limitation name="fontAlign" value="false" />
581
			<limitation name="charWrap" value="false" />
582
			<limitation name="wordWrap" value="false" />
583
			<limitation name="overflow" value="false" />
584
			<limitation name="tabStops" value="false" />
585
			<limitation name="textDirection" value="false" />
586
		</type>
587
		<uint16 name="bulletBlipRef" condition="masks.bulletBlip" />
588
		<uint16 name="fBulletHasAutoNumber" condition="masks.bulletHasScheme">
589
			<limitation value="0|1" />
590
		</uint16>
591
		<type name="bulletAutoNumberScheme" condition="masks.bulletScheme"
592
			type="TextAutoNumberScheme" />
593
	</struct>
594
	<struct name="TextAutoNumberScheme">
595
		<uint16 name="scheme">
596
			<limitation expression="&lt;=40" />
597
		</uint16>
598
		<uint16 name="startNum">
599
			<limitation expression="&gt;=1" />
600
		</uint16>
601
	</struct>
602
	<struct name="TextCFException9">
603
		<type name="masks" type="CFMasks">
604
			<limitation name="bold" value="false" />
605
			<limitation name="italic" value="false" />
606
			<limitation name="underline" value="false" />
607
			<limitation name="shadow" value="false" />
608
			<limitation name="fehint" value="false" />
609
			<limitation name="kumi" value="false" />
610
			<limitation name="emboss" value="false" />
611
			<limitation name="reserved" value="0" />
612
			<limitation name="typeface" value="false" />
613
			<limitation name="size" value="false" />
614
			<limitation name="color" value="false" />
615
			<limitation name="position" value="false" />
616
			<limitation name="oldEATypeface" value="false" />
617
			<limitation name="ansiTypeface" value="false" />
618
			<limitation name="symbolTypeface" value="false" />
619
			<limitation name="newEATypeface" value="false" />
620
			<limitation name="csTypeface" value="false" />
621
			<limitation name="pp11ext" value="false" />
622
		</type>
623
		<uint4 name="pp10runid" condition="masks.pp10ext" />
624
		<uint20 name="unuseda" condition="masks.pp10ext" />
625
		<uint8 name="unusedb" condition="masks.pp10ext" />
626
	</struct>
627
	<struct name="BlipCollection9Container">
628
		<type name="rh" type="RecordHeader">
629
			<limitation name="recVer" value="0xF" />
630
			<limitation name="recInstance" value="0x0" />
631
			<limitation name="recType" value="0x07F8" />
632
		</type>
633
		<type name="rgBlipEntityAtom" type="BlipEntityAtom" array="true"
634
			size="rh.recLen" />
635
		<!--
636
			ToDo gBlipEntityAtom (variable): An array of BlipEntityAtom record
637
			that specifies picture bullets. It MUST NOT contain more than one
638
			BlipEntityAtom record with the same value of rh.recInstance.
639
		-->
640
	</struct>
641
	<struct name="BlipEntityAtom">
642
		<type name="rh" type="RecordHeader">
643
			<limitation name="recVer" value="0" />
644
			<limitation name="recInstance" expression="&lt;=128" />
645
			<limitation name="recType" value="0x07F9" />
646
		</type>
647
		<uint8 name="winBlipType">
648
			<limitation value="0x02|0x03|0x05|0x06" />
649
		</uint8>
650
		<uint8 name="unused" />
651
		<type name="blip" type="OfficeArtBStoreContainerFileBlock" />
652
	</struct>
653
	<struct name="TextDefaults9Atom">
654
		<type name="rh" type="RecordHeader">
655
			<limitation name="recVer" value="0x0" />
656
			<limitation name="recInstance" value="0x00" />
657
			<limitation name="recType" value="0x0FB0" />
658
		</type>
659
		<type name="cf9" type="TextCFException9" />
660
		<type name="pf9" type="TextPFException9" />
661
	</struct>
662
	<struct name="Kinsoku9Container">
663
		<type name="rh" type="RecordHeader">
664
			<limitation name="recVer" value="0xF" />
665
			<limitation name="recInstance" value="0x2" />
666
			<limitation name="recType" value="0x0FC8" />
667
		</type>
668
		<type name="kinsoku9Atom" type="Kinsoku9Atom" />
669
		<!--
670
			condition for this field is too complex so we just say it is optional
671
		-->
672
		<type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
673
			optional="true" />
674
		<!--
675
			condition for this field is too complex so we just say it is optional
676
		-->
677
		<type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
678
			optional="true" />
679
	</struct>
680
	<struct name="Kinsoku9Atom">
681
		<type name="rh" type="RecordHeader">
682
			<limitation name="recVer" value="0x0" />
683
			<limitation name="recInstance" value="0x3" />
684
			<limitation name="recType" value="0x0FD2" />
685
			<limitation name="recLen" value="0x0004" />
686
		</type>
687
		<uint2 name="korLevel">
688
			<limitation value="0x0|0x2" />
689
		</uint2>
690
		<uint2 name="scLevel">
691
			<limitation value="0x0|0x2" />
692
		</uint2>
693
		<uint2 name="tcLevel">
694
			<limitation value="0x0|0x2" />
695
		</uint2>
696
		<uint2 name="jpnLevel">
697
			<limitation value="0x0|0x1|0x2" />
698
		</uint2>
699
		<uint4 name="reserveda">
700
			<limitation value="0" />
701
		</uint4>
702
		<uint20 name="reservedb">
703
			<limitation value="0" />
704
		</uint20>
705
	</struct>
706
	<struct name="ExHyperlink9Container">
707
		<type name="rh" type="RecordHeader">
708
			<limitation name="recVer" value="0xF" />
709
			<limitation name="recInstance" value="0" />
710
			<limitation name="recType" value="0xFE4" />
711
		</type>
712
		<uint8 name="todo" count="rh.recLen" />
713
	</struct>
714
	<struct name="PresAdvisorFlags9Atom">
715
		<type name="rh" type="RecordHeader">
716
			<limitation name="recVer" value="0x0" />
717
			<limitation name="recInstance" value="0" />
718
			<limitation name="recType" value="0x177A" />
719
			<limitation name="recLen" value="0x4" />
720
		</type>
721
		<bit name="fDisableCaseStyleTitleRule" />
722
		<bit name="fDisableCaseStyleBodyRule" />
723
		<bit name="fDisableEndPunctuationTitleRule" />
724
		<bit name="fDisableEndPunctuationBodyRule" />
725
		<bit name="fDisableTooManyBulletsRule" />
726
		<bit name="fDisableFontSizeTitleRule" />
727
		<bit name="fDisableFontSizeBodyRule" />
728
		<bit name="fDisableNumberOfLinesTitleRule" />
729
		<bit name="fDisableNumberOfLinesBodyRule" />
730
		<bit name="fDisableTooManyFontsRule" />
731
		<bit name="fDisablePrintTip" />
732
		<uint5 name="reserveda">
733
			<limitation value="0" />
734
		</uint5>
735
		<uint16 name="reservedb">
736
			<limitation value="0" />
737
		</uint16>
738
	</struct>
739
	<struct name="EnvelopeData9Atom">
740
		<type name="rh" type="RecordHeader">
741
			<limitation name="recVer" value="0x0" />
742
			<limitation name="recInstance" value="0" />
743
			<limitation name="recType" value="0x1785" />
744
		</type>
745
		<uint8 name="todo" count="rh.recLen" />
746
	</struct>
747
	<struct name="EnvelopeFlags9Atom">
748
		<type name="rh" type="RecordHeader">
749
			<limitation name="recVer" value="0x0" />
750
			<limitation name="recInstance" value="0" />
751
			<limitation name="recType" value="0x1784" />
752
			<limitation name="recLen" value="4" />
753
		</type>
754
		<bit name="fHasEnvelope" />
755
		<bit name="fEnvelopeVisible" />
756
		<uint2 name="reserved1">
757
			<limitation value="0" />
758
		</uint2>
759
		<bit name="fEnvelopeDirty" />
760
		<uint3 name="reserved2a">
761
			<limitation value="0" />
762
		</uint3>
763
		<uint8 name="reserved2b">
764
			<limitation value="0" />
765
		</uint8>
766
		<uint16 name="reserved2c">
767
			<limitation value="0" />
768
		</uint16>
769
	</struct>
770
	<struct name="HTMLDocInfo9Atom">
771
		<type name="rh" type="RecordHeader">
772
			<limitation name="recVer" value="0x0" />
773
			<limitation name="recInstance" value="0" />
774
			<limitation name="recType" value="0x177B" />
775
			<limitation name="recLen" value="0x10" />
776
		</type>
777
		<uint32 name="unused1" />
778
		<uint32 name="encoding" />
779
		<!--ToDo Encoding limitation -->
780
		<uint16 name="frameColorType">
781
			<limitation value="0|1|2|3|4|5" />
782
		</uint16>
783
		<uint8 name="screenSize" />
784
		<uint8 name="unused2" />
785
		<uint8 name="outputType" />
786
		<bit name="fShowFrame" />
787
		<bit name="fResizeGraphics" />
788
		<bit name="fOrganizeInFolder" />
789
		<bit name="fUseLongFileNames" />
790
		<bit name="fRelyOnVML" />
791
		<bit name="fAllowPNG" />
792
		<bit name="fShowSlideAnimation" />
793
		<bit name="reserved1">
794
			<limitation value='false' />
795
		</bit>
796
		<uint16 name="unused3" />
797
	</struct>
798
	<struct name="HTMLPublishInfo9Container">
799
		<type name="rh" type="RecordHeader">
800
			<limitation name="recVer" value="0xF" />
801
			<limitation name="recInstance" value="0x0" />
802
			<limitation name="recType" value="0x177D" />
803
		</type>
804
		<uint8 name="todo" count="rh.recLen" />
805
	</struct>
806
	<struct name="BroadcastDocInfo9Container">
807
		<type name="rh" type="RecordHeader">
808
			<limitation name="recVer" value="0xF" />
809
			<limitation name="recInstance" value="0" />
810
			<limitation name="recType" value="0x177E" />
811
		</type>
812
		<uint8 name="todo" count="rh.recLen" />
813
	</struct>
814
	<struct name="OutlineTextProps9Container">
815
		<type name="rh" type="RecordHeader">
816
			<limitation name="recVer" value="0xF" />
817
			<limitation name="recInstance" value="0" />
818
			<limitation name="recType" value="0x0FAE" />
819
		</type>
820
		<type name="rgOutlineTextProps9Entry" type="OutlineTextProps9Entry"
821
			array="true" />
822
	</struct>
823
	<struct name="OutlineTextProps9Entry">
824
		<type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
825
		<type name="styleTextProp9Atom" type="StyleTextProp9Atom" />
826
	</struct>
827
	<struct name="OutlineTextPropsHeaderExAtom">
828
		<type name="rh" type="RecordHeader">
829
			<limitation name="recVer" value="0" />
830
			<limitation name="recInstance" expression="&lt;=5" />
831
			<limitation name="recType" value="0xFAF" />
832
		</type>
833
		<uint32 name="slideIdRef" />
834
		<uint32 name="txType" />
835
	</struct>
836
	<struct name="StyleTextProp9Atom">
837
		<type name="rh" type="RecordHeader">
838
			<limitation name="recVer" value="0" />
839
			<limitation name="recInstance" value="0" />
840
			<limitation name="recType" value="0xFAC" />
841
		</type>
842
		<type name="rgStyleTextProp9" type="StyleTextProp9" array="true"
843
			size="rh.recLen" />
844
	</struct>
845
	<struct name="StyleTextProp9">
846
		<type name="pf9" type="TextPFException9" />
847
		<type name="cf9" type="TextCFException9" />
848
		<type name="si" type="TextSIException">
849
			<limitation name="spell" value="false" />
850
			<limitation name="lang" value="false" />
851
			<limitation name="altLang" value="false" />
852
			<limitation name="smartTag" value="false" />
853
		</type>
854
	</struct>
855
	<struct name="PP10DocBinaryTagExtension">
856
		<type name="rh" type="RecordHeader">
857
			<limitation name="recVer" value="0x0" />
858
			<limitation name="recInstance" value="0" />
859
			<limitation name="recType" value="0x0FBA" />
860
			<limitation name="recLen" value="0x10" />
861
		</type>
862
		<uint8 name="tagName" count="16" />
863
		<type name="rhData" type="RecordHeader">
864
			<limitation name="recVer" value="0x0" />
865
			<limitation name="recInstance" value="0" />
866
			<limitation name="recType" value="0x138B" />
867
		</type>
868
		<type name="fontCollectionContainer" type="FontCollection10Container"
869
			optional="true" />
870
		<type name="rgTextMasterStyle10" type="TextMasterStyle10Atom"
871
			array="true" />
872
		<type name="textDefaultsAtom" type="TextDefaults10Atom" optional="true" />
873
		<type name="gridSpacingAtom" type="GridSpacing10Atom" />
874
		<type name="rgCommentIndex10" type="CommentIndex10Container"
875
			array="true" />
876
		<type name="fontEmbedFlagsAtom" type="FontEmbedFlags10Atom"
877
			optional="true" />
878
		<type name="copyrightAtom" type="CopyrightAtom" optional="true" />
879
		<type name="keywordsAtom" type="KeywordsAtom" optional="true" />
880
		<type name="filterPrivacyFlagsAtom" type="FilterPrivacyFlags10Atom"
881
			optional="true" />
882
		<type name="outlineTextPropsContainer" type="OutlineTextProps10Container"
883
			optional="true" />
884
		<type name="docToolbarStatesAtom" type="DocToolbarStates10Atom"
885
			optional="true" />
886
		<type name="slideListTableContainer" type="SlideListTable10Container"
887
			optional="true" />
888
		<type name="rgDiffTree10Container" type="DiffTree10Container"
889
			optional="true" />
890
		<type name="modifyPasswordAtom" type="ModifyPasswordAtom"
891
			optional="true" />
892
		<type name="photoAlbumInfoAtom" type="PhotoAlbumInfo10Atom"
893
			optional="true" />
894
	</struct>
895
	<struct name="FontCollection10Container">
896
		<type name="rh" type="RecordHeader">
897
			<limitation name="recVer" value="0xF" />
898
			<limitation name="recInstance" value="0x0" />
899
			<limitation name="recType" value="0x07D6" />
900
		</type>
901
		<!-- <uint8 name="todo" count="rh.recLen" /> -->
902
		<type name="rgFontCollectionEntry" type="FontCollectionEntry"
903
			array="true" size="rh.recLen" />
904
	</struct>
905
	<struct name="TextMasterStyle10Atom">
906
		<type name="rh" type="RecordHeader">
907
			<limitation name="recVer" value="0x0" />
908
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
909
			<limitation name="recType" value="0x0FB2" />
910
		</type>
911
		<uint16 name="cLevels">
912
			<limitation expression="&lt;=5" />
913
		</uint16>
914
		<!--
915
			level field of TextMasterStyleLevel is put here, because its presence
916
			depends on this structure and currently child access to parent
917
			properties is not supported
918
		-->
919
		<uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
920
		<type name="lstLvl1" type="TextMasterStyle10Level" condition="cLevels&gt;0" />
921
		<uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
922
		<type name="lstLvl2" type="TextMasterStyle10Level" condition="cLevels&gt;1" />
923
		<uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
924
		<type name="lstLvl3" type="TextMasterStyle10Level" condition="cLevels&gt;2" />
925
		<uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
926
		<type name="lstLvl4" type="TextMasterStyle10Level" condition="cLevels&gt;3" />
927
		<uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
928
		<type name="lstLvl5" type="TextMasterStyle10Level" condition="cLevels&gt;4" />
929
	</struct>
930
	<struct name="TextMasterStyle10Level">
931
		<type name="cf10" type="TextCFException10" />
932
	</struct>
933
	<struct name="TextCFException10">
934
		<type name="masks" type="CFMasks">
935
			<limitation name="bold" value="false" />
936
			<limitation name="italic" value="false" />
937
			<limitation name="underline" value="false" />
938
			<limitation name="shadow" value="false" />
939
			<limitation name="fehint" value="false" />
940
			<limitation name="kumi" value="false" />
941
			<limitation name="emboss" value="false" />
942
			<limitation name="reserved" value="0" />
943
			<limitation name="typeface" value="false" />
944
			<limitation name="size" value="false" />
945
			<limitation name="color" value="false" />
946
			<limitation name="position" value="false" />
947
			<limitation name="pp10ext" value="false" />
948
			<limitation name="oldEATypeface" value="false" />
949
			<limitation name="ansiTypeface" value="false" />
950
			<limitation name="symbolTypeface" value="false" />
951
		</type>
952
		<!--ToDo check it is correct or not -->
953
		<uint16 name="newEAFontRef" condition="masks.newEATypeface" />
954
		<uint16 name="csFontRef" condition="masks.csTypeface" />
955
		<uint32 name="pp11ext" condition="masks.pp11ext" />
956
	</struct>
957
	<struct name="TextDefaults10Atom">
958
		<type name="rh" type="RecordHeader">
959
			<limitation name="recVer" value="0x0" />
960
			<limitation name="recInstance" value="0x0" />
961
			<limitation name="recType" value="0x0FB4" />
962
		</type>
963
		<type name="cf10" type="TextCFException10" />
964
	</struct>
965
	<struct name="GridSpacing10Atom">
966
		<type name="rh" type="RecordHeader">
967
			<limitation name="recVer" value="0x0" />
968
			<limitation name="recInstance" value="0x0" />
969
			<limitation name="recType" value="0x040D" />
970
			<limitation name="recLen" value="0x08" />
971
		</type>
972
		<uint32 name="x">
973
			<limitation expression="&gt;=23224" />
974
			<limitation expression="&lt;=1179648" />
975
		</uint32>
976
		<uint32 name="y">
977
			<!--
978
				TODO: fix generator to handle this expression <limitation
979
				expression="x==y" />
980
			-->
981
			<limitation expression="&gt;=23224" />
982
			<limitation expression="&lt;=1179648" />
983
		</uint32>
984
	</struct>
985
	<struct name="CommentIndex10Container">
986
		<type name="rh" type="RecordHeader">
987
			<limitation name="recVer" value="0xF" />
988
			<limitation name="recInstance" value="0x0" />
989
			<limitation name="recType" value="0x2EE4" />
990
		</type>
991
		<type name="authorNameAtom" type="AuthorNameAtom" optional="true" />
992
		<type name="authorIndexAtom" type="CommentIndex10Atom" optional="true" />
993
	</struct>
994
	<struct name="AuthorNameAtom">
995
		<type name="rh" type="RecordHeader">
996
			<limitation name="recVer" value="0x0" />
997
			<limitation name="recInstance" value="0x0" />
998
			<limitation name="recType" value="0x0FBA" />
999
			<limitation name="recLen" expression="&lt;=104" />
1000
			<limitation name="recLen" expression="%2==0" />
1001
		</type>
1002
		<uint8 name="authorName" count="rh.recLen" />
1003
	</struct>
1004
	<struct name="CommentIndex10Atom">
1005
		<type name="rh" type="RecordHeader">
1006
			<limitation name="recVer" value="0x0" />
1007
			<limitation name="recInstance" value="0x0" />
1008
			<limitation name="recType" value="0x2EE5" />
1009
			<limitation name="recLen" value="0x08" />
1010
		</type>
1011
		<int32 name="colorIndex">
1012
			<limitation expression="&gt;=0" />
1013
		</int32>
1014
		<int32 name="commentIndexSeed">
1015
			<limitation expression="&gt;=0" />
1016
			<!-- To Do limitation seems tough to do -->
1017
		</int32>
1018
	</struct>
1019
	<struct name="FontEmbedFlags10Atom">
1020
		<type name="rh" type="RecordHeader">
1021
			<limitation name="recVer" value="0x0" />
1022
			<limitation name="recInstance" value="0x0" />
1023
			<limitation name="recType" value="0x32C8" />
1024
			<limitation name="recLen" value="0x04" />
1025
		</type>
1026
		<bit name="fSubset" />
1027
		<bit name="fSubsetOptionConfirmed" />
1028
		<uint14 name="unuseda" />
1029
		<uint16 name="unusedb" />
1030
	</struct>
1031
	<struct name="CopyrightAtom">
1032
		<type name="rh" type="RecordHeader">
1033
			<limitation name="recVer" value="0x0" />
1034
			<limitation name="recInstance" value="0x1" />
1035
			<limitation name="recType" value="0x0FBA" />
1036
			<limitation name="recLen" expression="&lt;=510" />
1037
			<limitation name="recLen" expression="%2==0" />
1038
		</type>
1039
		<uint8 name="copyright" count="rh.recLen" />
1040
	</struct>
1041
	<struct name="KeywordsAtom">
1042
		<type name="rh" type="RecordHeader">
1043
			<limitation name="recVer" value="0x0" />
1044
			<limitation name="recInstance" value="0x2" />
1045
			<limitation name="recType" value="0x0FBA" />
1046
			<limitation name="recLen" expression="&lt;=510" />
1047
			<limitation name="recLen" expression="%2==0" />
1048
		</type>
1049
		<uint8 name="keywords" count="rh.recLen" />
1050
	</struct>
1051
	<struct name="FilterPrivacyFlags10Atom">
1052
		<type name="rh" type="RecordHeader">
1053
			<limitation name="recVer" value="0x0" />
1054
			<limitation name="recInstance" value="0x0" />
1055
			<limitation name="recType" value="0x36B0" />
1056
			<limitation name="recLen" value="0x04" />
1057
		</type>
1058
		<bit name="fRemovePII" />
1059
		<uint7 name="reserved2a">
1060
			<limitation value="0x0" />
1061
		</uint7>
1062
		<uint8 name="reserved2b">
1063
			<limitation value="0x0" />
1064
		</uint8>
1065
		<uint16 name="reserved2c">
1066
			<limitation value="0x0" />
1067
		</uint16>
1068
	</struct>
1069
	<struct name="OutlineTextProps10Container">
1070
		<type name="rh" type="RecordHeader">
1071
			<limitation name="recVer" value="0xF" />
1072
			<limitation name="recInstance" value="0" />
1073
			<limitation name="recType" value="0x0FB3" />
1074
		</type>
1075
		<type name="rgOutlineTextProps10Entry" type="OutlineTextProps10Entry"
1076
			array="true" />
1077
	</struct>
1078
	<struct name="OutlineTextProps10Entry">
1079
		<type name="outlineTextHeaderAtom" type="OutlineTextPropsHeaderExAtom" />
1080
		<type name="styleTextProp10Atom" type="StyleTextProp10Atom" />
1081
	</struct>
1082
	<struct name="StyleTextProp10Atom">
1083
		<type name="rh" type="RecordHeader">
1084
			<limitation name="recVer" value="0" />
1085
			<limitation name="recInstance" value="0x0" />
1086
			<limitation name="recType" value="0xFB1" />
1087
		</type>
1088
		<type name="rgStyleTextProp10" type="TextCFException10" array="true" />
1089
	</struct>
1090
	<struct name="DocToolbarStates10Atom">
1091
		<type name="rh" type="RecordHeader">
1092
			<limitation name="recVer" value="0x0" />
1093
			<limitation name="recInstance" value="0" />
1094
			<limitation name="recType" value="0x36B1" />
1095
			<limitation name="recLen" value="0x01" />
1096
		</type>
1097
		<bit name="fShowReviewingToolbar" />
1098
		<bit name="fShowReviewingGallery" />
1099
		<uint6 name="reserved">
1100
			<limitation value="0x0" />
1101
		</uint6>
1102
	</struct>
1103
	<struct name="SlideListTable10Container">
1104
		<type name="rh" type="RecordHeader">
1105
			<limitation name="recVer" value="0xF" />
1106
			<limitation name="recInstance" value="0" />
1107
			<limitation name="recType" value="0x2EF1" />
1108
		</type>
1109
		<uint8 name="todo" count="rh.recLen" />
1110
	</struct>
1111
	<struct name="DiffTree10Container">
1112
		<type name="rh" type="RecordHeader">
1113
			<limitation name="recVer" value="0xF" />
1114
			<limitation name="recInstance" value="0" />
1115
			<limitation name="recType" value="0x2EEC" />
1116
		</type>
1117
		<uint8 name="todo" count="rh.recLen" />
1118
	</struct>
1119
	<struct name="ModifyPasswordAtom">
1120
		<type name="rh" type="RecordHeader">
1121
			<limitation name="recVer" value="0x0" />
1122
			<limitation name="recInstance" value="0x03" />
1123
			<limitation name="recType" value="0x0FBA" />
1124
			<limitation name="recLen" expression="&lt;=510" />
1125
			<limitation name="recLen" expression="%2==0" />
1126
		</type>
1127
		<uint8 name="modifyPassword" count="rh.recLen" />
1128
	</struct>
1129
	<struct name="PhotoAlbumInfo10Atom">
1130
		<type name="rh" type="RecordHeader">
1131
			<limitation name="recVer" value="0x0" />
1132
			<limitation name="recInstance" value="0x0" />
1133
			<limitation name="recType" value="0x036B2" />
1134
			<limitation name="recLen" value="0x06" />
1135
		</type>
1136
		<uint8 name="fUseBlackWhite" />
1137
		<uint8 name="fHasCaption" />
1138
		<uint8 name="layout">
1139
			<limitation value="0|1|2|3|4|5|6" />
1140
		</uint8>
1141
		<uint8 name="unused" />
1142
		<uint16 name="frameShape">
1143
			<limitation value="0x0000|0x0001|0x0002|0x0003|0x0004|0x0005|0x0006" />
1144
		</uint16>
1145
	</struct>
1146
	<struct name="PP11DocBinaryTagExtension">
1147
		<type name="rh" type="RecordHeader">
1148
			<limitation name="recVer" value="0x0" />
1149
			<limitation name="recInstance" value="0" />
1150
			<limitation name="recType" value="0x0FBA" />
1151
			<limitation name="recLen" value="0x10" />
1152
		</type>
1153
		<uint8 name="tagName" count="16" />
1154
		<type name="rhData" type="RecordHeader">
1155
			<limitation name="recVer" value="0x0" />
1156
			<limitation name="recInstance" value="0" />
1157
			<limitation name="recType" value="0x138B" />
1158
		</type>
1159
		<type name="smartTagStore11" type="SmartTagStore11Container" />
1160
		<type name="outlineTextProps" type="OutlineTextProps11Container" />
1161
	</struct>
1162
	<struct name="SmartTagStore11Container">
1163
		<type name="rh" type="RecordHeader">
1164
			<limitation name="recVer" value="0xF" />
1165
			<limitation name="recInstance" value="0x0" />
1166
			<limitation name="recType" value="0x36B3" />
1167
		</type>
1168
		<uint8 name="todo" count="rh.recLen" />
1169
	</struct>
1170
	<struct name="OutlineTextProps11Container">
1171
		<type name="rh" type="RecordHeader">
1172
			<limitation name="recVer" value="0xF" />
1173
			<limitation name="recInstance" value="0x0" />
1174
			<limitation name="recType" value="0x0FB5" />
1175
		</type>
1176
		<uint8 name="todo" count="rh.recLen" />
1177
	</struct>
1178
	<struct name="UnknownBinaryTag">
1179
		<type name="tagNameAtom" type="TagNameAtom" />
1180
		<type name="tagData" type="BinaryTagDataBlob" />
1181
	</struct>
1182
	<struct name="BinaryTagDataBlob">
1183
		<type name="rh" type="RecordHeader">
1184
			<limitation name="recVer" value="0x0" />
1185
			<limitation name="recInstance" value="0x0" />
1186
			<limitation name="recType" value="0x138B" />
1187
		</type>
1188
		<uint8 name="data" count="rh.recLen" />
1189
	</struct>
1190
	<struct name="PP12DocBinaryTagExtension">
1191
		<type name="rh" type="RecordHeader">
1192
			<limitation name="recVer" value="0x0" />
1193
			<limitation name="recInstance" value="0" />
1194
			<limitation name="recType" value="0x0FBA" />
1195
			<limitation name="recLen" value="0x10" />
1196
		</type>
1197
		<uint8 name="tagName" count="16" />
1198
		<type name="rhData" type="RecordHeader">
1199
			<limitation name="recVer" value="0x0" />
1200
			<limitation name="recInstance" value="0" />
1201
			<limitation name="recType" value="0x138B" />
1202
		</type>
1203
		<uint8 name="todo" count="rhData.recLen" />
1204
	</struct>
1205
	<struct name="NotesTextViewInfoContainer">
1206
		<type name="rh" type="RecordHeader">
1207
			<limitation name="recVer" value="0xF" />
1208
			<limitation name="recInstance" value="1" />
1209
			<limitation name="recType" value="0x413" />
1210
		</type>
1211
		<type name="zoomViewInfo" type="ZoomViewInfoAtom" />
1212
	</struct>
1213
	<struct name="OutlineViewInfoContainer">
1214
		<type name="rh" type="RecordHeader">
1215
			<limitation name="recVer" value="0xF" />
1216
			<!-- OpenOffice writes 0 here. -->
1217
			<limitation name="recInstance" value="0|1" />
1218
			<limitation name="recType" value="0x407" />
1219
		</type>
1220
		<type name="noZoomViewInfo" type="NoZoomViewInfoAtom" />
1221
	</struct>
1222
	<struct name="NoZoomViewInfoAtom">
1223
		<type name="rh" type="RecordHeader">
1224
			<limitation name="recVer" value="0" />
1225
			<limitation name="recInstance" value="0" />
1226
			<limitation name="recType" value="0x3FD" />
1227
			<limitation name="recLen" value="0x34" />
1228
		</type>
1229
		<type name="curScale" type="ScalingStruct" />
1230
		<uint8 name="unused1" count="24" />
1231
		<type name="origin" type="PointStruct" />
1232
		<uint8 name="unused2" />
1233
		<uint8 name="fDraftMode" />
1234
		<uint16 name="unused3" />
1235
	</struct>
1236
	<struct name="SorterViewInfoContainer">
1237
		<type name="rh" type="RecordHeader">
1238
			<limitation name="recVer" value="0xF" />
1239
			<limitation name="recInstance" value="1" />
1240
			<limitation name="recType" value="0x408" />
1241
		</type>
1242
		<uint8 name="todo" count="rh.recLen" />
1243
	</struct>
1244
	<struct name="VBAInfoContainer">
1245
		<type name="rh" type="RecordHeader">
1246
			<limitation name="recVer" value="0xF" />
1247
			<limitation name="recInstance" value="1" />
1248
			<limitation name="recType" value="0x3FF" />
1249
			<limitation name="recLen" value="0x14" />
1250
		</type>
1251
		<type name="vbaInfoAtom" type="VBAInfoAtom" />
1252
	</struct>
1253
	<struct name="VBAInfoAtom">
1254
		<type name="rh" type="RecordHeader">
1255
			<limitation name="recVer" value="2" />
1256
			<limitation name="recInstance" value="0" />
1257
			<limitation name="recType" value="0x400" />
1258
			<limitation name="recLen" value="0xC" />
1259
		</type>
1260
		<uint32 name="persistIdRef" />
1261
		<uint32 name="fHasMacros">
1262
			<limitation value="0|1" />
1263
		</uint32>
1264
		<uint32 name="version">
1265
			<!-- OpenOffice writes 0 or 1 instead of 2 -->
1266
			<limitation value="0|1|2" />
1267
		</uint32>
1268
	</struct>
1269
	<struct name="NormalViewSetInfoContainer">
1270
		<type name="rh" type="RecordHeader">
1271
			<limitation name="recVer" value="0xF" />
1272
			<limitation name="recInstance" value="1" />
1273
			<limitation name="recType" value="0x414" />
1274
			<limitation name="recLen" value="0x1C" />
1275
		</type>
1276
		<type name="normalViewSetInfoAtom" type="NormalViewSetInfoAtom" />
1277
	</struct>
1278
	<struct name="NormalViewSetInfoAtom">
1279
		<type name="rh" type="RecordHeader">
1280
			<limitation name="recVer" value="0" />
1281
			<limitation name="recInstance" value="0" />
1282
			<limitation name="recType" value="0x415" />
1283
			<limitation name="recLen" value="0x14" />
1284
		</type>
1285
		<type name="leftPortion" type="RatioStruct">
1286
			<!--
1287
				This is not true in a sample doc <limitation
1288
				expression="numer*denom&gt;=0" /> <limitation
1289
				expression="denom/numer&gt;=1" />
1290
			-->
1291
		</type>
1292
		<type name="topPortion" type="RatioStruct">
1293
			<!--
1294
				This is not true in a sample doc <limitation
1295
				expression="numer*denom&gt;=0" /> <limitation
1296
				expression="denom/numer&gt;=1" />
1297
			-->
1298
		</type>
1299
		<uint8 name="vertBarState" />
1300
		<uint8 name="horizBarState" />
1301
		<uint8 name="fPreferSingleSet">
1302
			<limitation value="0|1" />
1303
		</uint8>
1304
		<bit name="fHideThumbnails" />
1305
		<bit name="fBarSnapped" />
1306
		<uint6 name="reserved">
1307
			<limitation value="0" />
1308
		</uint6>
1309
	</struct>
1310
	<struct name="MasterListWithTextContainer">
1311
		<type name="rh" type="RecordHeader">
1312
			<limitation name="recVer" value="0xF" />
1313
			<limitation name="recInstance" value="0x1" />
1314
			<limitation name="recType" value="0x0FF0" />
1315
			<limitation name="recLen" expression="%28==0" />
1316
		</type>
1317
		<type name="rgMasterPersistAtom" type="MasterPersistAtom" count="rh.recLen/28" />
1318
	</struct>
1319
	<struct name="MasterPersistAtom">
1320
		<type name="rh" type="RecordHeader">
1321
			<limitation name="recVer" value="0" />
1322
			<limitation name="recInstance" value="0" />
1323
			<limitation name="recType" value="0x3F3" />
1324
			<limitation name="recLen" value="0x14" />
1325
		</type>
1326
		<uint32 name="persistIdRef" />
1327
		<uint2 name="reserved1">
1328
			<limitation value="0" />
1329
		</uint2>
1330
		<bit name="fNonOutLineData" />
1331
		<uint5 name="reserved2">
1332
			<limitation value="0" />
1333
		</uint5>
1334
		<uint8 name="reserved3">
1335
			<limitation value="0" />
1336
		</uint8>
1337
		<uint16 name="reserved4">
1338
			<limitation value="0" />
1339
		</uint16>
1340
		<uint32 name="reserved5">
1341
			<limitation value="0" />
1342
		</uint32>
1343
		<uint32 name="masterId" />
1344
		<uint32 name="reserved6">
1345
			<limitation value="0" />
1346
		</uint32>
1347
	</struct>
1348
	<struct name="SlideListWithTextContainer">
1349
		<type name="rh" type="RecordHeader">
1350
			<limitation name="recVer" value="0xF" />
1351
			<limitation name="recInstance" value="0x0" />
1352
			<limitation name="recType" value="0x0FF0" />
1353
		</type>
1354
		<type name="rgChildRec" type="SlideListWithTextSubContainerOrAtom"
1355
			array="true" />
1356
	</struct>
1357
	<struct name="NotesListWithTextContainer">
1358
		<type name="rh" type="RecordHeader">
1359
			<limitation name="recVer" value="0xF" />
1360
			<limitation name="recInstance" value="2" />
1361
			<limitation name="recType" value="0x0FF0" />
1362
		</type>
1363
		<type name="rgNotesPersistAtom" type="NotesPersistAtom" array="true" />
1364
	</struct>
1365
	<struct name="NotesPersistAtom">
1366
		<type name="rh" type="RecordHeader">
1367
			<limitation name="recVer" value="0x0" />
1368
			<limitation name="recInstance" value="0" />
1369
			<limitation name="recType" value="0x03F3" />
1370
			<limitation name="recLen" value="0x14" />
1371
		</type>
1372
		<uint32 name="persistIdRef" />
1373
		<uint2 name="reserved1">
1374
			<limitation value="0" />
1375
		</uint2>
1376
		<bit name="fNonOutlineData" />
1377
		<uint5 name="reserved2a">
1378
			<limitation value="0" />
1379
		</uint5>
1380
		<uint8 name="reserved2b">
1381
			<limitation value="0" />
1382
		</uint8>
1383
		<uint16 name="reserved2c">
1384
			<limitation value="0" />
1385
		</uint16>
1386
		<uint32 name="reserved3">
1387
			<limitation value="0" />
1388
		</uint32>
1389
		<uint32 name="notesId" />
1390
		<uint32 name="reserved4">
1391
			<limitation value="0" />
1392
		</uint32>
1393
	</struct>
1394
	<struct name="SlideListWithTextSubContainerOrAtom">
1395
		<type name="slidePersistAtom" type="SlidePersistAtom" />
1396
		<type name="atoms" type="TextContainer" array="true" />
1397
	</struct>
1398
	<!-- Our own invention, to keep text related containers together. -->
1399
	<struct name="TextContainer">
1400
		<!--
1401
			this is an interpretation of the ABNF in the MS-PPT doc
1402
		-->
1403
		<type name="textHeaderAtom" type="TextHeaderAtom" />
1404
		<choice name="text" optional="true">
1405
			<type type="TextCharsAtom" />
1406
			<type type="TextBytesAtom" />
1407
		</choice>
1408
		<type name="style" type="StyleTextPropAtom" optional="true" />
1409
		<type name="meta" type="TextContainerMeta" array="true" />
1410
1411
		<!-- Perhaps this does not belong here.  Following containers
1412
		     are optional and their order might differ.  See
1413
		     TextClientDataSubContainerOrAtom. -->
1414
1415
		<type name="master" type="MasterTextPropAtom" optional="true" />
1416
		<type name="bookmark" type="TextBookmarkAtom" array="true" />
1417
1418
		<!-- NOTE: Do not parse TextRulerAtom here, we need to have it
1419
		     outside to provide additional info to the content of both
1420
		     OutlineTextRefAtom or TextContainer. -->
1421
1422
		<!--  Does not occur in the spec. (MSOffice2003 specific) -->
1423
		<type name="unknown" type="UnknownTextContainerChild" optional="true" />
1424
		<type name="specialinfo" type="TextSpecialInfoAtom" optional="true" />
1425
		<type name="interactive" type="TextContainerInteractiveInfo" array="true" />
1426
		<!--  this second occurance is not according to the specification -->
1427
		<type name="specialinfo2" type="TextSpecialInfoAtom" optional="true" />
1428
	</struct>
1429
	<!-- our own invention -->
1430
	<struct name="TextContainerMeta">
1431
		<choice name="meta">
1432
			<type type="SlideNumberMCAtom" />
1433
			<type type="DateTimeMCAtom" />
1434
			<type type="GenericDateMCAtom" />
1435
			<type type="HeaderMCAtom" />
1436
			<type type="FooterMCAtom" />
1437
			<type type="RTFDateTimeMCAtom" />
1438
		</choice>
1439
	</struct>
1440
	<!-- our own invention -->
1441
	<struct name="TextContainerInteractiveInfo">
1442
		<choice name="interactive">
1443
			<type type="MouseClickTextInfo" />
1444
			<type type="MouseOverTextInfo" />
1445
		</choice>
1446
	</struct>
1447
	<!-- our own invention -->
1448
	<struct name="MouseClickTextInfo">
1449
		<type name="interactive" type="MouseClickInteractiveInfoContainer" />
1450
		<type name="text" type="MouseClickTextInteractiveInfoAtom" />
1451
	</struct>
1452
	<!-- our own invention -->
1453
	<struct name="MouseOverTextInfo">
1454
		<type name="interactive" type="MouseOverInteractiveInfoContainer" />
1455
		<type name="text" type="MouseOverTextInteractiveInfoAtom" />
1456
	</struct>
1457
	<!-- our own invention -->
1458
	<struct name="TextClientDataSubContainerOrAtom">
1459
		<choice name="anon">
1460
			<type type="OutlineTextRefAtom" />
1461
			<type type="TextContainer" />
1462
			<type type="TextRulerAtom" />
1463
			<type type="MouseClickTextInfo" />
1464
		</choice>
1465
	</struct>
1466
	<!-- our own invention -->
1467
	<struct name="SlidePersistAtom">
1468
		<type name="rh" type="RecordHeader">
1469
			<limitation name="recVer" value="0" />
1470
			<limitation name="recInstance" value="0" />
1471
			<limitation name="recType" value="0x3F3" />
1472
			<limitation name="recLen" value="0x14" />
1473
		</type>
1474
		<uint32 name="persistIdRef" />
1475
		<bit name="reserved1">
1476
			<limitation value="false" />
1477
		</bit>
1478
		<bit name="fShouldCollapse" />
1479
		<bit name="fNonOutlineData" />
1480
		<uint5 name="reserved2">
1481
			<limitation value="0" />
1482
		</uint5>
1483
		<uint8 name="reserved3">
1484
			<limitation value="0" />
1485
		</uint8>
1486
		<uint16 name="reserved4">
1487
			<limitation value="0" />
1488
		</uint16>
1489
		<int32 name="cTexts">
1490
			<limitation expression="&gt;=0" />
1491
			<limitation expression="&lt;=8" />
1492
		</int32>
1493
		<type name="slideId" type="SlideId" />
1494
		<uint32 name="reserved5">
1495
			<limitation value="0" />
1496
		</uint32>
1497
	</struct>
1498
	<struct name="TextHeaderAtom">
1499
		<type name="rh" type="RecordHeader">
1500
			<limitation name="recVer" value="0" />
1501
			<limitation name="recInstance" value="0|1|2|3|4|5" />
1502
			<limitation name="recType" value="0xF9F" />
1503
			<limitation name="recLen" value="4" />
1504
		</type>
1505
		<uint32 name="textType" />
1506
	</struct>
1507
	<struct name="TextCharsAtom">
1508
		<type name="rh" type="RecordHeader">
1509
			<limitation name="recVer" value="0" />
1510
			<limitation name="recInstance" value="0" />
1511
			<limitation name="recType" value="0xFA0" />
1512
			<limitation name="recLen" expression="%2==0" />
1513
		</type>
1514
		<uint16 name="textChars" count="rh.recLen/2">
1515
			<!-- <limitation value="!0" />-->
1516
		</uint16>
1517
	</struct>
1518
	<struct name="TextBytesAtom">
1519
		<type name="rh" type="RecordHeader">
1520
			<limitation name="recVer" value="0" />
1521
			<limitation name="recInstance" value="0" />
1522
			<limitation name="recType" value="0xFA8" />
1523
		</type>
1524
		<uint8 name="textChars" count="rh.recLen">
1525
			<!-- <limitation value="!0" />-->
1526
		</uint8>
1527
	</struct>
1528
	<struct name="MasterTextPropAtom">
1529
		<type name="rh" type="RecordHeader">
1530
			<limitation name="recVer" value="0" />
1531
			<limitation name="recInstance" value="0" />
1532
			<limitation name="recType" value="0xFA2" />
1533
		</type>
1534
		<type name="rgMasterTextPropRun" type="MasterTextPropRun" array="true"
1535
			size="rh.recLen" />
1536
	</struct>
1537
	<struct name="MasterTextPropRun">
1538
		<uint32 name="count" />
1539
		<uint16 name="indentLevel">
1540
			<limitation expression="&lt;=4" />
1541
		</uint16>
1542
	</struct>
1543
	<struct name="StyleTextPropAtom">
1544
		<type name="rh" type="RecordHeader">
1545
			<limitation name="recVer" value="0" />
1546
			<limitation name="recInstance" value="0" />
1547
			<limitation name="recType" value="0xFA1" />
1548
		</type>
1549
		<!--
1550
			<type name="rgTextPFRun" type="TextPFRun" array="true" /> <type
1551
			name="rgTextCFRun" type="TextCFRun" array="true" />
1552
		-->
1553
		<!-- this one seems very hard to do -->
1554
		<uint8 name="todo" count="rh.recLen" />
1555
		<limitation expression="sum(rgTextPFRun/count)=count(../text/textChars)+1" />
1556
		<limitation expression="sum(rgTextCFRun/count)=count(../text/textChars)" />
1557
	</struct>
1558
	<struct name="TextPFRun">
1559
		<uint32 name="count">
1560
			<limitation expression="&gt;0" />
1561
		</uint32>
1562
		<uint16 name="indentLevel">
1563
			<limitation expression="&lt;=4" />
1564
		</uint16>
1565
		<type name="pf" type="TextPFException">
1566
			<limitation name="masks.leftMargin" value="false" />
1567
			<limitation name="masks.indent" value="false" />
1568
			<limitation name="masks.defaultTabSize" value="false" />
1569
			<limitation name="masks.tabStops" value="false" />
1570
		</type>
1571
	</struct>
1572
	<struct name="TextCFRun">
1573
		<uint32 name="count">
1574
			<limitation expression="&gt;0" />
1575
		</uint32>
1576
		<type name="cf" type="TextCFException" />
1577
	</struct>
1578
	<struct name="SlideNumberMCAtom">
1579
		<type name="rh" type="RecordHeader">
1580
			<limitation name="recVer" value="0" />
1581
			<limitation name="recInstance" value="0" />
1582
			<limitation name="recType" value="0xFD8" />
1583
			<limitation name="recLen" value="4" />
1584
		</type>
1585
		<int32 name="position" />
1586
	</struct>
1587
	<struct name="DateTimeMCAtom">
1588
		<type name="rh" type="RecordHeader">
1589
			<limitation name="recVer" value="0" />
1590
			<limitation name="recInstance" value="0" />
1591
			<limitation name="recType" value="0xFF7" />
1592
			<limitation name="recLen" value="8" />
1593
		</type>
1594
		<int32 name="position" />
1595
		<uint8 name="index" />
1596
		<uint8 name="unused" count="3" />
1597
	</struct>
1598
	<struct name="GenericDateMCAtom">
1599
		<type name="rh" type="RecordHeader">
1600
			<limitation name="recVer" value="0" />
1601
			<limitation name="recInstance" value="0" />
1602
			<limitation name="recType" value="0xFF8" />
1603
			<limitation name="recLen" value="4" />
1604
		</type>
1605
		<int32 name="position" />
1606
	</struct>
1607
	<struct name="HeaderMCAtom">
1608
		<type name="rh" type="RecordHeader">
1609
			<limitation name="recVer" value="0" />
1610
			<limitation name="recInstance" value="0" />
1611
			<limitation name="recType" value="0xFF9" />
1612
			<limitation name="recLen" value="4" />
1613
		</type>
1614
		<int32 name="position" />
1615
	</struct>
1616
	<struct name="FooterMCAtom">
1617
		<type name="rh" type="RecordHeader">
1618
			<limitation name="recVer" value="0" />
1619
			<limitation name="recInstance" value="0" />
1620
			<limitation name="recType" value="0xFFA" />
1621
			<limitation name="recLen" value="4" />
1622
		</type>
1623
		<int32 name="position" />
1624
	</struct>
1625
	<struct name="RTFDateTimeMCAtom">
1626
		<type name="rh" type="RecordHeader">
1627
			<limitation name="recVer" value="0" />
1628
			<limitation name="recInstance" value="0" />
1629
			<limitation name="recType" value="0x1015" />
1630
			<limitation name="recLen" value="0x84" />
1631
		</type>
1632
		<int32 name="position" />
1633
		<uint8 name="format" count="128" />
1634
	</struct>
1635
	<struct name="TextBookmarkAtom">
1636
		<type name="rh" type="RecordHeader">
1637
			<limitation name="recVer" value="0" />
1638
			<limitation name="recInstance" value="0" />
1639
			<limitation name="recType" value="0xFA7" />
1640
			<limitation name="recLen" value="0xC" />
1641
		</type>
1642
		<int32 name="begin" />
1643
		<int32 name="end">
1644
			<!--
1645
				TODO: figure out how to do this <limitation expression="&gt; begin"
1646
				/> <limitation expression="&lt;= begin+255" />
1647
			-->
1648
		</int32>
1649
		<int32 name="bookmarkID" />
1650
	</struct>
1651
	<struct name="TextRange">
1652
		<int32 name="begin" />
1653
		<int32 name="end" />
1654
	</struct>
1655
	<struct name="MouseClickTextInteractiveInfoAtom">
1656
		<type name="rh" type="RecordHeader">
1657
			<limitation name="recVer" value="0" />
1658
			<limitation name="recInstance" value="0" />
1659
			<limitation name="recType" value="0xFDF" />
1660
			<limitation name="recLen" value="8" />
1661
		</type>
1662
		<type name="range" type="TextRange" />
1663
	</struct>
1664
	<struct name="MouseOverTextInteractiveInfoAtom">
1665
		<type name="rh" type="RecordHeader">
1666
			<limitation name="recVer" value="0" />
1667
			<limitation name="recInstance" value="1" />
1668
			<limitation name="recType" value="0xFDF" />
1669
			<limitation name="recLen" value="8" />
1670
		</type>
1671
		<type name="range" type="TextRange" />
1672
	</struct>
1673
	<struct name="SlideId">
1674
		<uint32 name="slideId">
1675
			<limitation expression="&gt;=100" />
1676
			<limitation expression="&lt;2147483647" />
1677
		</uint32>
1678
	</struct>
1679
	<struct name="DocumentTextInfoContainer">
1680
		<type name="rh" type="RecordHeader">
1681
			<limitation name="recVer" value="0xF" />
1682
			<limitation name="recInstance" value="0x0" />
1683
			<limitation name="recType" value="0x03F2" />
1684
		</type>
1685
		<type name="kinsoku" type="KinsokuContainer" optional="true" />
1686
		<type name="fontCollection" type="FontCollectionContainer"
1687
			optional="true" />
1688
		<type name="textCFDefaultsAtom" type="TextCFExceptionAtom"
1689
			optional="true" />
1690
		<type name="textPFDefaultsAtom" type="TextPFExceptionAtom"
1691
			optional="true" />
1692
		<type name="defaultRulerAtom" type="DefaultRulerAtom" optional="true" />
1693
		<type name="textSIDefaultsAtom" type="TextSIExceptionAtom" />
1694
		<type name="textMasterStyleAtom" type="TextMasterStyleAtom" />
1695
		<!--
1696
			a document has been observed that has two TextMasterStyleAtom members
1697
		-->
1698
		<type name="textMasterStyleAtom2" type="TextMasterStyleAtom"
1699
			optional="true" />
1700
	</struct>
1701
	<struct name="TextCFExceptionAtom">
1702
		<type name="rh" type="RecordHeader">
1703
			<limitation name="recVer" value="0x0" />
1704
			<limitation name="recInstance" value="0x0" />
1705
			<limitation name="recType" value="0x0FA4" />
1706
		</type>
1707
		<type name="cf" type="TextCFException" />
1708
	</struct>
1709
	<struct name="DefaultRulerAtom">
1710
		<type name="rh" type="RecordHeader">
1711
			<limitation name="recVer" value="0x0" />
1712
			<limitation name="recInstance" value="0x0" />
1713
			<limitation name="recType" value="0x0FAB" />
1714
		</type>
1715
		<type name="defaultTextRuler" type="TextRuler">
1716
			<limitation name="fDefaultTabSize" value="true" />
1717
			<limitation name="fCLevels" value="true" />
1718
			<limitation name="fTabStops" value="true" />
1719
			<limitation name="fLeftMargin1" value="true" />
1720
			<limitation name="fLeftMargin2" value="true" />
1721
			<limitation name="fLeftMargin3" value="true" />
1722
			<limitation name="fLeftMargin4" value="true" />
1723
			<limitation name="fIndent1" value="true" />
1724
			<limitation name="fIndent2" value="true" />
1725
			<limitation name="fIndent3" value="true" />
1726
			<limitation name="fIndent4" value="true" />
1727
			<limitation name="fIndent5" value="true" />
1728
		</type>
1729
	</struct>
1730
	<struct name="TextRuler">
1731
		<bit name="fDefaultTabSize" />
1732
		<bit name="fCLevels" />
1733
		<bit name="fTabStops" />
1734
		<bit name="fLeftMargin1" />
1735
		<bit name="fLeftMargin2" />
1736
		<bit name="fLeftMargin3" />
1737
		<bit name="fLeftMargin4" />
1738
		<bit name="fLeftMargin5" />
1739
		<bit name="fIndent1" />
1740
		<bit name="fIndent2" />
1741
		<bit name="fIndent3" />
1742
		<bit name="fIndent4" />
1743
		<bit name="fIndent5" />
1744
		<uint3 name="reserved1" />
1745
		<uint16 name="reserved2" />
1746
		<int16 name="cLevels" condition="fCLevels" />
1747
		<uint16 name="defaultTabSize" condition="fDefaultTabSize" />
1748
		<type name="tabs" type="TabStops" condition="fTabStops" />
1749
		<uint16 name="leftMargin1" condition="fLeftMargin1" />
1750
		<uint16 name="indent1" condition="fIndent1" />
1751
		<uint16 name="leftMargin2" condition="fLeftMargin2" />
1752
		<uint16 name="indent2" condition="fIndent2" />
1753
		<uint16 name="leftMargin3" condition="fLeftMargin3" />
1754
		<uint16 name="indent3" condition="fIndent3" />
1755
		<uint16 name="leftMargin4" condition="fLeftMargin4" />
1756
		<uint16 name="indent4" condition="fIndent4" />
1757
		<uint16 name="leftMargin5" condition="fLeftMargin5" />
1758
		<uint16 name="indent5" condition="fIndent5" />
1759
	</struct>
1760
	<struct name="TabStops">
1761
		<uint16 name="count" />
1762
		<type name="rgTabStop" count="count" type="TabStop" />
1763
	</struct>
1764
	<struct name="TabStop">
1765
		<int16 name="position" />
1766
		<uint16 name="type" />
1767
	</struct>
1768
	<struct name="TextPFExceptionAtom">
1769
		<type name="rh" type="RecordHeader">
1770
			<limitation name="recVer" value="0x0" />
1771
			<limitation name="recInstance" value="0x0" />
1772
			<limitation name="recType" value="0x0FA5" />
1773
		</type>
1774
		<uint16 name="reserved" />
1775
		<type name="pf" type="TextPFException" />
1776
	</struct>
1777
	<struct name="TextPFException">
1778
		<type name="masks" type="PFMasks">
1779
			<!--
1780
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1781
				bulletBlip = true
1782
			-->
1783
			<limitation name="bulletBlip" value="false" />
1784
			<!--
1785
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1786
				bulletHasScheme = true
1787
			-->
1788
			<limitation name="bulletHasScheme" value="false" />
1789
			<!--
1790
				it seems ppt files generated with OpenOffice Impress 3.0 can have
1791
				bulletScheme = true
1792
			-->
1793
			<limitation name="bulletScheme" value="false" />
1794
		</type>
1795
		<type name="bulletFlags" type="BulletFlags"
1796
			condition="masks.hasBullet||masks.bulletHasFont||masks.bulletHasColor||masks.bulletHasSize" />
1797
		<int16 name="bulletChar" condition="masks.bulletChar">
1798
			<!--
1799
				OpenOffice violates this constraint, so we do not check it
1800
				<limitation value="!0" />
1801
			-->
1802
		</int16>
1803
		<uint16 name="bulletFontRef" condition="masks.bulletFont" />
1804
		<int16 name="bulletSize" condition="masks.bulletSize" />
1805
		<type name="bulletColor" condition="masks.bulletColor" type="ColorIndexStruct" />
1806
		<uint16 name="textAlignment" condition="masks.align" />
1807
		<int16 name="lineSpacing" condition="masks.lineSpacing" />
1808
		<int16 name="spaceBefore" condition="masks.spaceBefore" />
1809
		<int16 name="spaceAfter" condition="masks.spaceAfter" />
1810
		<uint16 name="leftMargin" condition="masks.leftMargin" />
1811
		<uint16 name="indent" condition="masks.indent" />
1812
		<uint16 name="defaultTabSize" condition="masks.defaultTabSize" />
1813
		<type name="tabStops" type="TabStops" condition="masks.tabStops" />
1814
		<uint16 name="fontAlign" condition="masks.fontAlign" />
1815
		<type name="wrapFlags" type="PFWrapFlags"
1816
			condition="masks.charWrap||masks.wordWrap||masks.overflow" />
1817
		<uint16 name="textDirection" condition="masks.textDirection" />
1818
	</struct>
1819
	<struct name="PFWrapFlags">
1820
		<bit name="charWrap" />
1821
		<bit name="wordWrap" />
1822
		<bit name="overflow" />
1823
		<uint5 name="reserved1" />
1824
		<uint8 name="reserved2" />
1825
	</struct>
1826
	<struct name="ColorIndexStruct">
1827
		<uint8 name="red" />
1828
		<uint8 name="green" />
1829
		<uint8 name="blue" />
1830
		<uint8 name="index">
1831
			<!-- limitation expression="&lt;8 || &gt;253" />-->
1832
		</uint8>
1833
	</struct>
1834
	<struct name="BulletFlags">
1835
		<bit name="fHasBullet" />
1836
		<bit name="fBulletHasFont" />
1837
		<bit name="fBulletHasColor" />
1838
		<bit name="fBulletHasSize" />
1839
		<uint12 name="reserved" />
1840
	</struct>
1841
	<struct name="PFMasks">
1842
		<bit name="hasBullet" />
1843
		<bit name="bulletHasFont" />
1844
		<bit name="bulletHasColor" />
1845
		<bit name="bulletHasSize" />
1846
		<bit name="bulletFont" />
1847
		<bit name="bulletColor" />
1848
		<bit name="bulletSize" />
1849
		<bit name="bulletChar" />
1850
		<bit name="leftMargin" />
1851
		<bit name="unused" />
1852
		<bit name="indent" />
1853
		<bit name="align" />
1854
		<bit name="lineSpacing" />
1855
		<bit name="spaceBefore" />
1856
		<bit name="spaceAfter" />
1857
		<bit name="defaultTabSize" />
1858
		<bit name="fontAlign" />
1859
		<bit name="charWrap" />
1860
		<bit name="wordWrap" />
1861
		<bit name="overflow" />
1862
		<bit name="tabStops" />
1863
		<bit name="textDirection" />
1864
		<bit name="reserved" />
1865
		<bit name="bulletBlip" />
1866
		<bit name="bulletScheme" />
1867
		<bit name="bulletHasScheme" />
1868
		<uint6 name="reserved2" />
1869
	</struct>
1870
	<struct name="TextCFException">
1871
		<type name="masks" type="CFMasks">
1872
			<limitation name="pp10ext" value="false" />
1873
			<limitation name="newEATypeface" value="false" />
1874
			<limitation name="csTypeface" value="false" />
1875
			<limitation name="pp11ext" value="false" />
1876
		</type>
1877
		<type name="fontStyle" type="CFStyle"
1878
			condition="masks.bold || masks.italic || masks.underline || masks.shadow || masks.fehint || masks.kumi || masks.emboss || masks.fHasStyle != 0" />
1879
		<uint16 name="fontRef" condition="masks.typeface" />
1880
		<uint16 name="oldEAFontRef" condition="masks.oldEATypeface" />
1881
		<uint16 name="ansiFontRef" condition="masks.ansiTypeface" />
1882
		<uint16 name="symbolFontRef" condition="masks.symbolTypeface" />
1883
		<uint16 name="fontSize" condition="masks.size">
1884
			<limitation expression="&gt;=1" />
1885
			<limitation expression="&lt;=4000" />
1886
		</uint16>
1887
		<type name="color" condition="masks.color" type="ColorIndexStruct" />
1888
		<int16 name="position" condition="masks.position">
1889
			<limitation expression="&gt;=-100" />
1890
			<limitation expression="&lt;=100" />
1891
		</int16>
1892
	</struct>
1893
	<struct name="CFMasks">
1894
		<bit name="bold" />
1895
		<bit name="italic" />
1896
		<bit name="underline" />
1897
		<bit name="unused1" />
1898
		<bit name="shadow" />
1899
		<bit name="fehint" />
1900
		<bit name="unused2" />
1901
		<bit name="kumi" />
1902
		<bit name="unused3" />
1903
		<bit name="emboss" />
1904
		<uint4 name="fHasStyle" />
1905
		<uint2 name="unused4" />
1906
		<bit name="typeface" />
1907
		<bit name="size" />
1908
		<bit name="color" />
1909
		<bit name="position" />
1910
		<bit name="pp10ext" />
1911
		<bit name="oldEATypeface" />
1912
		<bit name="ansiTypeface" />
1913
		<bit name="symbolTypeface" />
1914
		<bit name="newEATypeface" />
1915
		<bit name="csTypeface" />
1916
		<bit name="pp11ext" />
1917
		<uint5 name="reserved" />
1918
	</struct>
1919
	<struct name="CFStyle">
1920
		<bit name="bold" />
1921
		<bit name="italic" />
1922
		<bit name="underline" />
1923
		<bit name="unused1" />
1924
		<bit name="shadow" />
1925
		<bit name="fehint" />
1926
		<bit name="unused2" />
1927
		<bit name="kumi" />
1928
		<bit name="unused3" />
1929
		<bit name="emboss" />
1930
		<uint4 name="pp9rt" />
1931
		<uint2 name="unused4" />
1932
	</struct>
1933
	<struct name="FontCollectionContainer">
1934
		<type name="rh" type="RecordHeader">
1935
			<limitation name="recVer" value="0xF" />
1936
			<limitation name="recInstance" value="0x0" />
1937
			<limitation name="recType" value="0x07D5" />
1938
		</type>
1939
		<type name="rgFontCollectionEntry" type="FontCollectionEntry"
1940
			array="true" size="rh.recLen" />
1941
	</struct>
1942
	<struct name="FontCollectionEntry">
1943
		<type name="fontEntityAtom" type="FontEntityAtom" />
1944
		<type name="fontEmbedData1" type="FontEmbedDataBlob" optional="true" />
1945
		<type name="fontEmbedData2" type="FontEmbedDataBlob" optional="true" />
1946
		<type name="fontEmbedData3" type="FontEmbedDataBlob" optional="true" />
1947
		<type name="fontEmbedData4" type="FontEmbedDataBlob" optional="true" />
1948
	</struct>
1949
	<struct name="FontEntityAtom">
1950
		<type name="rh" type="RecordHeader">
1951
			<limitation name="recVer" value="0" />
1952
			<limitation name="recInstance" expression="&lt;=128" />
1953
			<limitation name="recType" value="0xFB7" />
1954
			<limitation name="recLen" value="0x44" />
1955
		</type>
1956
		<uint16 name="lfFaceName" count="32" />
1957
		<uint8 name="lfCharSet" />
1958
		<bit name="fEmbedSubsetted" />
1959
		<uint7 name="unused" />
1960
		<bit name="rasterFontType" />
1961
		<bit name="deviceFontType" />
1962
		<bit name="truetypeFontType" />
1963
		<bit name="fNoFontSubstitution" />
1964
		<uint4 name="reserved">
1965
			<limitation value="0" />
1966
		</uint4>
1967
		<uint8 name="lfPitchAndFamily" />
1968
	</struct>
1969
	<struct name="FontEmbedDataBlob">
1970
		<type name="rh" type="RecordHeader">
1971
			<limitation name="recVer" value="0" />
1972
			<limitation name="recInstance" expression="&lt;=3" />
1973
			<limitation name="recType" value="0xFB8" />
1974
		</type>
1975
		<uint8 name="data" count="rh.recLen" />
1976
	</struct>
1977
	<struct name="KinsokuContainer">
1978
		<type name="rh" type="RecordHeader">
1979
			<limitation name="recVer" value="0xF" />
1980
			<limitation name="recInstance" value="0x2" />
1981
			<limitation name="recType" value="0x0FC8" />
1982
		</type>
1983
		<type name="kinsokuAtom" type="KinsokuAtom" />
1984
		<type name="kinsokuLeadingAtom" type="KinsokuLeadingAtom"
1985
			condition="kinsokuAtom.level==2" />
1986
		<type name="kinsokuFollowingAtom" type="KinsokuFollowingAtom"
1987
			condition="kinsokuAtom.level==2" />
1988
	</struct>
1989
	<struct name="KinsokuAtom">
1990
		<type name="rh" type="RecordHeader">
1991
			<limitation name="recVer" value="0x0" />
1992
			<limitation name="recInstance" value="0x3" />
1993
			<limitation name="recType" value="0x0FD2" />
1994
			<limitation name="recLen" value="4" />
1995
		</type>
1996
		<uint32 name="level">
1997
			<!--  MS documentation does not allow value 128 -->
1998
			<limitation value="0|1|2|128" />
1999
		</uint32>
2000
	</struct>
2001
	<struct name="KinsokuLeadingAtom">
2002
		<type name="rh" type="RecordHeader">
2003
			<limitation name="recVer" value="0" />
2004
			<limitation name="recInstance" value="0" />
2005
			<limitation name="recType" value="0xFBA" />
2006
			<limitation expression="recLen%2==0" />
2007
		</type>
2008
		<uint16 name="kinsokuLeading" count="rh.recLen/2" />
2009
	</struct>
2010
	<struct name="KinsokuFollowingAtom">
2011
		<type name="rh" type="RecordHeader">
2012
			<limitation name="recVer" value="0" />
2013
			<limitation name="recInstance" value="1 " />
2014
			<limitation name="recType" value="0xFBA" />
2015
			<limitation expression="recLen%2==0" />
2016
		</type>
2017
		<uint16 name="kinsokuFollowing" count="rh.recLen/2" />
2018
	</struct>
2019
	<struct name="TextSpecialInfoAtom">
2020
		<type name="rh" type="RecordHeader">
2021
			<limitation name="recVer" value="0x0" />
2022
			<limitation name="recInstance" value="0x0" />
2023
			<limitation name="recType" value="0xFAA" />
2024
		</type>
2025
		<type name="rgSIRun" type="TextSIRun" array="true" size="rh.recLen" />
2026
	</struct>
2027
	<struct name="TextSIRun">
2028
		<uint32 name="count">
2029
			<limitation expression="&gt;=1" />
2030
		</uint32>
2031
		<type name="si" type="TextSIException" />
2032
	</struct>
2033
	<struct name="TextSIExceptionAtom">
2034
		<type name="rh" type="RecordHeader">
2035
			<limitation name="recVer" value="0x0" />
2036
			<limitation name="recInstance" value="0x0" />
2037
			<limitation name="recType" value="0x0FA9" />
2038
		</type>
2039
		<type name="textSIException" type="TextSIException">
2040
			<limitation name="fPp10ext" value="false" />
2041
			<limitation name="fBidi" value="false" />
2042
			<limitation name="smartTag" value="false" />
2043
		</type>
2044
	</struct>
2045
	<struct name="TextSIException">
2046
		<bit name="spell" />
2047
		<bit name="lang" />
2048
		<bit name="altLang" />
2049
		<bit name="unused1" />
2050
		<bit name="unused2" />
2051
		<bit name="fPp10ext" />
2052
		<bit name="fBidi" />
2053
		<bit name="unused3" />
2054
		<bit name="reserved1" />
2055
		<bit name="smartTag" />
2056
		<uint2 name="reserved2a" />
2057
		<uint20 name="reserved2b" />
2058
		<uint16 name="spellInfo" condition="spell" />
2059
		<uint16 name="lid" condition="lang" />
2060
		<uint16 name="altLid" condition="altLang" />
2061
		<int16 name="bidi" condition="fBidi">
2062
			<limitation value="0|1" />
2063
		</int16>
2064
		<uint4 name="pp10runid" condition="fPp10ext" />
2065
		<uint4 name="reserved3a" condition="fPp10ext" />
2066
		<uint16 name="reserved3b" condition="fPp10ext" />
2067
		<uint7 name="reserved3bc" condition="fPp10ext" />
2068
		<bit name="grammarError" condition="fPp10ext" />
2069
		<type name="smartTags" type="SmartTags" condition="smartTag" />
2070
	</struct>
2071
	<struct name="SmartTags">
2072
		<uint32 name="count" />
2073
		<uint32 name="rgSmartTagIndex" count="count" />
2074
	</struct>
2075
	<struct name="TextMasterStyleAtom">
2076
		<type name="rh" type="RecordHeader">
2077
			<limitation name="recVer" value="0x0" />
2078
			<limitation name="recInstance" value="0|1|2|3|4|5|6|7|8" />
2079
			<limitation name="recType" value="0x0FA3" />
2080
		</type>
2081
		<uint16 name="cLevels">
2082
			<limitation expression="&lt;=5" />
2083
		</uint16>
2084
		<!--
2085
			level field of TextMasterStyleLevel is put here, because its presence
2086
			depends on this structure and currently child access to parent
2087
			properties is not supported
2088
		-->
2089
		<uint16 name="lstLvl1level" condition="cLevels&gt;0 &amp;&amp; rh.recInstance&gt;=5" />
2090
		<type name="lstLvl1" type="TextMasterStyleLevel" condition="cLevels&gt;0" />
2091
		<uint16 name="lstLvl2level" condition="cLevels&gt;1 &amp;&amp; rh.recInstance&gt;=5" />
2092
		<type name="lstLvl2" type="TextMasterStyleLevel" condition="cLevels&gt;1" />
2093
		<uint16 name="lstLvl3level" condition="cLevels&gt;2 &amp;&amp; rh.recInstance&gt;=5" />
2094
		<type name="lstLvl3" type="TextMasterStyleLevel" condition="cLevels&gt;2" />
2095
		<uint16 name="lstLvl4level" condition="cLevels&gt;3 &amp;&amp; rh.recInstance&gt;=5" />
2096
		<type name="lstLvl4" type="TextMasterStyleLevel" condition="cLevels&gt;3" />
2097
		<uint16 name="lstLvl5level" condition="cLevels&gt;4 &amp;&amp; rh.recInstance&gt;=5" />
2098
		<type name="lstLvl5" type="TextMasterStyleLevel" condition="cLevels&gt;4" />
2099
	</struct>
2100
	<struct name="TextMasterStyleLevel">
2101
		<type name="pf" type="TextPFException" />
2102
		<type name="cf" type="TextCFException" />
2103
	</struct>
2104
	<struct name="ExOleEmbedAtom">
2105
		<type name="rh" type="RecordHeader">
2106
			<limitation name="recVer" value="0x0" />
2107
			<limitation name="recInstance" value="0x0" />
2108
			<limitation name="recType" value="0x0FCD" />
2109
			<limitation name="recLen" value="0x8" />
2110
		</type>
2111
		<uint32 name="exColorFollow">
2112
			<limitation value="0|1|2" />
2113
		</uint32>
2114
		<uint8 name="fCantLockServer" />
2115
		<uint8 name="fNoSizeToServer" />
2116
		<uint8 name="fIsTable" />
2117
		<uint8 name="unused" />
2118
	</struct>
2119
	<struct name="DocumentAtom">
2120
		<type name="rh" type="RecordHeader">
2121
			<limitation name="recVer" value="1" />
2122
			<limitation name="recInstance" value="0x0" />
2123
			<limitation name="recType" value="0x03E9" />
2124
			<limitation name="recLen" value="0x28" />
2125
		</type>
2126
		<type name="slideSize" type="PointStruct" />
2127
		<type name="notesSize" type="PointStruct" />
2128
		<type name="serverZoom" type="RatioStruct">
2129
			<limitation expression="numer*denom &gt; 0" />
2130
		</type>
2131
		<uint32 name="notesMasterPersistIdRef" />
2132
		<uint32 name="handoutMasterPersistIdRef" />
2133
		<uint16 name="firstSlideNumber">
2134
			<limitation expression="&lt;10000" />
2135
		</uint16>
2136
		<uint16 name="slideSizeType">
2137
			<limitation value="0|1|2|3|4|5|6" />
2138
		</uint16>
2139
		<uint8 name="fSaveWithFonts" />
2140
		<uint8 name="fOmitTitlePlace" />
2141
		<uint8 name="fRightToLeft" />
2142
		<uint8 name="fShowComments" />
2143
	</struct>
2144
	<struct name="PointStruct">
2145
		<int32 name="x" />
2146
		<int32 name="y" />
2147
	</struct>
2148
	<struct name="RatioStruct">
2149
		<int32 name="numer" />
2150
		<int32 name="denom">
2151
			<limitation expression="!= 0" />
2152
		</int32>
2153
	</struct>
2154
	<struct name="PersistDirectoryAtom">
2155
		<type name="rh" type="RecordHeader">
2156
			<limitation name="recVer" value="0" />
2157
			<limitation name="recInstance" value="0" />
2158
			<limitation name="recType" value="0x1772" />
2159
		</type>
2160
		<type name="rgPersistDirEntry" type="PersistDirectoryEntry"
2161
			array="true" size="rh.recLen" />
2162
	</struct>
2163
	<struct name="UnknownDocumentContainerChild">
2164
		<type name="rh" type="RecordHeader">
2165
			<limitation name="recType"
2166
				value="0x416|0x41A|0x101A|0x1773|0x1788|0x178c|0x178d" />
2167
		</type>
2168
		<uint8 name="unknown" count="rh.recLen" />
2169
	</struct>
2170
	<struct name="UnknownOfficeArtClientDataChild">
2171
		<type name="rh" type="RecordHeader">
2172
			<limitation name="recVer" value="0" />
2173
			<limitation name="recInstance" value="0" />
2174
			<limitation name="recType" value="0xFE8|0x1019" />
2175
		</type>
2176
		<uint8 name="unknown" count="rh.recLen" />
2177
	</struct>
2178
	<struct name="UnknownSlideContainerChild">
2179
		<type name="rh" type="RecordHeader">
2180
			<limitation name="recVer" value="0" />
2181
			<limitation name="recInstance" value="0" />
2182
			<limitation name="recType" value="0x101D" />
2183
		</type>
2184
		<uint8 name="unknown" count="rh.recLen" />
2185
	</struct>
2186
	<struct name="UnknownTextContainerChild">
2187
		<type name="rh" type="RecordHeader">
2188
			<limitation name="recVer" value="3" />
2189
			<limitation name="recInstance" value="9" />
2190
			<limitation name="recType" value="0" />
2191
		</type>
2192
		<uint8 name="unknown" count="rh.recLen" />
2193
	</struct>
2194
	<struct name="PersistDirectoryEntry">
2195
		<uint20 name="persistId" />
2196
		<uint12 name="cPersist" />
2197
		<uint32 name="rgPersistOffset" count="cPersist" />
2198
	</struct>
2199
	<struct name="PersistIdRef">
2200
		<uint32 name="anon">
2201
			<!--
2202
				TODO A 4-byte unsigned integer that specifies a reference to a
2203
				persist object. It MUST be 0x00000000 or equal to a persist object
2204
				identifier specified by a PersistDirectoryAtom record. The value
2205
				0x00000000 specifies a null reference.
2206
			-->
2207
		</uint32>
2208
	</struct>
2209
	<struct name="MasterOrSlideContainer">
2210
		<choice name="anon">
2211
			<type type="MainMasterContainer" />
2212
			<type type="SlideContainer" />
2213
		</choice>
2214
	</struct>
2215
	<struct name="MainMasterContainer">
2216
		<type name="rh" type="RecordHeader">
2217
			<limitation name="recVer" value="0xF" />
2218
			<limitation name="recInstance" value="0x0" />
2219
			<limitation name="recType" value="0x03F8" />
2220
		</type>
2221
		<type name="slideAtom" type="SlideAtom" />
2222
		<!--
2223
			it is not documented that a SlideShowSlideInfoAtom may appear here
2224
		-->
2225
		<type name="unknown" type="SlideShowSlideInfoAtom" optional="true" />
2226
		<type name="rgSchemeListElementColorScheme" type="SchemeListElementColorSchemeAtom"
2227
			array="true" />
2228
		<type name="rgTextMasterStyle" type="TextMasterStyleAtom" array="true" />
2229
		<type name="roundTripOArtTextSTyles12Atom" type="RoundTripOArtTextStyles12Atom"
2230
			optional="true" />
2231
		<type name="slideShowInfoAtom" type="SlideShowSlideInfoAtom"
2232
			optional="true" />
2233
		<type name="perSlideHeadersFootersContainer" type="PerSlideHeadersFootersContainer"
2234
			optional="true" />
2235
		<type name="drawing" type="DrawingContainer" />
2236
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2237
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2238
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2239
			optional="true" />
2240
		<type name="rgRoundTripMainMaster" type="RoundTripMainMasterRecord"
2241
			array="true" />
2242
		<type name="templateNameAtom" type="TemplateNameAtom" optional="true" />
2243
		<!--
2244
			it is not documented that a SlideProgTagsContainer may appear here
2245
		-->
2246
		<type name="unknown3" type="SlideProgTagsContainer" optional="true" />
2247
	</struct>
2248
	<struct name="SchemeListElementColorSchemeAtom">
2249
		<type name="rh" type="RecordHeader">
2250
			<limitation name="recVer" value="0" />
2251
			<limitation name="recInstance" value="6" />
2252
			<limitation name="recType" value="0x7F0" />
2253
			<limitation name="recLen" value="0x20" />
2254
		</type>
2255
		<type name="rgSchemeColor" type="ColorStruct" count="8" />
2256
	</struct>
2257
	<struct name="RoundTripOArtTextStyles12Atom">
2258
		<type name="rh" type="RecordHeader">
2259
			<limitation name="recVer" value="0" />
2260
			<limitation name="recInstance" value="0" />
2261
			<limitation name="recType" value="0x423" />
2262
		</type>
2263
		<uint8 name="todo" count="rh.recLen" />
2264
	</struct>
2265
	<struct name="SlideNameAtom">
2266
		<type name="rh" type="RecordHeader">
2267
			<limitation name="recVer" value="0" />
2268
			<limitation name="recInstance" value="3" />
2269
			<limitation name="recType" value="0x0FBA" />
2270
			<limitation name="recLen" expression="%2==0" />
2271
		</type>
2272
		<uint16 name="slideName" count="rh.recLen/2" />
2273
	</struct>
2274
	<struct name="SlideProgTagsContainer">
2275
		<type name="rh" type="RecordHeader">
2276
			<limitation name="recVer" value="0xF" />
2277
			<limitation name="recInstance" value="0" />
2278
			<limitation name="recType" value="0x1388" />
2279
		</type>
2280
		<type name="rgTypeRec" type="SlideProgTagsSubContainerOrAtom"
2281
			array="true" size="rh.recLen" />
2282
	</struct>
2283
	<struct name="SlideProgTagsSubContainerOrAtom">
2284
		<choice name="anon">
2285
			<type type="ProgStringTagContainer" />
2286
			<type type="SlideProgBinaryTagContainer" />
2287
		</choice>
2288
	</struct>
2289
	<struct name="SlideProgBinaryTagContainer">
2290
		<type name="rh" type="RecordHeader">
2291
			<limitation name="recVer" value="0xF" />
2292
			<limitation name="recInstance" value="0" />
2293
			<limitation name="recType" value="0x138A" />
2294
		</type>
2295
		<type name="rec" type="SlideProgBinaryTagSubContainerOrAtom" />
2296
	</struct>
2297
	<struct name="SlideProgBinaryTagSubContainerOrAtom">
2298
		<choice name="anon">
2299
			<type type="PP9SlideBinaryTagExtension" />
2300
			<!--
2301
				PP12 must come first because it fail if it is a PP10, but PP10 does
2302
				not fail if it is PP12.
2303
			-->
2304
			<type type="PP12SlideBinaryTagExtension" />
2305
			<type type="PP10SlideBinaryTagExtension" />
2306
			<type type="UnknownBinaryTag" />
2307
		</choice>
2308
	</struct>
2309
	<struct name="PP9SlideBinaryTagExtension">
2310
		<type name="rh" type="RecordHeader">
2311
			<limitation name="recVer" value="0" />
2312
			<limitation name="recInstance" value="0" />
2313
			<limitation name="recType" value="0xFBA" />
2314
			<limitation name="recLen" value="0xE" />
2315
		</type>
2316
		<uint16 name="tagName" count="7">
2317
			<!-- <limitation value='"___PPT9"' /> -->
2318
		</uint16>
2319
		<type name="rhData" type="RecordHeader">
2320
			<limitation name="recVer" value="0" />
2321
			<limitation name="recInstance" value="0" />
2322
			<limitation name="recType" value="0x138B" />
2323
		</type>
2324
		<type name="rgTextMasterStyleAtom" type="TextMasterStyle9Atom"
2325
			array="true" />
2326
	</struct>
2327
	<struct name="PP10SlideBinaryTagExtension">
2328
		<type name="rh" type="RecordHeader">
2329
			<limitation name="recVer" value="0" />
2330
			<limitation name="recInstance" value="0" />
2331
			<limitation name="recType" value="0xFBA" />
2332
			<limitation name="recLen" value="0x10" />
2333
		</type>
2334
		<uint16 name="tagName" count="8">
2335
			<!-- <limitation value='"___PPT10"' />-->
2336
		</uint16>
2337
		<type name="rhData" type="RecordHeader">
2338
			<limitation name="recVer" value="0" />
2339
			<limitation name="recInstance" value="0" />
2340
			<limitation name="recType" value="0x138B" />
2341
		</type>
2342
		<type name="rgTextMasterStyleAtom" type="TextMasterStyle10Atom"
2343
			array="true" />
2344
		<type name="rgComment10Container" type="Comment10Container"
2345
			array="true" />
2346
		<type name="linkedSlideAtom" type="LinkedSlide10Atom" optional="true" />
2347
		<type name="rgLinkedShape10Atom" type="LinkedShape10Atom" array="true" />
2348
		<type name="slideFlagsAtom" type="SlideFlags10Atom" optional="true" />
2349
		<type name="slideTimeAtom" type="SlideTime10Atom" optional="true" />
2350
		<!--
2351
			Structures with a member with rectype 0x101d occur in strange places.
2352
		-->
2353
		<type name="unknown" type="UnknownSlideContainerChild" optional="true" />
2354
		<type name="hashCodeAtom" type="HashCode10Atom" optional="true" />
2355
		<type name="extTimeNodeContainer" type="ExtTimeNodeContainer"
2356
			optional="true" />
2357
		<type name="buildListContainer" type="BuildListContainer"
2358
			optional="true" />
2359
	</struct>
2360
	<struct name="Comment10Container">
2361
		<type name="rh" type="RecordHeader">
2362
			<limitation name="recVer" value="0xF" />
2363
			<limitation name="recInstance" value="0" />
2364
			<limitation name="recType" value="0x2EE0" />
2365
		</type>
2366
		<uint8 name="todo" count="rh.recLen" />
2367
	</struct>
2368
	<struct name="Comment10Atom">
2369
		<type name="rh" type="RecordHeader">
2370
			<limitation name="recVer" value="0" />
2371
			<limitation name="recInstance" value="0" />
2372
			<limitation name="recType" value="0x2EE1" />
2373
			<limitation name="recLen" value="0x1C" />
2374
		</type>
2375
		<uint8 name="todo" count="rh.recLen" />
2376
	</struct>
2377
	<struct name="LinkedSlide10Atom">
2378
		<type name="rh" type="RecordHeader">
2379
			<limitation name="recVer" value="0" />
2380
			<limitation name="recInstance" value="0" />
2381
			<limitation name="recType" value="0x2EE7" />
2382
			<limitation name="recLen" value="8" />
2383
		</type>
2384
		<uint32 name="linkedSlideIdRef" />
2385
		<int32 name="clinkedShapes" />
2386
	</struct>
2387
	<struct name="LinkedShape10Atom">
2388
		<type name="rh" type="RecordHeader">
2389
			<limitation name="recVer" value="0" />
2390
			<limitation name="recInstance" value="0" />
2391
			<limitation name="recType" value="0x2EE6" />
2392
			<limitation name="recLen" value="8" />
2393
		</type>
2394
		<uint32 name="shapeIdRef" />
2395
		<uint32 name="linkedShapeIdRef" />
2396
	</struct>
2397
	<struct name="SlideFlags10Atom">
2398
		<type name="rh" type="RecordHeader">
2399
			<limitation name="recVer" value="0" />
2400
			<limitation name="recInstance" value="0" />
2401
			<limitation name="recType" value="0x2EEA" />
2402
			<limitation name="recLen" value="4" />
2403
		</type>
2404
		<bit name="fPreserveMaster" />
2405
		<bit name="fOverrideMasterAnimatino" />
2406
		<uint14 name="unuseda" />
2407
		<uint16 name="unusedb" />
2408
	</struct>
2409
	<struct name="SlideTime10Atom">
2410
		<type name="rh" type="RecordHeader">
2411
			<limitation name="recVer" value="0" />
2412
			<limitation name="recInstance" value="0" />
2413
			<limitation name="recType" value="0x2EEB" />
2414
			<limitation name="recLen" value="8" />
2415
		</type>
2416
		<type name="fileTime" type="FILETIME" />
2417
	</struct>
2418
	<struct name="HashCode10Atom">
2419
		<type name="rh" type="RecordHeader">
2420
			<limitation name="recVer" value="0" />
2421
			<limitation name="recInstance" value="0" />
2422
			<limitation name="recType" value="0x2B00" />
2423
			<limitation name="recLen" value="4" />
2424
		</type>
2425
		<uint32 name="hash" />
2426
	</struct>
2427
	<struct name="ExtTimeNodeContainer">
2428
		<type name="rh" type="RecordHeader">
2429
			<limitation name="recVer" value="0xF" />
2430
			<limitation name="recInstance" value="1" />
2431
			<limitation name="recType" value="0xF144" />
2432
		</type>
2433
		<uint8 name="todo" count="rh.recLen" />
2434
	</struct>
2435
	<struct name="BuildListContainer">
2436
		<type name="rh" type="RecordHeader">
2437
			<limitation name="recVer" value="0xF" />
2438
			<limitation name="recInstance" value="0" />
2439
			<limitation name="recType" value="0x2B02" />
2440
		</type>
2441
		<uint8 name="todo" count="rh.recLen" />
2442
	</struct>
2443
	<struct name="PP12SlideBinaryTagExtension">
2444
		<type name="rh" type="RecordHeader">
2445
			<limitation name="recVer" value="0" />
2446
			<limitation name="recInstance" value="0" />
2447
			<limitation name="recType" value="0xFBA" />
2448
			<limitation name="recLen" value="0x10" />
2449
		</type>
2450
		<uint16 name="tagName" count="8">
2451
			<!-- <limitation value='"___PPT12"' />-->
2452
		</uint16>
2453
		<type name="rhData" type="RecordHeader">
2454
			<limitation name="recVer" value="0" />
2455
			<limitation name="recInstance" value="0" />
2456
			<limitation name="recType" value="0x138B" />
2457
		</type>
2458
		<type name="roundTripHeaderFooterDefaultsAtom" type="RoundTripHeaderFooterDefaults12Atom"
2459
			condition="rhData.recLen &gt; 8" />
2460
	</struct>
2461
	<struct name="RoundTripHeaderFooterDefaults12Atom">
2462
		<type name="rh" type="RecordHeader">
2463
			<limitation name="recVer" value="0" />
2464
			<limitation name="recInstance" value="0" />
2465
			<limitation name="recType" value="0x0424" />
2466
			<limitation name="recLen" value="1" />
2467
		</type>
2468
		<bit name="fIncludeDate" />
2469
		<bit name="fIncludeFooter" />
2470
		<bit name="fIncludeHeader" />
2471
		<bit name="fIncludeSlideNumber" />
2472
		<uint4 name="reserved" />
2473
	</struct>
2474
	<struct name="ProgStringTagContainer">
2475
		<type name="rh" type="RecordHeader">
2476
			<limitation name="recVer" value="0xF" />
2477
			<limitation name="recInstance" value="0" />
2478
			<limitation name="recType" value="0x1389" />
2479
		</type>
2480
		<type name="tagNameAtom" type="TagNameAtom" />
2481
		<type name="tagValueAtom" type="TagValueAtom" optional="true" />
2482
	</struct>
2483
	<struct name="TagNameAtom">
2484
		<type name="rh" type="RecordHeader">
2485
			<limitation name="recVer" value="0" />
2486
			<limitation name="recInstance" value="0" />
2487
			<limitation name="recType" value="0xFBA" />
2488
			<limitation name="recLen" expression="%2 == 0 " />
2489
		</type>
2490
		<uint16 name="tagName" count="rh.recLen/2" />
2491
	</struct>
2492
	<struct name="TagValueAtom">
2493
		<type name="rh" type="RecordHeader">
2494
			<limitation name="recVer" value="0" />
2495
			<limitation name="recInstance" value="1" />
2496
			<limitation name="recType" value="0xFBA" />
2497
		</type>
2498
		<uint16 name="tagValue" count="rh.recLen/2" />
2499
	</struct>
2500
	<struct name="RoundTripMainMasterRecord">
2501
		<type name="rh" type="RecordHeader">
2502
			<limitation name="recType"
2503
				value="0x41C|0x40E|0x040F|0x41E|0x0423|0x2B0D|0x2B0B|0x041D|0x2B0C|0x101D" />
2504
		</type>
2505
		<uint8 name="todo" count="rh.recLen" />
2506
	</struct>
2507
	<struct name="TemplateNameAtom">
2508
		<type name="rh" type="RecordHeader">
2509
			<limitation name="recVer" value="0" />
2510
			<limitation name="recInstance" value="2" />
2511
			<limitation name="recType" value="0x0FBA" />
2512
			<limitation name="recLen" expression="%2==0" />
2513
		</type>
2514
		<uint16 name="templateName" count="rh.recLen/2" />
2515
	</struct>
2516
	<struct name="SlideContainer">
2517
		<type name="rh" type="RecordHeader">
2518
			<limitation name="recVer" value="0xF" />
2519
			<limitation name="recInstance" value="0x0" />
2520
			<limitation name="recType" value="0x03EE" />
2521
		</type>
2522
		<type name="slideAtom" type="SlideAtom" />
2523
		<type name="slideShowSlideInfoAtom" type="SlideShowSlideInfoAtom"
2524
			optional="true" />
2525
		<type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer"
2526
			optional="true" />
2527
		<type name="rtSlideSyncInfo12" type="RoundTripSlideSyncInfo12Container"
2528
			optional="true" />
2529
		<type name="drawing" type="DrawingContainer" />
2530
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2531
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2532
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2533
			optional="true" />
2534
		<!--
2535
			perhaps this undocumented type is part fo the RoundTripSlideRecord
2536
			collection
2537
		-->
2538
		<type name="unknown" type="UnknownSlideContainerChild" optional="true" />
2539
		<type name="rgRoundTripSlide" type="RoundTripSlideRecord" array="true" />
2540
		<!--
2541
			perhaps this undocumented type is part fo the RoundTripSlideRecord
2542
			collection
2543
		-->
2544
		<type name="unknown2" type="UnknownSlideContainerChild" optional="true" />
2545
	</struct>
2546
	<struct name="RoundTripSlideSyncInfo12Container">
2547
		<type name="rh" type="RecordHeader">
2548
			<limitation name="recVer" value="0xF" />
2549
			<limitation name="recInstance" value="0" />
2550
			<limitation name="recType" value="0x3714" />
2551
		</type>
2552
		<uint8 name="todo" count="rh.recLen" />
2553
	</struct>
2554
	<struct name="NotesContainer">
2555
		<type name="rh" type="RecordHeader">
2556
			<limitation name="recVer" value="0xF" />
2557
			<limitation name="recInstance" value="0" />
2558
			<limitation name="recType" value="0x03F0" />
2559
		</type>
2560
		<type name="notesAtom" type="NotesAtom" />
2561
		<!--
2562
			perSlideHFContainer is not in the documentation
2563
		-->
2564
		<type name="perSlideHFContainer" type="PerSlideHeadersFootersContainer"
2565
			optional="true" />
2566
		<type name="drawing" type="DrawingContainer" />
2567
		<type name="slideSchemeColorSchemeAtom" type="SlideSchemeColorSchemeAtom" />
2568
		<type name="slideNameAtom" type="SlideNameAtom" optional="true" />
2569
		<type name="slideProgTagsContainer" type="SlideProgTagsContainer"
2570
			optional="true" />
2571
		<!--
2572
			perSlideHFContainer2 is not in the documentation
2573
		-->
2574
		<type name="perSlideHFContainer2" type="PerSlideHeadersFootersContainer"
2575
			optional="true" />
2576
		<type name="rgNotesRoundTripAtom" type="NotesRoundTripAtom"
2577
			array="true" />
2578
	</struct>
2579
	<struct name="NotesAtom">
2580
		<type name="rh" type="RecordHeader">
2581
			<limitation name="recVer" value="1" />
2582
			<limitation name="recInstance" value="0" />
2583
			<limitation name="recType" value="0x3F1" />
2584
			<limitation name="recLen" value="0x8" />
2585
		</type>
2586
		<uint32 name="slideIdRef" />
2587
		<type name="slideFlags" type="SlideFlags" />
2588
		<uint16 name="unused" />
2589
	</struct>
2590
	<struct name="SlideFlags">
2591
		<bit name="fMasterObjects" />
2592
		<bit name="fMasterScheme" />
2593
		<bit name="fMasterBackground" />
2594
		<uint5 name="unused1" />
2595
		<uint8 name="unused2" />
2596
	</struct>
2597
	<struct name="NotesRoundTripAtom">
2598
		<type name="rh" type="RecordHeader">
2599
			<limitation name="recVer" value="0" />
2600
			<limitation name="recInstance" value="0" />
2601
			<limitation name="recType" value="0x40E|0x40F|0x427" />
2602
		</type>
2603
		<uint8 name="todo" count="rh.recLen" />
2604
	</struct>
2605
	<struct name="HandoutContainer">
2606
		<type name="rh" type="RecordHeader">
2607
			<limitation name="recVer" value="0xF" />
2608
			<limitation name="recInstance" value="0" />
2609
			<limitation name="recType" value="0x0FC9" />
2610
		</type>
2611
		<uint8 name="todo" count="rh.recLen" />
2612
	</struct>
2613
	<struct name="ExControlStg">
2614
		<type name="rh" type="RecordHeader">
2615
			<limitation name="recVer" value="0" />
2616
			<limitation name="recInstance" value="0|1" />
2617
			<limitation name="recType" value="0x1011" />
2618
		</type>
2619
		<uint8 name="todo" count="rh.recLen" />
2620
	</struct>
2621
	<struct name="ExOleObjStg">
2622
		<type name="rh" type="RecordHeader">
2623
			<limitation name="recVer" value="0" />
2624
			<limitation name="recInstance" value="0" />
2625
			<limitation name="recType" value="0x1011" />
2626
		</type>
2627
		<uint8 name="todo" count="rh.recLen" />
2628
	</struct>
2629
	<struct name="UserEditAtom">
2630
		<type name="rh" type="RecordHeader">
2631
			<limitation name="recVer" value="0" />
2632
			<limitation name="recInstance" value="0" />
2633
			<limitation name="recType" value="0x0FF5" />
2634
			<limitation name="recLen" value="0x1C|0x20" />
2635
		</type>
2636
		<uint32 name="lastSlideIdRef" />
2637
		<uint16 name="version" />
2638
		<uint8 name="minorVersion">
2639
			<limitation value="0" />
2640
		</uint8>
2641
		<uint8 name="majorVersion">
2642
			<limitation value="3" />
2643
		</uint8>
2644
		<uint32 name="offsetLastEdit">
2645
			<!--  TODO: check with offset of this edit -->
2646
		</uint32>
2647
		<uint32 name="offsetPersistDirectory">
2648
			<!-- <limitation expression="&gt;offsetLastEdit" /> -->
2649
			<!--
2650
				TODO: check with offset of this edit
2651
			-->
2652
		</uint32>
2653
		<uint32 name="docPersistIdRef">
2654
			<limitation value="1" />
2655
		</uint32>
2656
		<uint32 name="persistIdSeed" />
2657
		<uint16 name="lastView">
2658
			<limitation expression="&lt;=18" />
2659
		</uint16>
2660
		<uint16 name="unused" />
2661
		<uint32 name="encryptSessionPersistIdRef" condition="rh.recLen==32" />
2662
		<type name="zeroPadding" type="ZeroByte" array="true" />
2663
	</struct>
2664
	<struct name="VbaProjectStg">
2665
		<type name="rh" type="RecordHeader">
2666
			<limitation name="recVer" value="0" />
2667
			<limitation name="recInstance" value="0|1" />
2668
			<limitation name="recType" value="0x1011" />
2669
		</type>
2670
		<uint8 name="todo" count="rh.recLen" />
2671
	</struct>
2672
	<struct name="SlideAtom">
2673
		<type name="rh" type="RecordHeader">
2674
			<limitation name="recVer" value="0x2" />
2675
			<limitation name="recInstance" value="0x0" />
2676
			<limitation name="recType" value="0x03EF" />
2677
			<limitation name="recLen" value="0x18" />
2678
		</type>
2679
		<uint32 name="geom" />
2680
		<uint8 name="rgPlaceholderTypes" count="8" />
2681
		<uint32 name="masterIdRef" />
2682
		<uint32 name="notesIdRef" />
2683
		<type name="slideFlags" type="SlideFlags" />
2684
		<uint16 name="unused" />
2685
	</struct>
2686
	<struct name="SlideShowSlideInfoAtom">
2687
		<type name="rh" type="RecordHeader">
2688
			<limitation name="recVer" value="0" />
2689
			<limitation name="recInstance" value="0" />
2690
			<limitation name="recType" value="0x03F9" />
2691
			<limitation name="recLen" value="0x10" />
2692
		</type>
2693
		<uint32 name="slidetime" />
2694
		<uint32 name="slideIdRef" />
2695
		<uint8 name="effectDirection" />
2696
		<uint8 name="effectType" />
2697
		<bit name="fManualAdvance" />
2698
		<bit name="reserved" />
2699
		<bit name="fHidden" />
2700
		<bit name="reserved2" />
2701
		<bit name="fSound" />
2702
		<bit name="reserved3" />
2703
		<bit name="fLoopSound" />
2704
		<bit name="reserved4" />
2705
		<bit name="fStopSound" />
2706
		<bit name="freserved5" />
2707
		<bit name="fAutoAdvance" />
2708
		<bit name="reserved6" />
2709
		<bit name="fCursorVisible" />
2710
		<uint3 name="reserved7" />
2711
		<uint8 name="speed" />
2712
		<uint8 name="unused" count="3" />
2713
	</struct>
2714
	<struct name="SlideShowDocInfoAtom">
2715
		<type name="rh" type="RecordHeader">
2716
			<limitation name="recVer" value="1" />
2717
			<limitation name="recInstance" value="0" />
2718
			<limitation name="recType" value="0x0401" />
2719
			<limitation name="recLen" value="0x50" />
2720
		</type>
2721
		<type name="penColor" type="ColorIndexStruct" />
2722
		<int32 name="restartTime" />
2723
		<int16 name="startSlide">
2724
			<limitation expression="&gt;=0" />
2725
		</int16>
2726
		<int16 name="endSlide">
2727
			<limitation expression="&gt;=0" />
2728
		</int16>
2729
		<uint8 name="namedShow" count="64" />
2730
		<bit name="fAutoAdvance" />
2731
		<bit name="fWillSkipBuilds" />
2732
		<bit name="fUseSlideRange" />
2733
		<bit name="fDocUseNamedShow" />
2734
		<bit name="fShowBrowseMode" />
2735
		<bit name="fKioskMode" />
2736
		<bit name="fWillSkipNarration" />
2737
		<bit name="fLoopContinuously" />
2738
		<bit name="fHideScrollBar" />
2739
		<uint7 name="reserved">
2740
			<!--
2741
				This value should be zero, but it is not always zero in practice.
2742
			-->
2743
		</uint7>
2744
		<uint16 name="unused" />
2745
	</struct>
2746
	<struct name="DrawingGroupContainer">
2747
		<type name="rh" type="RecordHeader">
2748
			<limitation name="recVer" value="0xF" />
2749
			<limitation name="recInstance" value="0" />
2750
			<limitation name="recType" value="0x040B" />
2751
		</type>
2752
		<type name="OfficeArtDgg" type="OfficeArtDggContainer" />
2753
	</struct>
2754
	<struct name="DrawingContainer">
2755
		<type name="rh" type="RecordHeader">
2756
			<limitation name="recVer" value="0xF" />
2757
			<limitation name="recInstance" value="0" />
2758
			<limitation name="recType" value="0x040C" />
2759
		</type>
2760
		<type name="OfficeArtDg" type="OfficeArtDgContainer" />
2761
	</struct>
2762
	<struct name="SlideSchemeColorSchemeAtom">
2763
		<type name="rh" type="RecordHeader">
2764
			<limitation name="recVer" value="0" />
2765
			<limitation name="recInstance" value="1" />
2766
			<limitation name="recType" value="0x07F0" />
2767
			<limitation name="recLen" value="0x20" />
2768
		</type>
2769
		<type name="rgSchemeColor" type="ColorStruct" count="8" />
2770
	</struct>
2771
	<struct name="RoundTripSlideRecord">
2772
		<type name="rh" type="RecordHeader">
2773
			<!--  value 0x2b0c is deprecated, but can occur -->
2774
			<limitation name="recType"
2775
				value="0x40E|0x40F|0x41D|0x3714|0x2B0D|0x2B0B|0x2B0C|0x422" />
2776
			<!--
2777
				0x40E|0x40F|0x41C|0x41D|0x41E|0x41F|0x420|0x422|0x423|0x425|0x426|0x427|0x428"
2778
			-->
2779
		</type>
2780
		<uint8 name="todo" count="rh.recLen" />
2781
	</struct>
2782
	<struct name="NamedShowsContainer">
2783
		<type name="rh" type="RecordHeader">
2784
			<limitation name="recVer" value="0xF" />
2785
			<limitation name="recInstance" value="0" />
2786
			<limitation name="recType" value="0x410" />
2787
		</type>
2788
		<uint8 name="todo" count="rh.recLen" />
2789
	</struct>
2790
	<struct name="SummaryContainer">
2791
		<type name="rh" type="RecordHeader">
2792
			<limitation name="recVer" value="0xF" />
2793
			<limitation name="recInstance" value="0" />
2794
			<limitation name="recType" value="0x402" />
2795
		</type>
2796
		<uint8 name="todo" count="rh.recLen" />
2797
	</struct>
2798
	<struct name="DocRoutingSlipAtom">
2799
		<type name="rh" type="RecordHeader">
2800
			<limitation name="recVer" value="0" />
2801
			<limitation name="recInstance" value="0" />
2802
			<limitation name="recType" value="0x406" />
2803
		</type>
2804
		<uint8 name="todo" count="rh.recLen" />
2805
	</struct>
2806
	<struct name="PrintOptionsAtom">
2807
		<type name="rh" type="RecordHeader">
2808
			<limitation name="recVer" value="0" />
2809
			<limitation name="recInstance" value="0" />
2810
			<limitation name="recType" value="0x1770" />
2811
			<limitation name="recLen" value="5" />
2812
		</type>
2813
		<uint8 name="todo" count="rh.recLen" />
2814
	</struct>
2815
	<struct name="RoundTripCustomTableStyles12Atom">
2816
		<type name="rh" type="RecordHeader">
2817
			<!--  value 0xF is not documented -->
2818
			<limitation name="recVer" value="0|0xF" />
2819
			<limitation name="recInstance" value="0" />
2820
			<limitation name="recType" value="0x428" />
2821
		</type>
2822
		<uint8 name="todo" count="rh.recLen" />
2823
	</struct>
2824
	<struct name="RoundTripCompositeMasterId12Atom">
2825
		<type name="rh" type="RecordHeader">
2826
			<limitation name="recVer" value="0" />
2827
			<limitation name="recInstance" value="0" />
2828
			<limitation name="recType" value="0x41D" />
2829
			<limitation name="recLen" value="4" />
2830
		</type>
2831
		<uint32 name="compositeMasterId" />
2832
	</struct>
2833
	<struct name="ColorStruct">
2834
		<uint8 name="red" />
2835
		<uint8 name="green" />
2836
		<uint8 name="blue" />
2837
		<uint8 name="unused" />
2838
	</struct>
2839
	<struct name="ExObjListContainer">
2840
		<type name="rh" type="RecordHeader">
2841
			<limitation name="recVer" value="0xF" />
2842
			<limitation name="recInstance" value="0x0" />
2843
			<limitation name="recType" value="0x0409" />
2844
			<limitation name="recLen" expression="&gt;=12" />
2845
		</type>
2846
		<type name="exObjListAtom" type="ExObjListAtom" />
2847
		<type name="rgChildRec" type="ExObjListSubContainer" array="true"
2848
			size="rh.recLen-12" />
2849
	</struct>
2850
	<struct name="ExObjListAtom">
2851
		<type name="rh" type="RecordHeader">
2852
			<limitation name="recVer" value="0x0" />
2853
			<limitation name="recInstance" value="0x0" />
2854
			<limitation name="recType" value="0x040A" />
2855
			<limitation name="recLen" value="4" />
2856
		</type>
2857
		<int32 name="exObjIdSeed">
2858
			<limitation expression="&gt;=1" />
2859
			<!--
2860
				TODO:exObjIdSeed (4 bytes): A signed integer that specifies a seed
2861
				for creating a new ExObjId or ExHyperlinkId value. It MUST be
2862
				greater than or equal to the largest ExObjId value in the file as
2863
				specified by the ExMediaAtom record or ExOleObjAtom record and MUST
2864
				be greater than or equal to the largest ExHyperlinkId value in the
2865
				file as specified by the ExHyperlinkAtom record. It MUST be greater
2866
				than or equal to 0x00000001.
2867
			-->
2868
		</int32>
2869
	</struct>
2870
	<struct name="ExObjListSubContainer">
2871
		<choice name="anon">
2872
			<type type="ExAviMovieContainer" />
2873
			<type type="ExCDAudioContainer" />
2874
			<type type="ExControlContainer" />
2875
			<type type="ExHyperlinkContainer" />
2876
			<type type="ExMCIMovieContainer" />
2877
			<type type="ExMIDIAudioContainer" />
2878
			<type type="ExOleEmbedContainer" />
2879
			<type type="ExOleLinkContainer" />
2880
			<type type="ExWAVAudioEmbeddedContainer" />
2881
			<type type="ExWAVAudioLinkContainer" />
2882
			<type type="UnknownExObjListSubContainerChild" />
2883
		</choice>
2884
	</struct>
2885
	<struct name="ExAviMovieContainer">
2886
		<type name="rh" type="OfficeArtRecordHeader">
2887
			<limitation name="recVer" value="0xF" />
2888
			<limitation name="recInstance" value="0" />
2889
			<limitation name="recType" value="0x1006" />
2890
		</type>
2891
		<uint8 name="todo" count="rh.recLen" />
2892
	</struct>
2893
	<struct name="ExCDAudioContainer">
2894
		<type name="rh" type="OfficeArtRecordHeader">
2895
			<limitation name="recVer" value="0xF" />
2896
			<limitation name="recInstance" value="0" />
2897
			<limitation name="recType" value="0x100E" />
2898
		</type>
2899
		<uint8 name="todo" count="rh.recLen" />
2900
	</struct>
2901
	<struct name="ExControlContainer">
2902
		<type name="rh" type="OfficeArtRecordHeader">
2903
			<limitation name="recVer" value="0xF" />
2904
			<limitation name="recInstance" value="0" />
2905
			<limitation name="recType" value="0xFEE" />
2906
		</type>
2907
		<type name="exControlAtom" type="ExControlAtom" />
2908
		<type name="exOleObjAtom" type="ExOleObjAtom" />
2909
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
2910
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
2911
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
2912
		<type name="metafile" type="MetafileBlob" optional="true" />
2913
	</struct>
2914
	<struct name="ExControlAtom">
2915
		<type name="rh" type="OfficeArtRecordHeader">
2916
			<limitation name="recVer" value="0" />
2917
			<limitation name="recInstance" value="0" />
2918
			<limitation name="recType" value="0xFFB" />
2919
			<limitation name="recLen" value="4" />
2920
		</type>
2921
		<uint32 name="slideIdRef" />
2922
	</struct>
2923
	<struct name="ExHyperlinkContainer">
2924
		<type name="rh" type="OfficeArtRecordHeader">
2925
			<limitation name="recVer" value="0xF" />
2926
			<limitation name="recInstance" value="0" />
2927
			<limitation name="recType" value="0xFD7" />
2928
		</type>
2929
		<type name="exHyperlinkAtom" type="ExHyperlinkAtom" />
2930
		<type name="friendlyNameAtom" type="FriendlyNameAtom" optional="true" />
2931
		<type name="targetAtom" type="TargetAtom" optional="true" />
2932
		<type name="locationAtom" type="LocationAtom" optional="true" />
2933
	</struct>
2934
	<struct name="ExHyperlinkAtom">
2935
		<type name="rh" type="OfficeArtRecordHeader">
2936
			<limitation name="recVer" value="0" />
2937
			<limitation name="recInstance" value="0" />
2938
			<limitation name="recType" value="0xFD3" />
2939
			<limitation name="recLen" value="4" />
2940
		</type>
2941
		<uint32 name="exHyperLinkId" />
2942
	</struct>
2943
	<struct name="FriendlyNameAtom">
2944
		<type name="rh" type="OfficeArtRecordHeader">
2945
			<limitation name="recVer" value="0" />
2946
			<limitation name="recInstance" value="0" />
2947
			<limitation name="recType" value="0xFBA" />
2948
			<limitation name="recLen" expression="%2==0" />
2949
		</type>
2950
		<uint16 name="friendlyName" count="rh.recLen/2" />
2951
	</struct>
2952
	<struct name="TargetAtom">
2953
		<type name="rh" type="OfficeArtRecordHeader">
2954
			<limitation name="recVer" value="0" />
2955
			<limitation name="recInstance" value="1" />
2956
			<limitation name="recType" value="0xFBA" />
2957
			<limitation name="recLen" expression="%2==0" />
2958
		</type>
2959
		<uint16 name="target" count="rh.recLen/2" />
2960
	</struct>
2961
	<struct name="LocationAtom">
2962
		<type name="rh" type="OfficeArtRecordHeader">
2963
			<limitation name="recVer" value="0" />
2964
			<limitation name="recInstance" value="3" />
2965
			<limitation name="recType" value="0xFBA" />
2966
			<limitation name="recLen" expression="%2==0" />
2967
		</type>
2968
		<uint16 name="location" count="rh.recLen/2" />
2969
	</struct>
2970
	<struct name="ExMCIMovieContainer">
2971
		<type name="rh" type="OfficeArtRecordHeader">
2972
			<limitation name="recVer" value="0xF" />
2973
			<limitation name="recInstance" value="0" />
2974
			<limitation name="recType" value="0x1007" />
2975
		</type>
2976
		<uint8 name="todo" count="rh.recLen" />
2977
	</struct>
2978
	<struct name="ExMIDIAudioContainer">
2979
		<type name="rh" type="OfficeArtRecordHeader">
2980
			<limitation name="recVer" value="0xF" />
2981
			<limitation name="recInstance" value="0" />
2982
			<limitation name="recType" value="0x100D" />
2983
		</type>
2984
		<uint8 name="todo" count="rh.recLen" />
2985
	</struct>
2986
	<struct name="ExWAVAudioEmbeddedContainer">
2987
		<type name="rh" type="OfficeArtRecordHeader">
2988
			<limitation name="recVer" value="0xF" />
2989
			<limitation name="recInstance" value="0" />
2990
			<limitation name="recType" value="0x100F" />
2991
		</type>
2992
		<uint8 name="todo" count="rh.recLen" />
2993
	</struct>
2994
	<struct name="ExWAVAudioLinkContainer">
2995
		<type name="rh" type="OfficeArtRecordHeader">
2996
			<limitation name="recVer" value="0xF" />
2997
			<limitation name="recInstance" value="0" />
2998
			<limitation name="recType" value="0x1010" />
2999
		</type>
3000
		<uint8 name="todo" count="rh.recLen" />
3001
	</struct>
3002
	<struct name="UnknownExObjListSubContainerChild">
3003
		<type name="rh" type="OfficeArtRecordHeader">
3004
			<limitation name="recVer" value="0xF" />
3005
			<limitation name="recInstance" value="0" />
3006
			<limitation name="recType" value="0xFEA" />
3007
		</type>
3008
		<uint8 name="todo" count="rh.recLen" />
3009
	</struct>
3010
	<struct name="ExOleLinkContainer">
3011
		<type name="rh" type="RecordHeader">
3012
			<limitation name="recVer" value="0xF" />
3013
			<limitation name="recInstance" value="0x0" />
3014
			<limitation name="recType" value="0x0FCE" />
3015
		</type>
3016
		<type name="exOleLinkAtom" type="ExOleLinkAtom" />
3017
		<type name="exOleObjAtom" type="ExOleObjAtom" />
3018
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
3019
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
3020
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
3021
		<type name="metafile" type="MetafileBlob" optional="true" />
3022
	</struct>
3023
	<struct name="ExOleEmbedContainer">
3024
		<type name="rh" type="RecordHeader">
3025
			<limitation name="recVer" value="0xF" />
3026
			<limitation name="recInstance" value="0x0" />
3027
			<limitation name="recType" value="0x0FCC" />
3028
		</type>
3029
		<type name="exOleEmbedAtom" type="ExOleEmbedAtom" />
3030
		<type name="exOleObjAtom" type="ExOleObjAtom" />
3031
		<type name="menuNameAtom" type="MenuNameAtom" optional="true" />
3032
		<type name="progIdAtom" type="ProgIDAtom" optional="true" />
3033
		<type name="clipboardNameAtom" type="ClipboardNameAtom" optional="true" />
3034
		<type name="metafile" type="MetafileBlob" optional="true" />
3035
	</struct>
3036
	<struct name="ExOleLinkAtom">
3037
		<type name="rh" type="RecordHeader">
3038
			<limitation name="recVer" value="0x0" />
3039
			<limitation name="recInstance" value="0x0" />
3040
			<limitation name="recType" value="0x0FD1" />
3041
			<limitation name="recLen" value="0xC" />
3042
		</type>
3043
		<uint32 name="slideIdRef">
3044
			<!--
3045
				A 4-byte unsigned integer that specifies a reference to a
3046
				presentation slide. It MUST be 0x00000000 or equal to the value of
3047
				the slideId field of a SlidePersistAtom record. The value 0x00000000
3048
				specifies a null reference.
3049
			-->
3050
		</uint32>
3051
		<uint32 name="oleUpdateMode" />
3052
		<uint32 name="unused" />
3053
	</struct>
3054
	<struct name="ExOleObjAtom">
3055
		<type name="rh" type="RecordHeader">
3056
			<limitation name="recVer" value="0x1" />
3057
			<limitation name="recInstance" value="0x0" />
3058
			<limitation name="recType" value="0x0FC3" />
3059
			<limitation name="recLen" value="0x18" />
3060
		</type>
3061
		<uint32 name="drawAspect" />
3062
		<uint32 name="type" />
3063
		<uint32 name="exObjId" />
3064
		<uint32 name="subType" />
3065
		<uint32 name="persistIdRef" />
3066
		<uint32 name="unused" />
3067
	</struct>
3068
	<struct name="MenuNameAtom">
3069
		<type name="rh" type="RecordHeader">
3070
			<limitation name="recVer" value="0x0" />
3071
			<limitation name="recInstance" value="0x1" />
3072
			<limitation name="recType" value="0x0FBA" />
3073
			<limitation name="recLen" expression="%2 == 0 " />
3074
		</type>
3075
		<uint8 name="menuName" count="rh.recLen" />
3076
	</struct>
3077
	<struct name="ProgIDAtom">
3078
		<type name="rh" type="RecordHeader">
3079
			<limitation name="recVer" value="0x0" />
3080
			<limitation name="recInstance" value="0x2" />
3081
			<limitation name="recType" value="0x0FBA" />
3082
			<limitation name="recLen" expression="%2 == 0 " />
3083
		</type>
3084
		<uint8 name="progId" count="rh.recLen" />
3085
	</struct>
3086
	<struct name="ClipboardNameAtom">
3087
		<type name="rh" type="RecordHeader">
3088
			<limitation name="recVer" value="0x0" />
3089
			<limitation name="recInstance" value="0x3" />
3090
			<limitation name="recType" value="0x0FBA" />
3091
			<limitation name="recLen" expression="%2 == 0 " />
3092
		</type>
3093
		<uint8 name="clipboardName" count="rh.recLen" />
3094
	</struct>
3095
	<struct name="MetafileBlob">
3096
		<type name="rh" type="RecordHeader">
3097
			<limitation name="recVer" value="0x0" />
3098
			<limitation name="recInstance" value="0x0" />
3099
			<limitation name="recType" value="0x0FC1" />
3100
			<limitation name="recLen" expression="&gt;16" />
3101
		</type>
3102
		<int16 name="mm" />
3103
		<int16 name="xExt" />
3104
		<int16 name="yExt" />
3105
		<uint8 name="data" count="rh.recLen-6" />
3106
	</struct>
3107
	<struct name="OfficeArtDggContainer">
3108
		<type name="rh" type="OfficeArtRecordHeader">
3109
			<limitation name="recVer" value="0xF" />
3110
			<limitation name="recInstance" value="0x0" />
3111
			<limitation name="recType" value="0x0F000" />
3112
		</type>
3113
		<type name="drawingGroup" type="OfficeArtFDGGBlock" />
3114
		<type name="blipStore" type="OfficeArtBStoreContainer" optional="true" />
3115
		<!--  different from spec -->
3116
		<!--
3117
			MS docs do not list drawingPrimaryOptions as optional
3118
		-->
3119
		<type name="drawingPrimaryOptions" type="OfficeArtFOPT" optional="true" />
3120
		<type name="drawingTertiaryOptions" type="OfficeArtTertiaryFOPT"
3121
			optional="true" />
3122
		<!--
3123
			MS docs do not list colorMRU as optional
3124
		-->
3125
		<type name="colorMRU" type="OfficeArtColorMRUContainer" optional="true" />
3126
		<!--
3127
			MS docs do not list splitColors as optional
3128
		-->
3129
		<type name="splitColors" type="OfficeArtSplitMenuColorContainer" />
3130
		<!--
3131
			sometimes the order is messed up in openoffice generated documents
3132
			This second blipSore takes that into account, but is not according to
3133
			the specification.
3134
		-->
3135
		<type name="blipStore2" type="OfficeArtBStoreContainer" optional="true" />
3136
		<!--
3137
			MS docs do not mention this instance of OfficeArtTertiaryFOPT
3138
		-->
3139
		<type name="unknown" type="OfficeArtTertiaryFOPT" optional="true" />
3140
	</struct>
3141
	<struct name="OfficeArtDgContainer">
3142
		<type name="rh" type="OfficeArtRecordHeader">
3143
			<limitation name="recVer" value="0xF" />
3144
			<limitation name="recInstance" value="0x0" />
3145
			<limitation name="recType" value="0xF002" />
3146
		</type>
3147
		<type name="drawingData" type="OfficeArtFDG" optional="true" />
3148
		<!-- MS documentation does not say regroupItems is optional -->
3149
		<type name="regroupItems" type="OfficeArtFRITContainer" optional="true" />
3150
		<!--
3151
			MS documentation does not say regroupItems is optional but it is at
3152
			least in Excel
3153
		-->
3154
		<type name="groupShape" type="OfficeArtSpgrContainer" optional="true" />
3155
		<!-- MS documentation does not say shape is optional -->
3156
		<type name="shape" type="OfficeArtSpContainer" optional="true" />
3157
		<!-- MS documentation does not say shape is optional -->
3158
		<type name="deletedShapes" type="OfficeArtSpgrContainerFileBlock"
3159
			array="true" />
3160
		<!--  according to ms spec, solvers is not optional -->
3161
		<type name="solvers" type="OfficeArtSolverContainer" optional="true" />
3162
	</struct>
3163
	<struct name="OfficeArtFDGGBlock">
3164
		<type name="rh" type="OfficeArtRecordHeader">
3165
			<limitation name="recVer" value="0x0" />
3166
			<limitation name="recInstance" value="0x0" />
3167
			<limitation name="recType" value="0x0F006" />
3168
		</type>
3169
		<type name="head" type="OfficeArtFDGG">
3170
			<!-- <limitation expression="cidcl==rh.recLen/8.0-2" /> FIX!-->
3171
		</type>
3172
		<type name="Rgidcl" type="OfficeArtIDCL" count="head.cidcl-1" />
3173
	</struct>
3174
	<struct name="OfficeArtFDGG">
3175
		<uint32 name="spidMax">
3176
			<limitation expression="&lt;67098623" />
3177
		</uint32>
3178
		<uint32 name="cidcl">
3179
			<limitation expression="&lt;268435455" />
3180
		</uint32>
3181
		<uint32 name="cspSaved" />
3182
		<uint32 name="cdgSaved" />
3183
	</struct>
3184
	<struct name="OfficeArtFDG">
3185
		<type name="rh" type="OfficeArtRecordHeader">
3186
			<limitation name="recVer" value="0x0" />
3187
			<limitation name="recInstance" expression="&lt;=4094" />
3188
			<limitation name="recType" value="0x0F008" />
3189
			<limitation name="recLen" value="8" />
3190
		</type>
3191
		<uint32 name="csp" />
3192
		<uint32 name="spidCur" />
3193
	</struct>
3194
	<struct name="OfficeArtFRITContainer">
3195
		<type name="rh" type="OfficeArtRecordHeader">
3196
			<limitation name="recVer" value="0" />
3197
			<limitation name="recType" value="0xF118" />
3198
			<limitation expression="recLen==4*recInstance" />
3199
		</type>
3200
		<type name="rgfrit" type="OfficeArtFRIT" count="rh.recInstance" />
3201
	</struct>
3202
	<struct name="OfficeArtFRIT">
3203
		<uint16 name="fridNew" />
3204
		<uint16 name="fridOld" />
3205
	</struct>
3206
	<struct name="OfficeArtBStoreContainer">
3207
		<type name="rh" type="OfficeArtRecordHeader">
3208
			<limitation name="recVer" value="0xF" />
3209
			<limitation name="recType" value="0x0F001" />
3210
		</type>
3211
		<!--
3212
			OOo can set number of instances to a wrong value, so use rh.recLen
3213
		-->
3214
		<type name="rgfb" type="OfficeArtBStoreContainerFileBlock" array="true"
3215
			size="rh.recLen" />
3216
	</struct>
3217
	<struct name="OfficeArtSpgrContainer">
3218
		<type name="rh" type="OfficeArtRecordHeader">
3219
			<limitation name="recVer" value="0xF" />
3220
			<limitation name="recInstance" value="0" />
3221
			<limitation name="recType" value="0x0F003" />
3222
		</type>
3223
		<type name="rgfb" type="OfficeArtSpgrContainerFileBlock" array="true"
3224
			size="rh.recLen" />
3225
	</struct>
3226
	<struct name="OfficeArtSpgrContainerFileBlock">
3227
		<choice name="anon">
3228
			<type type="OfficeArtSpContainer" />
3229
			<type type="OfficeArtSpgrContainer" />
3230
			<type type="OfficeArtFSP" />
3231
			<type type="OfficeArtFSPGR" />
3232
			<type type="OfficeArtClientAnchor" />
3233
			<type type="OfficeArtClientData" />
3234
		</choice>
3235
	</struct>
3236
	<struct name="OfficeArtSpContainer">
3237
		<type name="rh" type="OfficeArtRecordHeader">
3238
			<limitation name="recVer" value="0xF" />
3239
			<limitation name="recInstance" value="0" />
3240
			<limitation name="recType" value="0x0F004" />
3241
		</type>
3242
		<type name="shapeGroup" type="OfficeArtFSPGR" optional="true" />
3243
		<type name="shapeProp" type="OfficeArtFSP" />
3244
		<type name="deletedshape" type="OfficeArtFPSPL" optional="true" />
3245
		<type name="shapePrimaryOptions" type="OfficeArtFOPT" optional="true" />
3246
		<type name="shapeSecondaryOptions1" type="OfficeArtSecondaryFOPT"
3247
			optional="true" />
3248
		<type name="shapeTertiaryOptions1" type="OfficeArtTertiaryFOPT"
3249
			optional="true" />
3250
		<type name="childAnchor" type="OfficeArtChildAnchor" optional="true" />
3251
		<type name="clientAnchor" type="OfficeArtClientAnchor" optional="true" />
3252
		<type name="clientData" type="OfficeArtClientData" optional="true" />
3253
		<type name="clientTextbox" type="OfficeArtClientTextBox"
3254
			optional="true" />
3255
		<!--
3256
			Only exists if shapeSecondaryOptions1 does not. -->
3257
		<type name="shapeSecondaryOptions2" type="OfficeArtSecondaryFOPT"
3258
			optional="true" />
3259
		<!--
3260
			Only exists if shapeTertiaryOptions1 does not. -->
3261
		<type name="shapeTertiaryOptions2" type="OfficeArtTertiaryFOPT"
3262
			optional="true" />
3263
3264
		<type name="shapePrimaryOptions2" type="OfficeArtFOPT" optional="true" />
3265
3266
		<!-- Does not occur in the spec. (MSOffice2003 specific).  It
3267
                     has the same length as RTFDateTimeMCAtom. -->
3268
		<type name="unknown" type="UnknownTextContainerChild" optional="true" />
3269
	</struct>
3270
	<struct name="OfficeArtInlineSpContainer">
3271
		<type name="shape" type="OfficeArtSpContainer" />
3272
		<type name="rgfb" type="OfficeArtBStoreContainerFileBlock" array="true" />
3273
	</struct>
3274
	<struct name="OfficeArtSolverContainer">
3275
		<type name="rh" type="OfficeArtRecordHeader">
3276
			<limitation name="recVer" value="0xF" />
3277
			<limitation name="recType" value="0xF005" />
3278
		</type>
3279
		<type name="rgfb" type="OfficeArtSolverContainerFileBlock" array="true" />
3280
	</struct>
3281
	<struct name="OfficeArtSolverContainerFileBlock">
3282
		<choice name="anon">
3283
			<type type="OfficeArtFConnectorRule" />
3284
			<type type="OfficeArtFArcRule" />
3285
			<type type="OfficeArtFCalloutRule" />
3286
		</choice>
3287
	</struct>
3288
	<struct name="OfficeArtFConnectorRule">
3289
		<type name="rh" type="OfficeArtRecordHeader">
3290
			<limitation name="recVer" value="1" />
3291
			<limitation name="recInstance" value="0" />
3292
			<limitation name="recType" value="0xF012" />
3293
			<limitation name="recLen" value="0x18" />
3294
		</type>
3295
		<uint32 name="ruid" />
3296
		<uint32 name="spidA" />
3297
		<uint32 name="spidB" />
3298
		<uint32 name="spidC" />
3299
		<uint32 name="cptiA" />
3300
		<uint32 name="cptiB" />
3301
	</struct>
3302
	<struct name="OfficeArtFArcRule">
3303
		<type name="rh" type="OfficeArtRecordHeader">
3304
			<limitation name="recVer" value="0" />
3305
			<limitation name="recInstance" value="0" />
3306
			<limitation name="recType" value="0xF014" />
3307
			<limitation name="recLen" value="8" />
3308
		</type>
3309
		<uint32 name="ruid" />
3310
		<uint32 name="spid" />
3311
	</struct>
3312
	<struct name="OfficeArtFCalloutRule">
3313
		<type name="rh" type="OfficeArtRecordHeader">
3314
			<limitation name="recVer" value="0" />
3315
			<limitation name="recInstance" value="0" />
3316
			<limitation name="recType" value="0xF017" />
3317
			<limitation name="recLen" value="8" />
3318
		</type>
3319
		<uint32 name="ruid" />
3320
		<uint32 name="spid" />
3321
	</struct>
3322
	<struct name="OfficeArtFSPGR">
3323
		<type name="rh" type="OfficeArtRecordHeader">
3324
			<limitation name="recVer" value="0x1" />
3325
			<limitation name="recInstance" value="0" />
3326
			<limitation name="recType" value="0x0F009" />
3327
			<limitation name="recLen" value="0x10" />
3328
		</type>
3329
		<int32 name="xLeft" />
3330
		<int32 name="yTop" />
3331
		<int32 name="xRight" />
3332
		<int32 name="yBottom" />
3333
	</struct>
3334
	<struct name="OfficeArtFSP">
3335
		<type name="rh" type="OfficeArtRecordHeader">
3336
			<limitation name="recVer" value="0x2" />
3337
			<limitation name="recInstance" expression="&lt;= 202" />
3338
			<limitation name="recType" value="0x0F00A" />
3339
			<limitation name="recLen" value="8" />
3340
		</type>
3341
		<uint32 name="spid" />
3342
		<bit name="fGroup" />
3343
		<bit name="fChild" />
3344
		<bit name="fPatriarch" />
3345
		<bit name="fDeleted" />
3346
		<bit name="fOleShape" />
3347
		<bit name="fHaveMaster" />
3348
		<bit name="fFlipH" />
3349
		<bit name="fFlipV" />
3350
		<bit name="fConnector" />
3351
		<bit name="fHaveAnchor" />
3352
		<bit name="fBackground" />
3353
		<bit name="fHaveSpt" />
3354
		<uint20 name="unused1" />
3355
	</struct>
3356
	<struct name="OfficeArtFOPT">
3357
		<type name="rh" type="OfficeArtRecordHeader">
3358
			<limitation name="recVer" value="0x3" />
3359
			<limitation name="recType" value="0x0F00B" />
3360
		</type>
3361
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3362
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3363
	</struct>
3364
	<struct name="OfficeArtSecondaryFOPT">
3365
		<type name="rh" type="OfficeArtRecordHeader">
3366
			<limitation name="recVer" value="3" />
3367
			<limitation name="recType" value="0xF121" />
3368
		</type>
3369
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3370
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3371
	</struct>
3372
	<struct name="OfficeArtTertiaryFOPT">
3373
		<type name="rh" type="OfficeArtRecordHeader">
3374
			<limitation name="recVer" value="3" />
3375
			<limitation name="recType" value="0xF122" />
3376
		</type>
3377
		<type name="fopt" type="OfficeArtFOPTEChoice" count="rh.recInstance" />
3378
		<uint8 name="complexData" count="rh.recLen-6*rh.recInstance" />
3379
	</struct>
3380
	<!-- This type is invented to make OPTE specific parsing possible -->
3381
	<struct name="OfficeArtFOPTEChoice">
3382
		<choice name="anon">
3383
			<type type="Rotation" />
3384
			<type type="ProtectionBooleanProperties" />
3385
			<type type="ITxid" />
3386
			<type type="DxTextLeft" />
3387
			<type type="DyTextTop" />
3388
			<type type="DxTextRight" />
3389
			<type type="DyTextBottom" />
3390
			<type type="WrapText" />
3391
			<type type="AnchorText" />
3392
			<type type="TxflTextFlow" />
3393
			<type type="CdirFont" />
3394
			<type type="HspNext" />
3395
			<type type="Txdir" />
3396
			<type type="TextBooleanProperties" />
3397
			<type type="CropFromTop" />
3398
			<type type="CropFromBottom" />
3399
			<type type="CropFromLeft" />
3400
			<type type="CropFromRight" />
3401
			<type type="Pib" />
3402
			<type type="PibName" />
3403
			<type type="PibFlags" />
3404
			<type type="PictureTransparent" />
3405
			<type type="PictureContrast" />
3406
			<type type="PictureBrightness" />
3407
			<type type="BlipBooleanProperties" />
3408
			<type type="GeoLeft" />
3409
			<type type="GeoTop" />
3410
			<type type="GeoRight" />
3411
			<type type="GeoBottom" />
3412
			<type type="ShapePath" />
3413
			<type type="PVertices" />
3414
			<type type="PSegmentInfo" />
3415
			<type type="AdjustValue" />
3416
			<type type="Adjust2Value" />
3417
			<type type="Adjust3Value" />
3418
			<type type="Adjust4Value" />
3419
			<type type="Adjust5Value" />
3420
			<type type="Adjust6Value" />
3421
			<type type="Adjust7Value" />
3422
			<type type="Adjust8Value" />
3423
			<type type="GeometryBooleanProperties" />
3424
			<type type="FillType" />
3425
			<type type="FillColor" />
3426
			<type type="FillOpacity" />
3427
			<type type="FillBackColor" />
3428
			<type type="FillBackOpacity" />
3429
			<type type="FillCrMod" />
3430
			<type type="FillBlip" />
3431
			<type type="FillBlipName" />
3432
			<type type="FillBlipFlags" />
3433
			<type type="FillWidth" />
3434
			<type type="FillHeight" />
3435
			<type type="FillAngle" />
3436
			<type type="FillFocus" />
3437
			<type type="FillToLeft" />
3438
			<type type="FillToTop" />
3439
			<type type="FillToRight" />
3440
			<type type="FillToBottom" />
3441
			<type type="FillRectLeft" />
3442
			<type type="FillRectTop" />
3443
			<type type="FillRectRight" />
3444
			<type type="FillRectBottom" />
3445
			<type type="FillDztype" />
3446
			<type type="FillShadePreset" />
3447
			<type type="FillShadeColors" />
3448
			<type type="FillOriginX" />
3449
			<type type="FillOriginY" />
3450
			<type type="FillShapeOriginX" />
3451
			<type type="FillShapeOriginY" />
3452
			<type type="FillColorExt" />
3453
			<type type="FillBackColorExt" />
3454
			<type type="FillStyleBooleanProperties" />
3455
			<type type="LineColor" />
3456
			<type type="LineOpacity" />
3457
			<type type="LineBackColor" />
3458
			<type type="LineFillBlip" />
3459
			<type type="LineWidth" />
3460
			<type type="LineStyle" />
3461
			<type type="LineDashing" />
3462
			<type type="LineStartArrowhead" />
3463
			<type type="LineEndArrowhead" />
3464
			<type type="LineStartArrowWidth" />
3465
			<type type="LineStartArrowLength" />
3466
			<type type="LineEndArrowWidth" />
3467
			<type type="LineEndArrowLength" />
3468
			<type type="LineJoinStyle" />
3469
			<type type="LineStyleBooleanProperties" />
3470
			<type type="ShadowType" />
3471
			<type type="ShadowColor" />
3472
			<type type="ShadowOpacity" />
3473
			<type type="ShadowOffsetX" />
3474
			<type type="ShadowOffsetY" />
3475
			<type type="ShadowStyleBooleanProperties" />
3476
			<type type="HspMaster" />
3477
			<type type="Cxstyle" />
3478
			<type type="BWMode" />
3479
			<type type="ShapeBooleanProperties" />
3480
			<type type="DxyCalloutGap" />
3481
			<type type="Spcoa" />
3482
			<type type="Spcod" />
3483
			<type type="DxyCalloutDropSpecified" />
3484
			<type type="DxyCalloutLengthSpecified" />
3485
			<type type="CalloutBooleanProperties" />
3486
			<type type="PWrapPolygonVertices" />
3487
			<type type="DxWrapDistLeft" />
3488
			<type type="DyWrapDistTop" />
3489
			<type type="DxWrapDistRight" />
3490
			<type type="DyWrapDistBottom" />
3491
			<type type="LidRegroup" />
3492
			<type type="PosH" />
3493
			<type type="PosRelH" />
3494
			<type type="PosV" />
3495
			<type type="PosRelV" />
3496
			<type type="PctHR" />
3497
			<type type="AlignHR" />
3498
			<type type="DxHeightHR" />
3499
			<type type="DxWidthHR" />
3500
			<type type="BorderTopColor" />
3501
			<type type="BorderLeftColor" />
3502
			<type type="BorderBottomColor" />
3503
			<type type="BorderRightColor" />
3504
			<type type="GroupShapeBooleanProperties" />
3505
			<type type="WzFillId" />
3506
			<type type="DiagramBooleanProperties" />
3507
			<type type="OfficeArtFOPTE" />
3508
		</choice>
3509
	</struct>
3510
	<struct name="MSOPATHINFO">
3511
		<uint3 name="type" />
3512
		<uint13 name="segments" />
3513
	</struct>
3514
	<struct name="FixedPoint">
3515
		<!--
3516
			strangely the fraction part seems to come first this conflicts with
3517
			what the spec suggests
3518
		-->
3519
		<uint16 name="fractional" />
3520
		<int16 name="integral" />
3521
	</struct>
3522
	<!-- Properties: BEGIN -->
3523
        <!-- Transform Property Set -->
3524
	<struct name="Rotation">
3525
		<type name="opid" type="OfficeArtFOPTEOPID">
3526
			<limitation name="opid" value="0x0004" />
3527
			<limitation name="fBid" value="false" />
3528
			<limitation name="fComplex" value="false" />
3529
		</type>
3530
		<type name="rotation" type="FixedPoint" />
3531
	</struct>
3532
	<!-- Protection -->
3533
	<struct name="ProtectionBooleanProperties">
3534
		<type name="opid" type="OfficeArtFOPTEOPID">
3535
			<limitation name="opid" value="0x007F" />
3536
			<limitation name="fBid" value="false" />
3537
			<limitation name="fComplex" value="false" />
3538
		</type>
3539
		<bit name="fLockAgainstGrouping" />
3540
		<bit name="fLockAdjustHandles" />
3541
		<bit name="fLockText" />
3542
		<bit name="fLockVertices" />
3543
		<bit name="fLockCropping" />
3544
		<bit name="fLockAgainstSelect" />
3545
		<bit name="fLockPosition" />
3546
		<bit name="fLockAspectRatio" />
3547
		<bit name="fLockRotation" />
3548
		<bit name="fLockAgainstUngrouping" />
3549
		<uint6 name="unused6" />
3550
		<bit name="fUsefLockAgainstGrouping" />
3551
		<bit name="fUseLockAdjustHandles" />
3552
		<bit name="fUseLockText" />
3553
		<bit name="fUsefLockVertices" />
3554
		<bit name="fUsefLockCropping" />
3555
		<bit name="fUsefLockAgainstSelect" />
3556
		<bit name="fUsefLockPosition" />
3557
		<bit name="fUsefLockAspectRatio" />
3558
		<bit name="fUsefLockRotation" />
3559
		<bit name="fUsefLockAgainstUngrouping" />
3560
		<uint6 name="unused2" />
3561
	</struct>
3562
	<!-- Text Property Set -->
3563
	<struct name="ITxid">
3564
		<type name="opid" type="OfficeArtFOPTEOPID">
3565
			<limitation name="opid" value="0x0080" />
3566
			<limitation name="fBid" value="false" />
3567
			<limitation name="fComplex" value="false" />
3568
		</type>
3569
		<int32 name="iTxid" />
3570
	</struct>
3571
	<struct name="DxTextLeft">
3572
		<type name="opid" type="OfficeArtFOPTEOPID">
3573
			<limitation name="opid" value="0x0081" />
3574
			<limitation name="fBid" value="false" />
3575
			<limitation name="fComplex" value="false" />
3576
		</type>
3577
		<int32 name="dxTextLeft" />
3578
	</struct>
3579
	<struct name="DyTextTop">
3580
		<type name="opid" type="OfficeArtFOPTEOPID">
3581
			<limitation name="opid" value="0x0082" />
3582
			<limitation name="fBid" value="false" />
3583
			<limitation name="fComplex" value="false" />
3584
		</type>
3585
		<int32 name="dyTextTop" />
3586
	</struct>
3587
	<struct name="DxTextRight">
3588
		<type name="opid" type="OfficeArtFOPTEOPID">
3589
			<limitation name="opid" value="0x0083" />
3590
			<limitation name="fBid" value="false" />
3591
			<limitation name="fComplex" value="false" />
3592
		</type>
3593
		<int32 name="dxTextRight" />
3594
	</struct>
3595
	<struct name="DyTextBottom">
3596
		<type name="opid" type="OfficeArtFOPTEOPID">
3597
			<limitation name="opid" value="0x0084" />
3598
			<limitation name="fBid" value="false" />
3599
			<limitation name="fComplex" value="false" />
3600
		</type>
3601
		<int32 name="dyTextBottom" />
3602
	</struct>
3603
	<struct name="WrapText">
3604
		<type name="opid" type="OfficeArtFOPTEOPID">
3605
			<limitation name="opid" value="0x0085" />
3606
			<limitation name="fBid" value="false" />
3607
			<limitation name="fComplex" value="false" />
3608
		</type>
3609
		<uint32 name="wrapText">
3610
			<limitation expression="&lt;5" />
3611
		</uint32>
3612
	</struct>
3613
	<struct name="AnchorText">
3614
		<type name="opid" type="OfficeArtFOPTEOPID">
3615
			<limitation name="opid" value="0x0087" />
3616
			<limitation name="fBid" value="false" />
3617
			<limitation name="fComplex" value="false" />
3618
		</type>
3619
		<uint32 name="anchorText">
3620
			<limitation expression="&lt;=9" />
3621
		</uint32>
3622
	</struct>
3623
	<struct name="TxflTextFlow">
3624
		<type name="opid" type="OfficeArtFOPTEOPID">
3625
			<limitation name="opid" value="0x0088" />
3626
			<limitation name="fBid" value="false" />
3627
			<limitation name="fComplex" value="false" />
3628
		</type>
3629
		<uint32 name="txflTextFlow">
3630
			<limitation expression="&lt;=5" />
3631
                </uint32>
3632
	</struct>
3633
	<struct name="CdirFont">
3634
		<type name="opid" type="OfficeArtFOPTEOPID">
3635
			<limitation name="opid" value="0x0089" />
3636
			<limitation name="fBid" value="false" />
3637
			<limitation name="fComplex" value="false" />
3638
		</type>
3639
		<uint32 name="cdirFont">
3640
			<limitation expression="&lt;=3" />
3641
                </uint32>
3642
	</struct>
3643
	<struct name="HspNext">
3644
		<type name="opid" type="OfficeArtFOPTEOPID">
3645
			<limitation name="opid" value="0x008A" />
3646
			<limitation name="fBid" value="false" />
3647
			<limitation name="fComplex" value="false" />
3648
		</type>
3649
		<uint32 name="hspNext" />
3650
	</struct>
3651
	<struct name="Txdir">
3652
		<type name="opid" type="OfficeArtFOPTEOPID">
3653
			<limitation name="opid" value="0x008B" />
3654
			<limitation name="fBid" value="false" />
3655
			<limitation name="fComplex" value="false" />
3656
		</type>
3657
		<uint32 name="txdir">
3658
			<limitation expression="&lt;=2" />
3659
                </uint32>
3660
	</struct>
3661
	<struct name="TextBooleanProperties">
3662
		<type name="opid" type="OfficeArtFOPTEOPID">
3663
			<limitation name="opid" value="0x00BF" />
3664
			<limitation name="fBid" value="false" />
3665
			<limitation name="fComplex" value="false" />
3666
		</type>
3667
		<bit name="unused1" />
3668
		<bit name="fFitShapeToText" />
3669
		<bit name="unused2" />
3670
		<bit name="fAutoTextMargin" />
3671
		<bit name="fSelectText" />
3672
		<uint3 name="unused3a" />
3673
		<uint8 name="unused3b" />
3674
		<bit name="unused4" />
3675
		<bit name="fUsefFitShapeToText" />
3676
		<bit name="unused5" />
3677
		<bit name="fUsefAutoTextMargin" />
3678
		<bit name="fUsefSelectText" />
3679
		<uint3 name="unused6a" />
3680
		<uint8 name="unused6b" />
3681
	</struct>
3682
	<!-- Blip Property Set -->
3683
	<struct name="CropFromTop">
3684
		<type name="opid" type="OfficeArtFOPTEOPID">
3685
			<limitation name="opid" value="0x0100" />
3686
			<limitation name="fBid" value="false" />
3687
			<limitation name="fComplex" value="false" />
3688
		</type>
3689
		<type name="cropFromTop" type="FixedPoint" />
3690
	</struct>
3691
	<struct name="CropFromBottom">
3692
		<type name="opid" type="OfficeArtFOPTEOPID">
3693
			<limitation name="opid" value="0x0101" />
3694
			<limitation name="fBid" value="false" />
3695
			<limitation name="fComplex" value="false" />
3696
		</type>
3697
		<type name="cropFromBottom" type="FixedPoint" />
3698
	</struct>
3699
	<struct name="CropFromLeft">
3700
		<type name="opid" type="OfficeArtFOPTEOPID">
3701
			<limitation name="opid" value="0x0102" />
3702
			<limitation name="fBid" value="false" />
3703
			<limitation name="fComplex" value="false" />
3704
		</type>
3705
		<type name="cropFromLeft" type="FixedPoint" />
3706
	</struct>
3707
	<struct name="CropFromRight">
3708
		<type name="opid" type="OfficeArtFOPTEOPID">
3709
			<limitation name="opid" value="0x0103" />
3710
			<limitation name="fBid" value="false" />
3711
			<limitation name="fComplex" value="false" />
3712
		</type>
3713
		<type name="cropFromRight" type="FixedPoint" />
3714
	</struct>
3715
	<struct name="Pib">
3716
		<type name="opid" type="OfficeArtFOPTEOPID">
3717
			<limitation name="opid" value="0x0104" />
3718
		</type>
3719
		<uint32 name="pib" />
3720
	</struct>
3721
	<struct name="PibName">
3722
		<type name="opid" type="OfficeArtFOPTEOPID">
3723
			<limitation name="opid" value="0x0105" />
3724
		</type>
3725
		<uint32 name="pibName" />
3726
	</struct>
3727
	<struct name="PibFlags">
3728
		<type name="opid" type="OfficeArtFOPTEOPID">
3729
			<limitation name="opid" value="0x0106" />
3730
			<limitation name="fBid" value="false" />
3731
			<limitation name="fComplex" value="false" />
3732
		</type>
3733
		<uint32 name="pibFlags" />
3734
	</struct>
3735
	<struct name="PictureTransparent">
3736
		<type name="opid" type="OfficeArtFOPTEOPID">
3737
			<limitation name="opid" value="0x0107" />
3738
			<limitation name="fBid" value="false" />
3739
			<limitation name="fComplex" value="false" />
3740
		</type>
3741
		<type name="pictureTransparent" type="OfficeArtCOLORREF" />
3742
	</struct>
3743
	<struct name="PictureContrast">
3744
		<type name="opid" type="OfficeArtFOPTEOPID">
3745
			<limitation name="opid" value="0x0108" />
3746
			<limitation name="fBid" value="false" />
3747
			<limitation name="fComplex" value="false" />
3748
		</type>
3749
		<int32 name="pictureContrast" />
3750
	</struct>
3751
	<struct name="PictureBrightness">
3752
		<type name="opid" type="OfficeArtFOPTEOPID">
3753
			<limitation name="opid" value="0x0109" />
3754
			<limitation name="fBid" value="false" />
3755
			<limitation name="fComplex" value="false" />
3756
		</type>
3757
		<int32 name="pictureBrightness" />
3758
	</struct>
3759
	<struct name="BlipBooleanProperties">
3760
		<type name="opid" type="OfficeArtFOPTEOPID">
3761
			<limitation name="opid" value="0x013F" />
3762
			<limitation name="fBid" value="false" />
3763
			<limitation name="fComplex" value="false" />
3764
		</type>
3765
                <bit name="fPictureActive" />
3766
                <bit name="fPictureBiLevel" />
3767
                <bit name="fPictureGray" />
3768
                <bit name="fNoHitTestPicture" />
3769
                <bit name="fLooping" />
3770
                <bit name="fRewind" />
3771
                <bit name="fPicturePreserveGrays" />
3772
		<bit name="unused1a" />
3773
		<uint8 name="unused1b" />
3774
                <bit name="fUsefPictureActive" />
3775
                <bit name="fUsefPictureBiLevel" />
3776
                <bit name="fUsefPictureGray" />
3777
                <bit name="fUsefNoHitTestPicture" />
3778
                <bit name="fUsefLooping" />
3779
                <bit name="fUsefRewind" />
3780
                <bit name="fUsefPicturePreserveGrays" />
3781
		<bit name="unused2a" />
3782
		<uint8 name="unused2b" />
3783
	</struct>
3784
	<!-- Geometry Property Set -->
3785
	<struct name="GeoLeft">
3786
		<type name="opid" type="OfficeArtFOPTEOPID">
3787
			<limitation name="opid" value="0x0140" />
3788
			<limitation name="fBid" value="false" />
3789
			<limitation name="fComplex" value="false" />
3790
		</type>
3791
		<int32 name="geoLeft" />
3792
	</struct>
3793
	<struct name="GeoTop">
3794
		<type name="opid" type="OfficeArtFOPTEOPID">
3795
			<limitation name="opid" value="0x0141" />
3796
			<limitation name="fBid" value="false" />
3797
			<limitation name="fComplex" value="false" />
3798
		</type>
3799
		<int32 name="geoTop" />
3800
	</struct>
3801
	<struct name="GeoRight">
3802
		<type name="opid" type="OfficeArtFOPTEOPID">
3803
			<limitation name="opid" value="0x0142" />
3804
			<limitation name="fBid" value="false" />
3805
			<limitation name="fComplex" value="false" />
3806
		</type>
3807
		<int32 name="geoRight" />
3808
	</struct>
3809
	<struct name="GeoBottom">
3810
		<type name="opid" type="OfficeArtFOPTEOPID">
3811
			<limitation name="opid" value="0x0143" />
3812
			<limitation name="fBid" value="false" />
3813
			<limitation name="fComplex" value="false" />
3814
		</type>
3815
		<int32 name="geoBottom" />
3816
	</struct>
3817
	<struct name="ShapePath">
3818
		<type name="opid" type="OfficeArtFOPTEOPID">
3819
			<limitation name="opid" value="0x0144" />
3820
			<limitation name="fBid" value="false" />
3821
			<limitation name="fComplex" value="false" />
3822
		</type>
3823
		<uint32 name="shapePath">
3824
			<limitation expression="&lt;=4" />
3825
		</uint32>
3826
	</struct>
3827
	<struct name="PVertices">
3828
		<type name="opid" type="OfficeArtFOPTEOPID">
3829
			<limitation name="opid" value="0x0145" />
3830
		</type>
3831
		<uint32 name="pVertices" />
3832
	</struct>
3833
	<struct name="PVertices_complex">
3834
		<uint16 name="nElems" />
3835
		<uint16 name="nElemsAlloc" />
3836
		<uint16 name="cbElem" />
3837
		<uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
3838
	</struct>
3839
	<struct name="PSegmentInfo">
3840
		<type name="opid" type="OfficeArtFOPTEOPID">
3841
			<limitation name="opid" value="0x0146" />
3842
		</type>
3843
		<uint32 name="pSegmentInfo" />
3844
	</struct>
3845
	<struct name="PSegmentInfo_complex">
3846
		<uint16 name="nElems" />
3847
		<uint16 name="nElemsAlloc" />
3848
		<uint16 name="cbElem" />
3849
		<uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
3850
	</struct>
3851
	<struct name="AdjustValue">
3852
		<type name="opid" type="OfficeArtFOPTEOPID">
3853
			<limitation name="opid" value="0x0147" />
3854
			<limitation name="fBid" value="false" />
3855
			<limitation name="fComplex" value="false" />
3856
		</type>
3857
		<int32 name="adjustvalue" />
3858
	</struct>
3859
	<struct name="Adjust2Value">
3860
		<type name="opid" type="OfficeArtFOPTEOPID">
3861
			<limitation name="opid" value="0x0148" />
3862
			<limitation name="fBid" value="false" />
3863
			<limitation name="fComplex" value="false" />
3864
		</type>
3865
		<int32 name="adjust2value" />
3866
	</struct>
3867
	<struct name="Adjust3Value">
3868
		<type name="opid" type="OfficeArtFOPTEOPID">
3869
			<limitation name="opid" value="0x0149" />
3870
			<limitation name="fBid" value="false" />
3871
			<limitation name="fComplex" value="false" />
3872
		</type>
3873
		<int32 name="adjust3value" />
3874
	</struct>
3875
	<struct name="Adjust4Value">
3876
		<type name="opid" type="OfficeArtFOPTEOPID">
3877
			<limitation name="opid" value="0x014A" />
3878
			<limitation name="fBid" value="false" />
3879
			<limitation name="fComplex" value="false" />
3880
		</type>
3881
		<int32 name="adjust4value" />
3882
	</struct>
3883
	<struct name="Adjust5Value">
3884
		<type name="opid" type="OfficeArtFOPTEOPID">
3885
			<limitation name="opid" value="0x014B" />
3886
			<limitation name="fBid" value="false" />
3887
			<limitation name="fComplex" value="false" />
3888
		</type>
3889
		<int32 name="adjust5value" />
3890
	</struct>
3891
	<struct name="Adjust6Value">
3892
		<type name="opid" type="OfficeArtFOPTEOPID">
3893
			<limitation name="opid" value="0x014C" />
3894
			<limitation name="fBid" value="false" />
3895
			<limitation name="fComplex" value="false" />
3896
		</type>
3897
		<int32 name="adjust6value" />
3898
	</struct>
3899
	<struct name="Adjust7Value">
3900
		<type name="opid" type="OfficeArtFOPTEOPID">
3901
			<limitation name="opid" value="0x014D" />
3902
			<limitation name="fBid" value="false" />
3903
			<limitation name="fComplex" value="false" />
3904
		</type>
3905
		<int32 name="adjust7value" />
3906
	</struct>
3907
	<struct name="Adjust8Value">
3908
		<type name="opid" type="OfficeArtFOPTEOPID">
3909
			<limitation name="opid" value="0x014E" />
3910
			<limitation name="fBid" value="false" />
3911
			<limitation name="fComplex" value="false" />
3912
		</type>
3913
		<int32 name="adjust8value" />
3914
	</struct>
3915
	<struct name="GeometryBooleanProperties">
3916
		<type name="opid" type="OfficeArtFOPTEOPID">
3917
			<limitation name="opid" value="0x017F" />
3918
			<limitation name="fBid" value="false" />
3919
			<limitation name="fComplex" value="false" />
3920
		</type>
3921
		<bit name="fFillOk" />
3922
		<bit name="fFillShadeShapeOK" />
3923
		<bit name="fGtextOK" />
3924
		<bit name="fLineOK" />
3925
		<bit name="f3DOK" />
3926
		<bit name="fShadowOK" />
3927
		<bit name="unuseda" />
3928
		<bit name="unusedb" />
3929
		<uint8 name="unused2" />
3930
		<bit name="fUsefFillOK" />
3931
		<bit name="fUsefFillShadeShapeOK" />
3932
		<bit name="fUsefGtextOK" />
3933
		<bit name="fUsefLineOK" />
3934
		<bit name="fUsef3DOK" />
3935
		<bit name="fUsefShadowOK" />
3936
		<bit name="unused3a" />
3937
		<bit name="unused3b" />
3938
		<uint8 name="unused4" />
3939
	</struct>
3940
	<!-- Fill Style Property Set -->
3941
	<struct name="FillType">
3942
		<type name="opid" type="OfficeArtFOPTEOPID">
3943
			<limitation name="opid" value="0x0180" />
3944
			<limitation name="fBid" value="false" />
3945
			<limitation name="fComplex" value="false" />
3946
		</type>
3947
		<uint32 name="fillType">
3948
			<limitation expression="&lt;=9" />
3949
		</uint32>
3950
	</struct>
3951
	<struct name="FillColor">
3952
		<type name="opid" type="OfficeArtFOPTEOPID">
3953
			<limitation name="opid" value="0x0181" />
3954
			<limitation name="fBid" value="false" />
3955
			<limitation name="fComplex" value="false" />
3956
		</type>
3957
		<type name="fillColor" type="OfficeArtCOLORREF" />
3958
	</struct>
3959
	<struct name="FillOpacity">
3960
		<type name="opid" type="OfficeArtFOPTEOPID">
3961
			<limitation name="opid" value="0x0182" />
3962
			<limitation name="fBid" value="false" />
3963
			<limitation name="fComplex" value="false" />
3964
		</type>
3965
		<type name="fillOpacity" type="FixedPoint" />
3966
	</struct>
3967
	<struct name="FillBackColor">
3968
		<type name="opid" type="OfficeArtFOPTEOPID">
3969
			<limitation name="opid" value="0x0183" />
3970
			<limitation name="fBid" value="false" />
3971
			<limitation name="fComplex" value="false" />
3972
		</type>
3973
		<type name="fillBackColor" type="OfficeArtCOLORREF" />
3974
	</struct>
3975
	<struct name="FillBackOpacity">
3976
		<type name="opid" type="OfficeArtFOPTEOPID">
3977
			<limitation name="opid" value="0x0184" />
3978
			<limitation name="fBid" value="false" />
3979
			<limitation name="fComplex" value="false" />
3980
		</type>
3981
		<type name="fillBackOpacity" type="FixedPoint" />
3982
	</struct>
3983
	<struct name="FillCrMod">
3984
		<type name="opid" type="OfficeArtFOPTEOPID">
3985
			<limitation name="opid" value="0x0185" />
3986
			<limitation name="fBid" value="false" />
3987
			<limitation name="fComplex" value="false" />
3988
		</type>
3989
		<type name="fillCrMod" type="OfficeArtCOLORREF" />
3990
	</struct>
3991
	<struct name="FillBlip">
3992
		<type name="opid" type="OfficeArtFOPTEOPID">
3993
			<limitation name="opid" value="0x0186" />
3994
		</type>
3995
		<uint32 name="fillBlip" />
3996
	</struct>
3997
	<struct name="FillBlipName">
3998
		<type name="opid" type="OfficeArtFOPTEOPID">
3999
			<limitation name="opid" value="0x0187" />
4000
		</type>
4001
		<uint32 name="fillBlipName" />
4002
	</struct>
4003
	<struct name="FillBlipFlags">
4004
		<type name="opid" type="OfficeArtFOPTEOPID">
4005
			<limitation name="opid" value="0x0188" />
4006
			<limitation name="fBid" value="false" />
4007
			<limitation name="fComplex" value="false" />
4008
		</type>
4009
		<uint32 name="fillBlipFlags" />
4010
	</struct>
4011
	<struct name="FillWidth">
4012
		<type name="opid" type="OfficeArtFOPTEOPID">
4013
			<limitation name="opid" value="0x0189" />
4014
			<limitation name="fBid" value="false" />
4015
			<limitation name="fComplex" value="false" />
4016
		</type>
4017
		<int32 name="fillWidth" />
4018
	</struct>
4019
	<struct name="FillHeight">
4020
		<type name="opid" type="OfficeArtFOPTEOPID">
4021
			<limitation name="opid" value="0x018A" />
4022
			<limitation name="fBid" value="false" />
4023
			<limitation name="fComplex" value="false" />
4024
		</type>
4025
		<int32 name="fillHeight" />
4026
	</struct>
4027
	<struct name="FillAngle">
4028
		<type name="opid" type="OfficeArtFOPTEOPID">
4029
			<limitation name="opid" value="0x018B" />
4030
			<limitation name="fBid" value="false" />
4031
			<limitation name="fComplex" value="false" />
4032
		</type>
4033
		<type name="fillAngle" type="FixedPoint" />
4034
	</struct>
4035
	<struct name="FillFocus">
4036
		<type name="opid" type="OfficeArtFOPTEOPID">
4037
			<limitation name="opid" value="0x018C" />
4038
			<limitation name="fBid" value="false" />
4039
			<limitation name="fComplex" value="false" />
4040
		</type>
4041
		<int32 name="fillFocus" />
4042
	</struct>
4043
	<struct name="FillToLeft">
4044
		<type name="opid" type="OfficeArtFOPTEOPID">
4045
			<limitation name="opid" value="0x018D" />
4046
			<limitation name="fBid" value="false" />
4047
			<limitation name="fComplex" value="false" />
4048
		</type>
4049
		<type name="fillToLeft" type="FixedPoint" />
4050
	</struct>
4051
	<struct name="FillToTop">
4052
		<type name="opid" type="OfficeArtFOPTEOPID">
4053
			<limitation name="opid" value="0x018E" />
4054
			<limitation name="fBid" value="false" />
4055
			<limitation name="fComplex" value="false" />
4056
		</type>
4057
		<type name="fillToTop" type="FixedPoint" />
4058
	</struct>
4059
	<struct name="FillToRight">
4060
		<type name="opid" type="OfficeArtFOPTEOPID">
4061
			<limitation name="opid" value="0x018F" />
4062
			<limitation name="fBid" value="false" />
4063
			<limitation name="fComplex" value="false" />
4064
		</type>
4065
		<type name="fillToRight" type="FixedPoint" />
4066
	</struct>
4067
	<struct name="FillToBottom">
4068
		<type name="opid" type="OfficeArtFOPTEOPID">
4069
			<limitation name="opid" value="0x0190" />
4070
			<limitation name="fBid" value="false" />
4071
			<limitation name="fComplex" value="false" />
4072
		</type>
4073
		<type name="fillToBottom" type="FixedPoint" />
4074
	</struct>
4075
	<struct name="FillRectLeft">
4076
		<type name="opid" type="OfficeArtFOPTEOPID">
4077
			<limitation name="opid" value="0x0191" />
4078
			<limitation name="fBid" value="false" />
4079
			<limitation name="fComplex" value="false" />
4080
		</type>
4081
		<int32 name="fillRectLeft" />
4082
	</struct>
4083
	<struct name="FillRectTop">
4084
		<type name="opid" type="OfficeArtFOPTEOPID">
4085
			<limitation name="opid" value="0x0192" />
4086
			<limitation name="fBid" value="false" />
4087
			<limitation name="fComplex" value="false" />
4088
		</type>
4089
		<int32 name="fillRectTop" />
4090
	</struct>
4091
	<struct name="FillRectRight">
4092
		<type name="opid" type="OfficeArtFOPTEOPID">
4093
			<limitation name="opid" value="0x0193" />
4094
			<limitation name="fBid" value="false" />
4095
			<limitation name="fComplex" value="false" />
4096
		</type>
4097
		<int32 name="fillRectRight" />
4098
	</struct>
4099
	<struct name="FillRectBottom">
4100
		<type name="opid" type="OfficeArtFOPTEOPID">
4101
			<limitation name="opid" value="0x0194" />
4102
			<limitation name="fBid" value="false" />
4103
			<limitation name="fComplex" value="false" />
4104
		</type>
4105
		<int32 name="fillRectBottom" />
4106
	</struct>
4107
	<struct name="FillDztype">
4108
		<type name="opid" type="OfficeArtFOPTEOPID">
4109
			<limitation name="opid" value="0x0195" />
4110
			<limitation name="fBid" value="false" />
4111
			<limitation name="fComplex" value="false" />
4112
		</type>
4113
		<int32 name="fillDztype" />
4114
	</struct>
4115
	<struct name="FillShadePreset">
4116
		<type name="opid" type="OfficeArtFOPTEOPID">
4117
			<limitation name="opid" value="0x0196" />
4118
			<limitation name="fBid" value="false" />
4119
			<limitation name="fComplex" value="false" />
4120
		</type>
4121
		<int32 name="fillShadePreset" />
4122
	</struct>
4123
	<struct name="FillShadeColors">
4124
		<type name="opid" type="OfficeArtFOPTEOPID">
4125
			<limitation name="opid" value="0x0197" />
4126
		</type>
4127
		<uint32 name="fillShadeColors" />
4128
	</struct>
4129
	<struct name="FillShadeColors_complex">
4130
		<uint16 name="nElems" />
4131
		<uint16 name="nElemsAlloc" />
4132
		<uint16 name="cbElem" />
4133
		<uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
4134
	</struct>
4135
	<struct name="FillOriginX">
4136
		<type name="opid" type="OfficeArtFOPTEOPID">
4137
			<limitation name="opid" value="0x0198" />
4138
			<limitation name="fBid" value="false" />
4139
			<limitation name="fComplex" value="false" />
4140
		</type>
4141
		<type name="fillOriginX" type="FixedPoint" />
4142
	</struct>
4143
	<struct name="FillOriginY">
4144
		<type name="opid" type="OfficeArtFOPTEOPID">
4145
			<limitation name="opid" value="0x0199" />
4146
			<limitation name="fBid" value="false" />
4147
			<limitation name="fComplex" value="false" />
4148
		</type>
4149
		<type name="fillOriginY" type="FixedPoint" />
4150
	</struct>
4151
	<struct name="FillShapeOriginX">
4152
		<type name="opid" type="OfficeArtFOPTEOPID">
4153
			<limitation name="opid" value="0x019A" />
4154
			<limitation name="fBid" value="false" />
4155
			<limitation name="fComplex" value="false" />
4156
		</type>
4157
		<type name="fillShapeOriginX" type="FixedPoint" />
4158
	</struct>
4159
	<struct name="FillShapeOriginY">
4160
		<type name="opid" type="OfficeArtFOPTEOPID">
4161
			<limitation name="opid" value="0x019B" />
4162
			<limitation name="fBid" value="false" />
4163
			<limitation name="fComplex" value="false" />
4164
		</type>
4165
		<type name="fillShapeOriginY" type="FixedPoint" />
4166
	</struct>
4167
	<!--
4168
	<struct name="FillShadeType">
4169
		<type name="opid" type="OfficeArtFOPTEOPID">
4170
			<limitation name="opid" value="0x019C" />
4171
			<limitation name="fBid" value="false" />
4172
			<limitation name="fComplex" value="false" />
4173
		</type>
4174
		<type name="fillShadeType" type="MSOSHADETYPE" />
4175
	</struct>
4176
	-->
4177
	<struct name="FillColorExt">
4178
		<type name="opid" type="OfficeArtFOPTEOPID">
4179
			<limitation name="opid" value="0x019E" />
4180
			<limitation name="fBid" value="false" />
4181
			<limitation name="fComplex" value="false" />
4182
		</type>
4183
		<type name="fillColorExt" type="OfficeArtCOLORREF" />
4184
	</struct>
4185
	<!--
4186
	<struct name="FillColorExtMod">
4187
		<type name="opid" type="OfficeArtFOPTEOPID">
4188
			<limitation name="opid" value="0x01A0" />
4189
			<limitation name="fBid" value="false" />
4190
			<limitation name="fComplex" value="false" />
4191
		</type>
4192
		<type name="fillColorExtMod" type="MSOTINTSHADE" />
4193
	</struct>
4194
	-->
4195
	<struct name="FillBackColorExt">
4196
		<type name="opid" type="OfficeArtFOPTEOPID">
4197
			<limitation name="opid" value="0x01A2" />
4198
			<limitation name="fBid" value="false" />
4199
			<limitation name="fComplex" value="false" />
4200
		</type>
4201
		<type name="fillBackColorExt" type="OfficeArtCOLORREF" />
4202
	</struct>
4203
	<!--
4204
	<struct name="FillBackColorExtMod">
4205
		<type name="opid" type="OfficeArtFOPTEOPID">
4206
			<limitation name="opid" value="0x01A5" />
4207
			<limitation name="fBid" value="false" />
4208
			<limitation name="fComplex" value="false" />
4209
		</type>
4210
		<type name="fillBackColorExtMod" type="MSOTINTSHADE" />
4211
	</struct>
4212
	-->
4213
	<struct name="FillStyleBooleanProperties">
4214
		<type name="opid" type="OfficeArtFOPTEOPID">
4215
			<limitation name="opid" value="0x01BF" />
4216
			<limitation name="fBid" value="false" />
4217
			<limitation name="fComplex" value="false" />
4218
		</type>
4219
		<bit name="fNoFillHitTest" />
4220
		<bit name="fillUseRect" />
4221
		<bit name="fillShape" />
4222
		<bit name="fHitTestFill" />
4223
		<bit name="fFilled" />
4224
		<bit name="fUseShapeAnchor" />
4225
		<bit name="fRecolorFillAsPicture" />
4226
		<bit name="unused1a" />
4227
		<uint8 name="unused1b" />
4228
		<bit name="fUseNoFillHitTest" />
4229
		<bit name="fUseFillUseRect" />
4230
		<bit name="fUseFillShape" />
4231
		<bit name="fUseHitTestFill" />
4232
		<bit name="fUseFilled" />
4233
		<bit name="fUseUseShapeAnchor" />
4234
		<bit name="fUsefRecolorFillAsPicture" />
4235
		<bit name="unused2a" />
4236
		<uint8 name="unused2b" />
4237
	</struct>
4238
	<!--
4239
	<struct name="MSOSHADETYPE">
4240
		<bit name="msoshadeNone" />
4241
		<bit name="msoshadeGamma" />
4242
		<bit name="msoshadeSigma" />
4243
		<bit name="msoshadeBand" />
4244
		<bit name="msoshadeOneColor" />
4245
		<uint13 name="unused1a" />
4246
		<uint13 name="unused1b" />
4247
		<bit name="unused1c" />
4248
	</struct>
4249
	-->
4250
	<!--
4251
	<struct name="MSOTINTSHADE">
4252
		<choice name="anon">
4253
			<type type="MSOCOLORMODUNDEFINED" />
4254
			<type type="MSOSHADE" />
4255
			<type type="MSOTINT" />
4256
		</choice>
4257
        </struct>
4258
	-->
4259
	<!-- Line Style Property Set -->
4260
	<struct name="LineColor">
4261
		<type name="opid" type="OfficeArtFOPTEOPID">
4262
			<limitation name="opid" value="0x01C0" />
4263
			<limitation name="fBid" value="false" />
4264
			<limitation name="fComplex" value="false" />
4265
		</type>
4266
		<type name="lineColor" type="OfficeArtCOLORREF" />
4267
	</struct>
4268
	<struct name="LineOpacity">
4269
		<type name="opid" type="OfficeArtFOPTEOPID">
4270
			<limitation name="opid" value="0x01C1" />
4271
			<limitation name="fBid" value="false" />
4272
			<limitation name="fComplex" value="false" />
4273
		</type>
4274
		<int32 name="lineOpacity">
4275
			<limitation expression="&gt;=0" />
4276
			<limitation expression="&lt;=65536" />
4277
		</int32>
4278
	</struct>
4279
	<struct name="LineBackColor">
4280
		<type name="opid" type="OfficeArtFOPTEOPID">
4281
			<limitation name="opid" value="0x01C2" />
4282
		</type>
4283
		<type name="lineBackColor" type="OfficeArtCOLORREF" />
4284
	</struct>
4285
	<struct name="LineFillBlip">
4286
		<type name="opid" type="OfficeArtFOPTEOPID">
4287
			<limitation name="opid" value="0x01C5" />
4288
		</type>
4289
		<uint32 name="lineFillBlip" />
4290
	</struct>
4291
	<struct name="LineWidth">
4292
		<type name="opid" type="OfficeArtFOPTEOPID">
4293
			<limitation name="opid" value="0x01CB" />
4294
			<limitation name="fBid" value="false" />
4295
			<limitation name="fComplex" value="false" />
4296
		</type>
4297
		<!--
4298
			default = 0x2535 english metric units. 1587.5 EMUs is 1 Master Units
4299
		-->
4300
		<uint32 name="lineWidth" />
4301
	</struct>
4302
	<struct name="LineStyle">
4303
		<type name="opid" type="OfficeArtFOPTEOPID">
4304
			<limitation name="opid" value="0x01CD" />
4305
			<limitation name="fBid" value="false" />
4306
			<limitation name="fComplex" value="false" />
4307
		</type>
4308
		<uint32 name="lineStyle" />
4309
	</struct>
4310
	<struct name="LineDashing">
4311
		<type name="opid" type="OfficeArtFOPTEOPID">
4312
			<limitation name="opid" value="0x01CE" />
4313
			<limitation name="fBid" value="false" />
4314
			<limitation name="fComplex" value="false" />
4315
		</type>
4316
		<uint32 name="lineDashing" />
4317
	</struct>
4318
	<struct name="LineStartArrowhead">
4319
		<type name="opid" type="OfficeArtFOPTEOPID">
4320
			<limitation name="opid" value="0x01D0" />
4321
			<limitation name="fBid" value="false" />
4322
			<limitation name="fComplex" value="false" />
4323
		</type>
4324
		<uint32 name="lineStartArrowhead">
4325
			<limitation expression="&lt;=8" />
4326
		</uint32>
4327
	</struct>
4328
	<struct name="LineEndArrowhead">
4329
		<type name="opid" type="OfficeArtFOPTEOPID">
4330
			<limitation name="opid" value="0x01D1" />
4331
			<limitation name="fBid" value="false" />
4332
			<limitation name="fComplex" value="false" />
4333
		</type>
4334
		<uint32 name="lineEndArrowhead">
4335
			<limitation expression="&lt;=8" />
4336
		</uint32>
4337
	</struct>
4338
	<struct name="LineStartArrowWidth">
4339
		<type name="opid" type="OfficeArtFOPTEOPID">
4340
			<limitation name="opid" value="0x01D2" />
4341
			<limitation name="fBid" value="false" />
4342
			<limitation name="fComplex" value="false" />
4343
		</type>
4344
		<uint32 name="lineStartArrowWidth" />
4345
	</struct>
4346
	<struct name="LineStartArrowLength">
4347
		<type name="opid" type="OfficeArtFOPTEOPID">
4348
			<limitation name="opid" value="0x01D3" />
4349
			<limitation name="fBid" value="false" />
4350
			<limitation name="fComplex" value="false" />
4351
		</type>
4352
		<uint32 name="lineStartArrowLength" />
4353
	</struct>
4354
	<struct name="LineEndArrowWidth">
4355
		<type name="opid" type="OfficeArtFOPTEOPID">
4356
			<limitation name="opid" value="0x01D4" />
4357
			<limitation name="fBid" value="false" />
4358
			<limitation name="fComplex" value="false" />
4359
		</type>
4360
		<uint32 name="lineEndArrowWidth" />
4361
	</struct>
4362
	<struct name="LineEndArrowLength">
4363
		<type name="opid" type="OfficeArtFOPTEOPID">
4364
			<limitation name="opid" value="0x01D5" />
4365
			<limitation name="fBid" value="false" />
4366
			<limitation name="fComplex" value="false" />
4367
		</type>
4368
		<uint32 name="lineEndArrowLength" />
4369
	</struct>
4370
	<struct name="LineJoinStyle">
4371
		<type name="opid" type="OfficeArtFOPTEOPID">
4372
			<limitation name="opid" value="0x01D6" />
4373
			<limitation name="fBid" value="false" />
4374
			<limitation name="fComplex" value="false" />
4375
		</type>
4376
		<uint32 name="lineJoinStyle">
4377
			<limitation expression="&lt;=2" />
4378
		</uint32>
4379
	</struct>
4380
	<struct name="LineStyleBooleanProperties">
4381
		<type name="opid" type="OfficeArtFOPTEOPID">
4382
			<limitation name="opid" value="0x01FF" />
4383
			<limitation name="fBid" value="false" />
4384
			<limitation name="fComplex" value="false" />
4385
		</type>
4386
		<bit name="fNoLineDrawDash" />
4387
		<bit name="fLineFillShape" />
4388
		<bit name="fHitTestLine" />
4389
		<bit name="fLine" />
4390
		<bit name="fArrowHeadsOK" />
4391
		<bit name="fInsetPenOK" />
4392
		<bit name="fInsetPen" />
4393
		<bit name="reserved1" />
4394
		<bit name="reserved2" />
4395
		<bit name="fLineOpaqueBackColor" />
4396
		<uint6 name="unused1" />
4397
		<bit name="fUseNoLineDrawDash" />
4398
		<bit name="fUseLineFillShape" />
4399
		<bit name="fUseHitTestLine" />
4400
		<bit name="fUsefLine" />
4401
		<bit name="fUsefArrowHeadsOK" />
4402
		<bit name="fUseInsetPenOK" />
4403
		<bit name="fUseInsetPen" />
4404
		<bit name="unused2" />
4405
		<bit name="unused3" />
4406
		<bit name="fUsefLineOpaqueBackColor" />
4407
		<uint6 name="unused4" />
4408
	</struct>
4409
	<!-- Shadow Style Property Set -->
4410
	<struct name="ShadowType">
4411
		<type name="opid" type="OfficeArtFOPTEOPID">
4412
			<limitation name="opid" value="0x0200" />
4413
			<limitation name="fBid" value="false" />
4414
			<limitation name="fComplex" value="false" />
4415
		</type>
4416
		<uint32 name="shadowType" />
4417
	</struct>
4418
	<struct name="ShadowColor">
4419
		<type name="opid" type="OfficeArtFOPTEOPID">
4420
			<limitation name="opid" value="0x0201" />
4421
			<limitation name="fBid" value="false" />
4422
			<limitation name="fComplex" value="false" />
4423
		</type>
4424
		<type name="shadowColor" type="OfficeArtCOLORREF" />
4425
	</struct>
4426
	<struct name="ShadowOpacity">
4427
		<type name="opid" type="OfficeArtFOPTEOPID">
4428
			<limitation name="opid" value="0x0204" />
4429
			<limitation name="fBid" value="false" />
4430
			<limitation name="fComplex" value="false" />
4431
		</type>
4432
		<type name="shadowOpacity" type="FixedPoint" />
4433
	</struct>
4434
	<struct name="ShadowOffsetX">
4435
		<type name="opid" type="OfficeArtFOPTEOPID">
4436
			<limitation name="opid" value="0x0205" />
4437
			<limitation name="fBid" value="false" />
4438
			<limitation name="fComplex" value="false" />
4439
		</type>
4440
		<int32 name="shadowOffsetX" />
4441
	</struct>
4442
	<struct name="ShadowOffsetY">
4443
		<type name="opid" type="OfficeArtFOPTEOPID">
4444
			<limitation name="opid" value="0x0206" />
4445
			<limitation name="fBid" value="false" />
4446
			<limitation name="fComplex" value="false" />
4447
		</type>
4448
		<int32 name="shadowOffsetY" />
4449
	</struct>
4450
	<struct name="ShadowStyleBooleanProperties">
4451
		<type name="opid" type="OfficeArtFOPTEOPID">
4452
			<limitation name="opid" value="0x023F" />
4453
			<limitation name="fBid" value="false" />
4454
			<limitation name="fComplex" value="false" />
4455
		</type>
4456
		<bit name="fShadowObscured" />
4457
		<bit name="fShadow" />
4458
		<uint14 name="unused1" />
4459
		<bit name="fUsefShadowObscured" />
4460
		<bit name="fUsefShadow" />
4461
		<uint14 name="unused2" />
4462
	</struct>
4463
	<!-- Shape Property Set -->
4464
	<struct name="HspMaster">
4465
		<type name="opid" type="OfficeArtFOPTEOPID">
4466
			<limitation name="opid" value="0x0301" />
4467
			<limitation name="fBid" value="false" />
4468
			<limitation name="fComplex" value="false" />
4469
		</type>
4470
		<uint32 name="hspMaster" />
4471
	</struct>
4472
	<struct name="Cxstyle">
4473
		<type name="opid" type="OfficeArtFOPTEOPID">
4474
			<limitation name="opid" value="0x0303" />
4475
			<limitation name="fBid" value="false" />
4476
			<limitation name="fComplex" value="false" />
4477
		</type>
4478
		<uint32 name="cxstyle">
4479
			<limitation expression="&lt;=4" />
4480
		</uint32>
4481
	</struct>
4482
	<struct name="BWMode">
4483
		<type name="opid" type="OfficeArtFOPTEOPID">
4484
			<limitation name="opid" value="0x0304" />
4485
			<limitation name="fBid" value="false" />
4486
			<limitation name="fComplex" value="false" />
4487
		</type>
4488
		<uint32 name="bWMode">
4489
			<limitation expression="&lt;=10" />
4490
		</uint32>
4491
	</struct>
4492
	<struct name="ShapeBooleanProperties">
4493
		<type name="opid" type="OfficeArtFOPTEOPID">
4494
			<limitation name="opid" value="0x033F" />
4495
			<limitation name="fBid" value="false" />
4496
			<limitation name="fComplex" value="false" />
4497
		</type>
4498
		<bit name="fBackground" />
4499
		<bit name="reserved1" />
4500
		<bit name="fInitiator" />
4501
		<bit name="fLockShapeType" />
4502
		<bit name="fPreferRelativeResize" />
4503
		<bit name="fOleIcon" />
4504
		<bit name="fFlipVOverride" />
4505
		<bit name="fFlipHOverride" />
4506
		<bit name="fPolicyBarcode" />
4507
		<bit name="fPolicyLabel" />
4508
		<bit name="unused1" />
4509
		<bit name="unused2" />
4510
		<uint4 name="unused3" />
4511
		<bit name="fUsefBackground" />
4512
		<bit name="unused4" />
4513
		<bit name="fUsefInitiator" />
4514
		<bit name="fUsefLockShapeType" />
4515
		<bit name="fusePreferrelativeResize" />
4516
		<bit name="fUsefOleIcon" />
4517
		<bit name="fUsefFlipVOverride" />
4518
		<bit name="fUsefFlipHOverride" />
4519
		<bit name="fUsefPolicyBarcode" />
4520
		<bit name="fUsefPolicyLabel" />
4521
		<bit name="unused5" />
4522
		<bit name="unused6" />
4523
		<uint4 name="unused7" />
4524
	</struct>
4525
        <!-- Callout Property Set -->
4526
	<struct name="DxyCalloutGap">
4527
		<type name="opid" type="OfficeArtFOPTEOPID">
4528
			<limitation name="opid" value="0x0341" />
4529
			<limitation name="fBid" value="false" />
4530
			<limitation name="fComplex" value="false" />
4531
		</type>
4532
		<uint32 name="dxyCalloutGap" />
4533
	</struct>
4534
	<struct name="Spcoa">
4535
		<type name="opid" type="OfficeArtFOPTEOPID">
4536
			<limitation name="opid" value="0x0342" />
4537
			<limitation name="fBid" value="false" />
4538
			<limitation name="fComplex" value="false" />
4539
		</type>
4540
		<uint32 name="spcoa" />
4541
	</struct>
4542
	<struct name="Spcod">
4543
		<type name="opid" type="OfficeArtFOPTEOPID">
4544
			<limitation name="opid" value="0x0343" />
4545
			<limitation name="fBid" value="false" />
4546
			<limitation name="fComplex" value="false" />
4547
		</type>
4548
		<uint32 name="spcod" />
4549
	</struct>
4550
	<struct name="DxyCalloutDropSpecified">
4551
		<type name="opid" type="OfficeArtFOPTEOPID">
4552
			<limitation name="opid" value="0x0344" />
4553
			<limitation name="fBid" value="false" />
4554
			<limitation name="fComplex" value="false" />
4555
		</type>
4556
		<uint32 name="dxyCalloutDropSpecified" />
4557
	</struct>
4558
	<struct name="DxyCalloutLengthSpecified">
4559
		<type name="opid" type="OfficeArtFOPTEOPID">
4560
			<limitation name="opid" value="0x0345" />
4561
			<limitation name="fBid" value="false" />
4562
			<limitation name="fComplex" value="false" />
4563
		</type>
4564
		<uint32 name="dxyCalloutLengthSpecified" />
4565
	</struct>
4566
	<struct name="CalloutBooleanProperties">
4567
		<type name="opid" type="OfficeArtFOPTEOPID">
4568
			<limitation name="opid" value="0x037F" />
4569
			<limitation name="fBid" value="false" />
4570
			<limitation name="fComplex" value="false" />
4571
		</type>
4572
		<bit name="fCalloutLengthSpecified" />
4573
		<bit name="fCalloutDropAuto" />
4574
		<bit name="fCalloutMinusY" />
4575
		<bit name="fCalloutMinusX" />
4576
		<bit name="fCalloutTextBorder" />
4577
		<bit name="fCalloutAccentBar" />
4578
		<bit name="fCallout" />
4579
		<bit name="unused1a" />
4580
		<uint8 name="unused1b" />
4581
		<bit name="fUsefCalloutLengthSpecified" />
4582
		<bit name="fUsefCalloutDropAuto" />
4583
		<bit name="fUsefCalloutMinusY" />
4584
		<bit name="fUsefCalloutMinusX" />
4585
		<bit name="fUsefCalloutTextBorder" />
4586
		<bit name="fUsefCalloutAccentBar" />
4587
		<bit name="fUsefCallout" />
4588
		<bit name="unused2a" />
4589
		<uint8 name="unused2b" />
4590
	</struct>
4591
	<!-- Group Shape Property Set -->
4592
	<struct name="PWrapPolygonVertices">
4593
		<type name="opid" type="OfficeArtFOPTEOPID">
4594
			<limitation name="opid" value="0x0383" />
4595
		</type>
4596
		<uint32 name="pWrapPolygonVertices" />
4597
	</struct>
4598
	<struct name="PWrapPolygonVertices_complex">
4599
		<uint16 name="nElems" />
4600
		<uint16 name="nElemsAlloc" />
4601
		<uint16 name="cbElem" />
4602
		<uint8 name="data" count="(cbElem==0xFFF0)?(4 * nElems):(cbElem * nElems)" />
4603
	</struct>
4604
	<struct name="DxWrapDistLeft">
4605
		<type name="opid" type="OfficeArtFOPTEOPID">
4606
			<limitation name="opid" value="0x0384" />
4607
			<limitation name="fBid" value="false" />
4608
			<limitation name="fComplex" value="false" />
4609
		</type>
4610
		<int32 name="dxWrapDistLeft" />
4611
	</struct>
4612
	<struct name="DyWrapDistTop">
4613
		<type name="opid" type="OfficeArtFOPTEOPID">
4614
			<limitation name="opid" value="0x0385" />
4615
			<limitation name="fBid" value="false" />
4616
			<limitation name="fComplex" value="false" />
4617
		</type>
4618
		<int32 name="dyWrapDistTop" />
4619
	</struct>
4620
	<struct name="DxWrapDistRight">
4621
		<type name="opid" type="OfficeArtFOPTEOPID">
4622
			<limitation name="opid" value="0x0386" />
4623
			<limitation name="fBid" value="false" />
4624
			<limitation name="fComplex" value="false" />
4625
		</type>
4626
		<int32 name="dxWrapDistRight" />
4627
	</struct>
4628
	<struct name="DyWrapDistBottom">
4629
		<type name="opid" type="OfficeArtFOPTEOPID">
4630
			<limitation name="opid" value="0x0387" />
4631
			<limitation name="fBid" value="false" />
4632
			<limitation name="fComplex" value="false" />
4633
		</type>
4634
		<int32 name="dyWrapDistBottom" />
4635
	</struct>
4636
	<struct name="LidRegroup">
4637
		<type name="opid" type="OfficeArtFOPTEOPID">
4638
			<limitation name="opid" value="0x0388" />
4639
			<limitation name="fBid" value="false" />
4640
			<limitation name="fComplex" value="false" />
4641
		</type>
4642
		<uint32 name="lidRegroup" />
4643
	</struct>
4644
	<struct name="PosH">
4645
		<type name="opid" type="OfficeArtFOPTEOPID">
4646
			<limitation name="opid" value="0x038F" />
4647
			<limitation name="fBid" value="false" />
4648
			<limitation name="fComplex" value="false" />
4649
		</type>
4650
		<uint32 name="posH" />
4651
	</struct>
4652
	<struct name="PosRelH">
4653
		<type name="opid" type="OfficeArtFOPTEOPID">
4654
			<limitation name="opid" value="0x0390" />
4655
			<limitation name="fBid" value="false" />
4656
			<limitation name="fComplex" value="false" />
4657
		</type>
4658
		<uint32 name="posRelH" />
4659
	</struct>
4660
	<struct name="PosV">
4661
		<type name="opid" type="OfficeArtFOPTEOPID">
4662
			<limitation name="opid" value="0x0391" />
4663
			<limitation name="fBid" value="false" />
4664
			<limitation name="fComplex" value="false" />
4665
		</type>
4666
		<uint32 name="posV" />
4667
	</struct>
4668
	<struct name="PosRelV">
4669
		<type name="opid" type="OfficeArtFOPTEOPID">
4670
			<limitation name="opid" value="0x0392" />
4671
			<limitation name="fBid" value="false" />
4672
			<limitation name="fComplex" value="false" />
4673
		</type>
4674
		<uint32 name="posRelV" />
4675
	</struct>
4676
	<struct name="PctHR">
4677
		<type name="opid" type="OfficeArtFOPTEOPID">
4678
			<limitation name="opid" value="0x0393" />
4679
			<limitation name="fBid" value="false" />
4680
			<limitation name="fComplex" value="false" />
4681
		</type>
4682
		<uint32 name="pctHR" />
4683
	</struct>
4684
	<struct name="AlignHR">
4685
		<type name="opid" type="OfficeArtFOPTEOPID">
4686
			<limitation name="opid" value="0x0394" />
4687
			<limitation name="fBid" value="false" />
4688
			<limitation name="fComplex" value="false" />
4689
		</type>
4690
		<uint32 name="alignHR" />
4691
	</struct>
4692
	<struct name="DxHeightHR">
4693
		<type name="opid" type="OfficeArtFOPTEOPID">
4694
			<limitation name="opid" value="0x0395" />
4695
			<limitation name="fBid" value="false" />
4696
			<limitation name="fComplex" value="false" />
4697
		</type>
4698
		<int32 name="dxHeightHR" />
4699
	</struct>
4700
	<struct name="DxWidthHR">
4701
		<type name="opid" type="OfficeArtFOPTEOPID">
4702
			<limitation name="opid" value="0x0396" />
4703
			<limitation name="fBid" value="false" />
4704
			<limitation name="fComplex" value="false" />
4705
		</type>
4706
		<int32 name="dxWidthHR" />
4707
	</struct>
4708
	<struct name="BorderTopColor">
4709
		<type name="opid" type="OfficeArtFOPTEOPID">
4710
			<limitation name="opid" value="0x039b" />
4711
			<limitation name="fBid" value="false" />
4712
			<limitation name="fComplex" value="false" />
4713
		</type>
4714
		<type name="borderTopColor" type="OfficeArtCOLORREF" />
4715
	</struct>
4716
	<struct name="BorderLeftColor">
4717
		<type name="opid" type="OfficeArtFOPTEOPID">
4718
			<limitation name="opid" value="0x039c" />
4719
			<limitation name="fBid" value="false" />
4720
			<limitation name="fComplex" value="false" />
4721
		</type>
4722
		<type name="borderLeftColor" type="OfficeArtCOLORREF" />
4723
	</struct>
4724
	<struct name="BorderBottomColor">
4725
		<type name="opid" type="OfficeArtFOPTEOPID">
4726
			<limitation name="opid" value="0x039d" />
4727
			<limitation name="fBid" value="false" />
4728
			<limitation name="fComplex" value="false" />
4729
		</type>
4730
		<type name="borderBottomColor" type="OfficeArtCOLORREF" />
4731
	</struct>
4732
	<struct name="BorderRightColor">
4733
		<type name="opid" type="OfficeArtFOPTEOPID">
4734
			<limitation name="opid" value="0x039e" />
4735
			<limitation name="fBid" value="false" />
4736
			<limitation name="fComplex" value="false" />
4737
		</type>
4738
		<type name="borderRightColor" type="OfficeArtCOLORREF" />
4739
	</struct>
4740
	<struct name="GroupShapeBooleanProperties">
4741
		<type name="opid" type="OfficeArtFOPTEOPID">
4742
			<limitation name="opid" value="0x03bf" />
4743
			<limitation name="fBid" value="false" />
4744
			<limitation name="fComplex" value="false" />
4745
		</type>
4746
		<bit name="fPrint" />
4747
		<bit name="fHidden" />
4748
		<bit name="fOneD" />
4749
		<bit name="fIsButton" />
4750
		<bit name="fOnDblClickNotify" />
4751
		<bit name="fBehindDocument" />
4752
		<bit name="fEditedWrap" />
4753
		<bit name="fScriptAnchor" />
4754
		<bit name="fReallyHidden" />
4755
		<bit name="fAllowOverlap" />
4756
		<bit name="fUserDrawn" />
4757
		<bit name="fHorizRule" />
4758
		<bit name="fNoshadeHR" />
4759
		<bit name="fStandardHR" />
4760
		<bit name="fIsBullet" />
4761
		<bit name="fLayoutInCell" />
4762
		<bit name="fUsefPrint" />
4763
		<bit name="fUsefHidden" />
4764
		<bit name="fUsefOneD" />
4765
		<bit name="fUsefIsButton" />
4766
		<bit name="fUsefOnDblClickNotify" />
4767
		<bit name="fUsefBehindDocument" />
4768
		<bit name="fUsefEditedWrap" />
4769
		<bit name="fUsefScriptAnchor" />
4770
		<bit name="fUsefReallyHidden" />
4771
		<bit name="fUsefAllowOverlap" />
4772
		<bit name="fUsefUserDrawn" />
4773
		<bit name="fUsefHorizRule" />
4774
		<bit name="fUsefNoshadeHR" />
4775
		<bit name="fUsefStandardHR" />
4776
		<bit name="fUsefIsBullet" />
4777
		<bit name="fUsefLayoutInCell" />
4778
	</struct>
4779
	<!-- Unknown HTML Property Set -->
4780
	<struct name="WzFillId">
4781
		<type name="opid" type="OfficeArtFOPTEOPID">
4782
			<limitation name="opid" value="0x0403" />
4783
		</type>
4784
		<int32 name="wzFillId" />
4785
	</struct>
4786
	<!-- Diagram Property Set -->
4787
	<struct name="DiagramBooleanProperties">
4788
		<type name="opid" type="OfficeArtFOPTEOPID">
4789
			<limitation name="opid" value="0x053F" />
4790
			<limitation name="fBid" value="false" />
4791
			<limitation name="fComplex" value="false" />
4792
		</type>
4793
		<bit name="fPseudoInline" />
4794
		<bit name="fDoLayout" />
4795
		<bit name="fReverse" />
4796
		<bit name="fDoFormat" />
4797
		<bit name="unused1" />
4798
		<bit name="unused2" />
4799
		<uint2 name="unused3a" />
4800
		<uint8 name="unused3b" />
4801
		<bit name="fUsefPseudoInline" />
4802
		<bit name="fUsefDoLayout" />
4803
		<bit name="fUsefReverse" />
4804
		<bit name="fUsefDoFormat" />
4805
		<bit name="unused4" />
4806
		<bit name="unused5" />
4807
		<uint2 name="unused6a" />
4808
		<uint8 name="unused6b" />
4809
	</struct>
4810
	<!-- Properties: END -->
4811
	<struct name="OfficeArtCOLORREF">
4812
		<uint8 name="red" />
4813
		<uint8 name="green" />
4814
		<uint8 name="blue" />
4815
		<bit name="fPaletteIndex" />
4816
		<bit name="fPaletteRGB" />
4817
		<bit name="fSystemRGB" />
4818
		<bit name="fSchemeIndex" />
4819
		<bit name="fSysIndex" />
4820
		<bit name="unused1" />
4821
		<bit name="unused2" />
4822
		<bit name="unused3" />
4823
	</struct>
4824
	<struct name="OfficeArtChildAnchor">
4825
		<type name="rh" type="OfficeArtRecordHeader">
4826
			<limitation name="recVer" value="0" />
4827
			<limitation name="recInstance" value="0" />
4828
			<limitation name="recType" value="0xF00F" />
4829
			<limitation name="recLen" value="0x10" />
4830
		</type>
4831
		<int32 name="xLeft" />
4832
		<int32 name="yTop" />
4833
		<int32 name="xRight" />
4834
		<int32 name="yBottom" />
4835
	</struct>
4836
	<struct name="OfficeArtClientAnchor">
4837
		<choice name="anon">
4838
			<type type="PptOfficeArtClientAnchor" />
4839
			<type type="DocOfficeArtClientAnchor" />
4840
			<type type="XlsOfficeArtClientAnchor" />
4841
		</choice>
4842
	</struct>
4843
	<struct name="PptOfficeArtClientAnchor">
4844
		<type name="rh" type="OfficeArtRecordHeader">
4845
			<limitation name="recVer" value="0" />
4846
			<limitation name="recInstance" value="0" />
4847
			<limitation name="recType" value="0xF010" />
4848
			<limitation name="recLen" value="0x8|0x10" />
4849
		</type>
4850
		<type name="rect1" type="SmallRectStruct" condition="rh.recLen==0x8" />
4851
		<type name="rect2" type="RectStruct" condition="rh.recLen==0x10" />
4852
	</struct>
4853
	<struct name="DocOfficeArtClientAnchor">
4854
		<type name="rh" type="OfficeArtRecordHeader">
4855
			<limitation name="recVer" value="0" />
4856
			<limitation name="recInstance" value="0" />
4857
			<limitation name="recType" value="0xF010" />
4858
			<limitation name="recLen" value="0x4" />
4859
		</type>
4860
		<int32 name="clientAnchor" />
4861
	</struct>
4862
4863
	<!--
4864
		OfficeArtClientAnchorHF, OfficeArtClientAnchorSheet,
4865
		OfficeArtClientAnchorChart
4866
	-->
4867
	<struct name="XlsOfficeArtClientAnchor">
4868
		<type name="rh" type="OfficeArtRecordHeader">
4869
			<limitation name="recVer" value="0" />
4870
			<limitation name="recInstance" value="0" />
4871
			<limitation name="recType" value="0xF010" />
4872
			<limitation name="recLen" value="0x8|0x12" />
4873
		</type>
4874
		<bit name="fMove" />
4875
		<bit name="fSize" />
4876
		<uint14 name="unused" />
4877
		<int32 name="width" condition="rh.recLen==0x8" />
4878
		<int32 name="height" condition="rh.recLen==0x8" />
4879
		<uint16 name="colL" condition="rh.recLen==0x12" />
4880
		<int16 name="dxL" condition="rh.recLen==0x12" />
4881
		<uint16 name="rwT" condition="rh.recLen==0x12" />
4882
		<int16 name="dyT" condition="rh.recLen==0x12" />
4883
		<uint16 name="colR" condition="rh.recLen==0x12" />
4884
		<int16 name="dxR" condition="rh.recLen==0x12" />
4885
		<uint16 name="rwB" condition="rh.recLen==0x12" />
4886
		<int16 name="dyB" condition="rh.recLen==0x12" />
4887
	</struct>
4888
4889
	<struct name="OfficeArtFPSPL">
4890
		<type name="rh" type="OfficeArtRecordHeader">
4891
			<limitation name="recVer" value="0" />
4892
			<limitation name="recInstance" value="0" />
4893
			<limitation name="recType" value="0xF11D" />
4894
			<limitation name="recLen" value="4" />
4895
		</type>
4896
		<uint30 name="spid" />
4897
		<bit name="reserved1" />
4898
		<bit name="fLast" />
4899
	</struct>
4900
	<struct name="RectStruct">
4901
		<int32 name="top" />
4902
		<int32 name="left" />
4903
		<int32 name="right" />
4904
		<int32 name="bottom" />
4905
	</struct>
4906
	<struct name="SmallRectStruct">
4907
		<int16 name="top" />
4908
		<int16 name="left" />
4909
		<int16 name="right" />
4910
		<int16 name="bottom" />
4911
	</struct>
4912
	<struct name="OfficeArtClientData">
4913
		<choice name="anon">
4914
			<type type="DocOfficeArtClientData" />
4915
			<type type="PptOfficeArtClientData" />
4916
			<type type="XlsOfficeArtClientData" />
4917
		</choice>
4918
	</struct>
4919
	<struct name="PptOfficeArtClientData">
4920
		<type name="rh" type="OfficeArtRecordHeader">
4921
			<limitation name="recVer" value="0xF" />
4922
			<limitation name="recInstance" value="0" />
4923
			<limitation name="recType" value="0xF011" />
4924
		</type>
4925
		<type name="shapeFlagsAtom" type="ShapeFlagsAtom" optional="true" />
4926
		<type name="shapeFlags10Atom" type="ShapeFlags10Atom" optional="true" />
4927
		<type name="exObjRefAtom" type="ExObjRefAtom" optional="true" />
4928
		<type name="animationInfo" type="AnimationInfoContainer"
4929
			optional="true" />
4930
		<type name="mouseClickInteractiveInfo" type="MouseClickInteractiveInfoContainer"
4931
			optional="true" />
4932
		<type name="mouseOverInteractiveInfo" type="MouseOverInteractiveInfoContainer"
4933
			optional="true" />
4934
		<!--  sometimes this array occurs here -->
4935
		<type name="rgShapeClientRoundtripData0" type="ShapeClientRoundtripDataSubcontainerOrAtom"
4936
			array="true" />
4937
		<type name="placeholderAtom" type="PlaceholderAtom" optional="true" />
4938
		<type name="recolorInfoAtom" type="RecolorInfoAtom" optional="true" />
4939
		<type name="unknown1" type="UnknownOfficeArtClientDataChild"
4940
			optional="true" />
4941
		<type name="rgShapeClientRoundtripData" type="ShapeClientRoundtripDataSubcontainerOrAtom"
4942
			array="true" />
4943
		<type name="unknown2" type="UnknownOfficeArtClientDataChild"
4944
			optional="true" />
4945
	</struct>
4946
	<struct name="DocOfficeArtClientData">
4947
		<type name="rh" type="OfficeArtRecordHeader">
4948
			<limitation name="recVer" value="0" />
4949
			<limitation name="recInstance" value="0" />
4950
			<limitation name="recType" value="0xF011" />
4951
			<limitation name="recLen" value="4" />
4952
		</type>
4953
		<uint32 name="clientData" />
4954
	</struct>
4955
	<struct name="XlsOfficeArtClientData">
4956
		<type name="rh" type="OfficeArtRecordHeader">
4957
			<limitation name="recVer" value="0" />
4958
			<limitation name="recInstance" value="0" />
4959
			<limitation name="recType" value="0xF011" />
4960
			<limitation name="recLen" value="0" />
4961
		</type>
4962
	</struct>
4963
	<struct name="ShapeFlagsAtom">
4964
		<type name="rh" type="OfficeArtRecordHeader">
4965
			<limitation name="recVer" value="0" />
4966
			<limitation name="recInstance" value="0" />
4967
			<limitation name="recType" value="0xBDB" />
4968
			<limitation name="recLen" value="1" />
4969
		</type>
4970
		<uint8 name="todo" count="rh.recLen" />
4971
	</struct>
4972
	<struct name="ShapeFlags10Atom">
4973
		<type name="rh" type="OfficeArtRecordHeader">
4974
			<limitation name="recVer" value="0" />
4975
			<limitation name="recInstance" value="0" />
4976
			<limitation name="recType" value="0xBDC" />
4977
			<limitation name="recLen" value="1" />
4978
		</type>
4979
		<uint8 name="todo" count="rh.recLen" />
4980
	</struct>
4981
	<struct name="ExObjRefAtom">
4982
		<type name="rh" type="OfficeArtRecordHeader">
4983
			<limitation name="recVer" value="0" />
4984
			<limitation name="recInstance" value="0" />
4985
			<limitation name="recType" value="0xBC1" />
4986
			<limitation name="recLen" value="4" />
4987
		</type>
4988
		<uint32 name="exObjIdRef" />
4989
	</struct>
4990
	<struct name="AnimationInfoContainer">
4991
		<type name="rh" type="OfficeArtRecordHeader">
4992
			<limitation name="recVer" value="0xF" />
4993
			<limitation name="recInstance" value="0" />
4994
			<limitation name="recType" value="0x1014" />
4995
		</type>
4996
		<type name="animationAtom" type="AnimationInfoAtom" />
4997
		<type name="animationSound" type="SoundContainer" optional="true" />
4998
	</struct>
4999
	<struct name="AnimationInfoAtom">
5000
		<type name="rh" type="OfficeArtRecordHeader">
5001
			<limitation name="recVer" value="0x1" />
5002
			<limitation name="recInstance" value="0" />
5003
			<limitation name="recType" value="0xFF1" />
5004
			<limitation name="recLen" value="0x1C" />
5005
		</type>
5006
		<uint8 name="todo" count="0x1C" />
5007
	</struct>
5008
	<struct name="SoundContainer">
5009
		<type name="rh" type="OfficeArtRecordHeader">
5010
			<limitation name="recVer" value="0xF" />
5011
			<limitation name="recInstance" value="0" />
5012
			<limitation name="recType" value="0x7E6" />
5013
		</type>
5014
		<uint8 name="todo" count="rh.recLen" />
5015
	</struct>
5016
	<struct name="MouseClickInteractiveInfoContainer">
5017
		<type name="rh" type="RecordHeader">
5018
			<limitation name="recVer" value="0xF" />
5019
			<limitation name="recInstance" value="0" />
5020
			<limitation name="recType" value="0xFF2" />
5021
		</type>
5022
		<type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
5023
		<type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
5024
	</struct>
5025
	<struct name="MouseOverInteractiveInfoContainer">
5026
		<type name="rh" type="RecordHeader">
5027
			<limitation name="recVer" value="0xF" />
5028
			<limitation name="recInstance" value="1" />
5029
			<limitation name="recType" value="0xFF2" />
5030
		</type>
5031
		<type name="interactiveInfoAtom" type="InteractiveInfoAtom" />
5032
		<type name="macroNameAtom" type="MacroNameAtom" condition="rh.recLen&gt;24" />
5033
	</struct>
5034
	<struct name="InteractiveInfoAtom">
5035
		<type name="rh" type="RecordHeader">
5036
			<limitation name="recVer" value="0" />
5037
			<limitation name="recInstance" value="0" />
5038
			<!--  value should be 0xFF3, but value 0xFF2 has been observed too -->
5039
			<limitation name="recType" value="0xFF2|0xFF3" />
5040
			<limitation name="recLen" value="0x10" />
5041
		</type>
5042
		<uint32 name="soundIdRef" />
5043
		<uint32 name="exHyperlinkIdRef" />
5044
		<uint8 name="action">
5045
			<limitation expression="&lt;8" />
5046
		</uint8>
5047
		<uint8 name="oleVerb">
5048
			<limitation expression="&lt;3" />
5049
		</uint8>
5050
		<uint8 name="jump">
5051
			<limitation expression="&lt;7" />
5052
		</uint8>
5053
		<bit name="fAnimated" />
5054
		<bit name="fStopSound" />
5055
		<bit name="fCustomSoundReturn" />
5056
		<bit name="fVisited" />
5057
		<uint4 name="reserved" />
5058
		<uint8 name="hyperlinkType" />
5059
		<uint8 name="unused" count="3" />
5060
	</struct>
5061
	<struct name="MacroNameAtom">
5062
		<type name="rh" type="RecordHeader">
5063
			<limitation name="recVer" value="0" />
5064
			<limitation name="recInstance" value="2" />
5065
			<limitation name="recType" value="0xFBA" />
5066
			<limitation name="recLen" expression="%2==0" />
5067
		</type>
5068
		<uint8 name="macroName" count="rh.recLen" />
5069
	</struct>
5070
	<struct name="PlaceholderAtom">
5071
		<type name="rh" type="OfficeArtRecordHeader">
5072
			<limitation name="recVer" value="0" />
5073
			<limitation name="recInstance" value="0" />
5074
			<limitation name="recType" value="0xBC3" />
5075
			<limitation name="recLen" value="8" />
5076
		</type>
5077
		<int32 name="position" />
5078
		<uint8 name="placementId" />
5079
		<uint8 name="size" />
5080
		<uint16 name="unused" />
5081
	</struct>
5082
	<struct name="RecolorInfoAtom">
5083
		<type name="rh" type="OfficeArtRecordHeader">
5084
			<limitation name="recVer" value="0" />
5085
			<limitation name="recInstance" value="0" />
5086
			<limitation name="recType" value="0xFE7" />
5087
		</type>
5088
		<uint8 name="todo" count="rh.recLen" />
5089
	</struct>
5090
	<struct name="OutlineTextRefAtom">
5091
		<type name="rh" type="OfficeArtRecordHeader">
5092
			<limitation name="recVer" value="0" />
5093
			<limitation name="recInstance" value="0" />
5094
			<limitation name="recType" value="0xF9E" />
5095
			<limitation name="recLen" value="4" />
5096
		</type>
5097
		<int32 name="index">
5098
			<limitation expression="&gt;=0" />
5099
		</int32>
5100
	</struct>
5101
	<struct name="ShapeClientRoundtripDataSubcontainerOrAtom">
5102
		<!--
5103
			<type name="rh" type="OfficeArtRecordHeader"> <limitation
5104
			name="recType" value="0x1388|0xBDD|0x41F|0x420|0x426" /> </type>
5105
			<uint8 name="todo" count="rh.recLen" />
5106
		-->
5107
		<choice name="anon">
5108
			<type type="ShapeProgsTagContainer" />
5109
			<type type="RoundTripNewPlaceHolderId12Atom" />
5110
			<type type="RoundTripShapeId12Atom" />
5111
			<type type="RoundTripHFPlaceholder12Atom" />
5112
			<type type="RoundTripShapeCheckSumForCustomLayouts12Atom" />
5113
		</choice>
5114
	</struct>
5115
	<struct name="ShapeProgsTagContainer">
5116
		<type name="rh" type="OfficeArtRecordHeader">
5117
			<limitation name="recVer" value="0xF" />
5118
			<limitation name="recInstance" value="0|1|2" />
5119
			<limitation name="recType" value="0x1388" />
5120
		</type>
5121
		<type name="rgChildRec" type="ShapeProgTagsSubContainerOrAtom"
5122
			array="true" />
5123
	</struct>
5124
	<struct name="ShapeProgTagsSubContainerOrAtom">
5125
		<choice name="anon">
5126
			<type type="ProgStringTagContainer" />
5127
			<type type="ShapeProgBinaryTagContainer" />
5128
		</choice>
5129
	</struct>
5130
	<struct name="ShapeProgBinaryTagContainer">
5131
		<type name="rh" type="OfficeArtRecordHeader">
5132
			<limitation name="recVer" value="0xF" />
5133
			<limitation name="recInstance" value="0" />
5134
			<limitation name="recType" value="0x138A" />
5135
		</type>
5136
		<type name="rec" type="ShapeProgBinaryTagSubContainerOrAtom" />
5137
	</struct>
5138
	<struct name="ShapeProgBinaryTagSubContainerOrAtom">
5139
		<choice name="anon">
5140
			<type type="PP9ShapeBinaryTagExtension" />
5141
			<type type="PP10ShapeBinaryTagExtension" />
5142
			<type type="PP11ShapeBinaryTagExtension" />
5143
			<type type="UnknownBinaryTag" />
5144
		</choice>
5145
	</struct>
5146
	<struct name="PP9ShapeBinaryTagExtension">
5147
		<type name="rh" type="OfficeArtRecordHeader">
5148
			<limitation name="recVer" value="0" />
5149
			<limitation name="recInstance" value="0" />
5150
			<limitation name="recType" value="0xFBA" />
5151
			<limitation name="recLen" value="0xE" />
5152
		</type>
5153
		<uint16 name="tagName" count="7">
5154
			<!-- <limitation value='"___PPT9"' /> -->
5155
		</uint16>
5156
		<type name="rhData" type="RecordHeader">
5157
			<limitation name="recVer" value="0" />
5158
			<limitation name="recInstance" value="0" />
5159
			<limitation name="recType" value="0x138B" />
5160
		</type>
5161
		<type name="styleTextProp9Atom" type="StyleTextProp9Atom" />
5162
	</struct>
5163
	<struct name="PP10ShapeBinaryTagExtension">
5164
		<type name="rh" type="OfficeArtRecordHeader">
5165
			<limitation name="recVer" value="0" />
5166
			<limitation name="recInstance" value="0" />
5167
			<limitation name="recType" value="0xFBA" />
5168
			<limitation name="recLen" value="0x10" />
5169
		</type>
5170
		<uint16 name="tagName" count="8">
5171
			<!-- <limitation value='"___PPT10"' /> -->
5172
		</uint16>
5173
		<type name="rhData" type="RecordHeader">
5174
			<limitation name="recVer" value="0" />
5175
			<limitation name="recInstance" value="0" />
5176
			<limitation name="recType" value="0x138B" />
5177
		</type>
5178
		<uint8 name="todo" count="rhData.recLen" />
5179
	</struct>
5180
	<struct name="PP11ShapeBinaryTagExtension">
5181
		<type name="rh" type="OfficeArtRecordHeader">
5182
			<limitation name="recVer" value="0" />
5183
			<limitation name="recInstance" value="0" />
5184
			<limitation name="recType" value="0xFBA" />
5185
			<limitation name="recLen" value="0x10" />
5186
		</type>
5187
		<uint16 name="tagName" count="8">
5188
			<!-- <limitation value='"___PPT11"' /> -->
5189
		</uint16>
5190
		<type name="rhData" type="RecordHeader">
5191
			<limitation name="recVer" value="0" />
5192
			<limitation name="recInstance" value="0" />
5193
			<limitation name="recType" value="0x138B" />
5194
		</type>
5195
		<uint8 name="todo" count="rhData.recLen" />
5196
	</struct>
5197
	<struct name="RoundTripNewPlaceHolderId12Atom">
5198
		<type name="rh" type="OfficeArtRecordHeader">
5199
			<limitation name="recVer" value="0" />
5200
			<limitation name="recInstance" value="0" />
5201
			<limitation name="recType" value="0xBDD" />
5202
			<limitation name="recLen" value="1" />
5203
		</type>
5204
		<uint8 name="newPlaceHolderId" />
5205
	</struct>
5206
	<struct name="RoundTripShapeId12Atom">
5207
		<type name="rh" type="OfficeArtRecordHeader">
5208
			<limitation name="recVer" value="0" />
5209
			<limitation name="recInstance" value="0" />
5210
			<limitation name="recType" value="0x41F" />
5211
			<limitation name="recLen" value="4" />
5212
		</type>
5213
		<uint32 name="shapeId" />
5214
	</struct>
5215
	<struct name="RoundTripHFPlaceholder12Atom">
5216
		<type name="rh" type="OfficeArtRecordHeader">
5217
			<limitation name="recVer" value="0" />
5218
			<limitation name="recInstance" value="0" />
5219
			<limitation name="recType" value="0x420" />
5220
			<limitation name="recLen" value="1" />
5221
		</type>
5222
		<uint8 name="placeHolderId" />
5223
	</struct>
5224
	<struct name="RoundTripShapeCheckSumForCustomLayouts12Atom">
5225
		<type name="rh" type="OfficeArtRecordHeader">
5226
			<limitation name="recVer" value="0" />
5227
			<limitation name="recInstance" value="0" />
5228
			<limitation name="recType" value="0x426" />
5229
			<!--  documentations says this field should be size 8 -->
5230
			<limitation name="recLen" value="8|40" />
5231
		</type>
5232
		<uint32 name="shapeCheckSum" />
5233
		<uint32 name="textCheckSum" />
5234
		<uint8 name="unknown" count="rh.recLen-8" />
5235
	</struct>
5236
	<struct name="OfficeArtClientTextBox">
5237
		<choice name="anon">
5238
			<type type="XlsOfficeArtClientTextBox" />
5239
			<type type="DocOfficeArtClientTextBox" />
5240
			<type type="PptOfficeArtClientTextBox" />
5241
		</choice>
5242
	</struct>
5243
	<struct name="XlsOfficeArtClientTextBox">
5244
		<type name="rh" type="OfficeArtRecordHeader">
5245
			<limitation name="recVer" value="0" />
5246
			<limitation name="recInstance" value="0" />
5247
			<limitation name="recType" value="0xF00D" />
5248
			<limitation name="recLen" value="0" />
5249
		</type>
5250
	</struct>
5251
	<struct name="DocOfficeArtClientTextBox">
5252
		<type name="rh" type="OfficeArtRecordHeader">
5253
			<limitation name="recVer" value="0|0xF" />
5254
			<limitation name="recInstance" value="0" />
5255
			<limitation name="recType" value="0xF00D" />
5256
			<limitation name="recLen" value="0x4" />
5257
		</type>
5258
		<uint32 name="clientTextBox" />
5259
	</struct>
5260
	<struct name="PptOfficeArtClientTextBox">
5261
		<type name="rh" type="OfficeArtRecordHeader">
5262
			<limitation name="recVer" value="0|0xF" />
5263
			<!--  documentation says value should be 0 -->
5264
			<limitation name="recInstance" value="0" />
5265
			<limitation name="recType" value="0xF00D" />
5266
			<limitation name="recLen" expression="!=4" />
5267
		</type>
5268
		<type name="rgChildRec" array="true" size="rh.recLen"
5269
			type="TextClientDataSubContainerOrAtom" />
5270
	</struct>
5271
	<struct name="TextRulerAtom">
5272
		<type name="rh" type="RecordHeader">
5273
			<limitation name="recVer" value="0" />
5274
			<limitation name="recInstance" value="0" />
5275
			<limitation name="recType" value="0xFA6" />
5276
		</type>
5277
		<type name="textRuler" type="TextRuler" />
5278
	</struct>
5279
	<struct name="OfficeArtIDCL">
5280
		<uint32 name="dgid" />
5281
		<uint32 name="cspidCur" />
5282
	</struct>
5283
	<struct name="OfficeArtFOPTE">
5284
		<type name="opid" type="OfficeArtFOPTEOPID" />
5285
		<int32 name="op" />
5286
	</struct>
5287
	<struct name="OfficeArtFOPTEOPID">
5288
		<uint14 name="opid" />
5289
		<bit name="fBid" />
5290
		<bit name="fComplex" />
5291
	</struct>
5292
	<struct name="OfficeArtColorMRUContainer">
5293
		<type name="rh" type="OfficeArtRecordHeader">
5294
			<limitation name="recVer" value="0x0" />
5295
			<limitation name="recType" value="0xF11A" />
5296
			<limitation expression="recLen==4*recInstance" />
5297
		</type>
5298
		<type name="rgmsocr" type="MSOCR" count="rh.recInstance" />
5299
	</struct>
5300
	<struct name="MSOCR">
5301
		<uint8 name="red" />
5302
		<uint8 name="green" />
5303
		<uint8 name="blue" />
5304
		<uint3 name="unused1" />
5305
		<bit name="fSchemeIndex" />
5306
		<uint4 name="unused2" />
5307
		<!--
5308
			an addition limitation is needed that says that if fSchemeIndex ==1
5309
			then green and blue must be 0
5310
		-->
5311
	</struct>
5312
	<struct name="OfficeArtSplitMenuColorContainer">
5313
		<type name="rh" type="OfficeArtRecordHeader">
5314
			<limitation name="recVer" value="0x0" />
5315
			<limitation name="recInstance" value="0x4" />
5316
			<limitation name="recType" value="0xF11E" />
5317
			<limitation name="recLen" value="0x10" />
5318
		</type>
5319
		<type name="smca" type="MSOCR" count="4" />
5320
	</struct>
5321
	<struct name="todo">
5322
		<!--
5323
			a placeholder for structures that are not in the document
5324
			specification yet
5325
		-->
5326
		<type name="rh" type="RecordHeader">
5327
			<!--
5328
				disallow structures that are implemented <limitation name="recType"
5329
				value="!1000" />
5330
			-->
5331
		</type>
5332
		<uint8 name="anon" count="rh.recLen" />
5333
	</struct>
5334
	<struct name="WordDocument">
5335
		<type name="fib" type="Fib" />
5336
	</struct>
5337
	<struct name="Fib">
5338
		<type name="base" type="FibBase" />
5339
		<uint16 name="csw">
5340
			<limitation value="14" />
5341
		</uint16>
5342
		<type name="fibRgW" type="FibRgW97" />
5343
		<uint16 name="cslw">
5344
			<limitation value="22" />
5345
		</uint16>
5346
		<type name="fibRgLw" type="FibRgLw97" />
5347
		<uint16 name="cbRgFcLcb">
5348
			<limitation value="0x5D|0x6C|0x88|0xA4|0xB7" />
5349
		</uint16>
5350
		<type name="fibRgFcLcbBlob" type="FibRgFcLcb97" />
5351
		<type name="fibRgFcLcbBlob2" type="FibRgFcLcb2000" condition="cbRgFcLcb&gt;=0x6C" />
5352
		<type name="fibRgFcLcbBlob3" type="FibRgFcLcb2002" condition="cbRgFcLcb&gt;=0x88" />
5353
		<uint16 name="cswNew">
5354
			<limitation value="0|2|5" />
5355
		</uint16>
5356
		<uint8 name="fibRgCswNew" count="2*cswNew" />
5357
		<!--  <type name="fibRgCswNew" type="fibRgCswNew" />-->
5358
		<uint8 name="trail" count="fibRgLw.cbMac-156-8*cbRgFcLcb-2*cswNew" />
5359
	</struct>
5360
        <!--
5361
	     The FibBase structure is the fixed-size portion of the Fib.  Let's
5362
             support Word6, Word7 and Word8 files.  FibBase of any newer file
5363
             is compatible with Word8.
5364
	  -->
5365
	<struct name="FibBase">
5366
		<uint16 name="wIdent" />
5367
                <!-- NOTE: Word6 and Word7 use other magic number.  The
5368
                     expected value was Word8 specific. -->
5369
		<!-- <limitation value="0xA5EC" /> -->
5370
		<!-- </uint16> -->
5371
		<uint16 name="nFib">
5372
			<limitation value="0x65|0x67|0x68|0xC0|0xC1|0xC2|0x101|0x10B|0x10C|0x112" />
5373
		</uint16>
5374
		<uint16 name="unused" />
5375
		<uint16 name="lid" />
5376
		<uint16 name="pnNext" />
5377
		<bit name="fDot" />
5378
		<bit name="fGlsy" />
5379
		<bit name="fComplex" />
5380
		<bit name="fHasPic" />
5381
		<uint4 name="cQuickSaves" />
5382
		<bit name="fEncrypted" />
5383
		<bit name="fWhichTblStm" />
5384
		<bit name="fReadOnlyRecommended" />
5385
		<bit name="fWriteReservation" />
5386
		<bit name="fExtChar" />
5387
		<bit name="fLoadOverride" />
5388
		<bit name="fFarEast" />
5389
		<bit name="fObfuscated" />
5390
		<uint16 name="nFibBack" />
5391
                <!-- NOTE: In case of Word6 it's ZERO.  The expected values
5392
                     were Word8 specific. -->
5393
		<!--	<limitation value="0xBF|0xC1" /> -->
5394
		<!-- </uint16> -->
5395
		<uint32 name="IKey" />
5396
		<uint8 name="envr" />
5397
		<!-- NOTE: Some Word8 files have different values. -->
5398
		<!--	<limitation value="0" /> -->
5399
		<!-- </uint8> -->
5400
		<bit name="fMac" />
5401
		<!-- NOTE: Some Word8 files have different values. -->
5402
		<!--	<limitation value="false" /> -->
5403
		<!-- </bit> -->
5404
		<bit name="fEmptySpecial" />
5405
		<bit name="fLoadOverridePage" />
5406
		<bit name="reserved1" />
5407
		<bit name="reserved2" />
5408
		<uint3 name="fSpare0" />
5409
		<uint16 name="reserved3" />
5410
		<!-- NOTE: Some Word8 files have different values. -->
5411
		<!--	<limitation value="0" /> -->
5412
		<!-- </uint16> -->
5413
		<uint16 name="reserved4" />
5414
		<!-- NOTE: Some Word8 files have different values. -->
5415
		<!--	<limitation value="0" /> -->
5416
		<!-- </uint16> -->
5417
		<uint32 name="reserved5" />
5418
		<uint32 name="reserved6" />
5419
	</struct>
5420
	<struct name="FibRgW97">
5421
		<uint16 name="reserved1" />
5422
		<uint16 name="reserved2" />
5423
		<uint16 name="reserved3" />
5424
		<uint16 name="reserved4" />
5425
		<uint16 name="reserved5" />
5426
		<uint16 name="reserved6" />
5427
		<uint16 name="reserved7" />
5428
		<uint16 name="reserved8" />
5429
		<uint16 name="reserved9" />
5430
		<uint16 name="reserved10" />
5431
		<uint16 name="reserved11" />
5432
		<uint16 name="reserved12" />
5433
		<uint16 name="reserved13" />
5434
		<uint16 name="lidFE" />
5435
	</struct>
5436
	<struct name="FibRgLw97">
5437
		<uint32 name="cbMac" />
5438
		<uint32 name="reserved1" />
5439
		<uint32 name="reserved2" />
5440
		<int32 name="ccpText">
5441
			<limitation expression="&gt;=0" />
5442
		</int32>
5443
		<int32 name="ccpFtn">
5444
			<limitation expression="&gt;=0" />
5445
		</int32>
5446
		<int32 name="ccpHdd">
5447
			<limitation expression="&gt;=0" />
5448
		</int32>
5449
		<uint32 name="reserved3">
5450
			<limitation value="0" />
5451
		</uint32>
5452
		<int32 name="ccpAtn">
5453
			<limitation expression="&gt;=0" />
5454
		</int32>
5455
		<int32 name="ccpEdn">
5456
			<limitation expression="&gt;=0" />
5457
		</int32>
5458
		<int32 name="ccpTxbx">
5459
			<limitation expression="&gt;=0" />
5460
		</int32>
5461
		<int32 name="ccpHdrTxbx">
5462
			<limitation expression="&gt;=0" />
5463
		</int32>
5464
		<uint32 name="reserved4" />
5465
		<uint32 name="reserved5" />
5466
		<uint32 name="reserved6" />
5467
		<uint32 name="reserved7" />
5468
		<uint32 name="reserved8" />
5469
		<uint32 name="reserved9" />
5470
		<uint32 name="reserved10" />
5471
		<uint32 name="reserved11" />
5472
		<uint32 name="reserved12" />
5473
		<uint32 name="reserved13">
5474
			<limitation value="0" />
5475
		</uint32>
5476
		<uint32 name="reserved14">
5477
			<limitation value="0" />
5478
		</uint32>
5479
	</struct>
5480
	<struct name="FibRgFcLcb97">
5481
		<uint32 name="fcStshfOrig" />
5482
		<uint32 name="lcbStshfOrig" />
5483
		<uint32 name="fcStshf" />
5484
		<uint32 name="lcbStshf" />
5485
		<uint32 name="fcPlcffndRef" />
5486
		<uint32 name="lcbPlcffndRef" />
5487
		<uint32 name="fcPlcffndTxt" />
5488
		<uint32 name="lcbPlcffndTxt" />
5489
		<uint32 name="fcPlcfandRef" />
5490
		<uint32 name="lcbPlcfandRef" />
5491
		<uint32 name="fcPlcfandTxt" />
5492
		<uint32 name="lcbPlcfandTxt" />
5493
		<uint32 name="fcPlcfSed" />
5494
		<uint32 name="lcbPlcfSed" />
5495
		<uint32 name="fcPlcPad" />
5496
		<uint32 name="lcbPlcPad" />
5497
		<uint32 name="fcPlcfPhe" />
5498
		<uint32 name="lcbPlcfPhe" />
5499
		<uint32 name="fcSttbfGlsy" />
5500
		<uint32 name="lcbSttbfGlsy" />
5501
		<uint32 name="fcPlcfGlsy" />
5502
		<uint32 name="lcbPlcfGlsy" />
5503
		<uint32 name="fcPlcfHdd" />
5504
		<uint32 name="lcbPlcfHdd" />
5505
		<uint32 name="fcPlcfBteChpx" />
5506
		<uint32 name="lcbPlcfBteChpx" />
5507
		<uint32 name="fcPlcfBtePapx" />
5508
		<uint32 name="lcbPlcfBtePapx" />
5509
		<uint32 name="fcPlcfSea" />
5510
		<uint32 name="lcbPlcfSea" />
5511
		<uint32 name="fcSttbfFfn" />
5512
		<uint32 name="lcbSttbfFfn" />
5513
		<uint32 name="fcPlcfFldMom" />
5514
		<uint32 name="lcbPlcfFldMom" />
5515
		<uint32 name="fcPlcfFldHdr" />
5516
		<uint32 name="lcbPlcfFldHdr" />
5517
		<uint32 name="fcPlcfFldFtn" />
5518
		<uint32 name="lcbPlcfFldFtn" />
5519
		<uint32 name="fcPlcfFldAtn" />
5520
		<uint32 name="lcbPlcfFldAtn" />
5521
		<uint32 name="fcPlcfFldMcr" />
5522
		<uint32 name="lcbPlcfFldMcr" />
5523
		<uint32 name="fcSttbfBkmk" />
5524
		<uint32 name="lcbSttbfBkmk" />
5525
		<uint32 name="fcPlcfBkf" />
5526
		<uint32 name="lcbPlcfBkf" />
5527
		<uint32 name="fcPlcfBkl" />
5528
		<uint32 name="lcbPlcfBkl" />
5529
		<uint32 name="fcCmds" />
5530
		<uint32 name="lcbCmds" />
5531
		<uint32 name="fcUnused1" />
5532
		<uint32 name="lcbUnused1" />
5533
		<uint32 name="fcSttbfMcr" />
5534
		<uint32 name="lcbSttbfMcr" />
5535
		<uint32 name="fcPrDrvr" />
5536
		<uint32 name="lcbPrDrvr" />
5537
		<uint32 name="fcPrEnvPort" />
5538
		<uint32 name="lcbPrEnvPort" />
5539
		<uint32 name="fcPrEnvLand" />
5540
		<uint32 name="lcbPrEnvLand" />
5541
		<uint32 name="fcWss" />
5542
		<uint32 name="lcbWss" />
5543
		<uint32 name="fcDop" />
5544
		<uint32 name="lcbDop" />
5545
		<uint32 name="fcSttbfAssoc" />
5546
		<uint32 name="lcbSttbfAssoc" />
5547
		<uint32 name="fcClx" />
5548
		<uint32 name="lcbClx" />
5549
		<uint32 name="fcPlcfPgdFtn" />
5550
		<uint32 name="lcbPlcfPgdFtn" />
5551
		<uint32 name="fcAutosaveSource" />
5552
		<uint32 name="lcbAutosaveSource" />
5553
		<uint32 name="fcGrpXstAtnOwners" />
5554
		<uint32 name="lcbGrpXstAtnOwners" />
5555
		<uint32 name="fcSttbfAtnBkmk" />
5556
		<uint32 name="lcbSttbfAtnBkmk" />
5557
		<uint32 name="fcUnused2" />
5558
		<uint32 name="lcbUnused2" />
5559
		<uint32 name="fcUnused3" />
5560
		<uint32 name="lcbUnused3" />
5561
		<uint32 name="fcPlcSpaMom" />
5562
		<uint32 name="lcbPlcSpaMom" />
5563
		<uint32 name="fcPlcSpaHdr" />
5564
		<uint32 name="lcbPlcSpaHdr" />
5565
		<uint32 name="fcPlcfAtnBkf" />
5566
		<uint32 name="lcbPlcfAtnBkf" />
5567
		<uint32 name="fcPlcfAtnBkl" />
5568
		<uint32 name="lcbPlcfAtnBkl" />
5569
		<uint32 name="fcPms" />
5570
		<uint32 name="lcbPms" />
5571
		<uint32 name="fcFormFldSttbs" />
5572
		<uint32 name="lcbFormFldSttbs" />
5573
		<uint32 name="fcPlcfendRef" />
5574
		<uint32 name="lcbPlcfendRef" />
5575
		<uint32 name="fcPlcfendTxt" />
5576
		<uint32 name="lcbPlcfendTxt" />
5577
		<uint32 name="fcPlcfFldEdn" />
5578
		<uint32 name="lcbPlcfFldEdn" />
5579
		<uint32 name="fcUnused4" />
5580
		<uint32 name="lcbUnused4" />
5581
		<uint32 name="fcDggInfo" />
5582
		<uint32 name="lcbDggInfo" />
5583
		<uint32 name="fcSttbfRMark" />
5584
		<uint32 name="lcbSttbfRMark" />
5585
		<uint32 name="fcSttbfCaption" />
5586
		<uint32 name="lcbSttbfCaption" />
5587
		<uint32 name="fcSttbfAutoCaption" />
5588
		<uint32 name="lcbSttbfAutoCaption" />
5589
		<uint32 name="fcPlcfWkb" />
5590
		<uint32 name="lcbPlcfWkb" />
5591
		<uint32 name="fcPlcfSpl" />
5592
		<uint32 name="lcbPlcfSpl" />
5593
		<uint32 name="fcPlcftxbxTxt" />
5594
		<uint32 name="lcbPlcftxbxTxt" />
5595
		<uint32 name="fcPlcfFldTxbx" />
5596
		<uint32 name="lcbPlcfFldTxbx" />
5597
		<uint32 name="fcPlcfHdrtxbxTxt" />
5598
		<uint32 name="lcbPlcfHdrtxbxTxt" />
5599
		<uint32 name="fcPlcffldHdrTxbx" />
5600
		<uint32 name="lcbPlcffldHdrTxbx" />
5601
		<uint32 name="fcStwUser" />
5602
		<uint32 name="lcbStwUser" />
5603
		<uint32 name="fcSttbTtmbd" />
5604
		<uint32 name="lcbSttbTtmbd" />
5605
		<uint32 name="fcCookieData" />
5606
		<uint32 name="lcbCookieData" />
5607
		<uint32 name="fcPgdMotherOldOld" />
5608
		<uint32 name="lcbPgdMotherOldOld" />
5609
		<uint32 name="fcBkdMotherOldOld" />
5610
		<uint32 name="lcbBkdMotherOldOld" />
5611
		<uint32 name="fcPgdFtnOldOld" />
5612
		<uint32 name="lcbPgdFtnOldOld" />
5613
		<uint32 name="fcBkdFtnOldOld" />
5614
		<uint32 name="lcbBkdFtnOldOld" />
5615
		<uint32 name="fcPgdEdnOldOld" />
5616
		<uint32 name="lcbPgdEdnOldOld" />
5617
		<uint32 name="fcBkdEdnOldOld" />
5618
		<uint32 name="lcbBkdEdnOldOld" />
5619
		<uint32 name="fcSttbfIntlFld" />
5620
		<uint32 name="lcbSttbfIntlFld" />
5621
		<uint32 name="fcRouteSlip" />
5622
		<uint32 name="lcbRouteSlip" />
5623
		<uint32 name="fcSttbSavedBy" />
5624
		<uint32 name="lcbSttbSavedBy" />
5625
		<uint32 name="fcSttbFnm" />
5626
		<uint32 name="lcbSttbFnm" />
5627
		<uint32 name="fcPlfLst" />
5628
		<uint32 name="lcbPlfLst" />
5629
		<uint32 name="fcPlfLfo" />
5630
		<uint32 name="lcbPlfLfo" />
5631
		<uint32 name="fcPlcfTxbxBkd" />
5632
		<uint32 name="lcbPlcfTxbxBkd" />
5633
		<uint32 name="fcPlcfTxbxHdrBkd" />
5634
		<uint32 name="lcbPlcfTxbxHdrBkd" />
5635
		<uint32 name="fcDocUndoWord9" />
5636
		<uint32 name="lcbDocUndoWord9" />
5637
		<uint32 name="fcRgbUse" />
5638
		<uint32 name="lcbRgbUse" />
5639
		<uint32 name="fcUsp" />
5640
		<uint32 name="lcbUsp" />
5641
		<uint32 name="fcUskf" />
5642
		<uint32 name="lcbUskf" />
5643
		<uint32 name="fcPlcupcRgbUse" />
5644
		<uint32 name="lcbPlcupcRgbUse" />
5645
		<uint32 name="fcPlcupcUsp" />
5646
		<uint32 name="lcbPlcupcUsp" />
5647
		<uint32 name="fcSttbGlsyStyle" />
5648
		<uint32 name="lcbSttbGlsyStyle" />
5649
		<uint32 name="fcPlgosl" />
5650
		<uint32 name="lcbPlgosl" />
5651
		<uint32 name="fcPlcocx" />
5652
		<uint32 name="lcbPlcocx" />
5653
		<uint32 name="fcPlcfBteLvc" />
5654
		<uint32 name="lcbPlcfBteLvc" />
5655
		<uint32 name="dwLowDateTime" />
5656
		<uint32 name="dwHighDateTime" />
5657
		<uint32 name="fcPlcfLvcPre10" />
5658
		<uint32 name="lcbPlcfLvcPre10" />
5659
		<uint32 name="fcPlcfAsumy" />
5660
		<uint32 name="lcbPlcfAsumy" />
5661
		<uint32 name="fcPlcfGram" />
5662
		<uint32 name="lcbPlcfGram" />
5663
		<uint32 name="fcSttbListNames" />
5664
		<uint32 name="lcbSttbListNames" />
5665
		<uint32 name="fcSttbfUssr" />
5666
		<uint32 name="lcbSttbfUssr" />
5667
	</struct>
5668
	<struct name="FibRgFcLcb2000">
5669
		<uint32 name="fcPlcfTch" />
5670
		<uint32 name="lcbPlcfTch" />
5671
		<uint32 name="fcRmdThreading" />
5672
		<uint32 name="lcbRmdThreading" />
5673
		<uint32 name="fcMid" />
5674
		<uint32 name="lcbMid" />
5675
		<uint32 name="fcSttbRgtplc" />
5676
		<uint32 name="lcbSttbRgtplc" />
5677
		<uint32 name="fcMsoEnvelope" />
5678
		<uint32 name="lcbMsoEnvelope" />
5679
		<uint32 name="fcPlcfLad" />
5680
		<uint32 name="lcbPlcfLad" />
5681
		<uint32 name="fcRgDofr" />
5682
		<uint32 name="lcbRgDofr" />
5683
		<uint32 name="fcPlcosl" />
5684
		<uint32 name="lcbPlcosl" />
5685
		<uint32 name="fcPlcfCookieOld" />
5686
		<uint32 name="lcbPlcfCookieOld" />
5687
		<uint32 name="fcPgdMotherOld" />
5688
		<uint32 name="lcbPgdMotherOld" />
5689
		<uint32 name="fcBkdMotherOld" />
5690
		<uint32 name="lcbBkdMotherOld" />
5691
		<uint32 name="fcPgdFtnOld" />
5692
		<uint32 name="lcbPgdFtnOld" />
5693
		<uint32 name="fcBkdFtnOld" />
5694
		<uint32 name="lcbBkdFtnOld" />
5695
		<uint32 name="fcPgdEdnOld" />
5696
		<uint32 name="lcbPgdEdnOld" />
5697
		<uint32 name="fcBkdEdnOld" />
5698
		<uint32 name="lcbBkdEdnOld" />
5699
	</struct>
5700
	<struct name="FibRgFcLcb2002">
5701
		<uint32 name="fcUnused1" />
5702
		<uint32 name="lcbUnused1" />
5703
		<uint32 name="fcPlcfPgp" />
5704
		<uint32 name="lcbPlcfPgp" />
5705
		<uint32 name="fcPlcfuim" />
5706
		<uint32 name="lcbPlcfuim" />
5707
		<uint32 name="fcPlfguidUim" />
5708
		<uint32 name="lcbPlfguidUim" />
5709
		<uint32 name="fcAtrdExtra" />
5710
		<uint32 name="lcbAtrdExtra" />
5711
		<uint32 name="fcPlrsid" />
5712
		<uint32 name="lcbPlrsid" />
5713
		<uint32 name="fcSttbfBkmkFactoid" />
5714
		<uint32 name="lcbSttbfBkmkFactoid" />
5715
		<uint32 name="fcPlcfBkfFactoid" />
5716
		<uint32 name="lcbPlcfBkfFactoid" />
5717
		<uint32 name="fcPlcfcookie" />
5718
		<uint32 name="lcbPlcfcookie" />
5719
		<uint32 name="fcPlcfBklFactoid" />
5720
		<uint32 name="lcbPlcfBklFactoid" />
5721
		<uint32 name="fcFactoidData" />
5722
		<uint32 name="lcbFactoidData" />
5723
		<uint32 name="fcDocUndo" />
5724
		<uint32 name="lcbDocUndo" />
5725
		<uint32 name="fcSttbfBkmkFcc" />
5726
		<uint32 name="lcbSttbfBkmkFcc" />
5727
		<uint32 name="fcPlcfBkfFcc" />
5728
		<uint32 name="lcbPlcfBkfFcc" />
5729
		<uint32 name="fcPlcfBklFcc" />
5730
		<uint32 name="lcbPlcfBklFcc" />
5731
		<uint32 name="fcSttbfbkmkBPRepairs" />
5732
		<uint32 name="lcbSttbfbkmkBPRepairs" />
5733
		<uint32 name="fcPlcfbkfBPRepairs" />
5734
		<uint32 name="lcbPlcfbkfBPRepairs" />
5735
		<uint32 name="fcPlcfbklBPRepairs" />
5736
		<uint32 name="lcbPlcfbklBPRepairs" />
5737
		<uint32 name="fcPmsNew" />
5738
		<uint32 name="lcbPmsNew" />
5739
		<uint32 name="fcODSO" />
5740
		<uint32 name="lcbODSO" />
5741
		<uint32 name="fcPlcfpmiOldXP" />
5742
		<uint32 name="lcbPlcfpmiOldXP" />
5743
		<uint32 name="fcPlcfpmiNewXP" />
5744
		<uint32 name="lcbPlcfpmiNewXP" />
5745
		<uint32 name="fcPlcfpmiMixedXP" />
5746
		<uint32 name="lcbPlcfpmiMixedXP" />
5747
		<uint32 name="fcUnused2" />
5748
		<uint32 name="lcbUnused2" />
5749
		<uint32 name="fcPlcffactoid" />
5750
		<uint32 name="lcbPlcffactoid" />
5751
	</struct>
5752
	<struct name="Table">
5753
		<type name="stsh" type="STSH" size="468" />
5754
		<type name="plcfSed" type="PlcfSed" size="20" />
5755
		<!--
5756
			size should be gotten from lcbPlcfSed
5757
		-->
5758
		<type name="plcfHdd" type="Plcfhdd" size="52" />
5759
		<type name="plcfBteChpx" type="PlcBteChpx" size="12" />
5760
		<type name="plcfBtePapx" type="PlcfBtePapx" size="12" />
5761
		<type name="cmds" type="Tcg" size="12" />
5762
		<type name="clx" type="Clx" size="21" />
5763
		<type name="sttbfFfn" type="SttbfFfn" size="246" />
5764
		<uint8 name="dop" count="600" />
5765
	</struct>
5766
	<struct name="STSH">
5767
		<type name="lpstshi" type="LPStshi" />
5768
		<type name="rglpstd" type="LPStd" count="20" />
5769
	</struct>
5770
	<struct name="LPStshi">
5771
		<uint16 name="cbSthi" />
5772
		<uint8 name="stshi" count="cbSthi" />
5773
	</struct>
5774
	<struct name="LPStd">
5775
		<uint16 name="cbStd" />
5776
		<uint8 name="std" count="cbStd" />
5777
		<uint8 name="padding" condition="cbStd%2==1" />
5778
	</struct>
5779
	<struct name="PlcfSed">
5780
		<uint32 name="aCP" count="2" />
5781
		<type name="aSed" type="Sed" count="1" />
5782
	</struct>
5783
	<struct name="Sed">
5784
		<uint16 name="fn" />
5785
		<int32 name="fcSepx" />
5786
		<uint16 name="fnMpr" />
5787
		<uint32 name="fcMpr" />
5788
	</struct>
5789
	<struct name="Plcfhdd">
5790
		<uint32 name="aCP" count="13" />
5791
	</struct>
5792
	<struct name="PlcBteChpx">
5793
		<uint32 name="aCP" count="2" />
5794
		<uint32 name="aPnBteChpx" count="1" />
5795
	</struct>
5796
	<struct name="PlcfBtePapx">
5797
		<uint32 name="aCP" count="2" />
5798
		<uint32 name="aPnBteChpx" count="1" />
5799
	</struct>
5800
	<struct name="Tcg">
5801
		<uint8 name="nTcgVer">
5802
			<limitation value="0" />
5803
		</uint8>
5804
		<uint8 name="todo" count="11" />
5805
	</struct>
5806
	<struct name="Clx">
5807
		<type name="RgPrc" type="Pcr" array="true" />
5808
		<type name="pcdt" type="Pcdt" />
5809
	</struct>
5810
	<struct name="Pcr">
5811
		<uint8 name="clxt">
5812
			<limitation value="1" />
5813
		</uint8>
5814
		<type name="prcData" type="PrcData" />
5815
	</struct>
5816
	<struct name="PrcData">
5817
		<int16 name="cbGrpprl">
5818
			<limitation expression="&gt;=0" />
5819
			<limitation expression="&lt;=16290" />
5820
			<limitation expression="%2==0" />
5821
		</int16>
5822
		<type name="GrpPrl" type="Sprm" count="cbGrpprl/2" />
5823
	</struct>
5824
	<struct name="Sprm">
5825
		<uint9 name="ispmd" />
5826
		<bit name="fSpec" />
5827
		<uint3 name="sgc" />
5828
		<uint3 name="spra" />
5829
	</struct>
5830
	<struct name="Pcdt">
5831
		<uint8 name="clxt">
5832
			<limitation value="2" />
5833
		</uint8>
5834
		<uint32 name="lcb" />
5835
		<type name="PlcPcd" type="Pcd" count="lcb/8" />
5836
	</struct>
5837
	<struct name="Pcd">
5838
		<bit name="fNoParaLast" />
5839
		<bit name="fR1" />
5840
		<bit name="fDirtly">
5841
			<limitation value="false" />
5842
		</bit>
5843
		<bit name="fR2" />
5844
		<uint12 name="fR3" />
5845
		<type name="fc" type="FCompressed" />
5846
		<type name="prm" type="Prm" />
5847
	</struct>
5848
	<struct name="FCompressed">
5849
		<uint30 name="fc" />
5850
		<bit name="fCompressed" />
5851
		<bit name="r1" />
5852
	</struct>
5853
	<struct name="Prm">
5854
		<choice name="prm">
5855
			<type type="Prm0" />
5856
			<type type="Prm1" />
5857
		</choice>
5858
	</struct>
5859
	<struct name="Prm0">
5860
		<bit name="fComplex">
5861
			<limitation value="false" />
5862
		</bit>
5863
		<uint7 name="isprm" />
5864
		<uint8 name="val" />
5865
	</struct>
5866
	<struct name="Prm1">
5867
		<bit name="fComplex">
5868
			<limitation value="true" />
5869
		</bit>
5870
		<uint15 name="igrpprl" />
5871
	</struct>
5872
	<struct name="SttbfFfn">
5873
		<uint16 name="cData" />
5874
		<uint16 name="cbExtra">
5875
			<limitation value="0" />
5876
		</uint16>
5877
		<type name="data" type="SttbfFfnEntry" count="cData" />
5878
	</struct>
5879
	<struct name="SttbfFfnEntry">
5880
		<uint8 name="cchData" />
5881
		<uint8 name="Data" count="cchData" />
5882
	</struct>
5883
	<struct name="CodePageString">
5884
		<!--  limitation here is complicated: todo -->
5885
		<uint32 name="size">
5886
			<!--  <limitation expression="%2==0" /> -->
5887
		</uint32>
5888
		<!--  needs padding to a multiple of 4 -->
5889
		<uint8 name="characters" count="4*(size/4)+((size%4!=0)?4:0)" />
5890
	</struct>
5891
	<struct name="FILETIME">
5892
		<uint32 name="dwLowDateTime" />
5893
		<uint32 name="dwHighDateTime" />
5894
	</struct>
5895
	<struct name="ClipboardData">
5896
		<uint32 name="size" />
5897
		<uint32 name="format" />
5898
		<!--  needs padding to a multiple of 4 -->
5899
		<uint8 name="data" count="4*(size/4)+((size%4!=0)?4:0)-4" />
5900
	</struct>
5901
	<struct name="PropertyIdentifierAndOffset">
5902
		<uint32 name="propertyIdentifier" />
5903
		<uint32 name="offset" />
5904
	</struct>
5905
	<struct name="TypedPropertyValue">
5906
		<!--
5907
			size="../PropertySetStream._count()"">
5908
		-->
5909
		<uint16 name="type" />
5910
		<uint16 name="padding">
5911
			<!-- 	<limitation value="0" />-->
5912
		</uint16>
5913
		<uint16 name="vt_I2" condition="type==2" />
5914
		<uint16 name="paddingI2" condition="type==2" />
5915
		<uint32 name="vg_ERROR" condition="type==10" />
5916
		<type name="vt_lpstr" type="CodePageString" condition="type==30" />
5917
		<type name="vg_FILETIME" type="FILETIME" condition="type==64" />
5918
		<type name="vg_CF" type="ClipboardData" condition="type==71" />
5919
		<!--
5920
			<uint8 name="padding"
5921
			count="../PropertySetStream[position()=this._arraypos]" />
5922
		-->
5923
	</struct>
5924
	<struct name="PropertySet">
5925
		<uint32 name="size" />
5926
		<uint32 name="numProperties" />
5927
		<type name="propertyIdentifierAndOffset" type="PropertyIdentifierAndOffset"
5928
			count="numProperties" />
5929
		<type name="property" type="TypedPropertyValue" count="numProperties" />
5930
	</struct>
5931
	<struct name="PropertySetStream">
5932
		<uint16 name="byteOrder">
5933
			<limitation value="0xFFFE" />
5934
		</uint16>
5935
		<uint16 name="version" />
5936
		<uint32 name="systemIdentifier" />
5937
		<uint8 name="clsID" count="16" />
5938
		<uint32 name="numPropertySets">
5939
			<limitation value="1|2" />
5940
		</uint32>
5941
		<uint8 name="fmtID0" count="16" />
5942
		<uint32 name="offset0" />
5943
		<uint8 name="fmtID1" count="16" condition="numPropertySets==2" />
5944
		<uint32 name="offset1" condition="numPropertySets==2" />
5945
		<type name="propertySet1" type="PropertySet" />
5946
		<type name="propertySet2" type="PropertySet" condition="numPropertySets==2" />
5947
		<type name="padding" type="Byte" array="true" />
5948
	</struct>
5949
	<struct name="SummaryInformationPropertySetStream">
5950
		<type name="propertySet" type="PropertySetStream">
5951
			<limitation name="version" value="0" />
5952
		</type>
5953
	</struct>
5954
	<struct name="DocumentSummaryInformationPropertySetStream">
5955
		<type name="propertySet" type="PropertySetStream">
5956
			<limitation name="version" value="0" />
5957
		</type>
5958
	</struct>
5959
	<stream name="PowerPointDocument" key="PowerPoint Document"
5960
		type="PowerPointStructs" />
5961
	<stream name="CurrentUser" key="Current User" type="CurrentUserStream" />
5962
	<stream name="Pictures" key="Pictures" type="OfficeArtBStoreDelay" />
5963
	<stream name="WordDocument" key="WordDocument" type="WordDocument" />
5964
	<stream name="1Table" key="1Table" type="Table" />
5965
	<stream name="SummaryInformation" key="SummaryInformation"
5966
		type="SummaryInformationPropertySetStream" />
5967
	<stream name="DocumentSummaryInformation" key="DocumentSummaryInformation"
5968
		type="DocumentSummaryInformationPropertySetStream" />
5969
	<!--
5970
		two temporary streams to work around the fact that we cannot parse
5971
		StyleTextPropAtom
5972
	-->
5973
	<stream name="textPFRun" key="textPFRun" type="TextPFRun" />
5974
	<stream name="textCFRun" key="textCFRun" type="TextCFRun" />
5975
</mso>