1<HTML>
2<BODY BGCOLOR="white">
3<PRE>
4<FONT color="green">001</FONT>    // Copyright (c) 2013, Mike Samuel<a name="line.1"></a>
5<FONT color="green">002</FONT>    // All rights reserved.<a name="line.2"></a>
6<FONT color="green">003</FONT>    //<a name="line.3"></a>
7<FONT color="green">004</FONT>    // Redistribution and use in source and binary forms, with or without<a name="line.4"></a>
8<FONT color="green">005</FONT>    // modification, are permitted provided that the following conditions<a name="line.5"></a>
9<FONT color="green">006</FONT>    // are met:<a name="line.6"></a>
10<FONT color="green">007</FONT>    //<a name="line.7"></a>
11<FONT color="green">008</FONT>    // Redistributions of source code must retain the above copyright<a name="line.8"></a>
12<FONT color="green">009</FONT>    // notice, this list of conditions and the following disclaimer.<a name="line.9"></a>
13<FONT color="green">010</FONT>    // Redistributions in binary form must reproduce the above copyright<a name="line.10"></a>
14<FONT color="green">011</FONT>    // notice, this list of conditions and the following disclaimer in the<a name="line.11"></a>
15<FONT color="green">012</FONT>    // documentation and/or other materials provided with the distribution.<a name="line.12"></a>
16<FONT color="green">013</FONT>    // Neither the name of the OWASP nor the names of its contributors may<a name="line.13"></a>
17<FONT color="green">014</FONT>    // be used to endorse or promote products derived from this software<a name="line.14"></a>
18<FONT color="green">015</FONT>    // without specific prior written permission.<a name="line.15"></a>
19<FONT color="green">016</FONT>    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS<a name="line.16"></a>
20<FONT color="green">017</FONT>    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<a name="line.17"></a>
21<FONT color="green">018</FONT>    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS<a name="line.18"></a>
22<FONT color="green">019</FONT>    // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE<a name="line.19"></a>
23<FONT color="green">020</FONT>    // COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,<a name="line.20"></a>
24<FONT color="green">021</FONT>    // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,<a name="line.21"></a>
25<FONT color="green">022</FONT>    // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;<a name="line.22"></a>
26<FONT color="green">023</FONT>    // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER<a name="line.23"></a>
27<FONT color="green">024</FONT>    // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT<a name="line.24"></a>
28<FONT color="green">025</FONT>    // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN<a name="line.25"></a>
29<FONT color="green">026</FONT>    // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<a name="line.26"></a>
30<FONT color="green">027</FONT>    // POSSIBILITY OF SUCH DAMAGE.<a name="line.27"></a>
31<FONT color="green">028</FONT>    <a name="line.28"></a>
32<FONT color="green">029</FONT>    package org.owasp.html;<a name="line.29"></a>
33<FONT color="green">030</FONT>    <a name="line.30"></a>
34<FONT color="green">031</FONT>    import java.util.Map;<a name="line.31"></a>
35<FONT color="green">032</FONT>    import java.util.Set;<a name="line.32"></a>
36<FONT color="green">033</FONT>    import java.util.SortedSet;<a name="line.33"></a>
37<FONT color="green">034</FONT>    <a name="line.34"></a>
38<FONT color="green">035</FONT>    import javax.annotation.Nullable;<a name="line.35"></a>
39<FONT color="green">036</FONT>    <a name="line.36"></a>
40<FONT color="green">037</FONT>    import com.google.common.collect.ImmutableMap;<a name="line.37"></a>
41<FONT color="green">038</FONT>    import com.google.common.collect.ImmutableSet;<a name="line.38"></a>
42<FONT color="green">039</FONT>    import com.google.common.collect.Maps;<a name="line.39"></a>
43<FONT color="green">040</FONT>    import com.google.common.collect.Sets;<a name="line.40"></a>
44<FONT color="green">041</FONT>    <a name="line.41"></a>
45<FONT color="green">042</FONT>    /** Describes the kinds of tokens a CSS property's value can safely contain. */<a name="line.42"></a>
46<FONT color="green">043</FONT>    @TCB<a name="line.43"></a>
47<FONT color="green">044</FONT>    public final class CssSchema {<a name="line.44"></a>
48<FONT color="green">045</FONT>    <a name="line.45"></a>
49<FONT color="green">046</FONT>      static final class Property {<a name="line.46"></a>
50<FONT color="green">047</FONT>        /** A bitfield of BIT_* constants describing groups of allowed tokens. */<a name="line.47"></a>
51<FONT color="green">048</FONT>        final int bits;<a name="line.48"></a>
52<FONT color="green">049</FONT>        /** Specific allowed values. */<a name="line.49"></a>
53<FONT color="green">050</FONT>        final ImmutableSet&lt;String&gt; literals;<a name="line.50"></a>
54<FONT color="green">051</FONT>        /**<a name="line.51"></a>
55<FONT color="green">052</FONT>         * Maps lower-case function tokens to the schema key for their parameters.<a name="line.52"></a>
56<FONT color="green">053</FONT>         */<a name="line.53"></a>
57<FONT color="green">054</FONT>        final ImmutableMap&lt;String, String&gt; fnKeys;<a name="line.54"></a>
58<FONT color="green">055</FONT>    <a name="line.55"></a>
59<FONT color="green">056</FONT>        private Property(<a name="line.56"></a>
60<FONT color="green">057</FONT>            int bits, ImmutableSet&lt;String&gt; literals,<a name="line.57"></a>
61<FONT color="green">058</FONT>            ImmutableMap&lt;String, String&gt; fnKeys) {<a name="line.58"></a>
62<FONT color="green">059</FONT>          this.bits = bits;<a name="line.59"></a>
63<FONT color="green">060</FONT>          this.literals = literals;<a name="line.60"></a>
64<FONT color="green">061</FONT>          this.fnKeys = fnKeys;<a name="line.61"></a>
65<FONT color="green">062</FONT>        }<a name="line.62"></a>
66<FONT color="green">063</FONT>      }<a name="line.63"></a>
67<FONT color="green">064</FONT>    <a name="line.64"></a>
68<FONT color="green">065</FONT>      static final int BIT_QUANTITY = 1;<a name="line.65"></a>
69<FONT color="green">066</FONT>      static final int BIT_HASH_VALUE = 2;<a name="line.66"></a>
70<FONT color="green">067</FONT>      static final int BIT_NEGATIVE = 4;<a name="line.67"></a>
71<FONT color="green">068</FONT>      static final int BIT_STRING = 8;<a name="line.68"></a>
72<FONT color="green">069</FONT>      static final int BIT_URL = 16;<a name="line.69"></a>
73<FONT color="green">070</FONT>      static final int BIT_UNRESERVED_WORD = 64;<a name="line.70"></a>
74<FONT color="green">071</FONT>      static final int BIT_UNICODE_RANGE = 128;<a name="line.71"></a>
75<FONT color="green">072</FONT>    <a name="line.72"></a>
76<FONT color="green">073</FONT>      static final Property DISALLOWED = new Property(<a name="line.73"></a>
77<FONT color="green">074</FONT>          0, ImmutableSet.&lt;String&gt;of(), ImmutableMap.&lt;String, String&gt;of());<a name="line.74"></a>
78<FONT color="green">075</FONT>    <a name="line.75"></a>
79<FONT color="green">076</FONT>      private final ImmutableMap&lt;String, Property&gt; properties;<a name="line.76"></a>
80<FONT color="green">077</FONT>    <a name="line.77"></a>
81<FONT color="green">078</FONT>      private CssSchema(ImmutableMap&lt;String, Property&gt; properties) {<a name="line.78"></a>
82<FONT color="green">079</FONT>        if (properties == null) { throw new NullPointerException(); }<a name="line.79"></a>
83<FONT color="green">080</FONT>        this.properties = properties;<a name="line.80"></a>
84<FONT color="green">081</FONT>      }<a name="line.81"></a>
85<FONT color="green">082</FONT>    <a name="line.82"></a>
86<FONT color="green">083</FONT>      /**<a name="line.83"></a>
87<FONT color="green">084</FONT>       * A schema that includes all and only the named properties.<a name="line.84"></a>
88<FONT color="green">085</FONT>       *<a name="line.85"></a>
89<FONT color="green">086</FONT>       * @param propertyNames a series of lower-case CSS property names that appear<a name="line.86"></a>
90<FONT color="green">087</FONT>       *    in the built-in CSS definitions.  It is an error to mention an unknown<a name="line.87"></a>
91<FONT color="green">088</FONT>       *    property name.  This class's {@code main} method will dump a list of<a name="line.88"></a>
92<FONT color="green">089</FONT>       *    known property names when run with zero arguments.<a name="line.89"></a>
93<FONT color="green">090</FONT>       */<a name="line.90"></a>
94<FONT color="green">091</FONT>      public static CssSchema withProperties(<a name="line.91"></a>
95<FONT color="green">092</FONT>          Iterable&lt;? extends String&gt; propertyNames) {<a name="line.92"></a>
96<FONT color="green">093</FONT>        ImmutableMap.Builder&lt;String, Property&gt; propertiesBuilder =<a name="line.93"></a>
97<FONT color="green">094</FONT>            ImmutableMap.builder();<a name="line.94"></a>
98<FONT color="green">095</FONT>        for (String propertyName : propertyNames) {<a name="line.95"></a>
99<FONT color="green">096</FONT>          Property prop = DEFINITIONS.get(propertyName);<a name="line.96"></a>
100<FONT color="green">097</FONT>          if (prop == null) { throw new IllegalArgumentException(propertyName); }<a name="line.97"></a>
101<FONT color="green">098</FONT>          propertiesBuilder.put(propertyName, prop);<a name="line.98"></a>
102<FONT color="green">099</FONT>        }<a name="line.99"></a>
103<FONT color="green">100</FONT>        return new CssSchema(propertiesBuilder.build());<a name="line.100"></a>
104<FONT color="green">101</FONT>      }<a name="line.101"></a>
105<FONT color="green">102</FONT>    <a name="line.102"></a>
106<FONT color="green">103</FONT>      /**<a name="line.103"></a>
107<FONT color="green">104</FONT>       * A schema that represents the union of the input schemas.<a name="line.104"></a>
108<FONT color="green">105</FONT>       *<a name="line.105"></a>
109<FONT color="green">106</FONT>       * @return A schema that allows all and only CSS properties that are allowed<a name="line.106"></a>
110<FONT color="green">107</FONT>       *    by at least one of the inputs.<a name="line.107"></a>
111<FONT color="green">108</FONT>       */<a name="line.108"></a>
112<FONT color="green">109</FONT>      public static CssSchema union(CssSchema... cssSchemas) {<a name="line.109"></a>
113<FONT color="green">110</FONT>        if (cssSchemas.length == 1) { return cssSchemas[0]; }<a name="line.110"></a>
114<FONT color="green">111</FONT>        Map&lt;String, Property&gt; properties = Maps.newLinkedHashMap();<a name="line.111"></a>
115<FONT color="green">112</FONT>        for (CssSchema cssSchema : cssSchemas) {<a name="line.112"></a>
116<FONT color="green">113</FONT>          properties.putAll(cssSchema.properties);<a name="line.113"></a>
117<FONT color="green">114</FONT>        }<a name="line.114"></a>
118<FONT color="green">115</FONT>        return new CssSchema(ImmutableMap.copyOf(properties));<a name="line.115"></a>
119<FONT color="green">116</FONT>      }<a name="line.116"></a>
120<FONT color="green">117</FONT>    <a name="line.117"></a>
121<FONT color="green">118</FONT>      /**<a name="line.118"></a>
122<FONT color="green">119</FONT>       * The set of CSS properties allowed by this schema.<a name="line.119"></a>
123<FONT color="green">120</FONT>       *<a name="line.120"></a>
124<FONT color="green">121</FONT>       * @return an immutable set.<a name="line.121"></a>
125<FONT color="green">122</FONT>       */<a name="line.122"></a>
126<FONT color="green">123</FONT>      public Set&lt;String&gt; allowedProperties() {<a name="line.123"></a>
127<FONT color="green">124</FONT>        return properties.keySet();<a name="line.124"></a>
128<FONT color="green">125</FONT>      }<a name="line.125"></a>
129<FONT color="green">126</FONT>    <a name="line.126"></a>
130<FONT color="green">127</FONT>      /** The schema for the named property or function key. */<a name="line.127"></a>
131<FONT color="green">128</FONT>      Property forKey(String propertyName) {<a name="line.128"></a>
132<FONT color="green">129</FONT>        propertyName = Strings.toLowerCase(propertyName);<a name="line.129"></a>
133<FONT color="green">130</FONT>        Property property = properties.get(propertyName);<a name="line.130"></a>
134<FONT color="green">131</FONT>        if (property != null) { return property; }<a name="line.131"></a>
135<FONT color="green">132</FONT>        int n = propertyName.length();<a name="line.132"></a>
136<FONT color="green">133</FONT>        if (n != 0 &amp;&amp; propertyName.charAt(0) == '-') {<a name="line.133"></a>
137<FONT color="green">134</FONT>          String barePropertyName = stripVendorPrefix(propertyName);<a name="line.134"></a>
138<FONT color="green">135</FONT>          property = properties.get(barePropertyName);<a name="line.135"></a>
139<FONT color="green">136</FONT>          if (property != null) { return property; }<a name="line.136"></a>
140<FONT color="green">137</FONT>        }<a name="line.137"></a>
141<FONT color="green">138</FONT>        return DISALLOWED;<a name="line.138"></a>
142<FONT color="green">139</FONT>      }<a name="line.139"></a>
143<FONT color="green">140</FONT>    <a name="line.140"></a>
144<FONT color="green">141</FONT>      /** {@code "-moz-foo"} &amp;rarr; {@code "foo"}. */<a name="line.141"></a>
145<FONT color="green">142</FONT>      private static @Nullable String stripVendorPrefix(String cssKeyword) {<a name="line.142"></a>
146<FONT color="green">143</FONT>        int prefixLen = 0;<a name="line.143"></a>
147<FONT color="green">144</FONT>        switch (cssKeyword.charAt(1)) {<a name="line.144"></a>
148<FONT color="green">145</FONT>          case 'm':<a name="line.145"></a>
149<FONT color="green">146</FONT>            if (cssKeyword.startsWith("-ms-")) {<a name="line.146"></a>
150<FONT color="green">147</FONT>              prefixLen = 4;<a name="line.147"></a>
151<FONT color="green">148</FONT>            } else if (cssKeyword.startsWith("-moz-")) {<a name="line.148"></a>
152<FONT color="green">149</FONT>              prefixLen = 5;<a name="line.149"></a>
153<FONT color="green">150</FONT>            }<a name="line.150"></a>
154<FONT color="green">151</FONT>            break;<a name="line.151"></a>
155<FONT color="green">152</FONT>          case 'o':<a name="line.152"></a>
156<FONT color="green">153</FONT>            if (cssKeyword.startsWith("-o-")) { prefixLen = 3; }<a name="line.153"></a>
157<FONT color="green">154</FONT>            break;<a name="line.154"></a>
158<FONT color="green">155</FONT>          case 'w':<a name="line.155"></a>
159<FONT color="green">156</FONT>            if (cssKeyword.startsWith("-webkit-")) { prefixLen = 8; }<a name="line.156"></a>
160<FONT color="green">157</FONT>            break;<a name="line.157"></a>
161<FONT color="green">158</FONT>          default: break;<a name="line.158"></a>
162<FONT color="green">159</FONT>        }<a name="line.159"></a>
163<FONT color="green">160</FONT>        return prefixLen == 0 ? null : cssKeyword.substring(prefixLen);<a name="line.160"></a>
164<FONT color="green">161</FONT>      }<a name="line.161"></a>
165<FONT color="green">162</FONT>    <a name="line.162"></a>
166<FONT color="green">163</FONT>      /** Maps lower-cased CSS property names to information about them. */<a name="line.163"></a>
167<FONT color="green">164</FONT>      static final ImmutableMap&lt;String, Property&gt; DEFINITIONS;<a name="line.164"></a>
168<FONT color="green">165</FONT>      static {<a name="line.165"></a>
169<FONT color="green">166</FONT>        ImmutableMap&lt;String, String&gt; zeroFns = ImmutableMap.of();<a name="line.166"></a>
170<FONT color="green">167</FONT>        ImmutableMap.Builder&lt;String, Property&gt; builder<a name="line.167"></a>
171<FONT color="green">168</FONT>            = ImmutableMap.builder();<a name="line.168"></a>
172<FONT color="green">169</FONT>        ImmutableSet&lt;String&gt; mozBorderRadiusLiterals0 = ImmutableSet.of("/");<a name="line.169"></a>
173<FONT color="green">170</FONT>        ImmutableSet&lt;String&gt; mozOpacityLiterals0 = ImmutableSet.of("inherit");<a name="line.170"></a>
174<FONT color="green">171</FONT>        ImmutableSet&lt;String&gt; mozOutlineLiterals0 = ImmutableSet.of(<a name="line.171"></a>
175<FONT color="green">172</FONT>            "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",<a name="line.172"></a>
176<FONT color="green">173</FONT>            "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",<a name="line.173"></a>
177<FONT color="green">174</FONT>            "burlywood", "cadetblue", "chartreuse", "chocolate", "coral",<a name="line.174"></a>
178<FONT color="green">175</FONT>            "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan",<a name="line.175"></a>
179<FONT color="green">176</FONT>            "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta",<a name="line.176"></a>
180<FONT color="green">177</FONT>            "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon",<a name="line.177"></a>
181<FONT color="green">178</FONT>            "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise",<a name="line.178"></a>
182<FONT color="green">179</FONT>            "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue",<a name="line.179"></a>
183<FONT color="green">180</FONT>            "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro",<a name="line.180"></a>
184<FONT color="green">181</FONT>            "ghostwhite", "gold", "goldenrod", "gray", "green", "greenyellow",<a name="line.181"></a>
185<FONT color="green">182</FONT>            "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki",<a name="line.182"></a>
186<FONT color="green">183</FONT>            "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue",<a name="line.183"></a>
187<FONT color="green">184</FONT>            "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgreen",<a name="line.184"></a>
188<FONT color="green">185</FONT>            "lightgrey", "lightpink", "lightsalmon", "lightseagreen",<a name="line.185"></a>
189<FONT color="green">186</FONT>            "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow",<a name="line.186"></a>
190<FONT color="green">187</FONT>            "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine",<a name="line.187"></a>
191<FONT color="green">188</FONT>            "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen",<a name="line.188"></a>
192<FONT color="green">189</FONT>            "mediumslateblue", "mediumspringgreen", "mediumturquoise",<a name="line.189"></a>
193<FONT color="green">190</FONT>            "mediumvioletred", "midnightblue", "mintcream", "mistyrose",<a name="line.190"></a>
194<FONT color="green">191</FONT>            "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab",<a name="line.191"></a>
195<FONT color="green">192</FONT>            "orange", "orangered", "orchid", "palegoldenrod", "palegreen",<a name="line.192"></a>
196<FONT color="green">193</FONT>            "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru",<a name="line.193"></a>
197<FONT color="green">194</FONT>            "pink", "plum", "powderblue", "purple", "red", "rosybrown", "royalblue",<a name="line.194"></a>
198<FONT color="green">195</FONT>            "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna",<a name="line.195"></a>
199<FONT color="green">196</FONT>            "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen",<a name="line.196"></a>
200<FONT color="green">197</FONT>            "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet",<a name="line.197"></a>
201<FONT color="green">198</FONT>            "wheat", "white", "whitesmoke", "yellow", "yellowgreen");<a name="line.198"></a>
202<FONT color="green">199</FONT>        ImmutableSet&lt;String&gt; mozOutlineLiterals1 = ImmutableSet.of(<a name="line.199"></a>
203<FONT color="green">200</FONT>            "dashed", "dotted", "double", "groove", "outset", "ridge", "solid");<a name="line.200"></a>
204<FONT color="green">201</FONT>        ImmutableSet&lt;String&gt; mozOutlineLiterals2 = ImmutableSet.of("thick", "thin");<a name="line.201"></a>
205<FONT color="green">202</FONT>        ImmutableSet&lt;String&gt; mozOutlineLiterals3 = ImmutableSet.of(<a name="line.202"></a>
206<FONT color="green">203</FONT>            "hidden", "inherit", "inset", "invert", "medium", "none");<a name="line.203"></a>
207<FONT color="green">204</FONT>        ImmutableMap&lt;String, String&gt; mozOutlineFunctions =<a name="line.204"></a>
208<FONT color="green">205</FONT>          ImmutableMap.&lt;String, String&gt;of("rgb(", "rgb()", "rgba(", "rgba()");<a name="line.205"></a>
209<FONT color="green">206</FONT>        ImmutableSet&lt;String&gt; mozOutlineColorLiterals0 =<a name="line.206"></a>
210<FONT color="green">207</FONT>          ImmutableSet.of("inherit", "invert");<a name="line.207"></a>
211<FONT color="green">208</FONT>        ImmutableSet&lt;String&gt; mozOutlineStyleLiterals0 =<a name="line.208"></a>
212<FONT color="green">209</FONT>          ImmutableSet.of("hidden", "inherit", "inset", "none");<a name="line.209"></a>
213<FONT color="green">210</FONT>        ImmutableSet&lt;String&gt; mozOutlineWidthLiterals0 =<a name="line.210"></a>
214<FONT color="green">211</FONT>          ImmutableSet.of("inherit", "medium");<a name="line.211"></a>
215<FONT color="green">212</FONT>        ImmutableSet&lt;String&gt; oTextOverflowLiterals0 =<a name="line.212"></a>
216<FONT color="green">213</FONT>          ImmutableSet.of("clip", "ellipsis");<a name="line.213"></a>
217<FONT color="green">214</FONT>        ImmutableSet&lt;String&gt; azimuthLiterals0 = ImmutableSet.of(<a name="line.214"></a>
218<FONT color="green">215</FONT>            "behind", "center-left", "center-right", "far-left", "far-right",<a name="line.215"></a>
219<FONT color="green">216</FONT>            "left-side", "leftwards", "right-side", "rightwards");<a name="line.216"></a>
220<FONT color="green">217</FONT>        ImmutableSet&lt;String&gt; azimuthLiterals1 = ImmutableSet.of("left", "right");<a name="line.217"></a>
221<FONT color="green">218</FONT>        ImmutableSet&lt;String&gt; azimuthLiterals2 =<a name="line.218"></a>
222<FONT color="green">219</FONT>          ImmutableSet.of("center", "inherit");<a name="line.219"></a>
223<FONT color="green">220</FONT>        ImmutableSet&lt;String&gt; backgroundLiterals0 = ImmutableSet.of(<a name="line.220"></a>
224<FONT color="green">221</FONT>            "border-box", "contain", "content-box", "cover", "padding-box");<a name="line.221"></a>
225<FONT color="green">222</FONT>        ImmutableSet&lt;String&gt; backgroundLiterals1 =<a name="line.222"></a>
226<FONT color="green">223</FONT>          ImmutableSet.of("no-repeat", "repeat-x", "repeat-y", "round", "space");<a name="line.223"></a>
227<FONT color="green">224</FONT>        ImmutableSet&lt;String&gt; backgroundLiterals2 = ImmutableSet.of("bottom", "top");<a name="line.224"></a>
228<FONT color="green">225</FONT>        ImmutableSet&lt;String&gt; backgroundLiterals3 = ImmutableSet.of(<a name="line.225"></a>
229<FONT color="green">226</FONT>            ",", "/", "auto", "center", "fixed", "inherit", "local", "none",<a name="line.226"></a>
230<FONT color="green">227</FONT>            "repeat", "scroll", "transparent");<a name="line.227"></a>
231<FONT color="green">228</FONT>        ImmutableMap&lt;String, String&gt; backgroundFunctions =<a name="line.228"></a>
232<FONT color="green">229</FONT>          ImmutableMap.&lt;String, String&gt;builder()<a name="line.229"></a>
233<FONT color="green">230</FONT>          .put("image(", "image()")<a name="line.230"></a>
234<FONT color="green">231</FONT>          .put("linear-gradient(", "linear-gradient()")<a name="line.231"></a>
235<FONT color="green">232</FONT>          .put("radial-gradient(", "radial-gradient()")<a name="line.232"></a>
236<FONT color="green">233</FONT>          .put("repeating-linear-gradient(", "repeating-linear-gradient()")<a name="line.233"></a>
237<FONT color="green">234</FONT>          .put("repeating-radial-gradient(", "repeating-radial-gradient()")<a name="line.234"></a>
238<FONT color="green">235</FONT>          .put("rgb(", "rgb()").put("rgba(", "rgba()")<a name="line.235"></a>
239<FONT color="green">236</FONT>          .build();<a name="line.236"></a>
240<FONT color="green">237</FONT>        ImmutableSet&lt;String&gt; backgroundAttachmentLiterals0 =<a name="line.237"></a>
241<FONT color="green">238</FONT>          ImmutableSet.of(",", "fixed", "local", "scroll");<a name="line.238"></a>
242<FONT color="green">239</FONT>        ImmutableSet&lt;String&gt; backgroundColorLiterals0 =<a name="line.239"></a>
243<FONT color="green">240</FONT>          ImmutableSet.of("inherit", "transparent");<a name="line.240"></a>
244<FONT color="green">241</FONT>        ImmutableSet&lt;String&gt; backgroundImageLiterals0 =<a name="line.241"></a>
245<FONT color="green">242</FONT>          ImmutableSet.of(",", "none");<a name="line.242"></a>
246<FONT color="green">243</FONT>        ImmutableMap&lt;String, String&gt; backgroundImageFunctions =<a name="line.243"></a>
247<FONT color="green">244</FONT>          ImmutableMap.&lt;String, String&gt;of(<a name="line.244"></a>
248<FONT color="green">245</FONT>              "image(", "image()",<a name="line.245"></a>
249<FONT color="green">246</FONT>              "linear-gradient(", "linear-gradient()",<a name="line.246"></a>
250<FONT color="green">247</FONT>              "radial-gradient(", "radial-gradient()",<a name="line.247"></a>
251<FONT color="green">248</FONT>              "repeating-linear-gradient(", "repeating-linear-gradient()",<a name="line.248"></a>
252<FONT color="green">249</FONT>              "repeating-radial-gradient(", "repeating-radial-gradient()");<a name="line.249"></a>
253<FONT color="green">250</FONT>        ImmutableSet&lt;String&gt; backgroundPositionLiterals0 = ImmutableSet.of(<a name="line.250"></a>
254<FONT color="green">251</FONT>            ",", "center");<a name="line.251"></a>
255<FONT color="green">252</FONT>        ImmutableSet&lt;String&gt; backgroundRepeatLiterals0 = ImmutableSet.of(<a name="line.252"></a>
256<FONT color="green">253</FONT>            ",", "repeat");<a name="line.253"></a>
257<FONT color="green">254</FONT>        ImmutableSet&lt;String&gt; borderLiterals0 = ImmutableSet.of(<a name="line.254"></a>
258<FONT color="green">255</FONT>            "hidden", "inherit", "inset", "medium", "none", "transparent");<a name="line.255"></a>
259<FONT color="green">256</FONT>        ImmutableSet&lt;String&gt; borderCollapseLiterals0 = ImmutableSet.of(<a name="line.256"></a>
260<FONT color="green">257</FONT>            "collapse", "inherit", "separate");<a name="line.257"></a>
261<FONT color="green">258</FONT>        ImmutableSet&lt;String&gt; bottomLiterals0 = ImmutableSet.of("auto", "inherit");<a name="line.258"></a>
262<FONT color="green">259</FONT>        ImmutableSet&lt;String&gt; boxShadowLiterals0 = ImmutableSet.of(<a name="line.259"></a>
263<FONT color="green">260</FONT>            ",", "inset", "none");<a name="line.260"></a>
264<FONT color="green">261</FONT>        ImmutableSet&lt;String&gt; clearLiterals0 = ImmutableSet.of(<a name="line.261"></a>
265<FONT color="green">262</FONT>            "both", "inherit", "none");<a name="line.262"></a>
266<FONT color="green">263</FONT>        ImmutableMap&lt;String, String&gt; clipFunctions =<a name="line.263"></a>
267<FONT color="green">264</FONT>            ImmutableMap.&lt;String, String&gt;of("rect(", "rect()");<a name="line.264"></a>
268<FONT color="green">265</FONT>        ImmutableSet&lt;String&gt; contentLiterals0 = ImmutableSet.of("none", "normal");<a name="line.265"></a>
269<FONT color="green">266</FONT>        ImmutableSet&lt;String&gt; cueLiterals0 = ImmutableSet.of("inherit", "none");<a name="line.266"></a>
270<FONT color="green">267</FONT>        ImmutableSet&lt;String&gt; cursorLiterals0 = ImmutableSet.of(<a name="line.267"></a>
271<FONT color="green">268</FONT>            "all-scroll", "col-resize", "crosshair", "default", "e-resize",<a name="line.268"></a>
272<FONT color="green">269</FONT>            "hand", "help", "move", "n-resize", "ne-resize", "no-drop",<a name="line.269"></a>
273<FONT color="green">270</FONT>            "not-allowed", "nw-resize", "pointer", "progress", "row-resize",<a name="line.270"></a>
274<FONT color="green">271</FONT>            "s-resize", "se-resize", "sw-resize", "text", "vertical-text",<a name="line.271"></a>
275<FONT color="green">272</FONT>            "w-resize", "wait");<a name="line.272"></a>
276<FONT color="green">273</FONT>        ImmutableSet&lt;String&gt; cursorLiterals1 = ImmutableSet.of(<a name="line.273"></a>
277<FONT color="green">274</FONT>            ",", "auto", "inherit");<a name="line.274"></a>
278<FONT color="green">275</FONT>        ImmutableSet&lt;String&gt; directionLiterals0 = ImmutableSet.of("ltr", "rtl");<a name="line.275"></a>
279<FONT color="green">276</FONT>        ImmutableSet&lt;String&gt; displayLiterals0 = ImmutableSet.of(<a name="line.276"></a>
280<FONT color="green">277</FONT>            "-moz-inline-box", "-moz-inline-stack", "block", "inline",<a name="line.277"></a>
281<FONT color="green">278</FONT>            "inline-block", "inline-table", "list-item", "run-in", "table",<a name="line.278"></a>
282<FONT color="green">279</FONT>            "table-caption", "table-cell", "table-column", "table-column-group",<a name="line.279"></a>
283<FONT color="green">280</FONT>            "table-footer-group", "table-header-group", "table-row",<a name="line.280"></a>
284<FONT color="green">281</FONT>            "table-row-group");<a name="line.281"></a>
285<FONT color="green">282</FONT>        ImmutableSet&lt;String&gt; elevationLiterals0 = ImmutableSet.of(<a name="line.282"></a>
286<FONT color="green">283</FONT>            "above", "below", "higher", "level", "lower");<a name="line.283"></a>
287<FONT color="green">284</FONT>        ImmutableSet&lt;String&gt; emptyCellsLiterals0 = ImmutableSet.of("hide", "show");<a name="line.284"></a>
288<FONT color="green">285</FONT>        //ImmutableMap&lt;String, String&gt; filterFunctions =<a name="line.285"></a>
289<FONT color="green">286</FONT>        //  ImmutableMap.&lt;String, String&gt;of("alpha(", "alpha()");<a name="line.286"></a>
290<FONT color="green">287</FONT>        ImmutableSet&lt;String&gt; fontLiterals0 = ImmutableSet.of(<a name="line.287"></a>
291<FONT color="green">288</FONT>            "100", "200", "300", "400", "500", "600", "700", "800", "900", "bold",<a name="line.288"></a>
292<FONT color="green">289</FONT>            "bolder", "lighter");<a name="line.289"></a>
293<FONT color="green">290</FONT>        ImmutableSet&lt;String&gt; fontLiterals1 = ImmutableSet.of(<a name="line.290"></a>
294<FONT color="green">291</FONT>            "large", "larger", "small", "smaller", "x-large", "x-small",<a name="line.291"></a>
295<FONT color="green">292</FONT>            "xx-large", "xx-small");<a name="line.292"></a>
296<FONT color="green">293</FONT>        ImmutableSet&lt;String&gt; fontLiterals2 = ImmutableSet.of(<a name="line.293"></a>
297<FONT color="green">294</FONT>            "caption", "icon", "menu", "message-box", "small-caption",<a name="line.294"></a>
298<FONT color="green">295</FONT>            "status-bar");<a name="line.295"></a>
299<FONT color="green">296</FONT>        ImmutableSet&lt;String&gt; fontLiterals3 = ImmutableSet.of(<a name="line.296"></a>
300<FONT color="green">297</FONT>            "cursive", "fantasy", "monospace", "sans-serif", "serif");<a name="line.297"></a>
301<FONT color="green">298</FONT>        ImmutableSet&lt;String&gt; fontLiterals4 = ImmutableSet.of("italic", "oblique");<a name="line.298"></a>
302<FONT color="green">299</FONT>        ImmutableSet&lt;String&gt; fontLiterals5 = ImmutableSet.of(<a name="line.299"></a>
303<FONT color="green">300</FONT>            ",", "/", "inherit", "medium", "normal", "small-caps");<a name="line.300"></a>
304<FONT color="green">301</FONT>        ImmutableSet&lt;String&gt; fontFamilyLiterals0 = ImmutableSet.of(",", "inherit");<a name="line.301"></a>
305<FONT color="green">302</FONT>        ImmutableSet&lt;String&gt; fontStretchLiterals0 = ImmutableSet.of(<a name="line.302"></a>
306<FONT color="green">303</FONT>            "condensed", "expanded", "extra-condensed", "extra-expanded",<a name="line.303"></a>
307<FONT color="green">304</FONT>            "narrower", "semi-condensed", "semi-expanded", "ultra-condensed",<a name="line.304"></a>
308<FONT color="green">305</FONT>            "ultra-expanded", "wider");<a name="line.305"></a>
309<FONT color="green">306</FONT>        ImmutableSet&lt;String&gt; fontStretchLiterals1 = ImmutableSet.of("normal");<a name="line.306"></a>
310<FONT color="green">307</FONT>        ImmutableSet&lt;String&gt; fontStyleLiterals0 = ImmutableSet.of(<a name="line.307"></a>
311<FONT color="green">308</FONT>            "inherit", "normal");<a name="line.308"></a>
312<FONT color="green">309</FONT>        ImmutableSet&lt;String&gt; fontVariantLiterals0 = ImmutableSet.of(<a name="line.309"></a>
313<FONT color="green">310</FONT>            "inherit", "normal", "small-caps");<a name="line.310"></a>
314<FONT color="green">311</FONT>        ImmutableSet&lt;String&gt; listStyleLiterals0 = ImmutableSet.of(<a name="line.311"></a>
315<FONT color="green">312</FONT>            "armenian", "cjk-decimal", "decimal", "decimal-leading-zero", "disc",<a name="line.312"></a>
316<FONT color="green">313</FONT>            "disclosure-closed", "disclosure-open", "ethiopic-numeric", "georgian",<a name="line.313"></a>
317<FONT color="green">314</FONT>            "hebrew", "hiragana", "hiragana-iroha", "japanese-formal",<a name="line.314"></a>
318<FONT color="green">315</FONT>            "japanese-informal", "katakana", "katakana-iroha",<a name="line.315"></a>
319<FONT color="green">316</FONT>            "korean-hangul-formal", "korean-hanja-formal",<a name="line.316"></a>
320<FONT color="green">317</FONT>            "korean-hanja-informal", "lower-alpha", "lower-greek", "lower-latin",<a name="line.317"></a>
321<FONT color="green">318</FONT>            "lower-roman", "simp-chinese-formal", "simp-chinese-informal",<a name="line.318"></a>
322<FONT color="green">319</FONT>            "square", "trad-chinese-formal", "trad-chinese-informal",<a name="line.319"></a>
323<FONT color="green">320</FONT>            "upper-alpha", "upper-latin", "upper-roman");<a name="line.320"></a>
324<FONT color="green">321</FONT>        ImmutableSet&lt;String&gt; listStyleLiterals1 = ImmutableSet.of(<a name="line.321"></a>
325<FONT color="green">322</FONT>            "inside", "outside");<a name="line.322"></a>
326<FONT color="green">323</FONT>        ImmutableSet&lt;String&gt; listStyleLiterals2 = ImmutableSet.of(<a name="line.323"></a>
327<FONT color="green">324</FONT>            "circle", "inherit", "none");<a name="line.324"></a>
328<FONT color="green">325</FONT>        ImmutableSet&lt;String&gt; maxHeightLiterals0 = ImmutableSet.of(<a name="line.325"></a>
329<FONT color="green">326</FONT>            "auto", "inherit", "none");<a name="line.326"></a>
330<FONT color="green">327</FONT>        ImmutableSet&lt;String&gt; overflowLiterals0 = ImmutableSet.of(<a name="line.327"></a>
331<FONT color="green">328</FONT>            "auto", "hidden", "inherit", "scroll", "visible");<a name="line.328"></a>
332<FONT color="green">329</FONT>        ImmutableSet&lt;String&gt; overflowXLiterals0 = ImmutableSet.of(<a name="line.329"></a>
333<FONT color="green">330</FONT>            "no-content", "no-display");<a name="line.330"></a>
334<FONT color="green">331</FONT>        ImmutableSet&lt;String&gt; overflowXLiterals1 = ImmutableSet.of(<a name="line.331"></a>
335<FONT color="green">332</FONT>            "auto", "hidden", "scroll", "visible");<a name="line.332"></a>
336<FONT color="green">333</FONT>        ImmutableSet&lt;String&gt; pageBreakAfterLiterals0 = ImmutableSet.of(<a name="line.333"></a>
337<FONT color="green">334</FONT>            "always", "auto", "avoid", "inherit");<a name="line.334"></a>
338<FONT color="green">335</FONT>        ImmutableSet&lt;String&gt; pageBreakInsideLiterals0 = ImmutableSet.of(<a name="line.335"></a>
339<FONT color="green">336</FONT>            "auto", "avoid", "inherit");<a name="line.336"></a>
340<FONT color="green">337</FONT>        ImmutableSet&lt;String&gt; pitchLiterals0 = ImmutableSet.of(<a name="line.337"></a>
341<FONT color="green">338</FONT>            "high", "low", "x-high", "x-low");<a name="line.338"></a>
342<FONT color="green">339</FONT>        ImmutableSet&lt;String&gt; playDuringLiterals0 = ImmutableSet.of(<a name="line.339"></a>
343<FONT color="green">340</FONT>            "auto", "inherit", "mix", "none", "repeat");<a name="line.340"></a>
344<FONT color="green">341</FONT>        ImmutableSet&lt;String&gt; positionLiterals0 = ImmutableSet.of(<a name="line.341"></a>
345<FONT color="green">342</FONT>            "absolute", "relative", "static");<a name="line.342"></a>
346<FONT color="green">343</FONT>        ImmutableSet&lt;String&gt; speakLiterals0 = ImmutableSet.of(<a name="line.343"></a>
347<FONT color="green">344</FONT>            "inherit", "none", "normal", "spell-out");<a name="line.344"></a>
348<FONT color="green">345</FONT>        ImmutableSet&lt;String&gt; speakHeaderLiterals0 = ImmutableSet.of(<a name="line.345"></a>
349<FONT color="green">346</FONT>            "always", "inherit", "once");<a name="line.346"></a>
350<FONT color="green">347</FONT>        ImmutableSet&lt;String&gt; speakNumeralLiterals0 = ImmutableSet.of(<a name="line.347"></a>
351<FONT color="green">348</FONT>            "continuous", "digits");<a name="line.348"></a>
352<FONT color="green">349</FONT>        ImmutableSet&lt;String&gt; speakPunctuationLiterals0 = ImmutableSet.of(<a name="line.349"></a>
353<FONT color="green">350</FONT>            "code", "inherit", "none");<a name="line.350"></a>
354<FONT color="green">351</FONT>        ImmutableSet&lt;String&gt; speechRateLiterals0 = ImmutableSet.of(<a name="line.351"></a>
355<FONT color="green">352</FONT>            "fast", "faster", "slow", "slower", "x-fast", "x-slow");<a name="line.352"></a>
356<FONT color="green">353</FONT>        ImmutableSet&lt;String&gt; tableLayoutLiterals0 = ImmutableSet.of(<a name="line.353"></a>
357<FONT color="green">354</FONT>            "auto", "fixed", "inherit");<a name="line.354"></a>
358<FONT color="green">355</FONT>        ImmutableSet&lt;String&gt; textAlignLiterals0 = ImmutableSet.of(<a name="line.355"></a>
359<FONT color="green">356</FONT>            "center", "inherit", "justify");<a name="line.356"></a>
360<FONT color="green">357</FONT>        ImmutableSet&lt;String&gt; textDecorationLiterals0 = ImmutableSet.of(<a name="line.357"></a>
361<FONT color="green">358</FONT>            "blink", "line-through", "overline", "underline");<a name="line.358"></a>
362<FONT color="green">359</FONT>        ImmutableSet&lt;String&gt; textTransformLiterals0 = ImmutableSet.of(<a name="line.359"></a>
363<FONT color="green">360</FONT>            "capitalize", "lowercase", "uppercase");<a name="line.360"></a>
364<FONT color="green">361</FONT>        ImmutableSet&lt;String&gt; textWrapLiterals0 = ImmutableSet.of(<a name="line.361"></a>
365<FONT color="green">362</FONT>            "suppress", "unrestricted");<a name="line.362"></a>
366<FONT color="green">363</FONT>        ImmutableSet&lt;String&gt; unicodeBidiLiterals0 = ImmutableSet.of(<a name="line.363"></a>
367<FONT color="green">364</FONT>            "bidi-override", "embed");<a name="line.364"></a>
368<FONT color="green">365</FONT>        ImmutableSet&lt;String&gt; verticalAlignLiterals0 = ImmutableSet.of(<a name="line.365"></a>
369<FONT color="green">366</FONT>            "baseline", "middle", "sub", "super", "text-bottom", "text-top");<a name="line.366"></a>
370<FONT color="green">367</FONT>        ImmutableSet&lt;String&gt; visibilityLiterals0 = ImmutableSet.of(<a name="line.367"></a>
371<FONT color="green">368</FONT>            "collapse", "hidden", "inherit", "visible");<a name="line.368"></a>
372<FONT color="green">369</FONT>        ImmutableSet&lt;String&gt; voiceFamilyLiterals0 = ImmutableSet.of(<a name="line.369"></a>
373<FONT color="green">370</FONT>            "child", "female", "male");<a name="line.370"></a>
374<FONT color="green">371</FONT>        ImmutableSet&lt;String&gt; volumeLiterals0 = ImmutableSet.of(<a name="line.371"></a>
375<FONT color="green">372</FONT>            "loud", "silent", "soft", "x-loud", "x-soft");<a name="line.372"></a>
376<FONT color="green">373</FONT>        ImmutableSet&lt;String&gt; whiteSpaceLiterals0 = ImmutableSet.of(<a name="line.373"></a>
377<FONT color="green">374</FONT>            "-moz-pre-wrap", "-o-pre-wrap", "-pre-wrap", "nowrap", "pre",<a name="line.374"></a>
378<FONT color="green">375</FONT>            "pre-line", "pre-wrap");<a name="line.375"></a>
379<FONT color="green">376</FONT>        ImmutableSet&lt;String&gt; wordWrapLiterals0 = ImmutableSet.of(<a name="line.376"></a>
380<FONT color="green">377</FONT>            "break-word", "normal");<a name="line.377"></a>
381<FONT color="green">378</FONT>        ImmutableSet&lt;String&gt; rgb$FunLiterals0 = ImmutableSet.of(",");<a name="line.378"></a>
382<FONT color="green">379</FONT>        ImmutableSet&lt;String&gt; linearGradient$FunLiterals0 = ImmutableSet.of(<a name="line.379"></a>
383<FONT color="green">380</FONT>            ",", "to");<a name="line.380"></a>
384<FONT color="green">381</FONT>        ImmutableSet&lt;String&gt; radialGradient$FunLiterals0 = ImmutableSet.of(<a name="line.381"></a>
385<FONT color="green">382</FONT>            "at", "closest-corner", "closest-side", "ellipse", "farthest-corner",<a name="line.382"></a>
386<FONT color="green">383</FONT>            "farthest-side");<a name="line.383"></a>
387<FONT color="green">384</FONT>        ImmutableSet&lt;String&gt; radialGradient$FunLiterals1 = ImmutableSet.of(<a name="line.384"></a>
388<FONT color="green">385</FONT>            ",", "center", "circle");<a name="line.385"></a>
389<FONT color="green">386</FONT>        ImmutableSet&lt;String&gt; rect$FunLiterals0 = ImmutableSet.of(",", "auto");<a name="line.386"></a>
390<FONT color="green">387</FONT>        //ImmutableSet&lt;String&gt; alpha$FunLiterals0 = ImmutableSet.of("=", "opacity");<a name="line.387"></a>
391<FONT color="green">388</FONT>        Property mozBorderRadius =<a name="line.388"></a>
392<FONT color="green">389</FONT>           new Property(5, mozBorderRadiusLiterals0, zeroFns);<a name="line.389"></a>
393<FONT color="green">390</FONT>        builder.put("-moz-border-radius", mozBorderRadius);<a name="line.390"></a>
394<FONT color="green">391</FONT>        Property mozBorderRadiusBottomleft =<a name="line.391"></a>
395<FONT color="green">392</FONT>           new Property(5, ImmutableSet.&lt;String&gt;of(), zeroFns);<a name="line.392"></a>
396<FONT color="green">393</FONT>        builder.put("-moz-border-radius-bottomleft", mozBorderRadiusBottomleft);<a name="line.393"></a>
397<FONT color="green">394</FONT>        Property mozOpacity = new Property(1, mozOpacityLiterals0, zeroFns);<a name="line.394"></a>
398<FONT color="green">395</FONT>        builder.put("-moz-opacity", mozOpacity);<a name="line.395"></a>
399<FONT color="green">396</FONT>        @SuppressWarnings("unchecked")<a name="line.396"></a>
400<FONT color="green">397</FONT>        Property mozOutline = new Property(<a name="line.397"></a>
401<FONT color="green">398</FONT>            7,<a name="line.398"></a>
402<FONT color="green">399</FONT>            union(mozOutlineLiterals0, mozOutlineLiterals1, mozOutlineLiterals2,<a name="line.399"></a>
403<FONT color="green">400</FONT>                  mozOutlineLiterals3),<a name="line.400"></a>
404<FONT color="green">401</FONT>            mozOutlineFunctions);<a name="line.401"></a>
405<FONT color="green">402</FONT>        builder.put("-moz-outline", mozOutline);<a name="line.402"></a>
406<FONT color="green">403</FONT>        @SuppressWarnings("unchecked")<a name="line.403"></a>
407<FONT color="green">404</FONT>        Property mozOutlineColor = new Property(<a name="line.404"></a>
408<FONT color="green">405</FONT>            2, union(mozOutlineColorLiterals0, mozOutlineLiterals0),<a name="line.405"></a>
409<FONT color="green">406</FONT>            mozOutlineFunctions);<a name="line.406"></a>
410<FONT color="green">407</FONT>        builder.put("-moz-outline-color", mozOutlineColor);<a name="line.407"></a>
411<FONT color="green">408</FONT>        @SuppressWarnings("unchecked")<a name="line.408"></a>
412<FONT color="green">409</FONT>        Property mozOutlineStyle = new Property(<a name="line.409"></a>
413<FONT color="green">410</FONT>            0, union(mozOutlineLiterals1, mozOutlineStyleLiterals0), zeroFns);<a name="line.410"></a>
414<FONT color="green">411</FONT>        builder.put("-moz-outline-style", mozOutlineStyle);<a name="line.411"></a>
415<FONT color="green">412</FONT>        @SuppressWarnings("unchecked")<a name="line.412"></a>
416<FONT color="green">413</FONT>        Property mozOutlineWidth = new Property(<a name="line.413"></a>
417<FONT color="green">414</FONT>            5, union(mozOutlineLiterals2, mozOutlineWidthLiterals0), zeroFns);<a name="line.414"></a>
418<FONT color="green">415</FONT>        builder.put("-moz-outline-width", mozOutlineWidth);<a name="line.415"></a>
419<FONT color="green">416</FONT>        Property oTextOverflow = new Property(0, oTextOverflowLiterals0, zeroFns);<a name="line.416"></a>
420<FONT color="green">417</FONT>        builder.put("-o-text-overflow", oTextOverflow);<a name="line.417"></a>
421<FONT color="green">418</FONT>        @SuppressWarnings("unchecked")<a name="line.418"></a>
422<FONT color="green">419</FONT>        Property azimuth = new Property(<a name="line.419"></a>
423<FONT color="green">420</FONT>            5, union(azimuthLiterals0, azimuthLiterals1, azimuthLiterals2),<a name="line.420"></a>
424<FONT color="green">421</FONT>            zeroFns);<a name="line.421"></a>
425<FONT color="green">422</FONT>        builder.put("azimuth", azimuth);<a name="line.422"></a>
426<FONT color="green">423</FONT>        @SuppressWarnings("unchecked")<a name="line.423"></a>
427<FONT color="green">424</FONT>        Property background = new Property(<a name="line.424"></a>
428<FONT color="green">425</FONT>            23,<a name="line.425"></a>
429<FONT color="green">426</FONT>            union(azimuthLiterals1, backgroundLiterals0, backgroundLiterals1,<a name="line.426"></a>
430<FONT color="green">427</FONT>                  backgroundLiterals2, backgroundLiterals3, mozOutlineLiterals0),<a name="line.427"></a>
431<FONT color="green">428</FONT>            backgroundFunctions);<a name="line.428"></a>
432<FONT color="green">429</FONT>        builder.put("background", background);<a name="line.429"></a>
433<FONT color="green">430</FONT>        builder.put("background-attachment",<a name="line.430"></a>
434<FONT color="green">431</FONT>                    new Property(0, backgroundAttachmentLiterals0, zeroFns));<a name="line.431"></a>
435<FONT color="green">432</FONT>        @SuppressWarnings("unchecked")<a name="line.432"></a>
436<FONT color="green">433</FONT>        Property backgroundColor = new Property(<a name="line.433"></a>
437<FONT color="green">434</FONT>            258, union(backgroundColorLiterals0, mozOutlineLiterals0),<a name="line.434"></a>
438<FONT color="green">435</FONT>            mozOutlineFunctions);<a name="line.435"></a>
439<FONT color="green">436</FONT>        builder.put("background-color", backgroundColor);<a name="line.436"></a>
440<FONT color="green">437</FONT>        builder.put("background-image",<a name="line.437"></a>
441<FONT color="green">438</FONT>                    new Property(16, backgroundImageLiterals0,<a name="line.438"></a>
442<FONT color="green">439</FONT>                                 backgroundImageFunctions));<a name="line.439"></a>
443<FONT color="green">440</FONT>        @SuppressWarnings("unchecked")<a name="line.440"></a>
444<FONT color="green">441</FONT>        Property backgroundPosition = new Property(<a name="line.441"></a>
445<FONT color="green">442</FONT>            5,<a name="line.442"></a>
446<FONT color="green">443</FONT>            union(azimuthLiterals1, backgroundLiterals2,<a name="line.443"></a>
447<FONT color="green">444</FONT>                  backgroundPositionLiterals0),<a name="line.444"></a>
448<FONT color="green">445</FONT>            zeroFns);<a name="line.445"></a>
449<FONT color="green">446</FONT>        builder.put("background-position", backgroundPosition);<a name="line.446"></a>
450<FONT color="green">447</FONT>        @SuppressWarnings("unchecked")<a name="line.447"></a>
451<FONT color="green">448</FONT>        Property backgroundRepeat = new Property(<a name="line.448"></a>
452<FONT color="green">449</FONT>            0, union(backgroundLiterals1, backgroundRepeatLiterals0), zeroFns);<a name="line.449"></a>
453<FONT color="green">450</FONT>        builder.put("background-repeat", backgroundRepeat);<a name="line.450"></a>
454<FONT color="green">451</FONT>        @SuppressWarnings("unchecked")<a name="line.451"></a>
455<FONT color="green">452</FONT>        Property border = new Property(<a name="line.452"></a>
456<FONT color="green">453</FONT>            7,<a name="line.453"></a>
457<FONT color="green">454</FONT>            union(borderLiterals0, mozOutlineLiterals0, mozOutlineLiterals1,<a name="line.454"></a>
458<FONT color="green">455</FONT>                  mozOutlineLiterals2),<a name="line.455"></a>
459<FONT color="green">456</FONT>            mozOutlineFunctions);<a name="line.456"></a>
460<FONT color="green">457</FONT>        builder.put("border", border);<a name="line.457"></a>
461<FONT color="green">458</FONT>        @SuppressWarnings("unchecked")<a name="line.458"></a>
462<FONT color="green">459</FONT>        Property borderBottomColor = new Property(<a name="line.459"></a>
463<FONT color="green">460</FONT>            2, union(backgroundColorLiterals0, mozOutlineLiterals0),<a name="line.460"></a>
464<FONT color="green">461</FONT>            mozOutlineFunctions);<a name="line.461"></a>
465<FONT color="green">462</FONT>        builder.put("border-bottom-color", borderBottomColor);<a name="line.462"></a>
466<FONT color="green">463</FONT>        builder.put("border-collapse",<a name="line.463"></a>
467<FONT color="green">464</FONT>                    new Property(0, borderCollapseLiterals0, zeroFns));<a name="line.464"></a>
468<FONT color="green">465</FONT>        Property borderSpacing = new Property(5, mozOpacityLiterals0, zeroFns);<a name="line.465"></a>
469<FONT color="green">466</FONT>        builder.put("border-spacing", borderSpacing);<a name="line.466"></a>
470<FONT color="green">467</FONT>        Property bottom = new Property(5, bottomLiterals0, zeroFns);<a name="line.467"></a>
471<FONT color="green">468</FONT>        builder.put("bottom", bottom);<a name="line.468"></a>
472<FONT color="green">469</FONT>        @SuppressWarnings("unchecked")<a name="line.469"></a>
473<FONT color="green">470</FONT>        Property boxShadow = new Property(<a name="line.470"></a>
474<FONT color="green">471</FONT>            7, union(boxShadowLiterals0, mozOutlineLiterals0), mozOutlineFunctions);<a name="line.471"></a>
475<FONT color="green">472</FONT>        builder.put("box-shadow", boxShadow);<a name="line.472"></a>
476<FONT color="green">473</FONT>        @SuppressWarnings("unchecked")<a name="line.473"></a>
477<FONT color="green">474</FONT>        Property captionSide = new Property(<a name="line.474"></a>
478<FONT color="green">475</FONT>            0, union(backgroundLiterals2, mozOpacityLiterals0), zeroFns);<a name="line.475"></a>
479<FONT color="green">476</FONT>        builder.put("caption-side", captionSide);<a name="line.476"></a>
480<FONT color="green">477</FONT>        @SuppressWarnings("unchecked")<a name="line.477"></a>
481<FONT color="green">478</FONT>        Property clear = new Property(<a name="line.478"></a>
482<FONT color="green">479</FONT>            0, union(azimuthLiterals1, clearLiterals0), zeroFns);<a name="line.479"></a>
483<FONT color="green">480</FONT>        builder.put("clear", clear);<a name="line.480"></a>
484<FONT color="green">481</FONT>        builder.put("clip", new Property(0, bottomLiterals0, clipFunctions));<a name="line.481"></a>
485<FONT color="green">482</FONT>        @SuppressWarnings("unchecked")<a name="line.482"></a>
486<FONT color="green">483</FONT>        Property color = new Property(<a name="line.483"></a>
487<FONT color="green">484</FONT>            258, union(mozOpacityLiterals0, mozOutlineLiterals0),<a name="line.484"></a>
488<FONT color="green">485</FONT>            mozOutlineFunctions);<a name="line.485"></a>
489<FONT color="green">486</FONT>        builder.put("color", color);<a name="line.486"></a>
490<FONT color="green">487</FONT>        builder.put("content", new Property(8, contentLiterals0, zeroFns));<a name="line.487"></a>
491<FONT color="green">488</FONT>        Property cue = new Property(16, cueLiterals0, zeroFns);<a name="line.488"></a>
492<FONT color="green">489</FONT>        builder.put("cue", cue);<a name="line.489"></a>
493<FONT color="green">490</FONT>        @SuppressWarnings("unchecked")<a name="line.490"></a>
494<FONT color="green">491</FONT>        Property cursor = new Property(<a name="line.491"></a>
495<FONT color="green">492</FONT>            272, union(cursorLiterals0, cursorLiterals1), zeroFns);<a name="line.492"></a>
496<FONT color="green">493</FONT>        builder.put("cursor", cursor);<a name="line.493"></a>
497<FONT color="green">494</FONT>        @SuppressWarnings("unchecked")<a name="line.494"></a>
498<FONT color="green">495</FONT>        Property direction = new Property(<a name="line.495"></a>
499<FONT color="green">496</FONT>            0, union(directionLiterals0, mozOpacityLiterals0), zeroFns);<a name="line.496"></a>
500<FONT color="green">497</FONT>        builder.put("direction", direction);<a name="line.497"></a>
501<FONT color="green">498</FONT>        @SuppressWarnings("unchecked")<a name="line.498"></a>
502<FONT color="green">499</FONT>        Property display = new Property(<a name="line.499"></a>
503<FONT color="green">500</FONT>            0, union(cueLiterals0, displayLiterals0), zeroFns);<a name="line.500"></a>
504<FONT color="green">501</FONT>        builder.put("display", display);<a name="line.501"></a>
505<FONT color="green">502</FONT>        @SuppressWarnings("unchecked")<a name="line.502"></a>
506<FONT color="green">503</FONT>        Property elevation = new Property(<a name="line.503"></a>
507<FONT color="green">504</FONT>            5, union(elevationLiterals0, mozOpacityLiterals0), zeroFns);<a name="line.504"></a>
508<FONT color="green">505</FONT>        builder.put("elevation", elevation);<a name="line.505"></a>
509<FONT color="green">506</FONT>        @SuppressWarnings("unchecked")<a name="line.506"></a>
510<FONT color="green">507</FONT>        Property emptyCells = new Property(<a name="line.507"></a>
511<FONT color="green">508</FONT>            0, union(emptyCellsLiterals0, mozOpacityLiterals0), zeroFns);<a name="line.508"></a>
512<FONT color="green">509</FONT>        builder.put("empty-cells", emptyCells);<a name="line.509"></a>
513<FONT color="green">510</FONT>        //builder.put("filter",<a name="line.510"></a>
514<FONT color="green">511</FONT>        //            new Property(0, ImmutableSet.&lt;String&gt;of(), filterFunctions));<a name="line.511"></a>
515<FONT color="green">512</FONT>        @SuppressWarnings("unchecked")<a name="line.512"></a>
516<FONT color="green">513</FONT>        Property cssFloat = new Property(<a name="line.513"></a>
517<FONT color="green">514</FONT>            0, union(azimuthLiterals1, cueLiterals0), zeroFns);<a name="line.514"></a>
518<FONT color="green">515</FONT>        builder.put("float", cssFloat);<a name="line.515"></a>
519<FONT color="green">516</FONT>        @SuppressWarnings("unchecked")<a name="line.516"></a>
520<FONT color="green">517</FONT>        Property font = new Property(<a name="line.517"></a>
521<FONT color="green">518</FONT>            73,<a name="line.518"></a>
522<FONT color="green">519</FONT>            union(fontLiterals0, fontLiterals1, fontLiterals2, fontLiterals3,<a name="line.519"></a>
523<FONT color="green">520</FONT>                  fontLiterals4, fontLiterals5),<a name="line.520"></a>
524<FONT color="green">521</FONT>            zeroFns);<a name="line.521"></a>
525<FONT color="green">522</FONT>        builder.put("font", font);<a name="line.522"></a>
526<FONT color="green">523</FONT>        @SuppressWarnings("unchecked")<a name="line.523"></a>
527<FONT color="green">524</FONT>        Property fontFamily = new Property(<a name="line.524"></a>
528<FONT color="green">525</FONT>            72, union(fontFamilyLiterals0, fontLiterals3), zeroFns);<a name="line.525"></a>
529<FONT color="green">526</FONT>        builder.put("font-family", fontFamily);<a name="line.526"></a>
530<FONT color="green">527</FONT>        @SuppressWarnings("unchecked")<a name="line.527"></a>
531<FONT color="green">528</FONT>        Property fontSize = new Property(<a name="line.528"></a>
532<FONT color="green">529</FONT>            1, union(fontLiterals1, mozOutlineWidthLiterals0), zeroFns);<a name="line.529"></a>
533<FONT color="green">530</FONT>        builder.put("font-size", fontSize);<a name="line.530"></a>
534<FONT color="green">531</FONT>        @SuppressWarnings("unchecked")<a name="line.531"></a>
535<FONT color="green">532</FONT>        Property fontStretch = new Property(<a name="line.532"></a>
536<FONT color="green">533</FONT>            0, union(fontStretchLiterals0, fontStretchLiterals1), zeroFns);<a name="line.533"></a>
537<FONT color="green">534</FONT>        builder.put("font-stretch", fontStretch);<a name="line.534"></a>
538<FONT color="green">535</FONT>        @SuppressWarnings("unchecked")<a name="line.535"></a>
539<FONT color="green">536</FONT>        Property fontStyle = new Property(<a name="line.536"></a>
540<FONT color="green">537</FONT>            0, union(fontLiterals4, fontStyleLiterals0), zeroFns);<a name="line.537"></a>
541<FONT color="green">538</FONT>        builder.put("font-style", fontStyle);<a name="line.538"></a>
542<FONT color="green">539</FONT>        builder.put("font-variant", new Property(<a name="line.539"></a>
543<FONT color="green">540</FONT>            0, fontVariantLiterals0, zeroFns));<a name="line.540"></a>
544<FONT color="green">541</FONT>        @SuppressWarnings("unchecked")<a name="line.541"></a>
545<FONT color="green">542</FONT>        Property fontWeight = new Property(<a name="line.542"></a>
546<FONT color="green">543</FONT>            0, union(fontLiterals0, fontStyleLiterals0), zeroFns);<a name="line.543"></a>
547<FONT color="green">544</FONT>        builder.put("font-weight", fontWeight);<a name="line.544"></a>
548<FONT color="green">545</FONT>        Property height = new Property(5, bottomLiterals0, zeroFns);<a name="line.545"></a>
549<FONT color="green">546</FONT>        builder.put("height", height);<a name="line.546"></a>
550<FONT color="green">547</FONT>        Property letterSpacing = new Property(5, fontStyleLiterals0, zeroFns);<a name="line.547"></a>
551<FONT color="green">548</FONT>        builder.put("letter-spacing", letterSpacing);<a name="line.548"></a>
552<FONT color="green">549</FONT>        builder.put("line-height", new Property(1, fontStyleLiterals0, zeroFns));<a name="line.549"></a>
553<FONT color="green">550</FONT>        @SuppressWarnings("unchecked")<a name="line.550"></a>
554<FONT color="green">551</FONT>        Property listStyle = new Property(<a name="line.551"></a>
555<FONT color="green">552</FONT>            16,<a name="line.552"></a>
556<FONT color="green">553</FONT>            union(listStyleLiterals0, listStyleLiterals1, listStyleLiterals2),<a name="line.553"></a>
557<FONT color="green">554</FONT>            backgroundImageFunctions);<a name="line.554"></a>
558<FONT color="green">555</FONT>        builder.put("list-style", listStyle);<a name="line.555"></a>
559<FONT color="green">556</FONT>        builder.put("list-style-image", new Property(<a name="line.556"></a>
560<FONT color="green">557</FONT>            16, cueLiterals0, backgroundImageFunctions));<a name="line.557"></a>
561<FONT color="green">558</FONT>        @SuppressWarnings("unchecked")<a name="line.558"></a>
562<FONT color="green">559</FONT>        Property listStylePosition = new Property(<a name="line.559"></a>
563<FONT color="green">560</FONT>            0, union(listStyleLiterals1, mozOpacityLiterals0), zeroFns);<a name="line.560"></a>
564<FONT color="green">561</FONT>        builder.put("list-style-position", listStylePosition);<a name="line.561"></a>
565<FONT color="green">562</FONT>        @SuppressWarnings("unchecked")<a name="line.562"></a>
566<FONT color="green">563</FONT>        Property listStyleType = new Property(<a name="line.563"></a>
567<FONT color="green">564</FONT>            0, union(listStyleLiterals0, listStyleLiterals2), zeroFns);<a name="line.564"></a>
568<FONT color="green">565</FONT>        builder.put("list-style-type", listStyleType);<a name="line.565"></a>
569<FONT color="green">566</FONT>        Property margin = new Property(1, bottomLiterals0, zeroFns);<a name="line.566"></a>
570<FONT color="green">567</FONT>        builder.put("margin", margin);<a name="line.567"></a>
571<FONT color="green">568</FONT>        Property maxHeight = new Property(1, maxHeightLiterals0, zeroFns);<a name="line.568"></a>
572<FONT color="green">569</FONT>        builder.put("max-height", maxHeight);<a name="line.569"></a>
573<FONT color="green">570</FONT>        Property opacity = new Property(1, mozOpacityLiterals0, zeroFns);<a name="line.570"></a>
574<FONT color="green">571</FONT>        builder.put("opacity", opacity);<a name="line.571"></a>
575<FONT color="green">572</FONT>        builder.put("overflow", new Property(0, overflowLiterals0, zeroFns));<a name="line.572"></a>
576<FONT color="green">573</FONT>        @SuppressWarnings("unchecked")<a name="line.573"></a>
577<FONT color="green">574</FONT>        Property overflowX = new Property(<a name="line.574"></a>
578<FONT color="green">575</FONT>            0, union(overflowXLiterals0, overflowXLiterals1), zeroFns);<a name="line.575"></a>
579<FONT color="green">576</FONT>        builder.put("overflow-x", overflowX);<a name="line.576"></a>
580<FONT color="green">577</FONT>        Property padding = new Property(1, mozOpacityLiterals0, zeroFns);<a name="line.577"></a>
581<FONT color="green">578</FONT>        builder.put("padding", padding);<a name="line.578"></a>
582<FONT color="green">579</FONT>        @SuppressWarnings("unchecked")<a name="line.579"></a>
583<FONT color="green">580</FONT>        Property pageBreakAfter = new Property(<a name="line.580"></a>
584<FONT color="green">581</FONT>            0, union(azimuthLiterals1, pageBreakAfterLiterals0), zeroFns);<a name="line.581"></a>
585<FONT color="green">582</FONT>        builder.put("page-break-after", pageBreakAfter);<a name="line.582"></a>
586<FONT color="green">583</FONT>        builder.put("page-break-inside", new Property(<a name="line.583"></a>
587<FONT color="green">584</FONT>            0, pageBreakInsideLiterals0, zeroFns));<a name="line.584"></a>
588<FONT color="green">585</FONT>        @SuppressWarnings("unchecked")<a name="line.585"></a>
589<FONT color="green">586</FONT>        Property pitch = new Property(<a name="line.586"></a>
590<FONT color="green">587</FONT>            5, union(mozOutlineWidthLiterals0, pitchLiterals0), zeroFns);<a name="line.587"></a>
591<FONT color="green">588</FONT>        builder.put("pitch", pitch);<a name="line.588"></a>
592<FONT color="green">589</FONT>        builder.put("play-during", new Property(<a name="line.589"></a>
593<FONT color="green">590</FONT>            16, playDuringLiterals0, zeroFns));<a name="line.590"></a>
594<FONT color="green">591</FONT>        @SuppressWarnings("unchecked")<a name="line.591"></a>
595<FONT color="green">592</FONT>        Property position = new Property(<a name="line.592"></a>
596<FONT color="green">593</FONT>            0, union(mozOpacityLiterals0, positionLiterals0), zeroFns);<a name="line.593"></a>
597<FONT color="green">594</FONT>        builder.put("position", position);<a name="line.594"></a>
598<FONT color="green">595</FONT>        builder.put("quotes", new Property(8, cueLiterals0, zeroFns));<a name="line.595"></a>
599<FONT color="green">596</FONT>        builder.put("speak", new Property(0, speakLiterals0, zeroFns));<a name="line.596"></a>
600<FONT color="green">597</FONT>        builder.put("speak-header", new Property(<a name="line.597"></a>
601<FONT color="green">598</FONT>            0, speakHeaderLiterals0, zeroFns));<a name="line.598"></a>
602<FONT color="green">599</FONT>        @SuppressWarnings("unchecked")<a name="line.599"></a>
603<FONT color="green">600</FONT>        Property speakNumeral = new Property(<a name="line.600"></a>
604<FONT color="green">601</FONT>            0, union(mozOpacityLiterals0, speakNumeralLiterals0), zeroFns);<a name="line.601"></a>
605<FONT color="green">602</FONT>        builder.put("speak-numeral", speakNumeral);<a name="line.602"></a>
606<FONT color="green">603</FONT>        builder.put("speak-punctuation", new Property(<a name="line.603"></a>
607<FONT color="green">604</FONT>            0, speakPunctuationLiterals0, zeroFns));<a name="line.604"></a>
608<FONT color="green">605</FONT>        @SuppressWarnings("unchecked")<a name="line.605"></a>
609<FONT color="green">606</FONT>        Property speechRate = new Property(<a name="line.606"></a>
610<FONT color="green">607</FONT>            5, union(mozOutlineWidthLiterals0, speechRateLiterals0), zeroFns);<a name="line.607"></a>
611<FONT color="green">608</FONT>        builder.put("speech-rate", speechRate);<a name="line.608"></a>
612<FONT color="green">609</FONT>        builder.put("table-layout", new Property(<a name="line.609"></a>
613<FONT color="green">610</FONT>            0, tableLayoutLiterals0, zeroFns));<a name="line.610"></a>
614<FONT color="green">611</FONT>        @SuppressWarnings("unchecked")<a name="line.611"></a>
615<FONT color="green">612</FONT>        Property textAlign = new Property(<a name="line.612"></a>
616<FONT color="green">613</FONT>            0, union(azimuthLiterals1, textAlignLiterals0), zeroFns);<a name="line.613"></a>
617<FONT color="green">614</FONT>        builder.put("text-align", textAlign);<a name="line.614"></a>
618<FONT color="green">615</FONT>        @SuppressWarnings("unchecked")<a name="line.615"></a>
619<FONT color="green">616</FONT>        Property textDecoration = new Property(<a name="line.616"></a>
620<FONT color="green">617</FONT>            0, union(cueLiterals0, textDecorationLiterals0), zeroFns);<a name="line.617"></a>
621<FONT color="green">618</FONT>        builder.put("text-decoration", textDecoration);<a name="line.618"></a>
622<FONT color="green">619</FONT>        @SuppressWarnings("unchecked")<a name="line.619"></a>
623<FONT color="green">620</FONT>        Property textTransform = new Property(<a name="line.620"></a>
624<FONT color="green">621</FONT>            0, union(cueLiterals0, textTransformLiterals0), zeroFns);<a name="line.621"></a>
625<FONT color="green">622</FONT>        builder.put("text-transform", textTransform);<a name="line.622"></a>
626<FONT color="green">623</FONT>        @SuppressWarnings("unchecked")<a name="line.623"></a>
627<FONT color="green">624</FONT>        Property textWrap = new Property(<a name="line.624"></a>
628<FONT color="green">625</FONT>            0, union(contentLiterals0, textWrapLiterals0), zeroFns);<a name="line.625"></a>
629<FONT color="green">626</FONT>        builder.put("text-wrap", textWrap);<a name="line.626"></a>
630<FONT color="green">627</FONT>        @SuppressWarnings("unchecked")<a name="line.627"></a>
631<FONT color="green">628</FONT>        Property unicodeBidi = new Property(<a name="line.628"></a>
632<FONT color="green">629</FONT>            0, union(fontStyleLiterals0, unicodeBidiLiterals0), zeroFns);<a name="line.629"></a>
633<FONT color="green">630</FONT>        builder.put("unicode-bidi", unicodeBidi);<a name="line.630"></a>
634<FONT color="green">631</FONT>        @SuppressWarnings("unchecked")<a name="line.631"></a>
635<FONT color="green">632</FONT>        Property verticalAlign = new Property(<a name="line.632"></a>
636<FONT color="green">633</FONT>            5,<a name="line.633"></a>
637<FONT color="green">634</FONT>            union(backgroundLiterals2, mozOpacityLiterals0, verticalAlignLiterals0),<a name="line.634"></a>
638<FONT color="green">635</FONT>            zeroFns);<a name="line.635"></a>
639<FONT color="green">636</FONT>        builder.put("vertical-align", verticalAlign);<a name="line.636"></a>
640<FONT color="green">637</FONT>        builder.put("visibility", new Property(0, visibilityLiterals0, zeroFns));<a name="line.637"></a>
641<FONT color="green">638</FONT>        @SuppressWarnings("unchecked")<a name="line.638"></a>
642<FONT color="green">639</FONT>        Property voiceFamily = new Property(<a name="line.639"></a>
643<FONT color="green">640</FONT>            8, union(fontFamilyLiterals0, voiceFamilyLiterals0), zeroFns);<a name="line.640"></a>
644<FONT color="green">641</FONT>        builder.put("voice-family", voiceFamily);<a name="line.641"></a>
645<FONT color="green">642</FONT>        @SuppressWarnings("unchecked")<a name="line.642"></a>
646<FONT color="green">643</FONT>        Property volume = new Property(<a name="line.643"></a>
647<FONT color="green">644</FONT>            1, union(mozOutlineWidthLiterals0, volumeLiterals0), zeroFns);<a name="line.644"></a>
648<FONT color="green">645</FONT>        builder.put("volume", volume);<a name="line.645"></a>
649<FONT color="green">646</FONT>        @SuppressWarnings("unchecked")<a name="line.646"></a>
650<FONT color="green">647</FONT>        Property whiteSpace = new Property(<a name="line.647"></a>
651<FONT color="green">648</FONT>            0, union(fontStyleLiterals0, whiteSpaceLiterals0), zeroFns);<a name="line.648"></a>
652<FONT color="green">649</FONT>        builder.put("white-space", whiteSpace);<a name="line.649"></a>
653<FONT color="green">650</FONT>        builder.put("word-wrap", new Property(0, wordWrapLiterals0, zeroFns));<a name="line.650"></a>
654<FONT color="green">651</FONT>        builder.put("zoom", new Property(1, fontStretchLiterals1, zeroFns));<a name="line.651"></a>
655<FONT color="green">652</FONT>        Property rgb$Fun = new Property(1, rgb$FunLiterals0, zeroFns);<a name="line.652"></a>
656<FONT color="green">653</FONT>        builder.put("rgb()", rgb$Fun);<a name="line.653"></a>
657<FONT color="green">654</FONT>        @SuppressWarnings("unchecked")<a name="line.654"></a>
658<FONT color="green">655</FONT>        Property image$Fun = new Property(<a name="line.655"></a>
659<FONT color="green">656</FONT>            18, union(mozOutlineLiterals0, rgb$FunLiterals0), mozOutlineFunctions);<a name="line.656"></a>
660<FONT color="green">657</FONT>        builder.put("image()", image$Fun);<a name="line.657"></a>
661<FONT color="green">658</FONT>        @SuppressWarnings("unchecked")<a name="line.658"></a>
662<FONT color="green">659</FONT>        Property linearGradient$Fun = new Property(<a name="line.659"></a>
663<FONT color="green">660</FONT>            7,<a name="line.660"></a>
664<FONT color="green">661</FONT>            union(azimuthLiterals1, backgroundLiterals2,<a name="line.661"></a>
665<FONT color="green">662</FONT>                  linearGradient$FunLiterals0, mozOutlineLiterals0),<a name="line.662"></a>
666<FONT color="green">663</FONT>            mozOutlineFunctions);<a name="line.663"></a>
667<FONT color="green">664</FONT>        builder.put("linear-gradient()", linearGradient$Fun);<a name="line.664"></a>
668<FONT color="green">665</FONT>        @SuppressWarnings("unchecked")<a name="line.665"></a>
669<FONT color="green">666</FONT>        Property radialGradient$Fun = new Property(<a name="line.666"></a>
670<FONT color="green">667</FONT>            7,<a name="line.667"></a>
671<FONT color="green">668</FONT>            union(azimuthLiterals1, backgroundLiterals2, mozOutlineLiterals0,<a name="line.668"></a>
672<FONT color="green">669</FONT>                  radialGradient$FunLiterals0, radialGradient$FunLiterals1),<a name="line.669"></a>
673<FONT color="green">670</FONT>            mozOutlineFunctions);<a name="line.670"></a>
674<FONT color="green">671</FONT>        builder.put("radial-gradient()", radialGradient$Fun);<a name="line.671"></a>
675<FONT color="green">672</FONT>        builder.put("rect()", new Property(5, rect$FunLiterals0, zeroFns));<a name="line.672"></a>
676<FONT color="green">673</FONT>        //builder.put("alpha()", new Property(1, alpha$FunLiterals0, zeroFns));<a name="line.673"></a>
677<FONT color="green">674</FONT>        builder.put("-moz-border-radius-bottomright", mozBorderRadiusBottomleft);<a name="line.674"></a>
678<FONT color="green">675</FONT>        builder.put("-moz-border-radius-topleft", mozBorderRadiusBottomleft);<a name="line.675"></a>
679<FONT color="green">676</FONT>        builder.put("-moz-border-radius-topright", mozBorderRadiusBottomleft);<a name="line.676"></a>
680<FONT color="green">677</FONT>        builder.put("-moz-box-shadow", boxShadow);<a name="line.677"></a>
681<FONT color="green">678</FONT>        builder.put("-webkit-border-bottom-left-radius", mozBorderRadiusBottomleft);<a name="line.678"></a>
682<FONT color="green">679</FONT>        builder.put("-webkit-border-bottom-right-radius",<a name="line.679"></a>
683<FONT color="green">680</FONT>                    mozBorderRadiusBottomleft);<a name="line.680"></a>
684<FONT color="green">681</FONT>        builder.put("-webkit-border-radius", mozBorderRadius);<a name="line.681"></a>
685<FONT color="green">682</FONT>        builder.put("-webkit-border-radius-bottom-left", mozBorderRadiusBottomleft);<a name="line.682"></a>
686<FONT color="green">683</FONT>        builder.put("-webkit-border-radius-bottom-right",<a name="line.683"></a>
687<FONT color="green">684</FONT>                    mozBorderRadiusBottomleft);<a name="line.684"></a>
688<FONT color="green">685</FONT>        builder.put("-webkit-border-radius-top-left", mozBorderRadiusBottomleft);<a name="line.685"></a>
689<FONT color="green">686</FONT>        builder.put("-webkit-border-radius-top-right", mozBorderRadiusBottomleft);<a name="line.686"></a>
690<FONT color="green">687</FONT>        builder.put("-webkit-border-top-left-radius", mozBorderRadiusBottomleft);<a name="line.687"></a>
691<FONT color="green">688</FONT>        builder.put("-webkit-border-top-right-radius", mozBorderRadiusBottomleft);<a name="line.688"></a>
692<FONT color="green">689</FONT>        builder.put("-webkit-box-shadow", boxShadow);<a name="line.689"></a>
693<FONT color="green">690</FONT>        builder.put("border-bottom", border);<a name="line.690"></a>
694<FONT color="green">691</FONT>        builder.put("border-bottom-left-radius", mozBorderRadiusBottomleft);<a name="line.691"></a>
695<FONT color="green">692</FONT>        builder.put("border-bottom-right-radius", mozBorderRadiusBottomleft);<a name="line.692"></a>
696<FONT color="green">693</FONT>        builder.put("border-bottom-style", mozOutlineStyle);<a name="line.693"></a>
697<FONT color="green">694</FONT>        builder.put("border-bottom-width", mozOutlineWidth);<a name="line.694"></a>
698<FONT color="green">695</FONT>        builder.put("border-color", borderBottomColor);<a name="line.695"></a>
699<FONT color="green">696</FONT>        builder.put("border-left", border);<a name="line.696"></a>
700<FONT color="green">697</FONT>        builder.put("border-left-color", borderBottomColor);<a name="line.697"></a>
701<FONT color="green">698</FONT>        builder.put("border-left-style", mozOutlineStyle);<a name="line.698"></a>
702<FONT color="green">699</FONT>        builder.put("border-left-width", mozOutlineWidth);<a name="line.699"></a>
703<FONT color="green">700</FONT>        builder.put("border-radius", mozBorderRadius);<a name="line.700"></a>
704<FONT color="green">701</FONT>        builder.put("border-right", border);<a name="line.701"></a>
705<FONT color="green">702</FONT>        builder.put("border-right-color", borderBottomColor);<a name="line.702"></a>
706<FONT color="green">703</FONT>        builder.put("border-right-style", mozOutlineStyle);<a name="line.703"></a>
707<FONT color="green">704</FONT>        builder.put("border-right-width", mozOutlineWidth);<a name="line.704"></a>
708<FONT color="green">705</FONT>        builder.put("border-style", mozOutlineStyle);<a name="line.705"></a>
709<FONT color="green">706</FONT>        builder.put("border-top", border);<a name="line.706"></a>
710<FONT color="green">707</FONT>        builder.put("border-top-color", borderBottomColor);<a name="line.707"></a>
711<FONT color="green">708</FONT>        builder.put("border-top-left-radius", mozBorderRadiusBottomleft);<a name="line.708"></a>
712<FONT color="green">709</FONT>        builder.put("border-top-right-radius", mozBorderRadiusBottomleft);<a name="line.709"></a>
713<FONT color="green">710</FONT>        builder.put("border-top-style", mozOutlineStyle);<a name="line.710"></a>
714<FONT color="green">711</FONT>        builder.put("border-top-width", mozOutlineWidth);<a name="line.711"></a>
715<FONT color="green">712</FONT>        builder.put("border-width", mozOutlineWidth);<a name="line.712"></a>
716<FONT color="green">713</FONT>        builder.put("cue-after", cue);<a name="line.713"></a>
717<FONT color="green">714</FONT>        builder.put("cue-before", cue);<a name="line.714"></a>
718<FONT color="green">715</FONT>        builder.put("left", height);<a name="line.715"></a>
719<FONT color="green">716</FONT>        builder.put("margin-bottom", margin);<a name="line.716"></a>
720<FONT color="green">717</FONT>        builder.put("margin-left", margin);<a name="line.717"></a>
721<FONT color="green">718</FONT>        builder.put("margin-right", margin);<a name="line.718"></a>
722<FONT color="green">719</FONT>        builder.put("margin-top", margin);<a name="line.719"></a>
723<FONT color="green">720</FONT>        builder.put("max-width", maxHeight);<a name="line.720"></a>
724<FONT color="green">721</FONT>        builder.put("min-height", margin);<a name="line.721"></a>
725<FONT color="green">722</FONT>        builder.put("min-width", margin);<a name="line.722"></a>
726<FONT color="green">723</FONT>        builder.put("outline", mozOutline);<a name="line.723"></a>
727<FONT color="green">724</FONT>        builder.put("outline-color", mozOutlineColor);<a name="line.724"></a>
728<FONT color="green">725</FONT>        builder.put("outline-style", mozOutlineStyle);<a name="line.725"></a>
729<FONT color="green">726</FONT>        builder.put("outline-width", mozOutlineWidth);<a name="line.726"></a>
730<FONT color="green">727</FONT>        builder.put("overflow-y", overflowX);<a name="line.727"></a>
731<FONT color="green">728</FONT>        builder.put("padding-bottom", padding);<a name="line.728"></a>
732<FONT color="green">729</FONT>        builder.put("padding-left", padding);<a name="line.729"></a>
733<FONT color="green">730</FONT>        builder.put("padding-right", padding);<a name="line.730"></a>
734<FONT color="green">731</FONT>        builder.put("padding-top", padding);<a name="line.731"></a>
735<FONT color="green">732</FONT>        builder.put("page-break-before", pageBreakAfter);<a name="line.732"></a>
736<FONT color="green">733</FONT>        builder.put("pause", borderSpacing);<a name="line.733"></a>
737<FONT color="green">734</FONT>        builder.put("pause-after", borderSpacing);<a name="line.734"></a>
738<FONT color="green">735</FONT>        builder.put("pause-before", borderSpacing);<a name="line.735"></a>
739<FONT color="green">736</FONT>        builder.put("pitch-range", borderSpacing);<a name="line.736"></a>
740<FONT color="green">737</FONT>        builder.put("richness", borderSpacing);<a name="line.737"></a>
741<FONT color="green">738</FONT>        builder.put("right", height);<a name="line.738"></a>
742<FONT color="green">739</FONT>        builder.put("stress", borderSpacing);<a name="line.739"></a>
743<FONT color="green">740</FONT>        builder.put("text-indent", borderSpacing);<a name="line.740"></a>
744<FONT color="green">741</FONT>        builder.put("text-overflow", oTextOverflow);<a name="line.741"></a>
745<FONT color="green">742</FONT>        builder.put("text-shadow", boxShadow);<a name="line.742"></a>
746<FONT color="green">743</FONT>        builder.put("top", height);<a name="line.743"></a>
747<FONT color="green">744</FONT>        builder.put("width", margin);<a name="line.744"></a>
748<FONT color="green">745</FONT>        builder.put("word-spacing", letterSpacing);<a name="line.745"></a>
749<FONT color="green">746</FONT>        builder.put("z-index", bottom);<a name="line.746"></a>
750<FONT color="green">747</FONT>        builder.put("rgba()", rgb$Fun);<a name="line.747"></a>
751<FONT color="green">748</FONT>        builder.put("repeating-linear-gradient()", linearGradient$Fun);<a name="line.748"></a>
752<FONT color="green">749</FONT>        builder.put("repeating-radial-gradient()", radialGradient$Fun);<a name="line.749"></a>
753<FONT color="green">750</FONT>        DEFINITIONS = builder.build();<a name="line.750"></a>
754<FONT color="green">751</FONT>      }<a name="line.751"></a>
755<FONT color="green">752</FONT>    <a name="line.752"></a>
756<FONT color="green">753</FONT>      private static &lt;T&gt; ImmutableSet&lt;T&gt; union(ImmutableSet&lt;T&gt;... subsets) {<a name="line.753"></a>
757<FONT color="green">754</FONT>        ImmutableSet.Builder&lt;T&gt; all = ImmutableSet.builder();<a name="line.754"></a>
758<FONT color="green">755</FONT>        for (ImmutableSet&lt;T&gt; subset : subsets) {<a name="line.755"></a>
759<FONT color="green">756</FONT>          all.addAll(subset);<a name="line.756"></a>
760<FONT color="green">757</FONT>        }<a name="line.757"></a>
761<FONT color="green">758</FONT>        return all.build();<a name="line.758"></a>
762<FONT color="green">759</FONT>      }<a name="line.759"></a>
763<FONT color="green">760</FONT>    <a name="line.760"></a>
764<FONT color="green">761</FONT>      static final ImmutableSet&lt;String&gt; DEFAULT_WHITELIST = ImmutableSet.of(<a name="line.761"></a>
765<FONT color="green">762</FONT>          "-moz-border-radius",<a name="line.762"></a>
766<FONT color="green">763</FONT>          "-moz-border-radius-bottomleft",<a name="line.763"></a>
767<FONT color="green">764</FONT>          "-moz-border-radius-bottomright",<a name="line.764"></a>
768<FONT color="green">765</FONT>          "-moz-border-radius-topleft",<a name="line.765"></a>
769<FONT color="green">766</FONT>          "-moz-border-radius-topright",<a name="line.766"></a>
770<FONT color="green">767</FONT>          "-moz-box-shadow",<a name="line.767"></a>
771<FONT color="green">768</FONT>          "-moz-outline",<a name="line.768"></a>
772<FONT color="green">769</FONT>          "-moz-outline-color",<a name="line.769"></a>
773<FONT color="green">770</FONT>          "-moz-outline-style",<a name="line.770"></a>
774<FONT color="green">771</FONT>          "-moz-outline-width",<a name="line.771"></a>
775<FONT color="green">772</FONT>          "-o-text-overflow",<a name="line.772"></a>
776<FONT color="green">773</FONT>          "-webkit-border-bottom-left-radius",<a name="line.773"></a>
777<FONT color="green">774</FONT>          "-webkit-border-bottom-right-radius",<a name="line.774"></a>
778<FONT color="green">775</FONT>          "-webkit-border-radius",<a name="line.775"></a>
779<FONT color="green">776</FONT>          "-webkit-border-radius-bottom-left",<a name="line.776"></a>
780<FONT color="green">777</FONT>          "-webkit-border-radius-bottom-right",<a name="line.777"></a>
781<FONT color="green">778</FONT>          "-webkit-border-radius-top-left",<a name="line.778"></a>
782<FONT color="green">779</FONT>          "-webkit-border-radius-top-right",<a name="line.779"></a>
783<FONT color="green">780</FONT>          "-webkit-border-top-left-radius",<a name="line.780"></a>
784<FONT color="green">781</FONT>          "-webkit-border-top-right-radius",<a name="line.781"></a>
785<FONT color="green">782</FONT>          "-webkit-box-shadow",<a name="line.782"></a>
786<FONT color="green">783</FONT>          "azimuth",<a name="line.783"></a>
787<FONT color="green">784</FONT>          "background",<a name="line.784"></a>
788<FONT color="green">785</FONT>          "background-attachment",<a name="line.785"></a>
789<FONT color="green">786</FONT>          "background-color",<a name="line.786"></a>
790<FONT color="green">787</FONT>          "background-image",<a name="line.787"></a>
791<FONT color="green">788</FONT>          "background-position",<a name="line.788"></a>
792<FONT color="green">789</FONT>          "background-repeat",<a name="line.789"></a>
793<FONT color="green">790</FONT>          "border",<a name="line.790"></a>
794<FONT color="green">791</FONT>          "border-bottom",<a name="line.791"></a>
795<FONT color="green">792</FONT>          "border-bottom-color",<a name="line.792"></a>
796<FONT color="green">793</FONT>          "border-bottom-left-radius",<a name="line.793"></a>
797<FONT color="green">794</FONT>          "border-bottom-right-radius",<a name="line.794"></a>
798<FONT color="green">795</FONT>          "border-bottom-style",<a name="line.795"></a>
799<FONT color="green">796</FONT>          "border-bottom-width",<a name="line.796"></a>
800<FONT color="green">797</FONT>          "border-collapse",<a name="line.797"></a>
801<FONT color="green">798</FONT>          "border-color",<a name="line.798"></a>
802<FONT color="green">799</FONT>          "border-left",<a name="line.799"></a>
803<FONT color="green">800</FONT>          "border-left-color",<a name="line.800"></a>
804<FONT color="green">801</FONT>          "border-left-style",<a name="line.801"></a>
805<FONT color="green">802</FONT>          "border-left-width",<a name="line.802"></a>
806<FONT color="green">803</FONT>          "border-radius",<a name="line.803"></a>
807<FONT color="green">804</FONT>          "border-right",<a name="line.804"></a>
808<FONT color="green">805</FONT>          "border-right-color",<a name="line.805"></a>
809<FONT color="green">806</FONT>          "border-right-style",<a name="line.806"></a>
810<FONT color="green">807</FONT>          "border-right-width",<a name="line.807"></a>
811<FONT color="green">808</FONT>          "border-spacing",<a name="line.808"></a>
812<FONT color="green">809</FONT>          "border-style",<a name="line.809"></a>
813<FONT color="green">810</FONT>          "border-top",<a name="line.810"></a>
814<FONT color="green">811</FONT>          "border-top-color",<a name="line.811"></a>
815<FONT color="green">812</FONT>          "border-top-left-radius",<a name="line.812"></a>
816<FONT color="green">813</FONT>          "border-top-right-radius",<a name="line.813"></a>
817<FONT color="green">814</FONT>          "border-top-style",<a name="line.814"></a>
818<FONT color="green">815</FONT>          "border-top-width",<a name="line.815"></a>
819<FONT color="green">816</FONT>          "border-width",<a name="line.816"></a>
820<FONT color="green">817</FONT>          "box-shadow",<a name="line.817"></a>
821<FONT color="green">818</FONT>          "caption-side",<a name="line.818"></a>
822<FONT color="green">819</FONT>          "color",<a name="line.819"></a>
823<FONT color="green">820</FONT>          "cue",<a name="line.820"></a>
824<FONT color="green">821</FONT>          "cue-after",<a name="line.821"></a>
825<FONT color="green">822</FONT>          "cue-before",<a name="line.822"></a>
826<FONT color="green">823</FONT>          "direction",<a name="line.823"></a>
827<FONT color="green">824</FONT>          "elevation",<a name="line.824"></a>
828<FONT color="green">825</FONT>          "empty-cells",<a name="line.825"></a>
829<FONT color="green">826</FONT>          "font",<a name="line.826"></a>
830<FONT color="green">827</FONT>          "font-family",<a name="line.827"></a>
831<FONT color="green">828</FONT>          "font-size",<a name="line.828"></a>
832<FONT color="green">829</FONT>          "font-stretch",<a name="line.829"></a>
833<FONT color="green">830</FONT>          "font-style",<a name="line.830"></a>
834<FONT color="green">831</FONT>          "font-variant",<a name="line.831"></a>
835<FONT color="green">832</FONT>          "font-weight",<a name="line.832"></a>
836<FONT color="green">833</FONT>          "height",<a name="line.833"></a>
837<FONT color="green">834</FONT>          "image()",<a name="line.834"></a>
838<FONT color="green">835</FONT>          "letter-spacing",<a name="line.835"></a>
839<FONT color="green">836</FONT>          "line-height",<a name="line.836"></a>
840<FONT color="green">837</FONT>          "linear-gradient()",<a name="line.837"></a>
841<FONT color="green">838</FONT>          "list-style",<a name="line.838"></a>
842<FONT color="green">839</FONT>          "list-style-image",<a name="line.839"></a>
843<FONT color="green">840</FONT>          "list-style-position",<a name="line.840"></a>
844<FONT color="green">841</FONT>          "list-style-type",<a name="line.841"></a>
845<FONT color="green">842</FONT>          "margin",<a name="line.842"></a>
846<FONT color="green">843</FONT>          "margin-bottom",<a name="line.843"></a>
847<FONT color="green">844</FONT>          "margin-left",<a name="line.844"></a>
848<FONT color="green">845</FONT>          "margin-right",<a name="line.845"></a>
849<FONT color="green">846</FONT>          "margin-top",<a name="line.846"></a>
850<FONT color="green">847</FONT>          "max-height",<a name="line.847"></a>
851<FONT color="green">848</FONT>          "max-width",<a name="line.848"></a>
852<FONT color="green">849</FONT>          "min-height",<a name="line.849"></a>
853<FONT color="green">850</FONT>          "min-width",<a name="line.850"></a>
854<FONT color="green">851</FONT>          "outline",<a name="line.851"></a>
855<FONT color="green">852</FONT>          "outline-color",<a name="line.852"></a>
856<FONT color="green">853</FONT>          "outline-style",<a name="line.853"></a>
857<FONT color="green">854</FONT>          "outline-width",<a name="line.854"></a>
858<FONT color="green">855</FONT>          "padding",<a name="line.855"></a>
859<FONT color="green">856</FONT>          "padding-bottom",<a name="line.856"></a>
860<FONT color="green">857</FONT>          "padding-left",<a name="line.857"></a>
861<FONT color="green">858</FONT>          "padding-right",<a name="line.858"></a>
862<FONT color="green">859</FONT>          "padding-top",<a name="line.859"></a>
863<FONT color="green">860</FONT>          "pause",<a name="line.860"></a>
864<FONT color="green">861</FONT>          "pause-after",<a name="line.861"></a>
865<FONT color="green">862</FONT>          "pause-before",<a name="line.862"></a>
866<FONT color="green">863</FONT>          "pitch",<a name="line.863"></a>
867<FONT color="green">864</FONT>          "pitch-range",<a name="line.864"></a>
868<FONT color="green">865</FONT>          "quotes",<a name="line.865"></a>
869<FONT color="green">866</FONT>          "radial-gradient()",<a name="line.866"></a>
870<FONT color="green">867</FONT>          "rect()",<a name="line.867"></a>
871<FONT color="green">868</FONT>          "repeating-linear-gradient()",<a name="line.868"></a>
872<FONT color="green">869</FONT>          "repeating-radial-gradient()",<a name="line.869"></a>
873<FONT color="green">870</FONT>          "rgb()",<a name="line.870"></a>
874<FONT color="green">871</FONT>          "rgba()",<a name="line.871"></a>
875<FONT color="green">872</FONT>          "richness",<a name="line.872"></a>
876<FONT color="green">873</FONT>          "speak",<a name="line.873"></a>
877<FONT color="green">874</FONT>          "speak-header",<a name="line.874"></a>
878<FONT color="green">875</FONT>          "speak-numeral",<a name="line.875"></a>
879<FONT color="green">876</FONT>          "speak-punctuation",<a name="line.876"></a>
880<FONT color="green">877</FONT>          "speech-rate",<a name="line.877"></a>
881<FONT color="green">878</FONT>          "stress",<a name="line.878"></a>
882<FONT color="green">879</FONT>          "table-layout",<a name="line.879"></a>
883<FONT color="green">880</FONT>          "text-align",<a name="line.880"></a>
884<FONT color="green">881</FONT>          "text-decoration",<a name="line.881"></a>
885<FONT color="green">882</FONT>          "text-indent",<a name="line.882"></a>
886<FONT color="green">883</FONT>          "text-overflow",<a name="line.883"></a>
887<FONT color="green">884</FONT>          "text-shadow",<a name="line.884"></a>
888<FONT color="green">885</FONT>          "text-transform",<a name="line.885"></a>
889<FONT color="green">886</FONT>          "text-wrap",<a name="line.886"></a>
890<FONT color="green">887</FONT>          "unicode-bidi",<a name="line.887"></a>
891<FONT color="green">888</FONT>          "vertical-align",<a name="line.888"></a>
892<FONT color="green">889</FONT>          "voice-family",<a name="line.889"></a>
893<FONT color="green">890</FONT>          "volume",<a name="line.890"></a>
894<FONT color="green">891</FONT>          "white-space",<a name="line.891"></a>
895<FONT color="green">892</FONT>          "width",<a name="line.892"></a>
896<FONT color="green">893</FONT>          "word-spacing",<a name="line.893"></a>
897<FONT color="green">894</FONT>          "word-wrap"<a name="line.894"></a>
898<FONT color="green">895</FONT>      );<a name="line.895"></a>
899<FONT color="green">896</FONT>    <a name="line.896"></a>
900<FONT color="green">897</FONT>      /**<a name="line.897"></a>
901<FONT color="green">898</FONT>       * A schema that includes only those properties on the default schema<a name="line.898"></a>
902<FONT color="green">899</FONT>       * white-list.<a name="line.899"></a>
903<FONT color="green">900</FONT>       */<a name="line.900"></a>
904<FONT color="green">901</FONT>      public static final CssSchema DEFAULT =<a name="line.901"></a>
905<FONT color="green">902</FONT>          CssSchema.withProperties(DEFAULT_WHITELIST);<a name="line.902"></a>
906<FONT color="green">903</FONT>    <a name="line.903"></a>
907<FONT color="green">904</FONT>      /** Dumps key and literal list to stdout for easy examination. */<a name="line.904"></a>
908<FONT color="green">905</FONT>      public static void main(String... argv) {<a name="line.905"></a>
909<FONT color="green">906</FONT>        SortedSet&lt;String&gt; keys = Sets.newTreeSet();<a name="line.906"></a>
910<FONT color="green">907</FONT>        SortedSet&lt;String&gt; literals = Sets.newTreeSet();<a name="line.907"></a>
911<FONT color="green">908</FONT>    <a name="line.908"></a>
912<FONT color="green">909</FONT>        for (ImmutableMap.Entry&lt;String, Property&gt; e : DEFINITIONS.entrySet()) {<a name="line.909"></a>
913<FONT color="green">910</FONT>          keys.add(e.getKey());<a name="line.910"></a>
914<FONT color="green">911</FONT>          literals.addAll(e.getValue().literals);<a name="line.911"></a>
915<FONT color="green">912</FONT>        }<a name="line.912"></a>
916<FONT color="green">913</FONT>    <a name="line.913"></a>
917<FONT color="green">914</FONT>        System.out.println(<a name="line.914"></a>
918<FONT color="green">915</FONT>            "# Below two blocks of tokens.\n"<a name="line.915"></a>
919<FONT color="green">916</FONT>                + "#\n"<a name="line.916"></a>
920<FONT color="green">917</FONT>            + "# First are all property names.\n"<a name="line.917"></a>
921<FONT color="green">918</FONT>            + "# Those followed by an asterisk (*) are in the default white-list.\n"<a name="line.918"></a>
922<FONT color="green">919</FONT>            + "#\n"<a name="line.919"></a>
923<FONT color="green">920</FONT>            + "# Second are the literal tokens recognized in any defined property\n"<a name="line.920"></a>
924<FONT color="green">921</FONT>            + "# value.\n"<a name="line.921"></a>
925<FONT color="green">922</FONT>            );<a name="line.922"></a>
926<FONT color="green">923</FONT>        for (String key : keys) {<a name="line.923"></a>
927<FONT color="green">924</FONT>          System.out.print(key);<a name="line.924"></a>
928<FONT color="green">925</FONT>          if (DEFAULT_WHITELIST.contains(key)) { System.out.print("*"); }<a name="line.925"></a>
929<FONT color="green">926</FONT>          System.out.println();<a name="line.926"></a>
930<FONT color="green">927</FONT>        }<a name="line.927"></a>
931<FONT color="green">928</FONT>        System.out.println();<a name="line.928"></a>
932<FONT color="green">929</FONT>        for (String literal : literals) {<a name="line.929"></a>
933<FONT color="green">930</FONT>          System.out.println(literal);<a name="line.930"></a>
934<FONT color="green">931</FONT>        }<a name="line.931"></a>
935<FONT color="green">932</FONT>      }<a name="line.932"></a>
936<FONT color="green">933</FONT>    }<a name="line.933"></a>
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997</PRE>
998</BODY>
999</HTML>
1000