swfmill 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. data/.document +5 -0
  2. data/.gitignore +23 -0
  3. data/.swfmill +240 -0
  4. data/LICENSE +340 -0
  5. data/README.rdoc +37 -0
  6. data/Rakefile +59 -0
  7. data/VERSION +1 -0
  8. data/ext/.gitignore +5 -0
  9. data/ext/extconf.rb +86 -0
  10. data/ext/swfmill/.gitignore +27 -0
  11. data/ext/swfmill/AUTHORS +9 -0
  12. data/ext/swfmill/COPYING +340 -0
  13. data/ext/swfmill/Makefile.am +14 -0
  14. data/ext/swfmill/Makefile.in +635 -0
  15. data/ext/swfmill/NEWS +189 -0
  16. data/ext/swfmill/README +170 -0
  17. data/ext/swfmill/TODO +33 -0
  18. data/ext/swfmill/aclocal.m4 +7712 -0
  19. data/ext/swfmill/autogen.sh +7 -0
  20. data/ext/swfmill/compile +142 -0
  21. data/ext/swfmill/config.guess +1516 -0
  22. data/ext/swfmill/config.sub +1626 -0
  23. data/ext/swfmill/configure +21868 -0
  24. data/ext/swfmill/configure.ac +55 -0
  25. data/ext/swfmill/depcomp +589 -0
  26. data/ext/swfmill/install-sh +519 -0
  27. data/ext/swfmill/ltmain.sh +6964 -0
  28. data/ext/swfmill/missing +367 -0
  29. data/ext/swfmill/src/Geom.cpp +107 -0
  30. data/ext/swfmill/src/Geom.h +100 -0
  31. data/ext/swfmill/src/Makefile.am +86 -0
  32. data/ext/swfmill/src/Makefile.in +1025 -0
  33. data/ext/swfmill/src/SWF.h +11941 -0
  34. data/ext/swfmill/src/SWFAction.cpp +41 -0
  35. data/ext/swfmill/src/SWFAction.h +19 -0
  36. data/ext/swfmill/src/SWFBasic.h +7 -0
  37. data/ext/swfmill/src/SWFFile.cpp +406 -0
  38. data/ext/swfmill/src/SWFFile.h +34 -0
  39. data/ext/swfmill/src/SWFFilter.cpp +25 -0
  40. data/ext/swfmill/src/SWFFilter.h +15 -0
  41. data/ext/swfmill/src/SWFGlyphList.cpp +262 -0
  42. data/ext/swfmill/src/SWFGlyphList.h +34 -0
  43. data/ext/swfmill/src/SWFIdItem.h +85 -0
  44. data/ext/swfmill/src/SWFIdItems.h +16 -0
  45. data/ext/swfmill/src/SWFItem.cpp +235 -0
  46. data/ext/swfmill/src/SWFItem.h +60 -0
  47. data/ext/swfmill/src/SWFList.h +179 -0
  48. data/ext/swfmill/src/SWFReader.cpp +352 -0
  49. data/ext/swfmill/src/SWFReader.h +73 -0
  50. data/ext/swfmill/src/SWFShapeItem.cpp +220 -0
  51. data/ext/swfmill/src/SWFShapeItem.h +45 -0
  52. data/ext/swfmill/src/SWFShapeMaker.cpp +401 -0
  53. data/ext/swfmill/src/SWFShapeMaker.h +128 -0
  54. data/ext/swfmill/src/SWFTag.cpp +49 -0
  55. data/ext/swfmill/src/SWFTag.h +20 -0
  56. data/ext/swfmill/src/SWFTrait.cpp +35 -0
  57. data/ext/swfmill/src/SWFTrait.h +22 -0
  58. data/ext/swfmill/src/SWFWriter.cpp +312 -0
  59. data/ext/swfmill/src/SWFWriter.h +84 -0
  60. data/ext/swfmill/src/base64.c +110 -0
  61. data/ext/swfmill/src/base64.h +15 -0
  62. data/ext/swfmill/src/codegen/Makefile.am +15 -0
  63. data/ext/swfmill/src/codegen/Makefile.in +346 -0
  64. data/ext/swfmill/src/codegen/basic.xsl +45 -0
  65. data/ext/swfmill/src/codegen/basics.xsl +235 -0
  66. data/ext/swfmill/src/codegen/dumper.xsl +109 -0
  67. data/ext/swfmill/src/codegen/header.xsl +131 -0
  68. data/ext/swfmill/src/codegen/mk.xsl +26 -0
  69. data/ext/swfmill/src/codegen/parser.xsl +196 -0
  70. data/ext/swfmill/src/codegen/parsexml.xsl +312 -0
  71. data/ext/swfmill/src/codegen/size.xsl +189 -0
  72. data/ext/swfmill/src/codegen/source.xml +2197 -0
  73. data/ext/swfmill/src/codegen/writer.xsl +190 -0
  74. data/ext/swfmill/src/codegen/writexml.xsl +138 -0
  75. data/ext/swfmill/src/swfmill.cpp +482 -0
  76. data/ext/swfmill/src/swft/Makefile.am +55 -0
  77. data/ext/swfmill/src/swft/Makefile.in +717 -0
  78. data/ext/swfmill/src/swft/Parser.cpp +76 -0
  79. data/ext/swfmill/src/swft/Parser.h +37 -0
  80. data/ext/swfmill/src/swft/SVGAttributeParser.cpp +78 -0
  81. data/ext/swfmill/src/swft/SVGAttributeParser.h +35 -0
  82. data/ext/swfmill/src/swft/SVGColor.cpp +116 -0
  83. data/ext/swfmill/src/swft/SVGColor.h +37 -0
  84. data/ext/swfmill/src/swft/SVGColors.h +167 -0
  85. data/ext/swfmill/src/swft/SVGGradient.cpp +258 -0
  86. data/ext/swfmill/src/swft/SVGGradient.h +81 -0
  87. data/ext/swfmill/src/swft/SVGPathParser.cpp +155 -0
  88. data/ext/swfmill/src/swft/SVGPathParser.h +126 -0
  89. data/ext/swfmill/src/swft/SVGPointsParser.cpp +51 -0
  90. data/ext/swfmill/src/swft/SVGPointsParser.h +25 -0
  91. data/ext/swfmill/src/swft/SVGStyle.cpp +181 -0
  92. data/ext/swfmill/src/swft/SVGStyle.h +80 -0
  93. data/ext/swfmill/src/swft/SVGTransformParser.cpp +72 -0
  94. data/ext/swfmill/src/swft/SVGTransformParser.h +32 -0
  95. data/ext/swfmill/src/swft/readpng.c +305 -0
  96. data/ext/swfmill/src/swft/readpng.h +92 -0
  97. data/ext/swfmill/src/swft/swft.cpp +251 -0
  98. data/ext/swfmill/src/swft/swft.h +64 -0
  99. data/ext/swfmill/src/swft/swft_document.cpp +57 -0
  100. data/ext/swfmill/src/swft/swft_import.cpp +38 -0
  101. data/ext/swfmill/src/swft/swft_import_binary.cpp +82 -0
  102. data/ext/swfmill/src/swft/swft_import_jpeg.cpp +255 -0
  103. data/ext/swfmill/src/swft/swft_import_mp3.cpp +268 -0
  104. data/ext/swfmill/src/swft/swft_import_png.cpp +231 -0
  105. data/ext/swfmill/src/swft/swft_import_ttf.cpp +519 -0
  106. data/ext/swfmill/src/swft/swft_import_wav.cpp +255 -0
  107. data/ext/swfmill/src/swft/swft_path.cpp +178 -0
  108. data/ext/swfmill/src/xslt/Makefile.am +51 -0
  109. data/ext/swfmill/src/xslt/Makefile.in +536 -0
  110. data/ext/swfmill/src/xslt/README +19 -0
  111. data/ext/swfmill/src/xslt/assemble.xsl +38 -0
  112. data/ext/swfmill/src/xslt/simple-deprecated.xslt +62 -0
  113. data/ext/swfmill/src/xslt/simple-elements.xslt +627 -0
  114. data/ext/swfmill/src/xslt/simple-import.xslt +565 -0
  115. data/ext/swfmill/src/xslt/simple-svg.xslt +383 -0
  116. data/ext/swfmill/src/xslt/simple-tools.xslt +255 -0
  117. data/ext/swfmill/src/xslt/simple.cpp +1686 -0
  118. data/ext/swfmill/src/xslt/simple.xml +7 -0
  119. data/ext/swfmill/src/xslt/xslt.h +7 -0
  120. data/ext/swfmill/test/Makefile.am +1 -0
  121. data/ext/swfmill/test/Makefile.in +490 -0
  122. data/ext/swfmill/test/xml/Makefile.am +20 -0
  123. data/ext/swfmill/test/xml/Makefile.in +353 -0
  124. data/ext/swfmill/test/xml/test-xml +21 -0
  125. data/ext/swfmill_ext.cc +375 -0
  126. data/lib/swfmill.rb +30 -0
  127. data/spec/data/swfmill-banner1.swf +0 -0
  128. data/spec/spec.opts +1 -0
  129. data/spec/spec_helper.rb +14 -0
  130. data/spec/swfmill_spec.rb +125 -0
  131. metadata +206 -0
@@ -0,0 +1,189 @@
1
+ <?xml version="1.0"?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
3
+ <xsl:template name="size">
4
+ <xsl:document href="g{/format/@format}Size.cpp" method="text">
5
+
6
+ #include "<xsl:value-of select="/format/@format"/>.h"
7
+ #include &lt;cstring&gt;
8
+
9
+ namespace <xsl:value-of select="/format/@format"/> {
10
+
11
+ <xsl:for-each select="tag|action|filter|style|stackitem|namespaceconstant|multinameconstant|trait|opcode">
12
+ size_t <xsl:value-of select="@name"/>::calcSize( Context *ctx, int start_at ) {
13
+ size_t r = start_at;
14
+ <xsl:apply-templates select="*[@context]" mode="size-context"/>
15
+ <xsl:apply-templates select="*" mode="size"/>
16
+
17
+ r += <xsl:apply-templates select="." mode="baseclass"/>::getHeaderSize( r-start_at );
18
+ // printf("<xsl:value-of select="@name"/> sz %i bits (%.2f bytes, start %i)\n", r-start_at, ((float)r-start_at)/8, start_at );
19
+
20
+ return r-start_at;
21
+ }
22
+ </xsl:for-each>
23
+
24
+ <xsl:for-each select="type">
25
+ size_t <xsl:value-of select="@name"/>::calcSize( Context *ctx, int start_at ) {
26
+ size_t r = start_at;
27
+
28
+ r += <xsl:apply-templates select="." mode="baseclass"/>::getHeaderSize( r-start_at );
29
+
30
+ <xsl:apply-templates select="*[@context]" mode="size-context"/>
31
+ <xsl:apply-templates select="*" mode="size"/>
32
+
33
+ <xsl:for-each select="*[@set-from-bits-needed]">
34
+ <xsl:value-of select="@name"/> = SWFBitsNeeded( <xsl:value-of select="@set-from-bits-needed"/> );
35
+ ctx-><xsl:value-of select="@name"/> = <xsl:value-of select="@name"/>;
36
+ </xsl:for-each>
37
+
38
+ <xsl:for-each select="*[@set-from]">
39
+ <xsl:value-of select="@name"/> =<xsl:value-of select="@set-from"/>;
40
+ </xsl:for-each>
41
+
42
+ // printf("<xsl:value-of select="@name"/> sz %i bits (%.2f bytes, start %i)\n", r-start_at, ((float)r-start_at)/8, start_at );
43
+
44
+ return r-start_at;
45
+ }
46
+ </xsl:for-each>
47
+
48
+ }
49
+
50
+ </xsl:document>
51
+ </xsl:template>
52
+
53
+ <xsl:template match="*[@context]" mode="size-context">
54
+ ctx-><xsl:value-of select="@name"/> = <xsl:value-of select="@name"/>;
55
+ </xsl:template>
56
+
57
+ <xsl:template match="flagged" mode="size" priority="1">
58
+ if( <xsl:if test="@negative">!</xsl:if><xsl:value-of select="@flag"/>
59
+ <xsl:if test="@signifier"> &amp; <xsl:value-of select="@signifier"/></xsl:if> ) {
60
+
61
+ <xsl:apply-templates select="*" mode="size"/>
62
+ }
63
+ </xsl:template>
64
+
65
+ <xsl:template match="if" mode="size" priority="1">
66
+ if( <xsl:value-of select="@expression"/> ) {
67
+ <xsl:apply-templates select="*" mode="size"/>
68
+ }
69
+ </xsl:template>
70
+
71
+ <xsl:template match="byte" mode="size">
72
+ r += 8;
73
+ </xsl:template>
74
+
75
+ <xsl:template match="encodedu32" mode="size">
76
+ {
77
+ unsigned int i = <xsl:value-of select="@name"/>;
78
+ do {
79
+ r += 8;
80
+ } while ((i>>=7) > 0);
81
+ }
82
+ </xsl:template>
83
+
84
+ <xsl:template match="byteOrWord" mode="size">
85
+ if( <xsl:value-of select="@name"/> &gt;= 255 ) {
86
+ r += 24;
87
+ } else {
88
+ r += 8;
89
+ }
90
+ </xsl:template>
91
+
92
+ <xsl:template match="word" mode="size">
93
+ r += 16;
94
+ </xsl:template>
95
+ <xsl:template match="uint32" mode="size">
96
+ r += 32;
97
+ </xsl:template>
98
+ <xsl:template match="float" mode="size">
99
+ r += 32;
100
+ </xsl:template>
101
+ <xsl:template match="double|double2" mode="size">
102
+ r += 64;
103
+ </xsl:template>
104
+ <xsl:template match="half" mode="size">
105
+ r += 16;
106
+ </xsl:template>
107
+
108
+ <xsl:template match="integer" mode="size">
109
+ r += <xsl:value-of select="@size"/><xsl:if test="@size-add">+<xsl:value-of select="@size-add"/></xsl:if>;
110
+ </xsl:template>
111
+
112
+ <xsl:template match="fixedpoint|fixedpoint2" mode="size">
113
+ r += <xsl:value-of select="@size"/>;
114
+ </xsl:template>
115
+
116
+ <xsl:template match="bit" mode="size">
117
+ r++;
118
+ </xsl:template>
119
+
120
+ <xsl:template match="string" mode="size">
121
+ {
122
+ int bytes = 1;
123
+ <xsl:if test="@mode='pascalU30'">
124
+ if( <xsl:value-of select="@name"/> ) {
125
+ int len = strlen( <xsl:value-of select="@name"/> );
126
+ uint32_t limit = 0x80;
127
+ for(; len > limit - 1; limit *= 0x80) {
128
+ bytes++;
129
+ }
130
+ }
131
+ </xsl:if>
132
+ r += ((<xsl:value-of select="@name"/> ? strlen( <xsl:value-of select="@name"/> ) : 0)+bytes)*8;
133
+ }
134
+ </xsl:template>
135
+
136
+ <xsl:template match="xml" mode="size">
137
+ r += ((<xsl:value-of select="@name"/> ? strlen( <xsl:value-of select="@name"/> ) : 0)+1)*8;
138
+ </xsl:template>
139
+
140
+ <xsl:template match="object" mode="size">
141
+ r += <xsl:value-of select="@name"/>.getSize(ctx,r);
142
+ </xsl:template>
143
+
144
+ <xsl:template match="list" mode="size">
145
+ {
146
+ <xsl:value-of select="@type"/>* item;
147
+ ListItem&lt;<xsl:value-of select="@type"/>&gt;* i;
148
+ i = <xsl:value-of select="@name"/>.first();
149
+ while( i ) {
150
+ item = i->data();
151
+ if( item ) {
152
+ r += item->getSize(ctx,r);
153
+ }
154
+ i = i->next();
155
+ }
156
+ }
157
+ </xsl:template>
158
+
159
+ <xsl:template match="data" mode="size">
160
+ r += <xsl:value-of select="@size"/> * 8;
161
+ </xsl:template>
162
+
163
+
164
+ <xsl:template match="fill-byte" mode="size">
165
+ if( r%8 != 0 ) r += 8-(r%8);
166
+ </xsl:template>
167
+
168
+ <xsl:template match="u30" mode="size">
169
+ {
170
+ int bytes = 1;
171
+
172
+ uint32_t limit = 0x80;
173
+ for(; <xsl:value-of select="@name"/> > limit - 1; limit *= 0x80) {
174
+ bytes++;
175
+ }
176
+
177
+ r += bytes * 8;
178
+ }
179
+ </xsl:template>
180
+
181
+ <xsl:template match="s24" mode="size">
182
+ r += 24;
183
+ </xsl:template>
184
+
185
+ <xsl:template match="context" mode="size">
186
+ ctx-><xsl:value-of select="@param"/> = <xsl:value-of select="@value"/>;
187
+ </xsl:template>
188
+
189
+ </xsl:stylesheet>
@@ -0,0 +1,2197 @@
1
+ <format format="SWF">
2
+
3
+ <!-- **************** CONTEXT VARIABLES **************** -->
4
+
5
+ <contextvariable name="fillBits" type="integer"/>
6
+ <contextvariable name="lineBits" type="integer"/>
7
+ <contextvariable name="glyphBits" type="byte"/>
8
+ <contextvariable name="advanceBits" type="byte"/>
9
+ <contextvariable name="wideGlyphOffsets" type="bit"/>
10
+ <contextvariable name="wideMap" type="bit"/>
11
+ <contextvariable name="glyphCount" type="word"/>
12
+
13
+ <!-- ******************** BASIC TYPES ****************** -->
14
+
15
+ <type name="Rectangle">
16
+ <integer name="bits" size="5" constant-size="true"/>
17
+ <integer prop="true" signed="true" name="left" size="bits" default="0"/>
18
+ <integer prop="true" signed="true" name="right" size="bits" default="0"/>
19
+ <integer prop="true" signed="true" name="top" size="bits" default="0"/>
20
+ <integer prop="true" signed="true" name="bottom" size="bits" default="0"/>
21
+ <fill-byte/>
22
+ </type>
23
+
24
+ <type name="Color">
25
+ <byte prop="true" name="red" default="0"/>
26
+ <byte prop="true" name="green" default="0"/>
27
+ <byte prop="true" name="blue" default="0"/>
28
+ <if expression="ctx->alpha">
29
+ <byte prop="true" name="alpha" default="0"/>
30
+ </if>
31
+ <fill-byte/>
32
+ </type>
33
+
34
+ <type name="String">
35
+ <string prop="true" name="value"/>
36
+ </type>
37
+ <type name="String2">
38
+ <string mode="pascalU30" prop="true" name="value"/>
39
+ </type>
40
+
41
+ <type name="Transform">
42
+ <bit name="scaled"/>
43
+ <flagged flag="scaled">
44
+ <integer name="bitsScale" size="5" constant-size="true"/>
45
+ <fixedpoint name="scaleX" signed="true" size="bitsScale" exp="16" prop="true" default="1"/>
46
+ <fixedpoint name="scaleY" signed="true" size="bitsScale" exp="16" prop="true" default="1"/>
47
+ </flagged>
48
+ <bit name="skewed"/>
49
+ <flagged flag="skewed">
50
+ <integer name="bitsSkew" size="5" constant-size="true"/>
51
+ <fixedpoint name="skewX" signed="true" size="bitsSkew" exp="16" prop="true" default="1"/>
52
+ <fixedpoint name="skewY" signed="true" size="bitsSkew" exp="16" prop="true" default="1"/>
53
+ </flagged>
54
+ <integer name="bitsTranslate" size="5" constant-size="true"/>
55
+ <integer name="transX" signed="true" size="bitsTranslate" prop="true" default="0"/>
56
+ <integer name="transY" signed="true" size="bitsTranslate" prop="true" default="0"/>
57
+ <fill-byte/>
58
+ </type>
59
+
60
+ <type name="ColorTransform2">
61
+ <bit name="hasOffset"/>
62
+ <bit name="hasFactor"/>
63
+ <integer name="bits" size="4" constant-size="true"/>
64
+ <flagged flag="hasFactor">
65
+ <!-- really default=1?; ColorTransform(1) has no alpha. -->
66
+ <integer name="factorRed" size="bits" signed="true" prop="true" default="1"/>
67
+ <integer name="factorGreen" size="bits" signed="true" prop="true" default="1"/>
68
+ <integer name="factorBlue" size="bits" signed="true" prop="true" default="1"/>
69
+ <integer name="factorAlpha" size="bits" signed="true" prop="true" default="1"/>
70
+ </flagged>
71
+ <flagged flag="hasOffset">
72
+ <!-- ColorTransform(1) has no alpha. -->
73
+ <integer name="offsetRed" size="bits" signed="true" prop="true" default="1"/>
74
+ <integer name="offsetGreen" size="bits" signed="true" prop="true" default="1"/>
75
+ <integer name="offsetBlue" size="bits" signed="true" prop="true" default="1"/>
76
+ <integer name="offsetAlpha" size="bits" signed="true" prop="true" default="1"/>
77
+ </flagged>
78
+ <fill-byte/>
79
+ </type>
80
+
81
+ <type name="Header">
82
+ <object name="size" type="Rectangle" prop="true"/>
83
+ <!-- framerate should be a 8.8 fixed, but is reverse? WTF? for integer values, this works: -->
84
+ <integer name="framerate" size="16" constant-size="true" prop="true"/>
85
+ <word name="frames" prop="true" default="1"/>
86
+ <list name="tags" type="Tag" prop="true"/>
87
+ </type>
88
+
89
+ <type name="LineStyle">
90
+ <word name="width" prop="true"/>
91
+
92
+ <if expression="ctx->tagVersion &lt; 4">
93
+ <object type="Color" name="color" prop="true"/>
94
+ </if>
95
+ <if expression="ctx->tagVersion &gt; 3">
96
+
97
+ <integer name="startCapStyle" size="2" constant-size="true" prop="true"/>
98
+ <integer name="jointStyle" size="2" constant-size="true" prop="true"/>
99
+ <bit name="hasFill" prop="true"/>
100
+ <bit name="noHScale" prop="true"/>
101
+ <bit name="noVScale" prop="true"/>
102
+ <bit name="pixelHinting" prop="true"/>
103
+ <integer name="reserved" size="5" constant-size="true"/>
104
+ <bit name="noClose" prop="true"/>
105
+ <integer name="endCapStyle" size="2" constant-size="true" prop="true"/>
106
+
107
+ <if expression="jointStyle==2">
108
+ <fixedpoint2 name="miterLimitFactor" signed="false" size="16" constant-size="true" exp="8" prop="true"/>
109
+ <!-- <word name="miterLimitFactor" prop="true"/>-->
110
+ </if>
111
+
112
+ <if expression="hasFill">
113
+ <list name="fillStyles" type="Style" length="1" constant-length="true" prop="true"/>
114
+ </if>
115
+ <if expression="!hasFill">
116
+ <object type="Color" name="fillColor" prop="true"/>
117
+ </if>
118
+ </if>
119
+ </type>
120
+
121
+ <type name="StyleList">
122
+ <byteOrWord name="n_fillStyles"/>
123
+ <list name="fillStyles" type="Style" length="n_fillStyles" prop="true"/>
124
+ <byteOrWord name="n_lineStyles"/>
125
+ <list name="lineStyles" type="LineStyle" length="n_lineStyles" prop="true"/>
126
+ <integer name="fillBits" size="4" constant-size="true" context="true" set-from-bits-needed="n_fillStyles"/>
127
+ <integer name="lineBits" size="4" constant-size="true" context="true" set-from-bits-needed="n_lineStyles"/>
128
+ </type>
129
+
130
+ <type name="ShapeSetup" parent="ShapeItem">
131
+ <bit name="hasNewStyles"/>
132
+ <bit name="hasLineStyle"/>
133
+ <bit name="hasFillStyle1"/>
134
+ <bit name="hasFillStyle0"/>
135
+ <bit name="hasMoveTo"/>
136
+ <flagged flag="hasMoveTo">
137
+ <integer name="xybits" size="5" constant-size="true"/>
138
+ <integer name="x" signed="true" size="xybits" default="0" prop="true"/>
139
+ <integer name="y" signed="true" size="xybits" default="0" prop="true"/>
140
+ </flagged>
141
+ <flagged flag="hasFillStyle0">
142
+ <integer name="fillStyle0" size="ctx->fillBits" default="0" prop="true"/>
143
+ </flagged>
144
+ <flagged flag="hasFillStyle1">
145
+ <integer name="fillStyle1" size="ctx->fillBits" default="0" prop="true"/>
146
+ </flagged>
147
+ <flagged flag="hasLineStyle">
148
+ <integer name="lineStyle" size="ctx->lineBits" default="0" prop="true"/>
149
+ </flagged>
150
+ <flagged flag="hasNewStyles">
151
+ <fill-byte/>
152
+ <object type="StyleList" name="styles" prop="true"/>
153
+ </flagged>
154
+ </type>
155
+
156
+ <type name="CurveTo" parent="ShapeItem">
157
+ <integer name="bits" size="4" constant-size="true"/>
158
+ <integer name="x1" signed="true" size="bits" size-add="2" default="0" prop="true"/>
159
+ <integer name="y1" signed="true" size="bits" size-add="2" default="0" prop="true"/>
160
+ <integer name="x2" signed="true" size="bits" size-add="2" default="0" prop="true"/>
161
+ <integer name="y2" signed="true" size="bits" size-add="2" default="0" prop="true"/>
162
+ </type>
163
+
164
+ <type name="Shape">
165
+ <list type="ShapeItem" name="edges" prop="true" end-condition="item->isEnd()"/>
166
+ </type>
167
+
168
+ <type name="GlyphShape">
169
+ <context param="fillBits" value="1"/>
170
+ <context param="lineBits" value="0"/>
171
+ <integer name="fillBits" size="4" constant-size="true" set-from="1"/>
172
+ <integer name="lineBits" size="4" constant-size="true" set-from="0"/>
173
+ <list type="ShapeItem" name="edges" prop="true" end-condition="item->isEnd()"/>
174
+ </type>
175
+
176
+ <type name="GradientItem">
177
+ <byte name="position" prop="true"/>
178
+ <object name="color" type="Color" prop="true"/>
179
+ </type>
180
+
181
+ <type name="Symbol">
182
+ <word name="objectID" prop="true"/>
183
+ <string name="name" prop="true"/>
184
+ </type>
185
+
186
+ <type name="Frame">
187
+ <encodedu32 name="number" prop="true"/>
188
+ <string name="label" prop="true"/>
189
+ </type>
190
+
191
+ <type name="Scene">
192
+ <encodedu32 name="offset" prop="true"/>
193
+ <string name="name" prop="true"/>
194
+ </type>
195
+
196
+ <type name="Parameter">
197
+ <byte name="reg" prop="true"/>
198
+ <string name="name" prop="true"/>
199
+ </type>
200
+
201
+ <type name="UChar">
202
+ <byte name="value" prop="true"/>
203
+ </type>
204
+ <type name="UShort">
205
+ <word name="value" prop="true"/>
206
+ </type>
207
+ <type name="ULong">
208
+ <integer size="32" constant-size="true" name="value" prop="true"/>
209
+ </type>
210
+ <type name="Short">
211
+ <word signed="true" name="value" prop="true"/>
212
+ </type>
213
+ <type name="Float">
214
+ <float signed="true" name="value" prop="true"/>
215
+ </type>
216
+ <type name="Double">
217
+ <double2 signed="true" name="value" prop="true"/>
218
+ </type>
219
+
220
+ <type name="Kerning">
221
+ <byte name="a" prop="true"/>
222
+ <byte name="b" prop="true"/>
223
+ <integer name="adjustment" signed="true" size="16" constant-size="true" prop="true"/>
224
+ </type>
225
+ <type name="WideKerning">
226
+ <word name="a" prop="true"/>
227
+ <word name="b" prop="true"/>
228
+ <word signed="true" name="adjustment" prop="true"/>
229
+ </type>
230
+
231
+ <type name="TextEntry">
232
+ <integer name="glyph" size="ctx->glyphBits" prop="true"/>
233
+ <integer name="advance" signed="true" size="ctx->advanceBits" prop="true"/>
234
+ </type>
235
+
236
+ <type name="TextEntry2">
237
+ <integer name="glyph" size="ctx->glyphBits" prop="true"/>
238
+ <integer name="advance" signed="true" size="ctx->advanceBits" prop="true"/>
239
+ </type>
240
+
241
+
242
+ <type name="TextRecord6">
243
+ <bit name="isSetup" default="0" prop="true"/>
244
+ <flagged flag="isSetup">
245
+ <integer name="reserved" size="3" constant-size="true"/>
246
+ <bit name="hasFont"/>
247
+ <bit name="hasColor"/>
248
+ <bit name="hasMoveY"/>
249
+ <bit name="hasMoveX"/>
250
+ <flagged flag="hasFont">
251
+ <word name="objectID" prop="true"/>
252
+ </flagged>
253
+ <flagged flag="hasColor">
254
+ <object type="Color" name="color" prop="true"/>
255
+ </flagged>
256
+ <flagged flag="hasMoveX">
257
+ <word name="x" signed="true" prop="true"/>
258
+ </flagged>
259
+ <flagged flag="hasMoveY">
260
+ <word name="y" signed="true" prop="true"/>
261
+ </flagged>
262
+ <flagged flag="hasFont">
263
+ <word name="fontHeight" prop="true"/>
264
+ </flagged>
265
+ </flagged>
266
+ <flagged flag="isSetup" negative="true">
267
+ <integer name="nGlyphs" size="7" constant-size="true"/>
268
+ <list type="TextEntry" name="glyphs" length="nGlyphs" prop="true"/>
269
+ <fill-byte/>
270
+ </flagged>
271
+ </type>
272
+
273
+ <type name="TextRecord62">
274
+ <bit name="isSetup" default="0" prop="true"/>
275
+ <flagged flag="isSetup">
276
+ <integer name="reserved" size="3" constant-size="true"/>
277
+ <bit name="hasFont"/>
278
+ <bit name="hasColor"/>
279
+ <bit name="hasMoveY"/>
280
+ <bit name="hasMoveX"/>
281
+ <flagged flag="hasFont">
282
+ <word name="objectID" prop="true"/>
283
+ </flagged>
284
+ <flagged flag="hasColor">
285
+ <object type="Color" name="color" prop="true"/>
286
+ </flagged>
287
+ <flagged flag="hasMoveX">
288
+ <word name="x" signed="true" prop="true"/>
289
+ </flagged>
290
+ <flagged flag="hasMoveY">
291
+ <word name="y" signed="true" prop="true"/>
292
+ </flagged>
293
+ <flagged flag="hasFont">
294
+ <word name="fontHeight" prop="true"/>
295
+ </flagged>
296
+ </flagged>
297
+ <flagged flag="isSetup" negative="true">
298
+ <integer name="nGlyphs" size="7" constant-size="true"/>
299
+ <list type="TextEntry2" name="glyphs" length="nGlyphs" prop="true"/>
300
+ <fill-byte/>
301
+ </flagged>
302
+ </type>
303
+
304
+ <type name="TextRecord7">
305
+ <bit name="isSetup" default="0" prop="true"/>
306
+ <integer name="reserved" size="3" constant-size="true"/>
307
+ <bit name="hasFont"/>
308
+ <bit name="hasColor"/>
309
+ <bit name="hasMoveY"/>
310
+ <bit name="hasMoveX"/>
311
+ <flagged flag="hasFont">
312
+ <word name="objectID" prop="true"/>
313
+ </flagged>
314
+ <flagged flag="hasColor">
315
+ <object type="Color" name="color" prop="true"/>
316
+ </flagged>
317
+ <flagged flag="hasMoveX">
318
+ <word name="x" signed="true" prop="true"/>
319
+ </flagged>
320
+ <flagged flag="hasMoveY">
321
+ <word name="y" signed="true" prop="true"/>
322
+ </flagged>
323
+ <flagged flag="hasFont">
324
+ <word name="fontHeight" prop="true"/>
325
+ </flagged>
326
+
327
+ <flagged flag="isSetup">
328
+ <byte name="nGlyphs"/>
329
+ <list type="TextEntry" name="glyphs" length="nGlyphs" prop="true"/>
330
+ </flagged>
331
+ <fill-byte/>
332
+ </type>
333
+
334
+ <type name="TextRecord72">
335
+ <context param="alpha" value="1"/>
336
+
337
+ <bit name="isSetup" default="0" prop="true"/>
338
+ <integer name="reserved" size="3" constant-size="true"/>
339
+ <bit name="hasFont"/>
340
+ <bit name="hasColor"/>
341
+ <bit name="hasMoveY"/>
342
+ <bit name="hasMoveX"/>
343
+ <flagged flag="hasFont">
344
+ <word name="fontRef" prop="true"/>
345
+ </flagged>
346
+ <flagged flag="hasColor">
347
+ <object type="Color" name="color" prop="true"/>
348
+ </flagged>
349
+ <flagged flag="hasMoveX">
350
+ <word name="x" signed="true" prop="true"/>
351
+ </flagged>
352
+ <flagged flag="hasMoveY">
353
+ <word name="y" signed="true" prop="true"/>
354
+ </flagged>
355
+ <flagged flag="hasFont">
356
+ <word name="fontHeight" prop="true"/>
357
+ </flagged>
358
+
359
+ <flagged flag="isSetup">
360
+ <byte name="nGlyphs"/>
361
+ <list type="TextEntry2" name="glyphs" length="nGlyphs" prop="true"/>
362
+ </flagged>
363
+ <fill-byte/>
364
+ </type>
365
+
366
+
367
+ <type name="TextRecord">
368
+ <if expression="ctx->tagVersion &lt; 2">
369
+ <list type="TextRecord6" name="records" prop="true"/>
370
+ </if>
371
+ <if expression="ctx->tagVersion >= 2">
372
+ <object type="TextRecord7" name="string" prop="true"/>
373
+ </if>
374
+ </type>
375
+
376
+ <type name="TextRecord2">
377
+ <if expression="ctx->swfVersion &lt; 7">
378
+ <list type="TextRecord62" name="records" prop="true"/>
379
+ </if>
380
+ <if expression="ctx->swfVersion >= 7">
381
+ <object type="TextRecord72" name="textString" prop="true"/>
382
+ </if>
383
+ </type>
384
+
385
+
386
+ <type name="Button">
387
+ <integer name="reserved1" size="2" constant-size="true"/>
388
+ <if expression="ctx->swfVersion &lt; 8">
389
+ <integer name="reserved2" size="2" constant-size="true"/>
390
+ </if>
391
+ <if expression="ctx->swfVersion >= 8">
392
+ <bit name="hasBlendMode"/>
393
+ <bit name="hasFilterList"/>
394
+ </if>
395
+ <bit name="hitTest" prop="true"/>
396
+ <bit name="down" prop="true"/>
397
+ <bit name="over" prop="true"/>
398
+ <bit name="up" prop="true"/>
399
+ <if expression="hitTest || down || over || up">
400
+ <word name="objectID" prop="true"/>
401
+ <word name="depth" prop="true"/>
402
+ <object type="Transform" name="transform" prop="true"/>
403
+ <if expression="ctx->tagVersion &gt;= 2">
404
+ <object type="ColorTransform2" name="colorTransform" prop="true"/>
405
+ </if>
406
+ <flagged flag="hasFilterList">
407
+ <byte name="numFilters"/>
408
+ <list type="Filter" name="filters" length="numFilters" prop="true"/>
409
+ </flagged>
410
+ <flagged flag="hasBlendMode">
411
+ <byte name="blendMode" prop="true" default="0"/>
412
+ </flagged>
413
+ </if>
414
+ </type>
415
+
416
+ <type name="Event">
417
+ <fill-byte/>
418
+
419
+ <word name="flags1" prop="true"/>
420
+ <if expression="ctx->swfVersion>=6">
421
+ <word name="flags2" prop="true"/>
422
+ </if>
423
+ <if expression="(flags1 | flags2)">
424
+ <!--
425
+ ... not sure about the order here ...
426
+
427
+ <if expression="ctx->swfVersion>=6">
428
+ <integer name="reserved" size="13" constant-size="true"/>
429
+ <bit name="construct" prop="true"/>
430
+ <bit name="keyPress" prop="true"/>
431
+ <bit name="dragOut" prop="true"/>
432
+ </if>
433
+ <bit name="dragOver" prop="true"/>
434
+ <bit name="rollOut" prop="true"/>
435
+ <bit name="rollOver" prop="true"/>
436
+ <bit name="releaseOutside" prop="true"/>
437
+ <bit name="release" prop="true"/>
438
+ <bit name="press" prop="true"/>
439
+ <bit name="initialize" prop="true"/>
440
+
441
+ <bit name="data" prop="true"/>
442
+ <bit name="keyUp" prop="true"/>
443
+ <bit name="keyDown" prop="true"/>
444
+ <bit name="mouseUp" prop="true"/>
445
+ <bit name="mouseDown" prop="true"/>
446
+ <bit name="mouseMove" prop="true"/>
447
+ <bit name="unload" prop="true"/>
448
+ <bit name="enterFrame" prop="true"/>
449
+ <bit name="load" prop="true"/>
450
+
451
+ <if expression="construct|keyPress|dragOut|dragOver|rollOut|rollOver|releaseOutside|release|press|initialize|data|keyUp|keyDown|mouseUp|mouseDown|unload|enterFrame|load">
452
+ -->
453
+
454
+ <uint32 name="actionLength" size="32" constant-size="true"/>
455
+ <list type="Action" name="actions" prop="true" end="actionLength"/>
456
+ </if>
457
+ </type>
458
+
459
+ <type name="Condition">
460
+ <word name="next" next="true" next-offset="-2" prop="true"/>
461
+
462
+ <!-- IdleToOverDown -->
463
+ <bit name="menuEnter" prop="true"/>
464
+ <!-- OutDownToIdle -->
465
+ <bit name="pointerReleaseOutside" prop="true"/>
466
+ <!-- OutDownToOverDown -->
467
+ <bit name="pointerDragEnter" prop="true"/>
468
+ <!-- OverDownToOutDown -->
469
+ <bit name="pointerDragLeave" prop="true"/>
470
+ <!-- OverDownToOverUp -->
471
+ <bit name="pointerReleaseInside" prop="true"/>
472
+ <!-- OverUpToOverDown -->
473
+ <bit name="pointerPush" prop="true"/>
474
+ <!-- OverUpToIdle -->
475
+ <bit name="pointerLeave" prop="true"/>
476
+ <!-- IdleToOverUp -->
477
+ <bit name="pointerEnter" prop="true"/>
478
+ <!-- KeyPress -->
479
+ <integer name="key" size="7" constant-size="true" prop="true"/>
480
+ <!-- IdleToOverDown -->
481
+ <bit name="menuLeave" prop="true"/>
482
+
483
+ <list type="Action" name="actions" prop="true"/>
484
+ </type>
485
+
486
+
487
+ <type name="U30">
488
+ <u30 name="value" prop="true"/>
489
+ </type>
490
+
491
+ <type name="S24">
492
+ <s24 name="value" prop="true"/>
493
+ </type>
494
+
495
+ <type name="ValueKind">
496
+ <u30 name="index" prop="true"/>
497
+ <byte name="kind" prop="true"/>
498
+ </type>
499
+
500
+ <type name="MethodInfo">
501
+ <u30 name="paramCount"/>
502
+ <u30 name="retType" prop="true"/>
503
+ <list type="U30" name="paramTypes" length="paramCount" prop="true"/>
504
+ <u30 name="nameIndex" prop="true"/>
505
+
506
+ <bit name="hasParamNames" prop="true"/>
507
+ <bit name="setSDXNs" prop="true"/>
508
+ <bit name="isExplicit" prop="true"/>
509
+ <bit name="ignoreRest" prop="true"/>
510
+ <bit name="hasOptional" prop="true"/>
511
+ <bit name="needRest" prop="true"/>
512
+ <bit name="needActivation" prop="true"/>
513
+ <bit name="needArguments" prop="true"/>
514
+
515
+ <flagged flag="hasOptional">
516
+ <u30 name="optionalCount"/>
517
+ <list type="ValueKind" name="optional" length="optionalCount" prop="true"/>
518
+ </flagged>
519
+
520
+ <flagged flag="hasParamNames">
521
+ <list type="U30" name="paramNames" length="paramCount" prop="true"/>
522
+ </flagged>
523
+ </type>
524
+
525
+ <type name="MetadataInfo">
526
+ <u30 name="nameIndex" prop="true"/>
527
+ <u30 name="valuesCount"/>
528
+ <list type="U30" name="keys" length="valuesCount" prop="true"/>
529
+ <list type="U30" name="values" length="valuesCount" prop="true"/>
530
+ </type>
531
+
532
+ <type name="NamespaceSet">
533
+ <u30 name="count"/>
534
+ <list type="U30" name="namespaces" length="count" prop="true"/>
535
+ </type>
536
+
537
+ <type name="TraitInfo">
538
+ <u30 name="nameIndex" prop="true"/>
539
+
540
+ <bit name="reserved" size="1" constant-size="true"/>
541
+ <bit name="hasMetadata"/>
542
+ <bit name="override" prop="true"/>
543
+ <bit name="final" prop="true"/>
544
+
545
+ <list type="Trait" name="trait" length="1" constant-length="true" prop="true"/>
546
+
547
+ <flagged flag="hasMetadata">
548
+ <u30 name="metadataCount"/>
549
+ <list type="U30" name="metadata" length="metadataCount" prop="true"/>
550
+ </flagged>
551
+ </type>
552
+
553
+ <type name="InstanceInfo">
554
+ <u30 name="nameIndex" prop="true"/>
555
+ <u30 name="superIndex" prop="true"/>
556
+
557
+ <integer name="reserved" size="4" constant-size="true"/>
558
+ <bit name="hasProtectedNS" prop="true"/>
559
+ <bit name="interface" prop="true"/>
560
+ <bit name="final" prop="true"/>
561
+ <bit name="sealed" prop="true"/>
562
+
563
+ <flagged flag="hasProtectedNS">
564
+ <u30 name="protectedNS" prop="true"/>
565
+ </flagged>
566
+
567
+ <u30 name="interfaceCount"/>
568
+ <list type="U30" name="interfaces" length="interfaceCount" prop="true"/>
569
+
570
+ <u30 name="iInitIndex" prop="true"/>
571
+
572
+ <u30 name="traitCount"/>
573
+ <list type="TraitInfo" name="traits" length="traitCount" prop="true"/>
574
+ </type>
575
+
576
+ <type name="ClassInfo">
577
+ <u30 name="cInitIndex" prop="true"/>
578
+
579
+ <u30 name="traitCount"/>
580
+ <list type="TraitInfo" name="traits" length="traitCount" prop="true"/>
581
+ </type>
582
+
583
+ <type name="ScriptInfo">
584
+ <u30 name="initIndex" prop="true"/>
585
+
586
+ <u30 name="traitCount"/>
587
+ <list type="TraitInfo" name="traits" length="traitCount" prop="true"/>
588
+ </type>
589
+
590
+ <type name="Exception">
591
+ <u30 name="tryStart" prop="true"/>
592
+ <u30 name="tryEnd" prop="true"/>
593
+ <u30 name="target" prop="true"/>
594
+ <u30 name="type" prop="true"/>
595
+ <u30 name="name" prop="true"/>
596
+ </type>
597
+
598
+ <type name="MethodBody">
599
+ <u30 name="methodInfo" prop="true"/>
600
+ <u30 name="maxStack" prop="true"/>
601
+ <u30 name="maxRegs" prop="true"/>
602
+ <u30 name="scopeDepth" prop="true"/>
603
+ <u30 name="maxScope" prop="true"/>
604
+
605
+ <u30 name="codeLength"/>
606
+ <list type="OpCode" name="code" end="codeLength" prop="true"/>
607
+
608
+ <u30 name="exceptionCount" prop="true"/>
609
+ <list type="Exception" name="exceptions" length="exceptionCount" prop="true"/>
610
+
611
+ <u30 name="traitCount"/>
612
+ <list type="TraitInfo" name="traits" length="traitCount" prop="true"/>
613
+ </type>
614
+
615
+ <type name="Constants">
616
+ <u30 name="intCount"/>
617
+ <list type="U30" name="ints" length="intCount" length-sub="1" prop="true"/>
618
+
619
+ <u30 name="uintCount"/>
620
+ <list type="U30" name="uints" length="uintCount" length-sub="1" prop="true"/>
621
+
622
+ <u30 name="doubleCount"/>
623
+ <list type="Double" name="doubles" length="doubleCount" length-sub="1" prop="true"/>
624
+
625
+ <u30 name="stringCount"/>
626
+ <list type="String2" name="strings" length="stringCount" length-sub="1" prop="true"/>
627
+
628
+ <u30 name="namespaceConstantCount"/>
629
+ <list type="NamespaceConstant" name="namespaces" length="namespaceConstantCount" length-sub="1" prop="true"/>
630
+
631
+ <u30 name="namespaceSetCount"/>
632
+ <list type="NamespaceSet" name="namespaceSets" length="namespaceSetCount" length-sub="1" prop="true"/>
633
+
634
+ <u30 name="multinameConstantCount"/>
635
+ <list type="MultinameConstant" name="multinames" length="multinameConstantCount" length-sub="1" prop="true"/>
636
+ </type>
637
+
638
+ <type name="Action3">
639
+ <word name="minorVersion" prop="true"/>
640
+ <word name="majorVersion" prop="true"/>
641
+ <object type="Constants" name="constants" prop="true"/>
642
+
643
+ <u30 name="methodInfoCount"/>
644
+ <list type="MethodInfo" name="methods" length="methodInfoCount" prop="true"/>
645
+
646
+ <u30 name="metadataInfoCount"/>
647
+ <list type="MetadataInfo" name="metadata" length="metadataInfoCount" prop="true"/>
648
+
649
+ <u30 name="classCount"/>
650
+ <list type="InstanceInfo" name="instances" length="classCount" prop="true"/>
651
+ <list type="ClassInfo" name="classes" length="classCount" prop="true"/>
652
+
653
+ <u30 name="scriptCount"/>
654
+ <list type="ScriptInfo" name="scripts" length="scriptCount" prop="true"/>
655
+
656
+ <u30 name="methodBodyCount"/>
657
+ <list type="MethodBody" name="methodBodies" length="methodBodyCount" prop="true"/>
658
+ </type>
659
+
660
+ <type name="ZoneData">
661
+ <half name="position" prop="true"/>
662
+ <half name="size" prop="true"/>
663
+ </type>
664
+
665
+ <type name="ZoneArray">
666
+ <byte name="count"/>
667
+ <list type="ZoneData" name="zones" length="count" prop="true"/>
668
+ <integer name="zoneX" size="1" constant-size="true" prop="true"/>
669
+ <integer name="zoneY" size="1" constant-size="true" prop="true"/>
670
+ <integer name="reserved" size="6" constant-size="true"/>
671
+ </type>
672
+
673
+ <!-- ******************** FILTERS ****************** -->
674
+
675
+ <filter name="UnknownFilter" id="-1">
676
+ <data name="data" size="len" prop="true"/>
677
+ </filter>
678
+
679
+ <filter name="DropShadow" id="0x00">
680
+ <context param="alpha" value="1"/>
681
+
682
+ <object type="Color" name="color" prop="true"/>
683
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
684
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
685
+ <fixedpoint2 name="angle" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
686
+ <fixedpoint2 name="distance" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
687
+ <fixedpoint2 name="strength" signed="true" size="16" constant-size="true" exp="8" prop="true"/>
688
+ <bit name="innerShadow" prop="true"/>
689
+ <bit name="knockout" prop="true"/>
690
+ <bit name="compositeSource" default="1"/>
691
+ <integer name="passes" size="5" constant-size="true" prop="true"/>
692
+ </filter>
693
+
694
+ <filter name="Blur" id="0x01">
695
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
696
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
697
+ <integer name="passes" size="5" constant-size="true" prop="true"/>
698
+ <integer name="reserved1" size="3" constant-size="true"/>
699
+ </filter>
700
+
701
+ <filter name="Glow" id="0x02">
702
+ <context param="alpha" value="1"/>
703
+
704
+ <object type="Color" name="color" prop="true"/>
705
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
706
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
707
+ <fixedpoint2 name="strength" signed="true" size="16" constant-size="true" exp="8" prop="true"/>
708
+ <bit name="innerGlow" prop="true"/>
709
+ <bit name="knockout" prop="true"/>
710
+ <bit name="compositeSource" default="1"/>
711
+ <integer name="passes" size="5" constant-size="true" prop="true"/>
712
+ </filter>
713
+
714
+ <filter name="Bevel" id="0x03">
715
+ <context param="alpha" value="1"/>
716
+
717
+ <object type="Color" name="shadowColor" prop="true"/>
718
+ <object type="Color" name="highlightColor" prop="true"/>
719
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
720
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
721
+ <fixedpoint2 name="angle" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
722
+ <fixedpoint2 name="distance" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
723
+ <fixedpoint2 name="strength" signed="true" size="16" constant-size="true" exp="8" prop="true"/>
724
+ <bit name="innerShadow" prop="true"/>
725
+ <bit name="knockout" prop="true"/>
726
+ <bit name="compositeSource" default="1"/>
727
+ <bit name="onTop" prop="true"/>
728
+ <integer name="passes" size="4" constant-size="true" prop="true"/>
729
+ </filter>
730
+
731
+ <filter name="GradientGlow" id="0x04">
732
+ <context param="alpha" value="1"/>
733
+
734
+ <byte name="numColors"/>
735
+ <list type="Color" name="colors" length="numColors" prop="true"/>
736
+ <list type="UChar" name="ratio" length="numColors" prop="true"/>
737
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
738
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
739
+ <fixedpoint2 name="angle" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
740
+ <fixedpoint2 name="distance" signed="true" size="32" constant-size="true" exp="16" prop="true"/>
741
+ <fixedpoint2 name="strength" signed="true" size="16" constant-size="true" exp="8" prop="true"/>
742
+ <bit name="innerGlow" prop="true"/>
743
+ <bit name="knockout" prop="true"/>
744
+ <bit name="compositeSource" default="1"/>
745
+ <bit name="onTop" prop="true"/>
746
+ <integer name="passes" size="4" constant-size="true" prop="true"/>
747
+ </filter>
748
+
749
+ <filter name="Convolution" id="0x05">
750
+ <context param="alpha" value="1"/>
751
+
752
+ <byte name="matrixX" prop="true"/>
753
+ <byte name="matrixY" prop="true"/>
754
+ <float name="divizor" prop="true"/>
755
+ <float name="bias" prop="true"/>
756
+ <list type="Float" name="matrix" prop="true" length="(matrixX * matrixY)" constant-length="true"/>
757
+ <object type="Color" name="defaultColor" prop="true"/>
758
+ <integer name="reserved" size="5" constant-size="true"/>
759
+ <bit name="clamp" prop="true"/>
760
+ <bit name="preserveAlpha" prop="true"/>
761
+ </filter>
762
+
763
+ <filter name="ColorMatrix" id="0x06">
764
+ <list type="Float" name="matrix" prop="true" length="20" constant-length="true"/>
765
+ </filter>
766
+
767
+ <filter name="GradientBevel" id="0x07">
768
+ <context param="alpha" value="1"/>
769
+
770
+ <byte name="numColors"/>
771
+ <list type="Color" name="colors" length="numColors" prop="true"/>
772
+ <list type="UChar" name="ratio" length="numColors" prop="true"/>
773
+ <fixedpoint2 name="blurX" signed="true" size="32" constant-size="true" exp="16" prop="true" default="0"/>
774
+ <fixedpoint2 name="blurY" signed="true" size="32" constant-size="true" exp="16" prop="true" default="0"/>
775
+ <fixedpoint2 name="angle" signed="true" size="32" constant-size="true" exp="16" prop="true" default="0"/>
776
+ <fixedpoint2 name="distance" signed="true" size="32" constant-size="true" exp="16" prop="true" default="0"/>
777
+ <fixedpoint2 name="strength" signed="true" size="16" constant-size="true" exp="8" prop="true" default="0"/>
778
+ <bit name="innerGlow" prop="true"/>
779
+ <bit name="knockout" prop="true"/>
780
+ <bit name="compositeSource" default="1"/>
781
+ <bit name="onTop" prop="true"/>
782
+ <integer name="passes" size="4" constant-size="true" prop="true"/>
783
+ </filter>
784
+
785
+ <!-- ******************** STYLES ****************** -->
786
+
787
+ <style name="Solid" id="0x00">
788
+ <object type="Color" name="color" prop="true"/>
789
+ </style>
790
+
791
+ <style name="LinearGradient" id="0x10">
792
+ <object type="Transform" name="matrix" prop="true"/>
793
+ <if expression="ctx->tagVersion &lt; 4">
794
+ <integer name="reserved" size="4" constant-size="true"/>
795
+ </if>
796
+ <if expression="ctx->tagVersion >= 4">
797
+ <integer name="spreadMode" size="2" constant-size="true" prop="true"/>
798
+ <integer name="interpolationMode" size="2" constant-size="true" prop="true"/>
799
+ </if>
800
+ <integer name="count" size="4" constant-size="true"/>
801
+ <list type="GradientItem" name="gradientColors" length="count" prop="true"/>
802
+ </style>
803
+
804
+ <style name="RadialGradient" id="0x12">
805
+ <object type="Transform" name="matrix" prop="true"/>
806
+ <if expression="ctx->tagVersion &lt; 4">
807
+ <integer name="reserved" size="4" constant-size="true"/>
808
+ </if>
809
+ <if expression="ctx->tagVersion >= 4">
810
+ <integer name="spreadMode" size="2" constant-size="true" prop="true"/>
811
+ <integer name="interpolationMode" size="2" constant-size="true" prop="true"/>
812
+ </if>
813
+ <integer name="count" size="4" constant-size="true"/>
814
+ <list type="GradientItem" name="gradientColors" length="count" prop="true"/>
815
+ </style>
816
+
817
+ <style name="ShiftedRadialGradient" id="0x13">
818
+ <object type="Transform" name="matrix" prop="true"/>
819
+ <if expression="ctx->tagVersion &lt; 4">
820
+ <integer name="reserved" size="4" constant-size="true"/>
821
+ </if>
822
+ <if expression="ctx->tagVersion >= 4">
823
+ <integer name="spreadMode" size="2" constant-size="true" prop="true"/>
824
+ <integer name="interpolationMode" size="2" constant-size="true" prop="true"/>
825
+ </if>
826
+ <integer name="count" size="4" constant-size="true"/>
827
+ <list type="GradientItem" name="gradientColors" length="count" prop="true"/>
828
+ <fixedpoint2 name="shift" signed="true" size="16" constant-size="true" exp="8" prop="true"/>
829
+ </style>
830
+
831
+ <style name="TiledBitmap" id="0x40">
832
+ <word name="objectID" prop="true"/>
833
+ <object type="Transform" name="matrix" prop="true"/>
834
+ </style>
835
+
836
+ <style name="ClippedBitmap" id="0x41">
837
+ <word name="objectID" prop="true"/>
838
+ <object type="Transform" name="matrix" prop="true"/>
839
+ </style>
840
+
841
+ <style name="TiledBitmap2" id="0x42">
842
+ <word name="objectID" prop="true"/>
843
+ <object type="Transform" name="matrix" prop="true"/>
844
+ </style>
845
+
846
+ <style name="ClippedBitmap2" id="0x43">
847
+ <word name="objectID" prop="true"/>
848
+ <object type="Transform" name="matrix" prop="true"/>
849
+ </style>
850
+
851
+ <!-- ******************** TAGS ****************** -->
852
+
853
+ <tag name="UnknownTag" id="-1">
854
+ <data name="data" size="len" prop="true"/>
855
+ </tag>
856
+
857
+ <tag name="End" id="0x00"/>
858
+ <tag name="ShowFrame" id="0x01"/>
859
+
860
+ <tag name="DefineShape" id="0x02">
861
+ <context param="alpha" value="0"/>
862
+ <context param="many_shapes" value="0"/>
863
+ <context param="tagVersion" value="1"/>
864
+ <word name="objectID" prop="true"/>
865
+ <object type="Rectangle" name="bounds" prop="true"/>
866
+ <object type="StyleList" name="styles" prop="true"/>
867
+ <object type="Shape" name="shapes" prop="true"/>
868
+ <fill-byte/>
869
+ </tag>
870
+
871
+ <tag name="RemoveObject" id="0x05">
872
+ <word name="objectID" prop="true"/>
873
+ <word name="depth" prop="true"/>
874
+ </tag>
875
+
876
+ <tag name="DefineBits" id="0x06">
877
+ <word name="objectID" prop="true"/>
878
+ <!-- only basic support for the id -->
879
+ <object type="Rest" name="data" prop="true"/>
880
+ </tag>
881
+
882
+ <tag name="SetBackgroundColor" id="0x09">
883
+ <!-- FIXME: alpha?, when len=4 -->
884
+ <context param="alpha" value="0"/>
885
+ <object type="Color" name="color" prop="true" />
886
+ </tag>
887
+
888
+ <tag name="DefineText" id="0x0B">
889
+ <word name="objectID" prop="true"/>
890
+ <object type="Rectangle" name="bounds" prop="true"/>
891
+ <object type="Transform" name="transform" prop="true"/>
892
+ <byte name="glyphBits" context="true"/>
893
+ <byte name="advanceBits" context="true"/>
894
+ <context param="alpha" value="0"/>
895
+ <context param="tagVersion" value="1"/>
896
+ <list name="records" type="TextRecord" prop="true"/>
897
+ </tag>
898
+
899
+ <tag name="DefineText2" id="0x21">
900
+ <context param="alpha" value="1"/>
901
+
902
+ <word name="objectID" prop="true"/>
903
+ <object type="Rectangle" name="bounds" prop="true"/>
904
+ <object type="Transform" name="transform" prop="true"/>
905
+ <byte name="glyphBits" context="true"/>
906
+ <byte name="advanceBits" context="true"/>
907
+ <list name="records" type="TextRecord2" prop="true"/>
908
+ </tag>
909
+
910
+
911
+ <tag name="DoAction" id="0x0C">
912
+ <list name="actions" type="Action" prop="true"/>
913
+ </tag>
914
+
915
+ <tag name="DefineFontInfo" id="0x0D">
916
+ <word name="objectID" prop="true"/>
917
+ <!--
918
+ doesnt work for strange encodings (nibbles.swf)
919
+ <string mode="pascal" name="name" prop="true"/>
920
+ -->
921
+ <byte name="nameLength"/>
922
+ <data name="nameData" size="nameLength"/>
923
+
924
+ <integer name="reserved" size="2"/>
925
+ <bit name="smallTextOrUnicode" prop="true"/>
926
+ <bit name="isShiftJIS" prop="true"/>
927
+ <bit name="isANSII" prop="true"/>
928
+ <bit name="isItalic" prop="true"/>
929
+ <bit name="isBold" prop="true"/>
930
+ <bit name="isWide" prop="true"/>
931
+ <if expression="ctx->swfVersion>=6">
932
+ <byte name="language" prop="true"/>
933
+ </if>
934
+ <object type="Rest" name="map" prop="true"/>
935
+ </tag>
936
+
937
+ <tag name="DefineSound" id="0x0E">
938
+ <word name="objectID" prop="true"/>
939
+
940
+ <!-- format values:
941
+ 0 Raw
942
+ 1 ADPCM
943
+ 2 MP3
944
+ 3 Uncompressed
945
+ 6 Nellymoser
946
+ -->
947
+ <integer name="format" size="4" constant-size="true" prop="true"/>
948
+
949
+ <!-- rate values:
950
+ 0 5512(.5?)
951
+ 1 11025
952
+ 2 22050
953
+ 3 44100
954
+ -->
955
+ <integer name="rate" size="2" constant-size="true" prop="true"/>
956
+
957
+ <bit name="is16bit" prop="true"/>
958
+ <bit name="stereo" prop="true"/>
959
+ <uint32 name="samples" prop="true"/>
960
+ <object type="Rest" name="data" prop="true"/>
961
+ </tag>
962
+
963
+ <tag name="StartSound" id="0x0F">
964
+ <word name="objectID" prop="true"/>
965
+
966
+ <integer name="reserved" size="2" constant-size="true"/>
967
+ <bit name="stopPlayback" prop="true"/>
968
+ <bit name="noMultiple" prop="true"/>
969
+ <bit name="hasEnvelope" prop="true"/>
970
+ <bit name="hasLoop" prop="true"/>
971
+ <bit name="hasOutPoint" prop="true"/>
972
+ <bit name="hasInPoint" prop="true"/>
973
+
974
+ <flagged flag="hasInPoint">
975
+ <uint32 name="inPoint" prop="true"/>
976
+ </flagged>
977
+ <flagged flag="hasOutPoint">
978
+ <uint32 name="outPoint" prop="true"/>
979
+ </flagged>
980
+ <flagged flag="hasLoop">
981
+ <word name="loop" prop="true"/>
982
+ </flagged>
983
+ <flagged flag="hasEnvelope">
984
+ <byte name="envelopeCount" prop="true"/>
985
+
986
+ <!-- would be easy to implement, too lazy now, and need a sample -->
987
+ <object type="Rest" name="envelopeData" prop="true"/>
988
+ </flagged>
989
+ </tag>
990
+
991
+ <tag name="DefineShape2" id="0x16">
992
+ <context param="alpha" value="0"/>
993
+ <context param="many_shapes" value="1"/>
994
+ <context param="tagVersion" value="2"/>
995
+
996
+ <word name="objectID" prop="true"/>
997
+ <object type="Rectangle" name="bounds" prop="true"/>
998
+ <object type="StyleList" name="styles" prop="true"/>
999
+ <object type="Shape" name="shapes" prop="true"/>
1000
+ <fill-byte/>
1001
+ </tag>
1002
+
1003
+ <tag name="DefineShape3" id="0x20">
1004
+ <context param="alpha" value="1"/>
1005
+ <context param="many_shapes" value="1"/>
1006
+ <context param="tagVersion" value="3"/>
1007
+
1008
+ <word name="objectID" prop="true"/>
1009
+ <object type="Rectangle" name="bounds" prop="true"/>
1010
+ <object type="StyleList" name="styles" prop="true"/>
1011
+ <object type="Shape" name="shapes" prop="true"/>
1012
+ <fill-byte/>
1013
+ </tag>
1014
+
1015
+ <tag name="DefineShape4" id="0x43">
1016
+ <word name="objectID" prop="true"/>
1017
+ <object type="Rest" name="data" prop="true"/>
1018
+
1019
+ <!-- the above defines basic support for the id only.
1020
+ below is probably correct, but i need a sample first.
1021
+
1022
+ <context param="alpha" value="1"/>
1023
+ <context param="many_shapes" value="1"/>
1024
+ <context param="tagVersion" value="4"/>
1025
+
1026
+ <word name="objectID" prop="true"/>
1027
+ <object type="Rectangle" name="bounds" prop="true"/>
1028
+ <object type="Rectangle" name="strokeBounds" prop="true"/>
1029
+
1030
+ <integer name="reserved" size="6" constant-size="true"/>
1031
+ <bit name="nonScalingStrokes" prop="true"/>
1032
+ <bit name="scalingStrokes" prop="true"/>
1033
+
1034
+ <object type="StyleList" name="styles" prop="true"/>
1035
+ <object type="Shape" name="shapes" prop="true"/>
1036
+ <fill-byte/>
1037
+ -->
1038
+
1039
+ </tag>
1040
+
1041
+ <tag name="DefineShape5" id="0x53">
1042
+ <context param="alpha" value="1"/>
1043
+ <context param="many_shapes" value="1"/>
1044
+ <context param="tagVersion" value="5"/>
1045
+
1046
+ <word name="objectID" prop="true"/>
1047
+ <object type="Rectangle" name="bounds" prop="true"/>
1048
+ <object type="Rectangle" name="strokeBounds" prop="true"/>
1049
+
1050
+ <integer name="reserved" size="6" constant-size="true"/>
1051
+ <!-- not quite understanding the sense of having two bits for one booleanoid,
1052
+ copying from alexis here once more. -->
1053
+ <bit name="nonScalingStrokes" prop="true"/>
1054
+ <bit name="scalingStrokes" prop="true"/>
1055
+
1056
+ <object type="StyleList" name="styles" prop="true"/>
1057
+ <object type="Shape" name="shapes" prop="true"/>
1058
+ <fill-byte/>
1059
+ </tag>
1060
+
1061
+
1062
+ <tag name="DefineMorphShape" id="0x2E">
1063
+ <word name="objectID" prop="true"/>
1064
+ <!-- only basic support for the id -->
1065
+ <object type="Rest" name="data" prop="true"/>
1066
+ </tag>
1067
+
1068
+ <tag name="DefineFontInfo2" id="0x3E">
1069
+ <word name="objectID" prop="true"/>
1070
+ <!--
1071
+ doesnt work for strange encodings (nibbles.swf)
1072
+ <string mode="pascal" name="name" prop="true"/>
1073
+ -->
1074
+ <byte name="nameLength"/>
1075
+ <data name="nameData" size="nameLength"/>
1076
+
1077
+ <integer name="reserved" size="2"/>
1078
+ <bit name="smallTextOrUnicode" prop="true"/>
1079
+ <bit name="isShiftJIS" prop="true"/>
1080
+ <bit name="isANSII" prop="true"/>
1081
+ <bit name="isItalic" prop="true"/>
1082
+ <bit name="isBold" prop="true"/>
1083
+ <bit name="isWide" prop="true"/>
1084
+ <if expression="ctx->swfVersion>=6">
1085
+ <byte name="language" prop="true"/>
1086
+ </if>
1087
+ <object type="Rest" name="map" prop="true"/>
1088
+ </tag>
1089
+
1090
+ <tag name="SoundStreamHead" id="0x12">
1091
+ <integer name="reserved" size="4" constant-size="true"/>
1092
+ <integer name="playbackRate" size="2" constant-size="true" prop="true"/>
1093
+ <bit name="playbackSize" prop="true"/>
1094
+ <bit name="playbackStereo" prop="true"/>
1095
+ <integer name="compression" size="4" constant-size="true" prop="true"/>
1096
+ <integer name="soundRate" size="2" constant-size="true" prop="true"/>
1097
+ <bit name="soundSize" prop="true"/>
1098
+ <bit name="soundStereo" prop="true"/>
1099
+ <word name="sampleSize" prop="true"/>
1100
+ <if expression="compression==2">
1101
+ <!-- doesnt seem to be always present -->
1102
+ <object type="Rest" name="latencySeek" prop="true"/>
1103
+ </if>
1104
+ </tag>
1105
+
1106
+ <tag name="DefineBitsLossless" id="0x14">
1107
+ <word name="objectID" prop="true"/>
1108
+ <byte name="format" prop="true"/>
1109
+ <word name="width" prop="true"/>
1110
+ <word name="height" prop="true"/>
1111
+ <if expression="format==3">
1112
+ <byte name="n_colormap" prop="true"/>
1113
+ </if>
1114
+ <object type="Rest" name="data" prop="true"/>
1115
+ </tag>
1116
+
1117
+ <tag name="DefineBitsJPEG2" id="0x15">
1118
+ <word name="objectID" prop="true"/>
1119
+ <object type="Rest" name="data" prop="true"/>
1120
+ </tag>
1121
+
1122
+ <tag name="DefineBitsJPEG3" id="0x23">
1123
+ <word name="objectID" prop="true"/>
1124
+ <uint32 name="offset_to_alpha" prop="true"/>
1125
+ <object type="Rest" name="data" prop="true"/>
1126
+ </tag>
1127
+
1128
+ <tag name="DefineBitsLossless2" id="0x24">
1129
+ <word name="objectID" prop="true"/>
1130
+ <byte name="format" prop="true"/>
1131
+ <word name="width" prop="true"/>
1132
+ <word name="height" prop="true"/>
1133
+ <if expression="format==3">
1134
+ <byte name="n_colormap" prop="true"/>
1135
+ </if>
1136
+ <object type="Rest" name="data" prop="true"/>
1137
+ </tag>
1138
+
1139
+ <tag name="PlaceObject2" id="0x1A">
1140
+ <bit name="hasEventHandler"/>
1141
+ <bit name="hasClipDepth"/>
1142
+ <bit name="hasName"/>
1143
+ <bit name="hasMorph"/>
1144
+ <bit name="hasColorTransform"/>
1145
+ <bit name="hasTransform"/>
1146
+ <bit name="hasID"/>
1147
+ <bit name="replace" prop="true"/>
1148
+ <word name="depth" prop="true"/>
1149
+ <flagged flag="hasID">
1150
+ <word name="objectID" prop="true" default="0"/>
1151
+ </flagged>
1152
+ <flagged flag="hasTransform">
1153
+ <object type="Transform" name="transform" prop="true"/>
1154
+ </flagged>
1155
+ <flagged flag="hasColorTransform">
1156
+ <object type="ColorTransform2" name="colorTransform" prop="true"/>
1157
+ </flagged>
1158
+ <flagged flag="hasMorph">
1159
+ <word name="morph" prop="true"/>
1160
+ </flagged>
1161
+ <flagged flag="hasName">
1162
+ <string name="name" prop="true" default="NULL"/>
1163
+ </flagged>
1164
+ <flagged flag="hasClipDepth">
1165
+ <word name="clipDepth" prop="true" default="0"/>
1166
+ </flagged>
1167
+ <flagged flag="hasEventHandler">
1168
+ <word name="reserved"/>
1169
+
1170
+ <!-- allflags1/2 should be set of the | of all item's flags -->
1171
+ <word name="allflags1" prop="true"/>
1172
+ <if expression="ctx->swfVersion>=6">
1173
+ <word name="allflags2" prop="true"/>
1174
+ </if>
1175
+ <list type="Event" name="events" prop="true"
1176
+ end-condition="!(item->getflags1() | item->getflags2())"/>
1177
+ <!--
1178
+ end-condition="!(item->getconstruct() || item->getkeyPress() || item->getdragOut() || item->getdragOver() || item->getrollOut() || item->getrollOver() || item->getreleaseOutside() || item->getrelease() || item->getpress() || item->getinitialize() || item->getdata() || item->getkeyUp() || item->getkeyDown() || item->getmouseUp() || item->getmouseDown() || item->getmouseMove() || item->getunload() || item->getenterFrame() || item->getload() )"/>
1179
+ <object type="Rest" name="events" prop="true"/>
1180
+ -->
1181
+ </flagged>
1182
+ </tag>
1183
+
1184
+ <tag name="RemoveObject2" id="0x1C">
1185
+ <word name="depth" prop="true"/>
1186
+ </tag>
1187
+
1188
+ <tag name="DefineEditText" id="0x25">
1189
+ <context param="alpha" value="1"/>
1190
+
1191
+ <word name="objectID" prop="true"/>
1192
+ <object type="Rectangle" name="size" prop="true"/>
1193
+ <bit name="hasText"/>
1194
+ <bit name="wordWrap" prop="true"/>
1195
+ <bit name="multiLine" prop="true"/>
1196
+ <bit name="password" prop="true"/>
1197
+ <bit name="readOnly" prop="true"/>
1198
+ <bit name="hasColor"/>
1199
+ <bit name="hasMaxLength"/>
1200
+ <bit name="hasFont"/>
1201
+
1202
+ <!-- slight version difference unimplemented -->
1203
+ <bit name="reserved"/>
1204
+ <bit name="autoSize" prop="true"/>
1205
+
1206
+ <bit name="hasLayout" prop="true"/>
1207
+ <bit name="notSelectable" prop="true"/>
1208
+ <bit name="hasBorder" prop="true"/>
1209
+ <bit name="reserved2"/>
1210
+ <bit name="isHTML" prop="true"/>
1211
+ <bit name="useOutlines" prop="true"/>
1212
+
1213
+ <flagged flag="hasFont">
1214
+ <word name="fontRef" prop="true"/>
1215
+ <word name="fontHeight" prop="true"/>
1216
+ </flagged>
1217
+ <flagged flag="hasColor">
1218
+ <object type="Color" name="color" prop="true"/>
1219
+ </flagged>
1220
+ <flagged flag="hasMaxLength">
1221
+ <word name="maxLength" prop="true"/>
1222
+ </flagged>
1223
+ <flagged flag="hasLayout">
1224
+ <byte name="align" prop="true"/>
1225
+ <word name="leftMargin" prop="true"/>
1226
+ <word name="rightMargin" prop="true"/>
1227
+ <word name="indent" signed="true" prop="true"/>
1228
+ <word name="leading" signed="true" prop="true"/>
1229
+ </flagged>
1230
+ <string name="variableName" prop="true"/>
1231
+ <flagged flag="hasText">
1232
+ <string name="initialText" prop="true"/>
1233
+ </flagged>
1234
+ </tag>
1235
+
1236
+ <tag name="DefineSprite" id="0x27">
1237
+ <word name="objectID" prop="true"/>
1238
+ <word name="frames" prop="true"/>
1239
+ <list name="tags" type="Tag" prop="true"/>
1240
+ </tag>
1241
+
1242
+ <tag name="FrameLabel" id="0x2B">
1243
+ <string name="label" prop="true"/>
1244
+ <object type="Rest" name="flags" prop="true"/>
1245
+ </tag>
1246
+
1247
+ <tag name="SoundStreamHead2" id="0x2D">
1248
+ <integer name="reserved" size="4" constant-size="true"/>
1249
+ <integer name="playbackRate" size="2" constant-size="true" prop="true"/>
1250
+ <bit name="playbackSize" prop="true"/>
1251
+ <bit name="playbackStereo" prop="true"/>
1252
+ <integer name="compression" size="4" constant-size="true" prop="true"/>
1253
+ <integer name="soundRate" size="2" constant-size="true" prop="true"/>
1254
+ <bit name="soundSize" prop="true"/>
1255
+ <bit name="soundStereo" prop="true"/>
1256
+ <word name="sampleSize" prop="true"/>
1257
+ <if expression="compression==2">
1258
+ <!-- doesnt seem to be always present -->
1259
+ <object type="Rest" name="latencySeek" prop="true"/>
1260
+ </if>
1261
+ </tag>
1262
+
1263
+ <tag name="DefineFont" id="0x0A">
1264
+ <context param="tagVersion" value="1"/>
1265
+ <context param="wideGlyphOffsets" value="0"/>
1266
+ <word name="objectID" prop="true"/>
1267
+
1268
+ <object type="Rest" name="data" prop="true"/>
1269
+ <!--
1270
+ <object type="GlyphList" name="glyphs" prop="true"/>
1271
+ -->
1272
+ </tag>
1273
+
1274
+ <tag name="DefineFont2" id="0x30">
1275
+ <context param="tagVersion" value="2"/>
1276
+ <word name="objectID" prop="true"/>
1277
+ <bit name="hasLayout"/>
1278
+ <bit name="isShiftJIS" prop="true"/>
1279
+ <bit name="isUnicode" prop="true"/>
1280
+ <bit name="isANSII" prop="true"/>
1281
+ <bit name="wideGlyphOffsets" prop="true" context="inverse"/>
1282
+ <bit name="wideMap" context="inverse"/>
1283
+ <bit name="italic" prop="true"/>
1284
+ <bit name="bold" prop="true"/>
1285
+ <byte name="language" prop="true"/>
1286
+ <string mode="pascal" name="name" prop="true"/>
1287
+
1288
+ <word name="glyphCount" context="true"/>
1289
+
1290
+ <object type="GlyphList" name="glyphs" prop="true"/>
1291
+
1292
+ <flagged flag="hasLayout">
1293
+ <word name="ascent" signed="true" prop="true"/>
1294
+ <word name="descent" signed="true" prop="true"/>
1295
+ <word name="leading" signed="true" prop="true"/>
1296
+ <list name="advance" type="Short" length="glyphCount" prop="true"/>
1297
+ <list name="bounds" type="Rectangle" length="glyphCount" prop="true"/>
1298
+ <word name="kerningCount" signed="true"/>
1299
+ <flagged flag="wideMap">
1300
+ <list name="wideKerning" type="WideKerning" length="kerningCount" prop="true"/>
1301
+ </flagged>
1302
+ <flagged flag="wideMap" negative="true">
1303
+ <list name="kerning" type="Kerning" length="kerningCount" prop="true"/>
1304
+ </flagged>
1305
+ </flagged>
1306
+ </tag>
1307
+
1308
+ <tag name="DefineFont3" id="0x4B">
1309
+ <context param="tagVersion" value="2"/>
1310
+ <word name="objectID" prop="true"/>
1311
+ <bit name="hasLayout"/>
1312
+ <bit name="isShiftJIS" prop="true"/>
1313
+ <bit name="isUnicode" prop="true"/>
1314
+ <bit name="isANSII" prop="true"/>
1315
+ <bit name="wideGlyphOffsets" prop="true" context="inverse"/>
1316
+ <bit name="wideMap" context="inverse"/>
1317
+ <bit name="italic" prop="true"/>
1318
+ <bit name="bold" prop="true"/>
1319
+ <byte name="language" prop="true"/>
1320
+ <string mode="pascal" name="name" prop="true"/>
1321
+
1322
+ <word name="glyphCount" context="true"/>
1323
+
1324
+ <object type="GlyphList" name="glyphs" prop="true"/>
1325
+
1326
+ <flagged flag="hasLayout">
1327
+ <word name="ascent" signed="true" prop="true"/>
1328
+ <word name="descent" signed="true" prop="true"/>
1329
+ <word name="leading" signed="true" prop="true"/>
1330
+ <list name="advance" type="Short" length="glyphCount" prop="true"/>
1331
+ <list name="bounds" type="Rectangle" length="glyphCount" prop="true"/>
1332
+ <word name="kerningCount" signed="true"/>
1333
+ <flagged flag="wideMap">
1334
+ <list name="wideKerning" type="WideKerning" length="kerningCount" prop="true"/>
1335
+ </flagged>
1336
+ <flagged flag="wideMap" negative="true">
1337
+ <list name="kerning" type="Kerning" length="kerningCount" prop="true"/>
1338
+ </flagged>
1339
+ </flagged>
1340
+ </tag>
1341
+
1342
+ <tag name="DefineButton" id="0x07">
1343
+ <context param="tagVersion" value="1"/>
1344
+
1345
+ <word name="objectID" prop="true"/>
1346
+ <list type="Button" name="buttons" end-condition="!(item->gethitTest() || item->getdown() || item->getover() || item->getup())" end-offset="-2" prop="true"/>
1347
+ <list type="Action" name="actions" prop="true"/>
1348
+ </tag>
1349
+
1350
+ <tag name="DefineButton2" id="0x22">
1351
+ <context param="tagVersion" value="2"/>
1352
+
1353
+ <word name="objectID" prop="true"/>
1354
+ <integer name="reserved" size="7" constant-size="true"/>
1355
+ <bit name="menu" prop="true"/>
1356
+ <word name="buttonsSize" prop="true"/>
1357
+ <list type="Button" name="buttons" end-condition="!(item->gethitTest() || item->getdown() || item->getover() || item->getup())" end-offset="-2" prop="true"/>
1358
+ <list type="Condition" name="conditions" prop="true"/>
1359
+ </tag>
1360
+
1361
+ <tag name="Export" id="0x38">
1362
+ <word name="count"/>
1363
+ <list name="symbols" type="Symbol" length="count" prop="true"/>
1364
+ </tag>
1365
+
1366
+ <tag name="Import" id="0x39">
1367
+ <string name="url" prop="true"/>
1368
+ <word name="count"/>
1369
+ <list name="symbols" type="Symbol" length="count" prop="true"/>
1370
+ </tag>
1371
+
1372
+ <tag name="DoInitAction" id="0x3B">
1373
+ <word name="sprite" prop="true"/>
1374
+ <list name="actions" type="Action" prop="true"/>
1375
+ </tag>
1376
+
1377
+ <tag name="SoundStreamBlock" id="0x13">
1378
+ <data name="data" size="len" prop="true"/>
1379
+ </tag>
1380
+
1381
+ <tag name="DefineVideoStream" id="0x3C">
1382
+ <word name="objectID" prop="true"/>
1383
+ <word name="frames" prop="true"/>
1384
+ <word name="width" prop="true"/>
1385
+ <word name="height" prop="true"/>
1386
+ <integer name="reserved" size="5" constant-size="true"/>
1387
+ <integer name="deblocking" size="2" constant-size="true" prop="true"/>
1388
+ <bit name="smoothing" prop="true"/>
1389
+ <byte name="codec" prop="true"/>
1390
+ </tag>
1391
+
1392
+ <tag name="VideoFrame" id="0x3D">
1393
+ <word name="objectID" prop="true"/>
1394
+ <word name="frame" prop="true"/>
1395
+ <object type="Rest" name="data" prop="true"/>
1396
+ </tag>
1397
+
1398
+ <tag name="ScriptLimits" id="0x41">
1399
+ <word name="maxRecursionDepth" prop="true"/>
1400
+ <word name="timeout" prop="true"/>
1401
+ </tag>
1402
+
1403
+ <tag name="SetTabIndex" id="0x42">
1404
+ <word name="depth" prop="true"/>
1405
+ <word name="tabIndex" prop="true"/>
1406
+ </tag>
1407
+
1408
+ <tag name="PlaceObject3" id="0x46">
1409
+ <bit name="hasEventHandler"/>
1410
+ <bit name="hasClipDepth"/>
1411
+ <bit name="hasName"/>
1412
+ <bit name="hasMorph"/>
1413
+ <bit name="hasColorTransform"/>
1414
+ <bit name="hasTransform"/>
1415
+ <bit name="hasID"/>
1416
+ <bit name="replace" prop="true"/>
1417
+ <integer name="reserved1" size="5" constant-size="true"/>
1418
+ <bit name="hasCacheAsBitmap"/>
1419
+ <bit name="hasBlendMode"/>
1420
+ <bit name="hasFilterList"/>
1421
+ <word name="depth" prop="true"/>
1422
+ <flagged flag="hasID">
1423
+ <word name="objectID" prop="true" default="0"/>
1424
+ </flagged>
1425
+ <flagged flag="hasTransform">
1426
+ <object type="Transform" name="transform" prop="true"/>
1427
+ </flagged>
1428
+ <flagged flag="hasColorTransform">
1429
+ <object type="ColorTransform2" name="colorTransform" prop="true"/>
1430
+ </flagged>
1431
+ <flagged flag="hasMorph">
1432
+ <word name="morph" prop="true"/>
1433
+ </flagged>
1434
+ <flagged flag="hasName">
1435
+ <string name="name" prop="true" default="NULL"/>
1436
+ </flagged>
1437
+ <flagged flag="hasClipDepth">
1438
+ <word name="clipDepth" prop="true" default="0"/>
1439
+ </flagged>
1440
+ <flagged flag="hasFilterList">
1441
+ <byte name="numFilters"/>
1442
+ <list type="Filter" name="filters" length="numFilters" prop="true"/>
1443
+ </flagged>
1444
+ <flagged flag="hasBlendMode">
1445
+ <byte name="blendMode" prop="true" default="0"/>
1446
+ </flagged>
1447
+ <flagged flag="hasCacheAsBitmap">
1448
+ <!-- alexis swf ref states this as "not in the macromedia docs", dunno... -->
1449
+ <byte name="bitmapCaching" prop="true" default="0"/>
1450
+ </flagged>
1451
+ <flagged flag="hasEventHandler">
1452
+ <word name="reserved"/>
1453
+
1454
+ <!-- allflags1/2 should be set of the | of all item's flags -->
1455
+ <word name="allflags1" prop="true"/>
1456
+ <if expression="ctx->swfVersion>=6">
1457
+ <word name="allflags2" prop="true"/>
1458
+ </if>
1459
+ <list type="Event" name="events" prop="true"
1460
+ end-condition="!(item->getflags1() | item->getflags2())"/>
1461
+ <!--
1462
+ end-condition="!(item->getconstruct() || item->getkeyPress() || item->getdragOut() || item->getdragOver() || item->getrollOut() || item->getrollOver() || item->getreleaseOutside() || item->getrelease() || item->getpress() || item->getinitialize() || item->getdata() || item->getkeyUp() || item->getkeyDown() || item->getmouseUp() || item->getmouseDown() || item->getmouseMove() || item->getunload() || item->getenterFrame() || item->getload() )"/>
1463
+ <object type="Rest" name="events" prop="true"/>
1464
+ -->
1465
+ </flagged>
1466
+ </tag>
1467
+
1468
+ <tag name="ImportAssets2" id="0x47">
1469
+ <string name="url" prop="true"/>
1470
+ <byte name="reserved1" prop="true"/>
1471
+ <byte name="reserved2" prop="true"/>
1472
+ <word name="count"/>
1473
+ <list name="symbols" type="Symbol" length="count" prop="true"/>
1474
+ </tag>
1475
+
1476
+ <tag name="FileAttributes" id="0x45">
1477
+ <integer name="reserved1" size="3" constant-size="true"/>
1478
+ <bit name="hasMetaData" prop="true"/>
1479
+ <if expression="ctx->swfVersion &lt; 9">
1480
+ <integer name="reserved2" size="3" constant-size="true"/>
1481
+ </if>
1482
+ <if expression="ctx->swfVersion >= 9">
1483
+ <bit name="allowABC" prop="true"/>
1484
+ <bit name="suppressCrossDomainCaching" prop="true"/>
1485
+ <bit name="swfRelativeURLs" prop="true"/>
1486
+ </if>
1487
+ <bit name="useNetwork" prop="true"/>
1488
+ <integer name="reserved3" size="24" constant-size="true"/>
1489
+ </tag>
1490
+
1491
+ <tag name="DefineFontAlignZones" id="0x49">
1492
+ <word name="objectID" prop="true"/>
1493
+ <integer name="csmTableHint" prop="true" size="2" constant-size="true"/>
1494
+ <integer name="reserved" size="6" constant-size="true"/>
1495
+ <list name="zoneArrays" type="ZoneArray" length="ctx->glyphCount" prop="true"/>
1496
+ </tag>
1497
+
1498
+ <tag name="CSMTextSettings" id="0x4A">
1499
+ <word name="objectID" prop="true"/>
1500
+ <integer name="useFlashType" prop="true" size="2" constant-size="true"/>
1501
+ <integer name="gridFit" prop="true" size="3" constant-size="true"/>
1502
+ <integer name="reserved1" size="3" constant-size="true"/>
1503
+ <float name="thickness" prop="true"/>
1504
+ <float name="sharpness" prop="true"/>
1505
+ <byte name="reserved2"/>
1506
+ </tag>
1507
+
1508
+ <tag name="Metadata" id="0x4D">
1509
+ <xml name="RDF" prop="true"/>
1510
+ </tag>
1511
+
1512
+ <tag name="DefineScalingGrid" id="0x4E">
1513
+ <word name="objectID" prop="true"/>
1514
+ <object type="Rectangle" name="splitter" prop="true"/>
1515
+ </tag>
1516
+
1517
+ <tag name="DoABC" id="0x48">
1518
+ <object type="Action3" name="actions" prop="true"/>
1519
+ </tag>
1520
+
1521
+ <tag name="DoABCDefine" id="0x52">
1522
+ <uint32 name="flags" prop="true"/>
1523
+ <string name="name" prop="true"/>
1524
+ <object type="Action3" name="actions" prop="true"/>
1525
+ </tag>
1526
+
1527
+ <tag name="SymbolClass" id="0x4C">
1528
+ <word name="count"/>
1529
+ <list name="symbols" type="Symbol" length="count" prop="true"/>
1530
+ </tag>
1531
+
1532
+ <tag name="DefineSceneAndFrameLabelData" id="0x56">
1533
+ <encodedu32 name="sceneCount"/>
1534
+ <list name="scenes" type="Scene" length="sceneCount" prop="true"/>
1535
+ <encodedu32 name="frameCount"/>
1536
+ <list name="frames" type="Frame" length="frameCount" prop="true"/>
1537
+ </tag>
1538
+
1539
+ <tag name="DefineBinaryData" id="0x57">
1540
+ <word name="objectID" prop="true"/>
1541
+ <uint32 name="reserved"/>
1542
+ <object type="Rest" name="data" prop="true"/>
1543
+ </tag>
1544
+
1545
+ <tag name="DefineFontName" id="0x58">
1546
+ <word name="objectID" prop="true"/>
1547
+ <string name="name" prop="true"/>
1548
+ <string name="copyright" prop="true"/>
1549
+ </tag>
1550
+
1551
+ <!-- ******************** ACTIONS ****************** -->
1552
+
1553
+ <stackitem name="StackString" id="0x00">
1554
+ <string name="value" prop="true"/>
1555
+ </stackitem>
1556
+ <stackitem name="StackFloat" id="0x01">
1557
+ <float name="value" prop="true"/>
1558
+ </stackitem>
1559
+ <stackitem name="StackNull" id="0x02"/>
1560
+ <stackitem name="StackUndefined" id="0x03"/>
1561
+ <stackitem name="StackRegister" id="0x04">
1562
+ <byte name="reg" prop="true"/>
1563
+ </stackitem>
1564
+ <stackitem name="StackBoolean" id="0x05">
1565
+ <byte name="value" prop="true"/>
1566
+ </stackitem>
1567
+ <stackitem name="StackDouble" id="0x06">
1568
+ <double name="value" prop="true"/>
1569
+ </stackitem>
1570
+ <stackitem name="StackInteger" id="0x07">
1571
+ <uint32 name="value" prop="true"/>
1572
+ <!--<integer name="value" size="32" constant-size="true" prop="true"/>-->
1573
+ </stackitem>
1574
+ <stackitem name="StackDictionaryLookup" id="0x08">
1575
+ <byte name="index" prop="true"/>
1576
+ </stackitem>
1577
+ <stackitem name="StackLargeDictionaryLookup" id="0x09">
1578
+ <word name="index" prop="true"/>
1579
+ </stackitem>
1580
+
1581
+
1582
+ <action name="UnknownAction" id="-1">
1583
+ <data name="data" size="len" prop="true"/>
1584
+ </action>
1585
+ <action name="EndAction" id="0x00"/>
1586
+ <action name="NextFrame" id="0x04"/>
1587
+ <action name="PreviousFrame" id="0x05"/>
1588
+ <action name="Play" id="0x06"/>
1589
+ <action name="Stop" id="0x07"/>
1590
+ <action name="ToggleQuality" id="0x08"/>
1591
+ <action name="StopSound" id="0x09"/>
1592
+ <action name="AddCast" id="0x0A"/>
1593
+ <action name="Substract" id="0x0B"/>
1594
+ <action name="Mulitply" id="0x0C"/>
1595
+ <action name="Divide" id="0x0D"/>
1596
+ <action name="EqualCast" id="0x0E"/>
1597
+ <action name="LessThanCast" id="0x0F"/>
1598
+ <action name="LogicalAND" id="0x10"/>
1599
+ <action name="LogicalOR" id="0x11"/>
1600
+ <action name="LogicalNOT" id="0x12"/>
1601
+ <action name="StringEqual" id="0x13"/>
1602
+ <action name="StringLength" id="0x14"/>
1603
+ <action name="SubString" id="0x15"/>
1604
+ <action name="Pop" id="0x17"/>
1605
+ <action name="IntegralPart" id="0x18"/>
1606
+ <action name="GetVariable" id="0x1C"/>
1607
+ <action name="SetVariable" id="0x1D"/>
1608
+ <action name="SetTargetDynamic" id="0x20"/>
1609
+ <action name="ConcatenateString" id="0x21"/>
1610
+ <action name="GetProperty" id="0x22"/>
1611
+ <action name="SetProperty" id="0x23"/>
1612
+ <action name="DuplicateSprite" id="0x24"/>
1613
+ <action name="RemoveSprite" id="0x25"/>
1614
+ <action name="Trace" id="0x26"/>
1615
+ <action name="StartDrag" id="0x27"/>
1616
+ <action name="StopDrag" id="0x28"/>
1617
+ <action name="StringLessThan" id="0x29"/>
1618
+ <action name="Throw" id="0x2A"/>
1619
+ <action name="CastObject" id="0x2B"/>
1620
+ <action name="Implements" id="0x2C"/>
1621
+ <action name="Random" id="0x30"/>
1622
+ <action name="MultibyteStringLength" id="0x31"/>
1623
+ <action name="ORD" id="0x32"/>
1624
+ <action name="CHR" id="0x33"/>
1625
+ <action name="GetTimer" id="0x34"/>
1626
+ <action name="MultibyteSubString" id="0x35"/>
1627
+ <action name="MultibyteORD" id="0x36"/>
1628
+ <action name="MultibyteCHR" id="0x37"/>
1629
+ <action name="Delete" id="0x3A"/>
1630
+ <action name="DeleteAll" id="0x3B"/>
1631
+ <action name="SetLocalVariable" id="0x3C"/>
1632
+ <action name="CallFunction" id="0x3D"/>
1633
+ <action name="Return" id="0x3E"/>
1634
+ <action name="Modulo" id="0x3F"/>
1635
+ <action name="New" id="0x40"/>
1636
+ <action name="DeclareLocalVariable" id="0x41"/>
1637
+ <action name="DeclareArray" id="0x42"/>
1638
+ <action name="DeclareObject" id="0x43"/>
1639
+ <action name="TypeOf" id="0x44"/>
1640
+ <action name="GetTarget" id="0x45"/>
1641
+ <action name="Enumerate" id="0x46"/>
1642
+ <action name="AddTyped" id="0x47"/>
1643
+ <action name="LessThanTyped" id="0x48"/>
1644
+ <action name="EqualTyped" id="0x49"/>
1645
+ <action name="DefineNumber" id="0x4A"/>
1646
+ <action name="DefineString" id="0x4B"/>
1647
+ <action name="Duplicate" id="0x4C"/>
1648
+ <action name="Swap" id="0x4D"/>
1649
+ <action name="GetMember" id="0x4E"/>
1650
+ <action name="SetMember" id="0x4F"/>
1651
+ <action name="Increment" id="0x50"/>
1652
+ <action name="Decrement" id="0x51"/>
1653
+ <action name="CallMethod" id="0x52"/>
1654
+ <action name="NewMethod" id="0x53"/>
1655
+ <action name="InstanceOf" id="0x54"/>
1656
+ <action name="EnumerateObject" id="0x55"/>
1657
+ <action name="AND" id="0x60"/>
1658
+ <action name="OR" id="0x61"/>
1659
+ <action name="XOR" id="0x62"/>
1660
+ <action name="ShiftLeft" id="0x63"/>
1661
+ <action name="ShiftRight" id="0x64"/>
1662
+ <action name="ShiftRightUnsigned" id="0x65"/>
1663
+ <action name="StrictEqual" id="0x66"/>
1664
+ <action name="GreaterThanTyped" id="0x67"/>
1665
+ <action name="StringGreaterThan" id="0x68"/>
1666
+ <action name="Extends" id="0x69"/>
1667
+
1668
+ <action name="GotoFrame" id="0x81">
1669
+ <word name="frame" prop="true"/>
1670
+ </action>
1671
+
1672
+ <action name="GetURL" id="0x83">
1673
+ <string name="url" prop="true"/>
1674
+ <string name="target" prop="true"/>
1675
+ </action>
1676
+
1677
+ <action name="StoreRegister" id="0x87">
1678
+ <byte name="reg" prop="true"/>
1679
+ </action>
1680
+
1681
+ <action name="Dictionary" id="0x88">
1682
+ <word name="length"/>
1683
+ <list name="strings" type="String" length="length" prop="true"/>
1684
+ </action>
1685
+
1686
+ <action name="WaitForFrame" id="0x8A">
1687
+ <word name="frame" prop="true"/>
1688
+ <byte name="skip" prop="true"/>
1689
+ </action>
1690
+
1691
+ <action name="SetTarget" id="0x8B">
1692
+ <string name="label" prop="true"/>
1693
+ </action>
1694
+
1695
+ <action name="GotoLabel" id="0x8C">
1696
+ <string name="label" prop="true"/>
1697
+ </action>
1698
+
1699
+ <action name="WaitForFrameDynamic" id="0x8D">
1700
+ <word name="frame" prop="true"/>
1701
+ <byte name="skip" prop="true"/>
1702
+ </action>
1703
+
1704
+ <action name="DeclareFunction2" id="0x8E" swallow="length">
1705
+ <string name="name" prop="true"/>
1706
+ <word name="argc" prop="true"/>
1707
+ <byte name="regc" prop="true"/>
1708
+
1709
+ <bit name="preloadParent" prop="true"/>
1710
+ <bit name="preloadRoot" prop="true"/>
1711
+ <bit name="suppressSuper" prop="true"/>
1712
+ <bit name="preloadSuper" prop="true"/>
1713
+ <bit name="suppressArguments" prop="true"/>
1714
+ <bit name="preloadArguments" prop="true"/>
1715
+ <bit name="suppressThis" prop="true"/>
1716
+ <bit name="preloadThis" prop="true"/>
1717
+ <integer name="reserved" size="7" constant-size="true" prop="true"/>
1718
+ <bit name="preloadGlobal" prop="true"/>
1719
+
1720
+ <list name="args" type="Parameter" length="argc" prop="true"/>
1721
+ <word name="length"/>
1722
+ <list name="actions" type="Action" prop="true" end="length"/>
1723
+ </action>
1724
+
1725
+ <action name="Try" id="0x8F">
1726
+ <integer name="reserved" size="5" constant-size="true"/>
1727
+ <bit name="catchInRegister"/>
1728
+ <bit name="doFinally" prop="true"/>
1729
+ <bit name="doCatch" prop="true"/>
1730
+ <word name="trySize" prop="true"/>
1731
+ <word name="catchSize" prop="true"/>
1732
+ <word name="finallySize" prop="true"/>
1733
+ <flagged flag="catchInRegister">
1734
+ <byte name="reg" prop="true"/>
1735
+ </flagged>
1736
+ </action>
1737
+
1738
+ <action name="With" id="0x94">
1739
+ <word name="size" prop="true"/>
1740
+ </action>
1741
+
1742
+ <action name="PushData" id="0x96">
1743
+ <list name="items" type="StackItem" prop="true"/>
1744
+ </action>
1745
+
1746
+ <action name="GetURL2" id="0x9A">
1747
+ <byte name="method" prop="true"/>
1748
+ </action>
1749
+
1750
+ <action name="DeclareFunction" id="0x9B">
1751
+ <string name="name" prop="true"/>
1752
+ <word name="argc" prop="true"/>
1753
+ <list name="args" type="String" length="argc" prop="true"/>
1754
+ <word name="length" prop="true"/>
1755
+ </action>
1756
+
1757
+ <action name="BranchAlways" id="0x99">
1758
+ <!-- we need a mechanism here to derive offset from XML... -->
1759
+ <word name="byteOffset" signed="true" prop="true"/>
1760
+ </action>
1761
+
1762
+ <action name="BranchIfTrue" id="0x9D">
1763
+ <!-- we need a mechanism here to derive offset from XML... -->
1764
+ <word name="byteOffset" signed="true" prop="true"/>
1765
+ </action>
1766
+
1767
+ <action name="CallFrame" id="0x9E"/>
1768
+
1769
+ <action name="GotoExpression" id="0x9F">
1770
+ <byte name="play" prop="true"/>
1771
+ </action>
1772
+
1773
+ <!-- **************** NAMESPACE CONSTANTS *************** -->
1774
+
1775
+ <namespaceconstant name="PrivateNamespace" id="5">
1776
+ <u30 name="index" prop="true"/>
1777
+ </namespaceconstant>
1778
+
1779
+ <namespaceconstant name="Namespace" id="8">
1780
+ <u30 name="index" prop="true"/>
1781
+ </namespaceconstant>
1782
+
1783
+ <namespaceconstant name="PackageNamespace" id="22">
1784
+ <u30 name="index" prop="true"/>
1785
+ </namespaceconstant>
1786
+
1787
+ <namespaceconstant name="PackageInternalNamespace" id="23">
1788
+ <u30 name="index" prop="true"/>
1789
+ </namespaceconstant>
1790
+
1791
+ <namespaceconstant name="ProtectedNamespace" id="24">
1792
+ <u30 name="index" prop="true"/>
1793
+ </namespaceconstant>
1794
+
1795
+ <namespaceconstant name="ExplicitNamespace" id="25">
1796
+ <u30 name="index" prop="true"/>
1797
+ </namespaceconstant>
1798
+
1799
+ <namespaceconstant name="MultinameLNamespace" id="26">
1800
+ <u30 name="index" prop="true"/>
1801
+ </namespaceconstant>
1802
+
1803
+ <!-- **************** MULTINAME CONSTANTS *************** -->
1804
+
1805
+ <multinameconstant name="QName" id="7">
1806
+ <u30 name="namespaceIndex" prop="true"/>
1807
+ <u30 name="nameIndex" prop="true"/>
1808
+ </multinameconstant>
1809
+
1810
+ <multinameconstant name="QNameA" id="13">
1811
+ <u30 name="namespaceIndex" prop="true"/>
1812
+ <u30 name="nameIndex" prop="true"/>
1813
+ </multinameconstant>
1814
+
1815
+ <multinameconstant name="Multiname" id="9">
1816
+ <u30 name="nameIndex" prop="true"/>
1817
+ <u30 name="namespaceSetIndex" prop="true"/>
1818
+ </multinameconstant>
1819
+
1820
+ <multinameconstant name="MultinameA" id="14">
1821
+ <u30 name="nameIndex" prop="true"/>
1822
+ <u30 name="namespaceSetIndex" prop="true"/>
1823
+ </multinameconstant>
1824
+
1825
+ <multinameconstant name="RTQName" id="15">
1826
+ <u30 name="nameIndex" prop="true"/>
1827
+ </multinameconstant>
1828
+
1829
+ <multinameconstant name="RTQNameA" id="16">
1830
+ <u30 name="nameIndex" prop="true"/>
1831
+ </multinameconstant>
1832
+
1833
+ <multinameconstant name="MultinameL" id="27">
1834
+ <u30 name="namespaceSetIndex" prop="true"/>
1835
+ </multinameconstant>
1836
+
1837
+ <multinameconstant name="RTQNameL" id="17"/>
1838
+ <multinameconstant name="RTQNameLA" id="18"/>
1839
+
1840
+ <!-- *********************** TRAITS ********************* -->
1841
+
1842
+ <trait name="Slot" id="0">
1843
+ <u30 name="slotID" prop="true"/>
1844
+ <u30 name="typeIndex" prop="true"/>
1845
+ <u30 name="valueIndex" prop="true"/>
1846
+ <if expression="valueIndex != 0">
1847
+ <byte name="valueKind" prop="true"/>
1848
+ </if>
1849
+ </trait>
1850
+
1851
+ <trait name="Const" id="6">
1852
+ <u30 name="slotID" prop="true"/>
1853
+ <u30 name="typeIndex" prop="true"/>
1854
+ <u30 name="valueIndex" prop="true"/>
1855
+ <if expression="valueIndex != 0">
1856
+ <byte name="valueKind" prop="true"/>
1857
+ </if>
1858
+ </trait>
1859
+
1860
+ <trait name="Method" id="1">
1861
+ <u30 name="dispID" prop="true"/>
1862
+ <u30 name="methodInfo" prop="true"/>
1863
+ </trait>
1864
+
1865
+ <trait name="Getter" id="2">
1866
+ <u30 name="dispID" prop="true"/>
1867
+ <u30 name="methodInfo" prop="true"/>
1868
+ </trait>
1869
+
1870
+ <trait name="Setter" id="3">
1871
+ <u30 name="dispID" prop="true"/>
1872
+ <u30 name="methodInfo" prop="true"/>
1873
+ </trait>
1874
+
1875
+ <trait name="Class" id="4">
1876
+ <u30 name="slotID" prop="true"/>
1877
+ <u30 name="classInfo" prop="true"/>
1878
+ </trait>
1879
+
1880
+ <trait name="Function" id="5">
1881
+ <u30 name="slotID" prop="true"/>
1882
+ <u30 name="methodInfo" prop="true"/>
1883
+ </trait>
1884
+
1885
+ <!-- *********************** OPCODES ********************* -->
1886
+
1887
+ <opcode name="OpBkPt" id="0x01"/>
1888
+ <opcode name="OpNop" id="0x02"/>
1889
+ <opcode name="OpThrow" id="0x03"/>
1890
+ <opcode name="OpGetSuper" id="0x04">
1891
+ <u30 name="name" prop="true"/>
1892
+ </opcode>
1893
+ <opcode name="OpSetSuper" id="0x05">
1894
+ <u30 name="name" prop="true"/>
1895
+ </opcode>
1896
+ <opcode name="OpDXNs" id="0x06">
1897
+ <u30 name="dxns" prop="true"/>
1898
+ </opcode>
1899
+ <opcode name="OpDXNsLate" id="0x07"/>
1900
+ <opcode name="OpKill" id="0x08">
1901
+ <u30 name="address" prop="true"/>
1902
+ </opcode>
1903
+ <opcode name="OpLabel" id="0x09"/>
1904
+ <opcode name="OpIfNlt" id="0x0C">
1905
+ <s24 name="target" prop="true"/>
1906
+ </opcode>
1907
+ <opcode name="OpIfNle" id="0x0D">
1908
+ <s24 name="target" prop="true"/>
1909
+ </opcode>
1910
+ <opcode name="OpIfNgt" id="0x0E">
1911
+ <s24 name="target" prop="true"/>
1912
+ </opcode>
1913
+ <opcode name="OpIfNge" id="0x0F">
1914
+ <s24 name="target" prop="true"/>
1915
+ </opcode>
1916
+ <opcode name="OpJump" id="0x10">
1917
+ <s24 name="target" prop="true"/>
1918
+ </opcode>
1919
+ <opcode name="OpIfTrue" id="0x11">
1920
+ <s24 name="target" prop="true"/>
1921
+ </opcode>
1922
+ <opcode name="OpIfFalse" id="0x12">
1923
+ <s24 name="target" prop="true"/>
1924
+ </opcode>
1925
+ <opcode name="OpIfEq" id="0x13">
1926
+ <s24 name="target" prop="true"/>
1927
+ </opcode>
1928
+ <opcode name="OpIfNe" id="0x14">
1929
+ <s24 name="target" prop="true"/>
1930
+ </opcode>
1931
+ <opcode name="OpIfLt" id="0x15">
1932
+ <s24 name="target" prop="true"/>
1933
+ </opcode>
1934
+ <opcode name="OpIfLe" id="0x16">
1935
+ <s24 name="target" prop="true"/>
1936
+ </opcode>
1937
+ <opcode name="OpIfGt" id="0x17">
1938
+ <s24 name="target" prop="true"/>
1939
+ </opcode>
1940
+ <opcode name="OpIfGe" id="0x18">
1941
+ <s24 name="target" prop="true"/>
1942
+ </opcode>
1943
+ <opcode name="OpIfStrictEq" id="0x19">
1944
+ <s24 name="target" prop="true"/>
1945
+ </opcode>
1946
+ <opcode name="OpIfStrictNe" id="0x1A">
1947
+ <s24 name="target" prop="true"/>
1948
+ </opcode>
1949
+ <opcode name="OpLookupSwitch" id="0x1B">
1950
+ <s24 name="defaulTarget" prop="true"/>
1951
+ <u30 name="caseCount" prop="true"/>
1952
+ <list type="S24" name="targetTable" length="caseCount" length-add="1" prop="true"/>
1953
+ </opcode>
1954
+ <opcode name="OpPushWith" id="0x1C"/>
1955
+ <opcode name="OpPopScope" id="0x1D"/>
1956
+ <opcode name="OpNextName" id="0x1E"/>
1957
+ <opcode name="OpHasNext" id="0x1F"/>
1958
+ <opcode name="OpPushNull" id="0x20"/>
1959
+ <opcode name="OpPushUndefined" id="0x21"/>
1960
+ <opcode name="OpNextValue" id="0x23"/>
1961
+ <opcode name="OpPushByte" id="0x24">
1962
+ <byte name="value" prop="true"/>
1963
+ </opcode>
1964
+ <opcode name="OpPushShort" id="0x25">
1965
+ <u30 name="value" prop="true"/>
1966
+ </opcode>
1967
+ <opcode name="OpPushTrue" id="0x26"/>
1968
+ <opcode name="OpPushFalse" id="0x27"/>
1969
+ <opcode name="OpPushNaN" id="0x28"/>
1970
+ <opcode name="OpPop" id="0x29"/>
1971
+ <opcode name="OpDup" id="0x2A"/>
1972
+ <opcode name="OpSwap" id="0x2B"/>
1973
+ <opcode name="OpPushString" id="0x2C">
1974
+ <u30 name="index" prop="true"/>
1975
+ </opcode>
1976
+ <opcode name="OpPushInt" id="0x2D">
1977
+ <u30 name="index" prop="true"/>
1978
+ </opcode>
1979
+ <opcode name="OpPushUInt" id="0x2E">
1980
+ <u30 name="index" prop="true"/>
1981
+ </opcode>
1982
+ <opcode name="OpPushDouble" id="0x2F">
1983
+ <u30 name="index" prop="true"/>
1984
+ </opcode>
1985
+ <opcode name="OpPushScope" id="0x30"/>
1986
+ <opcode name="OpPushNamespace" id="0x31">
1987
+ <u30 name="index" prop="true"/>
1988
+ </opcode>
1989
+ <opcode name="OpHasNext2" id="0x32">
1990
+ <u30 name="object" prop="true"/>
1991
+ <u30 name="index" prop="true"/>
1992
+ </opcode>
1993
+ <opcode name="OpNewFunction" id="0x40">
1994
+ <u30 name="index" prop="true"/>
1995
+ </opcode>
1996
+ <opcode name="OpCall" id="0x41">
1997
+ <u30 name="argc" prop="true"/>
1998
+ </opcode>
1999
+ <opcode name="OpConstruct" id="0x42">
2000
+ <u30 name="argc" prop="true"/>
2001
+ </opcode>
2002
+ <opcode name="OpCallMethod" id="0x43">
2003
+ <u30 name="dispID" prop="true"/>
2004
+ <u30 name="argc" prop="true"/>
2005
+ </opcode>
2006
+ <opcode name="OpCallStatic" id="0x44">
2007
+ <u30 name="methodID" prop="true"/>
2008
+ <u30 name="argc" prop="true"/>
2009
+ </opcode>
2010
+ <opcode name="OpCallSuper" id="0x45">
2011
+ <u30 name="name" prop="true"/>
2012
+ <u30 name="argc" prop="true"/>
2013
+ </opcode>
2014
+ <opcode name="OpCallProperty" id="0x46">
2015
+ <u30 name="name" prop="true"/>
2016
+ <u30 name="argc" prop="true"/>
2017
+ </opcode>
2018
+ <opcode name="OpReturnVoid" id="0x47"/>
2019
+ <opcode name="OpReturnValue" id="0x48"/>
2020
+ <opcode name="OpConstructSuper" id="0x49">
2021
+ <u30 name="argc" prop="true"/>
2022
+ </opcode>
2023
+ <opcode name="OpConstructProp" id="0x4A">
2024
+ <u30 name="name" prop="true"/>
2025
+ <u30 name="argc" prop="true"/>
2026
+ </opcode>
2027
+ <opcode name="OpCallPropLex" id="0x4C">
2028
+ <u30 name="name" prop="true"/>
2029
+ <u30 name="argc" prop="true"/>
2030
+ </opcode>
2031
+ <opcode name="OpCallSuperVoid" id="0x4E">
2032
+ <u30 name="name" prop="true"/>
2033
+ <u30 name="argc" prop="true"/>
2034
+ </opcode>
2035
+ <opcode name="OpCallPropVoid" id="0x4F">
2036
+ <u30 name="name" prop="true"/>
2037
+ <u30 name="argc" prop="true"/>
2038
+ </opcode>
2039
+ <opcode name="OpNewObject" id="0x55">
2040
+ <u30 name="argc" prop="true"/>
2041
+ </opcode>
2042
+ <opcode name="OpNewArray" id="0x56">
2043
+ <u30 name="argc" prop="true"/>
2044
+ </opcode>
2045
+ <opcode name="OpNewActivation" id="0x57"/>
2046
+ <opcode name="OpNewClass" id="0x58">
2047
+ <u30 name="classIndex" prop="true"/>
2048
+ </opcode>
2049
+ <opcode name="OpGetDescendants" id="0x59">
2050
+ <u30 name="name" prop="true"/>
2051
+ </opcode>
2052
+ <opcode name="OpNewCatch" id="0x5A">
2053
+ <u30 name="exceptionIndex" prop="true"/>
2054
+ </opcode>
2055
+ <opcode name="OpFindPropStrict" id="0x5D">
2056
+ <u30 name="name" prop="true"/>
2057
+ </opcode>
2058
+ <opcode name="OpFindProperty" id="0x5E">
2059
+ <u30 name="name" prop="true"/>
2060
+ </opcode>
2061
+ <opcode name="OpFindDef" id="0x5F">
2062
+ <u30 name="name" prop="true"/>
2063
+ </opcode>
2064
+ <opcode name="OpGetLex" id="0x60">
2065
+ <u30 name="name" prop="true"/>
2066
+ </opcode>
2067
+ <opcode name="OpSetProperty" id="0x61">
2068
+ <u30 name="name" prop="true"/>
2069
+ </opcode>
2070
+ <opcode name="OpGetLocal" id="0x62">
2071
+ <u30 name="address" prop="true"/>
2072
+ </opcode>
2073
+ <opcode name="OpSetLocal" id="0x63">
2074
+ <u30 name="address" prop="true"/>
2075
+ </opcode>
2076
+ <opcode name="OpGetGlobalScope" id="0x64"/>
2077
+ <opcode name="OpGetScopeObject" id="0x65">
2078
+ <byte name="scopeIndex" prop="true"/>
2079
+ </opcode>
2080
+ <opcode name="OpGetProperty" id="0x66">
2081
+ <u30 name="name" prop="true"/>
2082
+ </opcode>
2083
+ <opcode name="OpInitProperty" id="0x68">
2084
+ <u30 name="name" prop="true"/>
2085
+ </opcode>
2086
+ <opcode name="OpDeleteProperty" id="0x6A">
2087
+ <u30 name="name" prop="true"/>
2088
+ </opcode>
2089
+ <opcode name="OpGetSlot" id="0x6C">
2090
+ <u30 name="slotID" prop="true"/>
2091
+ </opcode>
2092
+ <opcode name="OpSetSlot" id="0x6D">
2093
+ <u30 name="slotID" prop="true"/>
2094
+ </opcode>
2095
+ <opcode name="OpGetGlobalSlot" id="0x6E">
2096
+ <u30 name="slotID" prop="true"/>
2097
+ </opcode>
2098
+ <opcode name="OpSetGlobalSlot" id="0x6F">
2099
+ <u30 name="slotID" prop="true"/>
2100
+ </opcode>
2101
+ <opcode name="OpConvertS" id="0x70"/>
2102
+ <opcode name="OpEscXelem" id="0x71"/>
2103
+ <opcode name="OpEscXattr" id="0x72"/>
2104
+ <opcode name="OpConvertI" id="0x73"/>
2105
+ <opcode name="OpConvertU" id="0x74"/>
2106
+ <opcode name="OpConvertD" id="0x75"/>
2107
+ <opcode name="OpConvertB" id="0x76"/>
2108
+ <opcode name="OpConvertO" id="0x77"/>
2109
+ <opcode name="OpCheckFilter" id="0x78"/>
2110
+ <opcode name="OpCoerce" id="0x80">
2111
+ <u30 name="name" prop="true"/>
2112
+ </opcode>
2113
+ <opcode name="OpCoerceB" id="0x81"/>
2114
+ <opcode name="OpCoerceA" id="0x82"/>
2115
+ <opcode name="OpCoerceI" id="0x83"/>
2116
+ <opcode name="OpCoerceD" id="0x84"/>
2117
+ <opcode name="OpCoerceS" id="0x85"/>
2118
+ <opcode name="OpAsType" id="0x86">
2119
+ <u30 name="name" prop="true"/>
2120
+ </opcode>
2121
+ <opcode name="OpAsTypeLate" id="0x87"/>
2122
+ <opcode name="OpCoerceU" id="0x88"/>
2123
+ <opcode name="OpCoerceO" id="0x89"/>
2124
+ <opcode name="OpNegate" id="0x90"/>
2125
+ <opcode name="OpIncrement" id="0x91"/>
2126
+ <opcode name="OpIncLocal" id="0x92">
2127
+ <u30 name="address" prop="true"/>
2128
+ </opcode>
2129
+ <opcode name="OpDecrement" id="0x93"/>
2130
+ <opcode name="OpDecLocal" id="0x94">
2131
+ <u30 name="address" prop="true"/>
2132
+ </opcode>
2133
+ <opcode name="OpTypeOf" id="0x95"/>
2134
+ <opcode name="OpNot" id="0x96"/>
2135
+ <opcode name="OpBitNot" id="0x97"/>
2136
+ <opcode name="OpAdd" id="0xA0"/>
2137
+ <opcode name="OpSubtract" id="0xA1"/>
2138
+ <opcode name="OpMultiply" id="0xA2"/>
2139
+ <opcode name="OpDivide" id="0xA3"/>
2140
+ <opcode name="OpModulo" id="0xA4"/>
2141
+ <opcode name="OpLShift" id="0xA5"/>
2142
+ <opcode name="OpRShift" id="0xA6"/>
2143
+ <opcode name="OpURShift" id="0xA7"/>
2144
+ <opcode name="OpBitAnd" id="0xA8"/>
2145
+ <opcode name="OpBitOr" id="0xA9"/>
2146
+ <opcode name="OpBitXor" id="0xAA"/>
2147
+ <opcode name="OpEquals" id="0xAB"/>
2148
+ <opcode name="OpStrictEquals" id="0xAC"/>
2149
+ <opcode name="OpLessThan" id="0xAD"/>
2150
+ <opcode name="OpLessEquals" id="0xAE"/>
2151
+ <opcode name="OpGreaterThan" id="0xAF"/>
2152
+ <opcode name="OpGreaterEquals" id="0xB0"/>
2153
+ <opcode name="OpInstanceOf" id="0xB1"/>
2154
+ <opcode name="OpIsType" id="0xB2">
2155
+ <u30 name="name" prop="true"/>
2156
+ </opcode>
2157
+ <opcode name="OpIsTypeLate" id="0xB3"/>
2158
+ <opcode name="OpIn" id="0xB4"/>
2159
+ <opcode name="OpIncrementI" id="0xC0"/>
2160
+ <opcode name="OpDecrementI" id="0xC1"/>
2161
+ <opcode name="OpIncLocalI" id="0xC2">
2162
+ <u30 name="address" prop="true"/>
2163
+ </opcode>
2164
+ <opcode name="OpDecLocalI" id="0xC3">
2165
+ <u30 name="address" prop="true"/>
2166
+ </opcode>
2167
+ <opcode name="OpNegateI" id="0xC4"/>
2168
+ <opcode name="OpAddI" id="0xC5"/>
2169
+ <opcode name="OpSubtractI" id="0xC6"/>
2170
+ <opcode name="OpMultiplyI" id="0xC7"/>
2171
+ <opcode name="OpGetLocal0" id="0xD0"/>
2172
+ <opcode name="OpGetLocal1" id="0xD1"/>
2173
+ <opcode name="OpGetLocal2" id="0xD2"/>
2174
+ <opcode name="OpGetLocal3" id="0xD3"/>
2175
+ <opcode name="OpSetLocal0" id="0xD4"/>
2176
+ <opcode name="OpSetLocal1" id="0xD5"/>
2177
+ <opcode name="OpSetLocal2" id="0xD6"/>
2178
+ <opcode name="OpSetLocal3" id="0xD7"/>
2179
+
2180
+ <opcode name="OpDebugReg" id="0xEF">
2181
+ <byte name="unknown" prop="true"/>
2182
+ <u30 name="name" prop="true"/>
2183
+ <u30 name="reg" prop="true"/>
2184
+ <u30 name="line" prop="true"/>
2185
+ </opcode>
2186
+ <opcode name="OpDebugLine" id="0xF0">
2187
+ <u30 name="line" prop="true"/>
2188
+ </opcode>
2189
+ <opcode name="OpDebugFile" id="0xF1">
2190
+ <u30 name="file" prop="true"/>
2191
+ </opcode>
2192
+ <opcode name="OpBkPtLine" id="0xF2">
2193
+ <u30 name="line" prop="true"/>
2194
+ </opcode>
2195
+ <opcode name="OpTimestamp" id="0xF3"/>
2196
+
2197
+ </format>