Changeset 8466 in webkit


Ignore:
Timestamp:
Jan 27, 2005, 5:13:07 PM (21 years ago)
Author:
mjs
Message:

WebCore:

Reviewed by Darin, Hyatt and Ken.

<rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration

  • khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support for -khtml-text-decorations-in-effect property. This works like text-docration but follows proper inline semantics, that is, if a parent is causing text decoration then -khtml-text-decorations-in-effect on this element will reflect that.
  • khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
  • khtml/css/cssproperties.h: regenerated
  • khtml/css/cssvalues.c: regenerated
  • khtml/css/cssparser.cpp: regenerated
  • khtml/css/cssproperties.c: regenerated
  • khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
  • khtml/editing/htmlediting.cpp: (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect specially, translate to text-decoration (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment. (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down text-decoration styles around the edges of the selected range. (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this. (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto (khtml::hasTextDecorationProperty): ditto (khtml::highestAncestorWithTextDecoration): ditto (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
  • khtml/editing/htmlediting.h: Prototype new methods.
  • khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
  • as a necessary part of the fix, fixed the longstanding problem that mutating an element's inlineStyleDecl would not property update its style attribute. now it does.
  • khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style declaration, tell the element it's style attribute needs updating.
  • khtml/html/html_elementimpl.cpp: (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down to the dom element. (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from inline style declaration.
  • khtml/html/html_elementimpl.h: Prototype new stuff.
  • khtml/xml/dom_elementimpl.cpp: (ElementImpl::ElementImpl): Initialize new attribute. (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style is dirty and this is an html element, and if so call the html element to regenerate the style attribute. (ElementImpl::attributes): update style if needed (ElementImpl::getAttribute): ditto (ElementImpl::hasAttributes): ditto (ElementImpl::dump): ditto (XMLElementImpl::cloneNode): ditto
  • khtml/xml/dom_elementimpl.h: (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr dirty bit (DOM::ElementImpl::setStyleAttributeValid): ditto
  • added new layout tests for underlining:
  • layout-tests/editing/editing.js:
  • layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
  • layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
  • layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
  • layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
  • layout-tests/editing/style/remove-underline-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
  • layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
  • layout-tests/editing/style/remove-underline-in-bold.html: Added.
  • layout-tests/editing/style/remove-underline.html: Added.
  • layout-tests/editing/style/underline-expected.txt: Added.
  • layout-tests/editing/style/underline.html: Added.

WebKit:

Reviewed by Darin, Hyatt and Ken.

<rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration

  • WebView.subproj/WebHTMLView.m: (-[WebHTMLView _styleFromFontAttributes:]): Use new -khtml-text-decorations-in-effect property (-[WebHTMLView _styleForAttributeChange:]): likewise (-[WebHTMLView underline:]): likewise
Location:
trunk
Files:
16 added
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/editing/editing.js

    r8464 r8466  
    205205//-------------------------------------------------------------------------------------------------------
    206206
     207function execUnderlineCommand() {
     208    document.execCommand("Underline");
     209}
     210function underlineCommand() {
     211    if (commandDelay > 0) {
     212        window.setTimeout(execUnderlineCommand, commandCount * commandDelay);
     213        commandCount++;
     214    }
     215    else {
     216        execUnderlineCommand();
     217    }
     218}
     219
     220//-------------------------------------------------------------------------------------------------------
     221
    207222function execFontNameCommand() {
    208223    document.execCommand("FontName", false, "Courier");
  • trunk/WebCore/ChangeLog-2005-08-23

    r8465 r8466  
     12005-01-26  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Darin, Hyatt and Ken.
     4
     5        <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
     6       
     7        * khtml/css/css_computedstyle.cpp:
     8        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
     9        for -khtml-text-decorations-in-effect property. This works like text-docration
     10        but follows proper inline semantics, that is, if a parent is causing text
     11        decoration then -khtml-text-decorations-in-effect on this element will reflect that.
     12        * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
     13        * khtml/css/cssproperties.h: regenerated
     14        * khtml/css/cssvalues.c: regenerated
     15        * khtml/css/cssparser.cpp: regenerated
     16        * khtml/css/cssproperties.c: regenerated
     17
     18        * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
     19
     20        * khtml/editing/htmlediting.cpp:
     21        (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
     22        specially, translate to text-decoration
     23        (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
     24        (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
     25        text-decoration styles around the edges of the selected range.
     26        (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
     27        (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
     28        (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
     29        (khtml::hasTextDecorationProperty): ditto
     30        (khtml::highestAncestorWithTextDecoration): ditto
     31        (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
     32        (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
     33        (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
     34        * khtml/editing/htmlediting.h: Prototype new methods.
     35        * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
     36
     37        - as a necessary part of the fix, fixed the longstanding problem
     38        that mutating an element's inlineStyleDecl would not property
     39        update its style attribute. now it does.
     40       
     41        * khtml/css/css_valueimpl.cpp:
     42        (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
     43        declaration, tell the element it's style attribute needs updating.
     44        * khtml/html/html_elementimpl.cpp:
     45        (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
     46        to the dom element.
     47        (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
     48        inline style declaration.
     49        * khtml/html/html_elementimpl.h: Prototype new stuff.
     50        * khtml/xml/dom_elementimpl.cpp:
     51        (ElementImpl::ElementImpl): Initialize new attribute.
     52        (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
     53        is dirty and this is an html element, and if so call the html element to
     54        regenerate the style attribute.
     55        (ElementImpl::attributes): update style if needed
     56        (ElementImpl::getAttribute): ditto
     57        (ElementImpl::hasAttributes): ditto
     58        (ElementImpl::dump): ditto
     59        (XMLElementImpl::cloneNode): ditto
     60        * khtml/xml/dom_elementimpl.h:
     61        (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
     62        dirty bit
     63        (DOM::ElementImpl::setStyleAttributeValid): ditto
     64
     65        - added new layout tests for underlining:
     66       
     67        * layout-tests/editing/editing.js:
     68        * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
     69        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
     70        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
     71        * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
     72        * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
     73        * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
     74        * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
     75        * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
     76        * layout-tests/editing/style/remove-underline-expected.txt: Added.
     77        * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
     78        * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
     79        * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
     80        * layout-tests/editing/style/remove-underline-in-bold.html: Added.
     81        * layout-tests/editing/style/remove-underline.html: Added.
     82        * layout-tests/editing/style/underline-expected.txt: Added.
     83        * layout-tests/editing/style/underline.html: Added.
     84
    1852005-01-27  David Hyatt  <hyatt@apple.com>
    286
  • trunk/WebCore/khtml/css/css_computedstyle.cpp

    r8458 r8466  
    139139    CSS_PROP_TEXT_ALIGN,
    140140    CSS_PROP_TEXT_DECORATION,
     141    CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT,
    141142    CSS_PROP_TEXT_INDENT,
    142143    CSS_PROP_TEXT_SHADOW,
     
    172173    CSS_PROP_LINE_HEIGHT,
    173174    CSS_PROP_TEXT_ALIGN,
    174     CSS_PROP_TEXT_DECORATION, // this is not inheritable, yet we do want to consider it for typing style (name change needed? redesign?)
     175    CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT,
    175176    CSS_PROP_TEXT_INDENT,
    176177    CSS_PROP__APPLE_TEXT_SIZE_ADJUST,
     
    992993        return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
    993994    }
     995    case CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT:
     996    {
     997        QString string;
     998        if (style->textDecorationsInEffect() & khtml::UNDERLINE)
     999            string += "underline";
     1000        if (style->textDecorationsInEffect() & khtml::OVERLINE) {
     1001            if (string.length() > 0)
     1002                string += " ";
     1003            string += "overline";
     1004        }
     1005        if (style->textDecorationsInEffect() & khtml::LINE_THROUGH) {
     1006            if (string.length() > 0)
     1007                string += " ";
     1008            string += "line-through";
     1009        }
     1010        if (style->textDecorationsInEffect() & khtml::BLINK) {
     1011            if (string.length() > 0)
     1012                string += " ";
     1013            string += "blink";
     1014        }
     1015        if (string.length() == 0)
     1016            return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
     1017        return new CSSPrimitiveValueImpl(string, CSSPrimitiveValue::CSS_STRING);
     1018    }
    9941019    case CSS_PROP_TEXT_INDENT:
    9951020        return valueForLength(style->textIndent());
  • trunk/WebCore/khtml/css/css_valueimpl.cpp

    r8413 r8466  
    3535#include "xml/dom_stringimpl.h"
    3636#include "xml/dom_docimpl.h"
     37#include "html/html_elementimpl.h"
    3738
    3839#include "misc/loader.h"
     
    268269    if (m_node) {
    269270        m_node->setChanged();
     271        // FIXME: Ideally, this should be factored better and there
     272        // should be a subclass of CSSMutableStyleDeclarationImpl just
     273        // for inline style declarations that handles this
     274        if (m_node->isHTMLElement() && this == static_cast<HTMLElementImpl *>(m_node)->inlineStyleDecl()) {
     275            static_cast<HTMLElementImpl *>(m_node)->invalidateStyleAttribute();
     276        }
     277
    270278        return;
    271279    }
  • trunk/WebCore/khtml/css/css_valueimpl.h

    r8041 r8466  
    6565    void diff(CSSMutableStyleDeclarationImpl *) const;
    6666
     67    CSSMutableStyleDeclarationImpl *copyPropertiesInSet(const int *set, unsigned length) const;
     68
    6769protected:
    6870    CSSStyleDeclarationImpl(CSSRuleImpl *parentRule = 0);
    6971
    70     CSSMutableStyleDeclarationImpl *copyPropertiesInSet(const int *set, unsigned length) const;
    7172
    7273private:
  • trunk/WebCore/khtml/css/cssparser.cpp

    r8382 r8466  
    901901
    902902    case CSS_PROP_TEXT_DECORATION:
     903    case CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT:
    903904        // none | [ underline || overline || line-through || blink ] | inherit
    904905        if (id == CSS_VAL_NONE) {
  • trunk/WebCore/khtml/css/cssproperties.c

    r8382 r8466  
    1 /* ANSI-C code produced by gperf version 3.0.1 */
     1/* ANSI-C code produced by gperf version 2.7.2 */
    22/* Command-line: gperf -a -L ANSI-C -E -C -c -o -t -k '*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 cssproperties.gperf  */
    3 
    4 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
    5       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
    6       && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
    7       && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
    8       && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
    9       && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
    10       && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
    11       && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
    12       && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
    13       && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
    14       && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
    15       && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
    16       && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
    17       && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
    18       && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
    19       && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
    20       && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
    21       && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
    22       && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
    23       && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
    24       && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
    25       && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
    26       && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
    27 /* The character set is not based on ISO-646.  */
    28 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
    29 #endif
    30 
    31 #line 1 "cssproperties.gperf"
    32 
    333/* This file is automatically generated from cssproperties.in by makeprop, do not edit */
    344/* Copyright 1999 W. Bastian */
    355#include "cssproperties.h"
    36 #line 6 "cssproperties.gperf"
    376struct props {
    387    const char *name;
    398    int id;
    409};
    41 /* maximum key range = 514, duplicates = 0 */
     10/* maximum key range = 990, duplicates = 0 */
    4211
    4312#ifdef __GNUC__
     
    5322  static const unsigned short asso_values[] =
    5423    {
    55       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    56       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    57       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    58       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    59       517, 517, 517, 517, 517,   0, 517, 517, 517, 517,
    60       517,   5, 517, 517, 517, 517, 517, 517, 517, 517,
    61       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    62       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    63       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    64       517, 517, 517, 517, 517, 517, 517,   0,   0,   0,
    65         0,   5, 135,  25,  15,   0,   5,  25,   0,   0,
    66         0,   0,   0,  45,   0,  25,   0,  70,  40, 205,
    67       110, 210,  15, 517, 517, 517, 517, 517, 517, 517,
    68       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    69       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    70       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    71       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    72       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    73       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    74       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    75       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    76       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    77       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    78       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    79       517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
    80       517, 517, 517, 517, 517, 517
     24      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     25      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     26      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     27      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     28      1026, 1026, 1026, 1026, 1026,    0, 1026, 1026, 1026, 1026,
     29      1026,    0, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     30      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     31      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     32      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     33      1026, 1026, 1026, 1026, 1026, 1026, 1026,    5,   30,   90,
     34         0,    0,  205,   40,    0,    0,    0,   25,    0,  135,
     35        15,    0,  120,   10,    0,   50,    0,   15,  125,  405,
     36       125,  395,   10, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     37      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     38      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     39      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     40      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     41      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     42      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     43      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     44      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     45      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     46      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     47      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     48      1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
     49      1026, 1026, 1026, 1026, 1026, 1026
    8150    };
    8251  register int hval = len;
     
    8554    {
    8655      default:
     56      case 33:
     57        hval += asso_values[(unsigned char)str[32]];
     58      case 32:
    8759        hval += asso_values[(unsigned char)str[31]];
    88       /*FALLTHROUGH*/
    8960      case 31:
    9061        hval += asso_values[(unsigned char)str[30]];
    91       /*FALLTHROUGH*/
    9262      case 30:
    9363        hval += asso_values[(unsigned char)str[29]];
    94       /*FALLTHROUGH*/
    9564      case 29:
    9665        hval += asso_values[(unsigned char)str[28]];
    97       /*FALLTHROUGH*/
    9866      case 28:
    9967        hval += asso_values[(unsigned char)str[27]];
    100       /*FALLTHROUGH*/
    10168      case 27:
    10269        hval += asso_values[(unsigned char)str[26]];
    103       /*FALLTHROUGH*/
    10470      case 26:
    10571        hval += asso_values[(unsigned char)str[25]];
    106       /*FALLTHROUGH*/
    10772      case 25:
    10873        hval += asso_values[(unsigned char)str[24]];
    109       /*FALLTHROUGH*/
    11074      case 24:
    11175        hval += asso_values[(unsigned char)str[23]];
    112       /*FALLTHROUGH*/
    11376      case 23:
    11477        hval += asso_values[(unsigned char)str[22]];
    115       /*FALLTHROUGH*/
    11678      case 22:
    11779        hval += asso_values[(unsigned char)str[21]];
    118       /*FALLTHROUGH*/
    11980      case 21:
    12081        hval += asso_values[(unsigned char)str[20]];
    121       /*FALLTHROUGH*/
    12282      case 20:
    12383        hval += asso_values[(unsigned char)str[19]];
    124       /*FALLTHROUGH*/
    12584      case 19:
    12685        hval += asso_values[(unsigned char)str[18]];
    127       /*FALLTHROUGH*/
    12886      case 18:
    12987        hval += asso_values[(unsigned char)str[17]];
    130       /*FALLTHROUGH*/
    13188      case 17:
    13289        hval += asso_values[(unsigned char)str[16]];
    133       /*FALLTHROUGH*/
    13490      case 16:
    13591        hval += asso_values[(unsigned char)str[15]];
    136       /*FALLTHROUGH*/
    13792      case 15:
    13893        hval += asso_values[(unsigned char)str[14]];
    139       /*FALLTHROUGH*/
    14094      case 14:
    14195        hval += asso_values[(unsigned char)str[13]];
    142       /*FALLTHROUGH*/
    14396      case 13:
    14497        hval += asso_values[(unsigned char)str[12]];
    145       /*FALLTHROUGH*/
    14698      case 12:
    14799        hval += asso_values[(unsigned char)str[11]];
    148       /*FALLTHROUGH*/
    149100      case 11:
    150101        hval += asso_values[(unsigned char)str[10]];
    151       /*FALLTHROUGH*/
    152102      case 10:
    153103        hval += asso_values[(unsigned char)str[9]];
    154       /*FALLTHROUGH*/
    155104      case 9:
    156105        hval += asso_values[(unsigned char)str[8]];
    157       /*FALLTHROUGH*/
    158106      case 8:
    159107        hval += asso_values[(unsigned char)str[7]];
    160       /*FALLTHROUGH*/
    161108      case 7:
    162109        hval += asso_values[(unsigned char)str[6]];
    163       /*FALLTHROUGH*/
    164110      case 6:
    165111        hval += asso_values[(unsigned char)str[5]];
    166       /*FALLTHROUGH*/
    167112      case 5:
    168113        hval += asso_values[(unsigned char)str[4]];
    169       /*FALLTHROUGH*/
    170114      case 4:
    171115        hval += asso_values[(unsigned char)str[3]];
    172       /*FALLTHROUGH*/
    173116      case 3:
    174117        hval += asso_values[(unsigned char)str[2]];
    175       /*FALLTHROUGH*/
    176118      case 2:
    177119        hval += asso_values[(unsigned char)str[1]];
    178       /*FALLTHROUGH*/
    179120      case 1:
    180121        hval += asso_values[(unsigned char)str[0]];
     
    192133  enum
    193134    {
    194       TOTAL_KEYWORDS = 158,
     135      TOTAL_KEYWORDS = 159,
    195136      MIN_WORD_LENGTH = 3,
    196       MAX_WORD_LENGTH = 32,
    197       MIN_HASH_VALUE = 3,
    198       MAX_HASH_VALUE = 516
     137      MAX_WORD_LENGTH = 33,
     138      MIN_HASH_VALUE = 36,
     139      MAX_HASH_VALUE = 1025
    199140    };
    200141
    201142  static const struct props wordlist_prop[] =
    202143    {
    203 #line 135 "cssproperties.gperf"
     144      {"border", CSS_PROP_BORDER},
     145      {"outline", CSS_PROP_OUTLINE},
     146      {"right", CSS_PROP_RIGHT},
     147      {"height", CSS_PROP_HEIGHT},
     148      {"size", CSS_PROP_SIZE},
     149      {"line-height", CSS_PROP_LINE_HEIGHT},
     150      {"quotes", CSS_PROP_QUOTES},
     151      {"border-right", CSS_PROP_BORDER_RIGHT},
     152      {"color", CSS_PROP_COLOR},
     153      {"clear", CSS_PROP_CLEAR},
     154      {"direction", CSS_PROP_DIRECTION},
    204155      {"top", CSS_PROP_TOP},
    205 #line 46 "cssproperties.gperf"
     156      {"content", CSS_PROP_CONTENT},
     157      {"border-color", CSS_PROP_BORDER_COLOR},
     158      {"outline-color", CSS_PROP_OUTLINE_COLOR},
     159      {"z-index", CSS_PROP_Z_INDEX},
     160      {"border-top", CSS_PROP_BORDER_TOP},
     161      {"cursor", CSS_PROP_CURSOR},
     162      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
     163      {"text-indent", CSS_PROP_TEXT_INDENT},
     164      {"page", CSS_PROP_PAGE},
     165      {"bottom", CSS_PROP_BOTTOM},
     166      {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
     167      {"counter-reset", CSS_PROP_COUNTER_RESET},
     168      {"text-underline", CSS_PROP_TEXT_UNDERLINE},
     169      {"padding", CSS_PROP_PADDING},
     170      {"position", CSS_PROP_POSITION},
     171      {"text-align", CSS_PROP_TEXT_ALIGN},
     172      {"orphans", CSS_PROP_ORPHANS},
     173      {"min-height", CSS_PROP_MIN_HEIGHT},
     174      {"margin", CSS_PROP_MARGIN},
     175      {"border-bottom", CSS_PROP_BORDER_BOTTOM},
     176      {"left", CSS_PROP_LEFT},
     177      {"text-line-through", CSS_PROP_TEXT_LINE_THROUGH},
    206178      {"clip", CSS_PROP_CLIP},
    207 #line 47 "cssproperties.gperf"
    208       {"color", CSS_PROP_COLOR},
    209 #line 35 "cssproperties.gperf"
    210       {"bottom", CSS_PROP_BOTTOM},
    211 #line 45 "cssproperties.gperf"
    212       {"clear", CSS_PROP_CLEAR},
    213 #line 149 "cssproperties.gperf"
    214       {"border", CSS_PROP_BORDER},
    215 #line 48 "cssproperties.gperf"
    216       {"content", CSS_PROP_CONTENT},
    217 #line 52 "cssproperties.gperf"
    218       {"direction", CSS_PROP_DIRECTION},
    219 #line 152 "cssproperties.gperf"
    220       {"border-top", CSS_PROP_BORDER_TOP},
    221 #line 150 "cssproperties.gperf"
    222       {"border-color", CSS_PROP_BORDER_COLOR},
    223 #line 154 "cssproperties.gperf"
    224       {"border-bottom", CSS_PROP_BORDER_BOTTOM},
    225 #line 23 "cssproperties.gperf"
     179      {"float", CSS_PROP_FLOAT},
     180      {"font", CSS_PROP_FONT},
     181      {"background", CSS_PROP_BACKGROUND},
     182      {"padding-right", CSS_PROP_PADDING_RIGHT},
     183      {"border-left", CSS_PROP_BORDER_LEFT},
     184      {"margin-right", CSS_PROP_MARGIN_RIGHT},
     185      {"text-decoration", CSS_PROP_TEXT_DECORATION},
     186      {"-khtml-line-break", CSS_PROP__KHTML_LINE_BREAK},
    226187      {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
    227 #line 25 "cssproperties.gperf"
     188      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
     189      {"text-overline", CSS_PROP_TEXT_OVERLINE},
     190      {"text-underline-color", CSS_PROP_TEXT_UNDERLINE_COLOR},
     191      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
     192      {"font-size", CSS_PROP_FONT_SIZE},
     193      {"caption-side", CSS_PROP_CAPTION_SIDE},
     194      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
    228195      {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
    229 #line 66 "cssproperties.gperf"
     196      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
     197      {"text-line-through-color", CSS_PROP_TEXT_LINE_THROUGH_COLOR},
     198      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
     199      {"padding-top", CSS_PROP_PADDING_TOP},
     200      {"max-height", CSS_PROP_MAX_HEIGHT},
     201      {"text-underline-mode", CSS_PROP_TEXT_UNDERLINE_MODE},
     202      {"margin-top", CSS_PROP_MARGIN_TOP},
     203      {"background-color", CSS_PROP_BACKGROUND_COLOR},
     204      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
     205      {"letter-spacing", CSS_PROP_LETTER_SPACING},
     206      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
     207      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
     208      {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
     209      {"text-line-through-mode", CSS_PROP_TEXT_LINE_THROUGH_MODE},
     210      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
     211      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
     212      {"border-spacing", CSS_PROP_BORDER_SPACING},
     213      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
     214      {"font-stretch", CSS_PROP_FONT_STRETCH},
     215      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
     216      {"text-overline-color", CSS_PROP_TEXT_OVERLINE_COLOR},
     217      {"font-variant", CSS_PROP_FONT_VARIANT},
     218      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
     219      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
     220      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
     221      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
     222      {"padding-left", CSS_PROP_PADDING_LEFT},
     223      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
     224      {"width", CSS_PROP_WIDTH},
     225      {"margin-left", CSS_PROP_MARGIN_LEFT},
     226      {"-apple-dashboard-region", CSS_PROP__APPLE_DASHBOARD_REGION},
     227      {"-khtml-padding-start", CSS_PROP__KHTML_PADDING_START},
     228      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
     229      {"text-overline-mode", CSS_PROP_TEXT_OVERLINE_MODE},
     230      {"background-position", CSS_PROP_BACKGROUND_POSITION},
     231      {"-khtml-margin-start", CSS_PROP__KHTML_MARGIN_START},
     232      {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
     233      {"border-width", CSS_PROP_BORDER_WIDTH},
     234      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
     235      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
     236      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
     237      {"table-layout", CSS_PROP_TABLE_LAYOUT},
     238      {"-khtml-font-size-delta", CSS_PROP__KHTML_FONT_SIZE_DELTA},
     239      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
     240      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
     241      {"border-style", CSS_PROP_BORDER_STYLE},
     242      {"outline-style", CSS_PROP_OUTLINE_STYLE},
     243      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
     244      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
     245      {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
     246      {"list-style", CSS_PROP_LIST_STYLE},
     247      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
     248      {"-apple-text-size-adjust", CSS_PROP__APPLE_TEXT_SIZE_ADJUST},
     249      {"-khtml-nbsp-mode", CSS_PROP__KHTML_NBSP_MODE},
     250      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
     251      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
     252      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
     253      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
     254      {"min-width", CSS_PROP_MIN_WIDTH},
     255      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
     256      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
     257      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
     258      {"display", CSS_PROP_DISPLAY},
     259      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
     260      {"text-underline-width", CSS_PROP_TEXT_UNDERLINE_WIDTH},
     261      {"text-shadow", CSS_PROP_TEXT_SHADOW},
     262      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
     263      {"visibility", CSS_PROP_VISIBILITY},
     264      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
     265      {"opacity", CSS_PROP_OPACITY},
     266      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
     267      {"text-line-through-width", CSS_PROP_TEXT_LINE_THROUGH_WIDTH},
    230268      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
    231 #line 159 "cssproperties.gperf"
    232       {"margin", CSS_PROP_MARGIN},
    233 #line 161 "cssproperties.gperf"
    234       {"padding", CSS_PROP_PADDING},
    235 #line 107 "cssproperties.gperf"
    236       {"position", CSS_PROP_POSITION},
    237 #line 103 "cssproperties.gperf"
    238       {"page", CSS_PROP_PAGE},
    239 #line 71 "cssproperties.gperf"
    240       {"margin-top", CSS_PROP_MARGIN_TOP},
    241 #line 98 "cssproperties.gperf"
    242       {"padding-top", CSS_PROP_PADDING_TOP},
    243 #line 73 "cssproperties.gperf"
    244       {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
    245 #line 100 "cssproperties.gperf"
    246       {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
    247 #line 44 "cssproperties.gperf"
    248       {"caption-side", CSS_PROP_CAPTION_SIDE},
    249 #line 109 "cssproperties.gperf"
    250       {"right", CSS_PROP_RIGHT},
    251 #line 92 "cssproperties.gperf"
    252       {"orphans", CSS_PROP_ORPHANS},
    253 #line 110 "cssproperties.gperf"
    254       {"size", CSS_PROP_SIZE},
    255 #line 19 "cssproperties.gperf"
    256       {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
    257 #line 153 "cssproperties.gperf"
    258       {"border-right", CSS_PROP_BORDER_RIGHT},
    259 #line 24 "cssproperties.gperf"
    260       {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
    261 #line 63 "cssproperties.gperf"
    262       {"height", CSS_PROP_HEIGHT},
    263 #line 20 "cssproperties.gperf"
    264       {"border-spacing", CSS_PROP_BORDER_SPACING},
    265 #line 88 "cssproperties.gperf"
    266       {"min-height", CSS_PROP_MIN_HEIGHT},
    267 #line 167 "cssproperties.gperf"
    268       {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
    269 #line 65 "cssproperties.gperf"
    270       {"letter-spacing", CSS_PROP_LETTER_SPACING},
    271 #line 67 "cssproperties.gperf"
    272       {"line-height", CSS_PROP_LINE_HEIGHT},
    273 #line 72 "cssproperties.gperf"
    274       {"margin-right", CSS_PROP_MARGIN_RIGHT},
    275 #line 99 "cssproperties.gperf"
    276       {"padding-right", CSS_PROP_PADDING_RIGHT},
    277 #line 18 "cssproperties.gperf"
    278       {"-khtml-binding", CSS_PROP__KHTML_BINDING},
    279 #line 160 "cssproperties.gperf"
    280       {"outline", CSS_PROP_OUTLINE},
    281 #line 140 "cssproperties.gperf"
    282       {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
    283 #line 90 "cssproperties.gperf"
    284       {"-khtml-nbsp-mode", CSS_PROP__KHTML_NBSP_MODE},
    285 #line 136 "cssproperties.gperf"
    286       {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
    287 #line 93 "cssproperties.gperf"
    288       {"outline-color", CSS_PROP_OUTLINE_COLOR},
    289 #line 75 "cssproperties.gperf"
    290       {"-khtml-line-break", CSS_PROP__KHTML_LINE_BREAK},
    291 #line 165 "cssproperties.gperf"
    292       {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
    293 #line 134 "cssproperties.gperf"
    294       {"-apple-dashboard-region", CSS_PROP__APPLE_DASHBOARD_REGION},
    295 #line 51 "cssproperties.gperf"
    296       {"cursor", CSS_PROP_CURSOR},
    297 #line 49 "cssproperties.gperf"
    298       {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
    299 #line 106 "cssproperties.gperf"
    300       {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
    301 #line 79 "cssproperties.gperf"
    302       {"-khtml-margin-start", CSS_PROP__KHTML_MARGIN_START},
    303 #line 102 "cssproperties.gperf"
    304       {"-khtml-padding-start", CSS_PROP__KHTML_PADDING_START},
    305 #line 76 "cssproperties.gperf"
     269      {"text-underline-style", CSS_PROP_TEXT_UNDERLINE_STYLE},
    306270      {"-khtml-margin-collapse", CSS_PROP__KHTML_MARGIN_COLLAPSE},
    307 #line 77 "cssproperties.gperf"
     271      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
     272      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
     273      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
     274      {"text-line-through-style", CSS_PROP_TEXT_LINE_THROUGH_STYLE},
     275      {"font-style", CSS_PROP_FONT_STYLE},
     276      {"font-weight", CSS_PROP_FONT_WEIGHT},
     277      {"max-width", CSS_PROP_MAX_WIDTH},
     278      {"white-space", CSS_PROP_WHITE_SPACE},
     279      {"text-overline-width", CSS_PROP_TEXT_OVERLINE_WIDTH},
     280      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
     281      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
     282      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
     283      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
     284      {"text-overline-style", CSS_PROP_TEXT_OVERLINE_STYLE},
     285      {"word-spacing", CSS_PROP_WORD_SPACING},
     286      {"overflow", CSS_PROP_OVERFLOW},
     287      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
     288      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
    308289      {"-khtml-margin-top-collapse", CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE},
    309 #line 50 "cssproperties.gperf"
    310       {"counter-reset", CSS_PROP_COUNTER_RESET},
    311 #line 78 "cssproperties.gperf"
     290      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
     291      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
     292      {"empty-cells", CSS_PROP_EMPTY_CELLS},
    312293      {"-khtml-margin-bottom-collapse", CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE},
    313 #line 148 "cssproperties.gperf"
    314       {"background", CSS_PROP_BACKGROUND},
    315 #line 114 "cssproperties.gperf"
    316       {"text-indent", CSS_PROP_TEXT_INDENT},
    317 #line 113 "cssproperties.gperf"
    318       {"text-decoration", CSS_PROP_TEXT_DECORATION},
    319 #line 11 "cssproperties.gperf"
    320       {"background-color", CSS_PROP_BACKGROUND_COLOR},
    321 #line 147 "cssproperties.gperf"
    322       {"z-index", CSS_PROP_Z_INDEX},
    323 #line 157 "cssproperties.gperf"
    324       {"font", CSS_PROP_FONT},
    325 #line 55 "cssproperties.gperf"
    326       {"float", CSS_PROP_FLOAT},
    327 #line 64 "cssproperties.gperf"
    328       {"left", CSS_PROP_LEFT},
    329 #line 164 "cssproperties.gperf"
    330       {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
    331 #line 13 "cssproperties.gperf"
    332       {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
    333 #line 112 "cssproperties.gperf"
    334       {"text-align", CSS_PROP_TEXT_ALIGN},
    335 #line 108 "cssproperties.gperf"
    336       {"quotes", CSS_PROP_QUOTES},
    337 #line 155 "cssproperties.gperf"
    338       {"border-left", CSS_PROP_BORDER_LEFT},
    339 #line 21 "cssproperties.gperf"
    340       {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
    341 #line 14 "cssproperties.gperf"
    342       {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
    343 #line 26 "cssproperties.gperf"
    344       {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
    345 #line 15 "cssproperties.gperf"
    346       {"background-position", CSS_PROP_BACKGROUND_POSITION},
    347 #line 12 "cssproperties.gperf"
    348       {"background-image", CSS_PROP_BACKGROUND_IMAGE},
    349 #line 22 "cssproperties.gperf"
    350       {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
    351 #line 42 "cssproperties.gperf"
    352       {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
    353 #line 37 "cssproperties.gperf"
    354       {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
    355 #line 74 "cssproperties.gperf"
    356       {"margin-left", CSS_PROP_MARGIN_LEFT},
    357 #line 101 "cssproperties.gperf"
    358       {"padding-left", CSS_PROP_PADDING_LEFT},
    359 #line 121 "cssproperties.gperf"
    360       {"text-overline", CSS_PROP_TEXT_OVERLINE},
    361 #line 80 "cssproperties.gperf"
    362       {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
    363 #line 86 "cssproperties.gperf"
    364       {"max-height", CSS_PROP_MAX_HEIGHT},
    365 #line 137 "cssproperties.gperf"
    366       {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
    367 #line 122 "cssproperties.gperf"
    368       {"text-overline-color", CSS_PROP_TEXT_OVERLINE_COLOR},
    369 #line 162 "cssproperties.gperf"
    370       {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
    371 #line 61 "cssproperties.gperf"
    372       {"font-variant", CSS_PROP_FONT_VARIANT},
    373 #line 123 "cssproperties.gperf"
    374       {"text-overline-mode", CSS_PROP_TEXT_OVERLINE_MODE},
    375 #line 57 "cssproperties.gperf"
    376       {"font-size", CSS_PROP_FONT_SIZE},
    377 #line 43 "cssproperties.gperf"
    378       {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
    379 #line 36 "cssproperties.gperf"
    380       {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
    381 #line 59 "cssproperties.gperf"
    382       {"font-stretch", CSS_PROP_FONT_STRETCH},
    383 #line 139 "cssproperties.gperf"
    384       {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
    385 #line 81 "cssproperties.gperf"
    386       {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
    387 #line 40 "cssproperties.gperf"
    388       {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
    389 #line 82 "cssproperties.gperf"
    390       {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
    391 #line 83 "cssproperties.gperf"
    392       {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
    393 #line 128 "cssproperties.gperf"
    394       {"text-underline", CSS_PROP_TEXT_UNDERLINE},
    395 #line 129 "cssproperties.gperf"
    396       {"text-underline-color", CSS_PROP_TEXT_UNDERLINE_COLOR},
    397 #line 104 "cssproperties.gperf"
    398       {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
    399 #line 91 "cssproperties.gperf"
    400       {"opacity", CSS_PROP_OPACITY},
    401 #line 130 "cssproperties.gperf"
    402       {"text-underline-mode", CSS_PROP_TEXT_UNDERLINE_MODE},
    403 #line 84 "cssproperties.gperf"
    404       {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
    405 #line 105 "cssproperties.gperf"
    406       {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
    407 #line 144 "cssproperties.gperf"
    408       {"width", CSS_PROP_WIDTH},
    409 #line 89 "cssproperties.gperf"
    410       {"min-width", CSS_PROP_MIN_WIDTH},
    411 #line 156 "cssproperties.gperf"
    412       {"border-width", CSS_PROP_BORDER_WIDTH},
    413 #line 31 "cssproperties.gperf"
    414       {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
    415 #line 53 "cssproperties.gperf"
    416       {"display", CSS_PROP_DISPLAY},
    417 #line 33 "cssproperties.gperf"
    418       {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
    419 #line 58 "cssproperties.gperf"
    420       {"-khtml-font-size-delta", CSS_PROP__KHTML_FONT_SIZE_DELTA},
    421 #line 168 "cssproperties.gperf"
    422       {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
    423 #line 54 "cssproperties.gperf"
    424       {"empty-cells", CSS_PROP_EMPTY_CELLS},
    425 #line 151 "cssproperties.gperf"
    426       {"border-style", CSS_PROP_BORDER_STYLE},
    427 #line 27 "cssproperties.gperf"
    428       {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
    429 #line 115 "cssproperties.gperf"
    430       {"text-line-through", CSS_PROP_TEXT_LINE_THROUGH},
    431 #line 29 "cssproperties.gperf"
    432       {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
    433 #line 142 "cssproperties.gperf"
    434       {"white-space", CSS_PROP_WHITE_SPACE},
    435 #line 146 "cssproperties.gperf"
    436       {"word-spacing", CSS_PROP_WORD_SPACING},
    437 #line 116 "cssproperties.gperf"
    438       {"text-line-through-color", CSS_PROP_TEXT_LINE_THROUGH_COLOR},
    439 #line 41 "cssproperties.gperf"
    440       {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
    441 #line 117 "cssproperties.gperf"
    442       {"text-line-through-mode", CSS_PROP_TEXT_LINE_THROUGH_MODE},
    443 #line 158 "cssproperties.gperf"
    444       {"list-style", CSS_PROP_LIST_STYLE},
    445 #line 16 "cssproperties.gperf"
    446       {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
    447 #line 32 "cssproperties.gperf"
    448       {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
    449 #line 141 "cssproperties.gperf"
    450       {"visibility", CSS_PROP_VISIBILITY},
    451 #line 133 "cssproperties.gperf"
    452       {"-apple-text-size-adjust", CSS_PROP__APPLE_TEXT_SIZE_ADJUST},
    453 #line 127 "cssproperties.gperf"
    454       {"text-transform", CSS_PROP_TEXT_TRANSFORM},
    455 #line 163 "cssproperties.gperf"
    456       {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
    457 #line 111 "cssproperties.gperf"
    458       {"table-layout", CSS_PROP_TABLE_LAYOUT},
    459 #line 28 "cssproperties.gperf"
    460       {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
    461 #line 96 "cssproperties.gperf"
    462       {"outline-width", CSS_PROP_OUTLINE_WIDTH},
    463 #line 69 "cssproperties.gperf"
    464       {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
    465 #line 68 "cssproperties.gperf"
    466       {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
    467 #line 166 "cssproperties.gperf"
    468       {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
    469 #line 95 "cssproperties.gperf"
    470       {"outline-style", CSS_PROP_OUTLINE_STYLE},
    471 #line 87 "cssproperties.gperf"
    472       {"max-width", CSS_PROP_MAX_WIDTH},
    473 #line 126 "cssproperties.gperf"
    474       {"text-shadow", CSS_PROP_TEXT_SHADOW},
    475 #line 17 "cssproperties.gperf"
    476294      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
    477 #line 34 "cssproperties.gperf"
    478       {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
    479 #line 60 "cssproperties.gperf"
    480       {"font-style", CSS_PROP_FONT_STYLE},
    481 #line 94 "cssproperties.gperf"
    482       {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
    483 #line 97 "cssproperties.gperf"
    484       {"overflow", CSS_PROP_OVERFLOW},
    485 #line 62 "cssproperties.gperf"
    486       {"font-weight", CSS_PROP_FONT_WEIGHT},
    487 #line 30 "cssproperties.gperf"
    488       {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
    489 #line 125 "cssproperties.gperf"
    490       {"text-overline-width", CSS_PROP_TEXT_OVERLINE_WIDTH},
    491 #line 38 "cssproperties.gperf"
    492       {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
    493 #line 145 "cssproperties.gperf"
     295      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
     296      {"widows", CSS_PROP_WIDOWS},
     297      {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
    494298      {"word-wrap", CSS_PROP_WORD_WRAP},
    495 #line 124 "cssproperties.gperf"
    496       {"text-overline-style", CSS_PROP_TEXT_OVERLINE_STYLE},
    497 #line 85 "cssproperties.gperf"
    498       {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
    499 #line 132 "cssproperties.gperf"
    500       {"text-underline-width", CSS_PROP_TEXT_UNDERLINE_WIDTH},
    501 #line 143 "cssproperties.gperf"
    502       {"widows", CSS_PROP_WIDOWS},
    503 #line 131 "cssproperties.gperf"
    504       {"text-underline-style", CSS_PROP_TEXT_UNDERLINE_STYLE},
    505 #line 119 "cssproperties.gperf"
    506       {"text-line-through-width", CSS_PROP_TEXT_LINE_THROUGH_WIDTH},
    507 #line 56 "cssproperties.gperf"
    508299      {"font-family", CSS_PROP_FONT_FAMILY},
    509 #line 70 "cssproperties.gperf"
    510       {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
    511 #line 138 "cssproperties.gperf"
    512300      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
    513 #line 118 "cssproperties.gperf"
    514       {"text-line-through-style", CSS_PROP_TEXT_LINE_THROUGH_STYLE},
    515 #line 120 "cssproperties.gperf"
    516       {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
    517 #line 39 "cssproperties.gperf"
    518       {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP}
     301      {"-khtml-text-decorations-in-effect", CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT},
     302      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE}
    519303    };
    520304
    521305  static const short lookup[] =
    522306    {
    523        -1,  -1,  -1,   0,   1,   2,   3,  -1,  -1,  -1,
    524         4,   5,   6,  -1,   7,   8,  -1,   9,  10,  -1,
    525        -1,  11,  -1,  -1,  12,  -1,  -1,  13,  -1,  -1,
    526        -1,  14,  15,  16,  17,  18,  19,  -1,  20,  21,
    527        -1,  -1,  22,  -1,  -1,  23,  -1,  24,  -1,  25,
    528        26,  -1,  -1,  -1,  -1,  -1,  -1,  27,  -1,  -1,
    529        -1,  -1,  -1,  28,  -1,  -1,  29,  -1,  -1,  30,
    530        31,  32,  -1,  -1,  33,  -1,  34,  35,  36,  37,
    531        -1,  -1,  38,  -1,  39,  -1,  40,  41,  42,  -1,
    532        -1,  -1,  43,  44,  -1,  -1,  -1,  -1,  45,  -1,
    533        -1,  46,  47,  -1,  -1,  -1,  -1,  48,  -1,  49,
    534        50,  -1,  -1,  -1,  -1,  -1,  -1,  51,  -1,  -1,
    535        -1,  52,  -1,  53,  54,  -1,  -1,  -1,  -1,  -1,
    536        55,  56,  -1,  -1,  -1,  57,  58,  59,  -1,  60,
    537        61,  -1,  -1,  -1,  62,  63,  -1,  64,  -1,  -1,
    538        65,  66,  -1,  -1,  -1,  -1,  67,  68,  -1,  -1,
    539        -1,  69,  70,  -1,  71,  -1,  72,  -1,  -1,  -1,
    540        73,  -1,  74,  -1,  -1,  75,  76,  77,  78,  79,
    541        80,  81,  -1,  -1,  82,  83,  -1,  84,  85,  86,
    542        87,  88,  89,  90,  91,  -1,  92,  -1,  -1,  93,
    543        94,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  95,
    544        -1,  -1,  -1,  -1,  -1,  96,  97,  98,  -1,  99,
    545       100,  -1, 101,  -1,  -1, 102,  -1,  -1,  -1, 103,
    546        -1,  -1,  -1,  -1,  -1,  -1,  -1, 104,  -1,  -1,
    547        -1, 105, 106,  -1, 107,  -1,  -1, 108,  -1,  -1,
    548        -1, 109,  -1,  -1,  -1,  -1, 110, 111,  -1,  -1,
    549        -1, 112, 113,  -1, 114,  -1, 115, 116, 117, 118,
    550        -1,  -1, 119,  -1,  -1, 120, 121,  -1,  -1,  -1,
    551        -1,  -1,  -1, 122,  -1, 123,  -1,  -1, 124, 125,
    552        -1,  -1, 126,  -1,  -1,  -1,  -1, 127,  -1,  -1,
    553        -1,  -1,  -1, 128,  -1,  -1,  -1,  -1, 129, 130,
    554        -1, 131,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    555        -1, 132,  -1,  -1,  -1,  -1,  -1,  -1, 133,  -1,
    556        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 134,
    557        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    558        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    559        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    560        -1, 135,  -1,  -1,  -1,  -1, 136,  -1,  -1,  -1,
    561        -1,  -1, 137,  -1,  -1, 138,  -1,  -1,  -1, 139,
    562        -1,  -1,  -1, 140,  -1,  -1, 141,  -1,  -1,  -1,
    563        -1,  -1, 142,  -1, 143,  -1,  -1,  -1,  -1,  -1,
    564        -1,  -1,  -1,  -1,  -1, 144,  -1,  -1,  -1, 145,
    565        -1,  -1,  -1,  -1, 146, 147,  -1,  -1,  -1,  -1,
    566        -1,  -1,  -1,  -1,  -1, 148,  -1,  -1,  -1,  -1,
    567        -1, 149,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    568        -1,  -1,  -1,  -1,  -1, 150,  -1,  -1,  -1,  -1,
    569        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    570        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    571        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 151,  -1,
    572        -1, 152,  -1,  -1,  -1, 153,  -1,  -1,  -1,  -1,
    573        -1,  -1,  -1, 154,  -1,  -1,  -1,  -1, 155,  -1,
    574        -1,  -1,  -1, 156,  -1,  -1, 157
     307       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     308       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     309       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     310       -1,  -1,  -1,  -1,  -1,  -1,   0,   1,  -1,  -1,
     311       -1,  -1,  -1,  -1,  -1,   2,   3,  -1,  -1,  -1,
     312       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     313       -1,  -1,  -1,  -1,   4,  -1,   5,  -1,  -1,  -1,
     314       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     315       -1,   6,   7,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     316       -1,  -1,  -1,  -1,  -1,   8,  -1,  -1,  -1,  -1,
     317        9,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     318       -1,  -1,  -1,  -1,  10,  -1,  -1,  -1,  -1,  -1,
     319       -1,  -1,  -1,  11,  -1,  -1,  -1,  12,  -1,  -1,
     320       -1,  -1,  13,  14,  -1,  -1,  -1,  -1,  -1,  -1,
     321       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     322       -1,  -1,  -1,  -1,  -1,  -1,  -1,  15,  -1,  -1,
     323       16,  17,  18,  -1,  -1,  -1,  19,  -1,  -1,  20,
     324       -1,  21,  -1,  -1,  -1,  -1,  -1,  -1,  22,  -1,
     325       -1,  -1,  -1,  23,  24,  -1,  -1,  25,  -1,  -1,
     326       -1,  -1,  -1,  26,  -1,  27,  -1,  28,  -1,  -1,
     327       29,  30,  -1,  -1,  -1,  -1,  -1,  -1,  31,  32,
     328       -1,  -1,  33,  -1,  34,  35,  -1,  -1,  -1,  -1,
     329       -1,  -1,  -1,  -1,  36,  -1,  -1,  -1,  -1,  -1,
     330       37,  -1,  -1,  38,  -1,  -1,  -1,  -1,  -1,  -1,
     331       -1,  -1,  -1,  -1,  -1,  -1,  39,  40,  -1,  -1,
     332       41,  -1,  42,  -1,  -1,  -1,  43,  -1,  -1,  -1,
     333       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     334       -1,  -1,  -1,  -1,  44,  -1,  -1,  -1,  45,  -1,
     335       46,  -1,  -1,  -1,  -1,  -1,  47,  -1,  -1,  48,
     336       -1,  -1,  49,  -1,  50,  -1,  -1,  -1,  -1,  -1,
     337       -1,  -1,  -1,  -1,  51,  -1,  -1,  52,  53,  -1,
     338       54,  55,  -1,  -1,  -1,  56,  -1,  -1,  -1,  -1,
     339       -1,  -1,  -1,  -1,  57,  58,  59,  -1,  60,  -1,
     340       -1,  -1,  -1,  -1,  61,  -1,  -1,  -1,  -1,  62,
     341       -1,  -1,  63,  -1,  -1,  -1,  -1,  64,  -1,  -1,
     342       -1,  -1,  65,  -1,  -1,  -1,  -1,  -1,  -1,  66,
     343       -1,  -1,  67,  -1,  68,  -1,  -1,  -1,  -1,  -1,
     344       69,  -1,  70,  71,  72,  -1,  -1,  -1,  -1,  -1,
     345       -1,  -1,  73,  74,  -1,  -1,  -1,  -1,  -1,  -1,
     346       -1,  75,  76,  -1,  -1,  -1,  77,  78,  -1,  -1,
     347       -1,  -1,  -1,  -1,  -1,  -1,  79,  -1,  -1,  -1,
     348       80,  81,  -1,  82,  -1,  83,  84,  -1,  85,  -1,
     349       -1,  -1,  -1,  -1,  86,  -1,  -1,  -1,  -1,  87,
     350       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     351       88,  -1,  -1,  -1,  -1,  -1,  -1,  89,  90,  -1,
     352       -1,  91,  -1,  -1,  92,  -1,  -1,  -1,  -1,  -1,
     353       -1,  -1,  93,  -1,  -1,  -1,  -1,  94,  -1,  -1,
     354       -1,  -1,  -1,  -1,  -1,  -1,  -1,  95,  -1,  -1,
     355       -1,  -1,  -1,  -1,  -1,  96,  -1,  97,  98,  -1,
     356       -1,  99,  -1, 100,  -1,  -1,  -1,  -1,  -1,  -1,
     357       -1,  -1,  -1,  -1, 101, 102,  -1,  -1,  -1,  -1,
     358       -1,  -1,  -1,  -1,  -1, 103,  -1,  -1,  -1,  -1,
     359       -1,  -1,  -1, 104,  -1,  -1, 105,  -1,  -1,  -1,
     360       -1,  -1,  -1, 106, 107,  -1,  -1,  -1,  -1,  -1,
     361       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 108,
     362       -1, 109,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     363       -1,  -1,  -1,  -1, 110,  -1,  -1,  -1,  -1,  -1,
     364      111, 112, 113,  -1,  -1,  -1,  -1, 114,  -1,  -1,
     365       -1,  -1,  -1,  -1,  -1, 115,  -1,  -1,  -1,  -1,
     366       -1,  -1,  -1,  -1,  -1, 116, 117,  -1,  -1,  -1,
     367       -1,  -1,  -1,  -1, 118,  -1,  -1,  -1,  -1,  -1,
     368      119, 120,  -1,  -1,  -1,  -1,  -1, 121,  -1, 122,
     369       -1,  -1,  -1, 123,  -1,  -1,  -1, 124,  -1,  -1,
     370       -1,  -1,  -1,  -1,  -1, 125,  -1,  -1,  -1,  -1,
     371       -1,  -1, 126,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     372       -1,  -1,  -1,  -1,  -1,  -1,  -1, 127,  -1, 128,
     373      129,  -1,  -1, 130,  -1,  -1,  -1,  -1,  -1,  -1,
     374       -1,  -1,  -1,  -1,  -1, 131, 132,  -1,  -1, 133,
     375       -1, 134,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 135,
     376       -1, 136,  -1,  -1,  -1,  -1, 137, 138,  -1, 139,
     377       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     378       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     379       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 140,
     380       -1,  -1,  -1,  -1,  -1,  -1,  -1, 141,  -1,  -1,
     381       -1,  -1,  -1, 142,  -1,  -1,  -1, 143,  -1,  -1,
     382       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     383      144,  -1,  -1,  -1,  -1,  -1, 145,  -1,  -1,  -1,
     384       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     385       -1, 146,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     386      147,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     387       -1, 148,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     388       -1,  -1,  -1,  -1, 149,  -1,  -1,  -1,  -1,  -1,
     389       -1, 150,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     390       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     391       -1, 151,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     392       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     393       -1,  -1,  -1,  -1,  -1,  -1, 152,  -1,  -1,  -1,
     394       -1,  -1,  -1, 153,  -1,  -1,  -1,  -1,  -1,  -1,
     395       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     396       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     397       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     398       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     399       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     400       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     401       -1,  -1,  -1,  -1, 154,  -1,  -1,  -1,  -1,  -1,
     402       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     403       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     404       -1, 155,  -1,  -1,  -1,  -1,  -1,  -1, 156,  -1,
     405       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     406       -1,  -1,  -1, 157,  -1,  -1,  -1,  -1,  -1,  -1,
     407       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     408       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
     409       -1,  -1,  -1,  -1,  -1, 158
    575410    };
    576411
     
    594429  return 0;
    595430}
    596 #line 169 "cssproperties.gperf"
    597 
    598431static const char * const propertyList[] = {
    599432"",
     
    756589"scrollbar-track-color",
    757590"scrollbar-arrow-color",
     591"-khtml-text-decorations-in-effect",
    758592    0
    759593};
  • trunk/WebCore/khtml/css/cssproperties.h

    r8382 r8466  
    166166#define CSS_PROP_SCROLLBAR_TRACK_COLOR 157
    167167#define CSS_PROP_SCROLLBAR_ARROW_COLOR 158
     168#define CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT 159
    168169
    169170#define CSS_PROP_MAX CSS_PROP_Z_INDEX
    170 #define CSS_PROP_TOTAL 159
     171#define CSS_PROP_TOTAL 160
    171172#endif
    172173
  • trunk/WebCore/khtml/css/cssproperties.in

    r8382 r8466  
    171171scrollbar-track-color
    172172scrollbar-arrow-color
     173-khtml-text-decorations-in-effect
  • trunk/WebCore/khtml/css/cssvalues.c

    r8381 r8466  
    1 /* ANSI-C code produced by gperf version 3.0.1 */
     1/* ANSI-C code produced by gperf version 2.7.2 */
    22/* Command-line: gperf -L ANSI-C -E -C -n -o -t -k '*' -NfindValue -Hhash_val -Wwordlist_value -D cssvalues.gperf  */
    3 
    4 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
    5       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
    6       && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
    7       && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
    8       && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
    9       && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
    10       && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
    11       && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
    12       && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
    13       && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
    14       && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
    15       && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
    16       && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
    17       && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
    18       && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
    19       && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
    20       && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
    21       && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
    22       && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
    23       && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
    24       && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
    25       && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
    26       && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
    27 /* The character set is not based on ISO-646.  */
    28 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
    29 #endif
    30 
    31 #line 1 "cssvalues.gperf"
    32 
    333/* This file is automatically generated from cssvalues.in by makevalues, do not edit */
    344/* Copyright 1999 W. Bastian */
    355#include "cssvalues.h"
    36 #line 6 "cssvalues.gperf"
    376struct css_value {
    387    const char *name;
    398    int id;
    409};
    41 /* maximum key range = 3201, duplicates = 0 */
     10/* maximum key range = 2888, duplicates = 1 */
    4211
    4312#ifdef __GNUC__
     
    5322  static const unsigned short asso_values[] =
    5423    {
    55       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    56       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    57       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    58       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    59       3201, 3201, 3201, 3201, 3201,  200,  490, 3201,    0,    0,
    60        115,  110,   95,   70,   65,   60,   25,   20, 3201, 3201,
    61       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    62       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    63       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    64       3201, 3201, 3201, 3201, 3201, 3201, 3201,   60,  265,    5,
    65        360,    0,   68,  475,  460,    5,  440,  160,   20,   95,
    66         10,   35,  150,  153,    5,   20,    0,   25,    8,    8,
    67          3,   68,    5, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    68       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    69       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    70       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    71       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    72       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    73       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    74       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    75       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    76       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    77       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    78       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    79       3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201,
    80       3201, 3201, 3201, 3201, 3201, 3201, 3201
     24      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     25      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     26      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     27      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     28      2888, 2888, 2888, 2888, 2888,   15, 2888, 2888,    0,    5,
     29        10,   15,   20,   25,   30,   35,   40,    0, 2888, 2888,
     30      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     31      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     32      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     33      2888, 2888, 2888, 2888, 2888, 2888, 2888,    0,   28,    3,
     34       400,  300,  160,  463,   56,   35,   10,  425,    0,   13,
     35        55,    5,    8,   90,   65,   10,    0,  465,  258,  405,
     36       450,   80,  250, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     37      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     38      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     39      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     40      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     41      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     42      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     43      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     44      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     45      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     46      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     47      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     48      2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
     49      2888, 2888, 2888, 2888, 2888, 2888
    8150    };
    8251  register int hval = 0;
     
    8554    {
    8655      default:
     56      case 22:
    8757        hval += asso_values[(unsigned char)str[21]];
    88       /*FALLTHROUGH*/
    8958      case 21:
    9059        hval += asso_values[(unsigned char)str[20]];
    91       /*FALLTHROUGH*/
    9260      case 20:
    9361        hval += asso_values[(unsigned char)str[19]];
    94       /*FALLTHROUGH*/
    9562      case 19:
    9663        hval += asso_values[(unsigned char)str[18]];
    97       /*FALLTHROUGH*/
    9864      case 18:
    9965        hval += asso_values[(unsigned char)str[17]];
    100       /*FALLTHROUGH*/
    10166      case 17:
    10267        hval += asso_values[(unsigned char)str[16]];
    103       /*FALLTHROUGH*/
    10468      case 16:
    10569        hval += asso_values[(unsigned char)str[15]];
    106       /*FALLTHROUGH*/
    10770      case 15:
    10871        hval += asso_values[(unsigned char)str[14]];
    109       /*FALLTHROUGH*/
    11072      case 14:
    11173        hval += asso_values[(unsigned char)str[13]];
    112       /*FALLTHROUGH*/
    11374      case 13:
    11475        hval += asso_values[(unsigned char)str[12]];
    115       /*FALLTHROUGH*/
    11676      case 12:
    11777        hval += asso_values[(unsigned char)str[11]];
    118       /*FALLTHROUGH*/
    11978      case 11:
    12079        hval += asso_values[(unsigned char)str[10]];
    121       /*FALLTHROUGH*/
    12280      case 10:
    12381        hval += asso_values[(unsigned char)str[9]];
    124       /*FALLTHROUGH*/
    12582      case 9:
    12683        hval += asso_values[(unsigned char)str[8]];
    127       /*FALLTHROUGH*/
    12884      case 8:
    12985        hval += asso_values[(unsigned char)str[7]];
    130       /*FALLTHROUGH*/
    13186      case 7:
    13287        hval += asso_values[(unsigned char)str[6]];
    133       /*FALLTHROUGH*/
    13488      case 6:
    13589        hval += asso_values[(unsigned char)str[5]];
    136       /*FALLTHROUGH*/
    13790      case 5:
    13891        hval += asso_values[(unsigned char)str[4]];
    139       /*FALLTHROUGH*/
    14092      case 4:
    14193        hval += asso_values[(unsigned char)str[3]];
    142       /*FALLTHROUGH*/
    14394      case 3:
    144         hval += asso_values[(unsigned char)str[2]+1];
    145       /*FALLTHROUGH*/
     95        hval += asso_values[(unsigned char)str[2]];
    14696      case 2:
    14797        hval += asso_values[(unsigned char)str[1]];
    148       /*FALLTHROUGH*/
    14998      case 1:
    15099        hval += asso_values[(unsigned char)str[0]];
     
    166115      MAX_WORD_LENGTH = 22,
    167116      MIN_HASH_VALUE = 0,
    168       MAX_HASH_VALUE = 3200
     117      MAX_HASH_VALUE = 2887
    169118    };
    170119
    171120  static const struct css_value wordlist_value[] =
    172121    {
    173 #line 36 "cssvalues.gperf"
     122      {"900", CSS_VAL_900},
    174123      {"100", CSS_VAL_100},
    175 #line 83 "cssvalues.gperf"
     124      {"200", CSS_VAL_200},
     125      {"top", CSS_VAL_TOP},
     126      {"300", CSS_VAL_300},
     127      {"400", CSS_VAL_400},
     128      {"small", CSS_VAL_SMALL},
     129      {"500", CSS_VAL_500},
     130      {"600", CSS_VAL_600},
     131      {"compact", CSS_VAL_COMPACT},
     132      {"700", CSS_VAL_700},
     133      {"800", CSS_VAL_800},
     134      {"clip", CSS_VAL_CLIP},
     135      {"static", CSS_VAL_STATIC},
     136      {"bottom", CSS_VAL_BOTTOM},
     137      {"small-caps", CSS_VAL_SMALL_CAPS},
     138      {"ltr", CSS_VAL_LTR},
     139      {"rtl", CSS_VAL_RTL},
     140      {"italic", CSS_VAL_ITALIC},
     141      {"start", CSS_VAL_START},
     142      {"crop", CSS_VAL_CROP},
     143      {"scroll", CSS_VAL_SCROLL},
     144      {"both", CSS_VAL_BOTH},
     145      {"cross", CSS_VAL_CROSS},
     146      {"icon", CSS_VAL_ICON},
     147      {"caption", CSS_VAL_CAPTION},
     148      {"normal", CSS_VAL_NORMAL},
     149      {"maroon", CSS_VAL_MAROON},
     150      {"small-caption", CSS_VAL_SMALL_CAPTION},
     151      {"thin", CSS_VAL_THIN},
     152      {"initial", CSS_VAL_INITIAL},
     153      {"fast", CSS_VAL_FAST},
     154      {"scrollbar", CSS_VAL_SCROLLBAR},
     155      {"portrait", CSS_VAL_PORTRAIT},
     156      {"crosshair", CSS_VAL_CROSSHAIR},
     157      {"intrinsic", CSS_VAL_INTRINSIC},
     158      {"teal", CSS_VAL_TEAL},
     159      {"fantasy", CSS_VAL_FANTASY},
     160      {"space", CSS_VAL_SPACE},
     161      {"collapse", CSS_VAL_COLLAPSE},
     162      {"table", CSS_VAL_TABLE},
     163      {"lime", CSS_VAL_LIME},
     164      {"help", CSS_VAL_HELP},
     165      {"pre", CSS_VAL_PRE},
     166      {"smaller", CSS_VAL_SMALLER},
     167      {"navy", CSS_VAL_NAVY},
     168      {"ellipsis", CSS_VAL_ELLIPSIS},
     169      {"monospace", CSS_VAL_MONOSPACE},
     170      {"inset", CSS_VAL_INSET},
     171      {"circle", CSS_VAL_CIRCLE},
     172      {"list-item", CSS_VAL_LIST_ITEM},
     173      {"min-intrinsic", CSS_VAL_MIN_INTRINSIC},
     174      {"none", CSS_VAL_NONE},
     175      {"slow", CSS_VAL_SLOW},
     176      {"bold", CSS_VAL_BOLD},
     177      {"stretch", CSS_VAL_STRETCH},
     178      {"wait", CSS_VAL_WAIT},
     179      {"disc", CSS_VAL_DISC},
     180      {"table-caption", CSS_VAL_TABLE_CAPTION},
     181      {"solid", CSS_VAL_SOLID},
     182      {"black", CSS_VAL_BLACK},
     183      {"left", CSS_VAL_LEFT},
     184      {"block", CSS_VAL_BLOCK},
     185      {"pointer", CSS_VAL_POINTER},
     186      {"auto", CSS_VAL_AUTO},
     187      {"horizontal", CSS_VAL_HORIZONTAL},
     188      {"up", CSS_VAL_UP},
     189      {"show", CSS_VAL_SHOW},
     190      {"inline", CSS_VAL_INLINE},
     191      {"x-small", CSS_VAL_X_SMALL},
     192      {"always", CSS_VAL_ALWAYS},
     193      {"mix", CSS_VAL_MIX},
     194      {"sub", CSS_VAL_SUB},
     195      {"hand", CSS_VAL_HAND},
     196      {"thick", CSS_VAL_THICK},
     197      {"armenian", CSS_VAL_ARMENIAN},
     198      {"nowrap", CSS_VAL_NOWRAP},
     199      {"blink", CSS_VAL_BLINK},
     200      {"inherit", CSS_VAL_INHERIT},
     201      {"aqua", CSS_VAL_AQUA},
     202      {"transparent", CSS_VAL_TRANSPARENT},
     203      {"serif", CSS_VAL_SERIF},
     204      {"move", CSS_VAL_MOVE},
     205      {"above", CSS_VAL_ABOVE},
     206      {"status-bar", CSS_VAL_STATUS_BAR},
     207      {"olive", CSS_VAL_OLIVE},
     208      {"gray", CSS_VAL_GRAY},
     209      {"right", CSS_VAL_RIGHT},
     210      {"capitalize", CSS_VAL_CAPITALIZE},
     211      {"table-cell", CSS_VAL_TABLE_CELL},
     212      {"sans-serif", CSS_VAL_SANS_SERIF},
     213      {"vertical", CSS_VAL_VERTICAL},
     214      {"visible", CSS_VAL_VISIBLE},
     215      {"silver", CSS_VAL_SILVER},
     216      {"repeat", CSS_VAL_REPEAT},
     217      {"hiragana", CSS_VAL_HIRAGANA},
     218      {"infinite", CSS_VAL_INFINITE},
     219      {"separate", CSS_VAL_SEPARATE},
     220      {"run-in", CSS_VAL_RUN_IN},
     221      {"avoid", CSS_VAL_AVOID},
     222      {"activecaption", CSS_VAL_ACTIVECAPTION},
     223      {"overlay", CSS_VAL_OVERLAY},
     224      {"invert", CSS_VAL_INVERT},
     225      {"alternate", CSS_VAL_ALTERNATE},
     226      {"center", CSS_VAL_CENTER},
     227      {"baseline", CSS_VAL_BASELINE},
     228      {"fuchsia", CSS_VAL_FUCHSIA},
     229      {"below", CSS_VAL_BELOW},
     230      {"slide", CSS_VAL_SLIDE},
     231      {"no-repeat", CSS_VAL_NO_REPEAT},
     232      {"text", CSS_VAL_TEXT},
     233      {"decimal", CSS_VAL_DECIMAL},
     234      {"end", CSS_VAL_END},
     235      {"ahead", CSS_VAL_AHEAD},
     236      {"justify", CSS_VAL_JUSTIFY},
    176237      {"red", CSS_VAL_RED},
    177 #line 247 "cssvalues.gperf"
    178       {"end", CSS_VAL_END},
    179 #line 15 "cssvalues.gperf"
    180       {"inset", CSS_VAL_INSET},
    181 #line 55 "cssvalues.gperf"
     238      {"repeat-y", CSS_VAL_REPEAT_Y},
     239      {"lower", CSS_VAL_LOWER},
     240      {"landscape", CSS_VAL_LANDSCAPE},
     241      {"text-top", CSS_VAL_TEXT_TOP},
     242      {"outset", CSS_VAL_OUTSET},
     243      {"yellow", CSS_VAL_YELLOW},
     244      {"hide", CSS_VAL_HIDE},
     245      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
     246      {"blue", CSS_VAL_BLUE},
     247      {"white", CSS_VAL_WHITE},
     248      {"bolder", CSS_VAL_BOLDER},
     249      {"absolute", CSS_VAL_ABSOLUTE},
     250      {"text-bottom", CSS_VAL_TEXT_BOTTOM},
     251      {"table-row", CSS_VAL_TABLE_ROW},
     252      {"multiple", CSS_VAL_MULTIPLE},
     253      {"inline-table", CSS_VAL_INLINE_TABLE},
     254      {"large", CSS_VAL_LARGE},
     255      {"menu", CSS_VAL_MENU},
     256      {"inside", CSS_VAL_INSIDE},
     257      {"purple", CSS_VAL_PURPLE},
     258      {"super", CSS_VAL_SUPER},
     259      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
     260      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
     261      {"captiontext", CSS_VAL_CAPTIONTEXT},
     262      {"level", CSS_VAL_LEVEL},
     263      {"single", CSS_VAL_SINGLE},
     264      {"down", CSS_VAL_DOWN},
     265      {"loud", CSS_VAL_LOUD},
     266      {"lower-latin", CSS_VAL_LOWER_LATIN},
     267      {"table-column", CSS_VAL_TABLE_COLUMN},
     268      {"dot-dash", CSS_VAL_DOT_DASH},
     269      {"orange", CSS_VAL_ORANGE},
     270      {"larger", CSS_VAL_LARGER},
     271      {"katakana", CSS_VAL_KATAKANA},
     272      {"grey", CSS_VAL_GREY},
     273      {"discard", CSS_VAL_DISCARD},
     274      {"lighter", CSS_VAL_LIGHTER},
     275      {"read-only", CSS_VAL_READ_ONLY},
     276      {"oblique", CSS_VAL_OBLIQUE},
     277      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
     278      {"lower-roman", CSS_VAL_LOWER_ROMAN},
     279      {"square", CSS_VAL_SQUARE},
     280      {"xx-small", CSS_VAL_XX_SMALL},
     281      {"upper-latin", CSS_VAL_UPPER_LATIN},
     282      {"inline-block", CSS_VAL_INLINE_BLOCK},
     283      {"relative", CSS_VAL_RELATIVE},
     284      {"narrower", CSS_VAL_NARROWER},
     285      {"wave", CSS_VAL_WAVE},
     286      {"element", CSS_VAL_ELEMENT},
     287      {"block-axis", CSS_VAL_BLOCK_AXIS},
     288      {"higher", CSS_VAL_HIGHER},
     289      {"-khtml-left", CSS_VAL__KHTML_LEFT},
     290      {"s-resize", CSS_VAL_S_RESIZE},
     291      {"inline-axis", CSS_VAL_INLINE_AXIS},
     292      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
     293      {"upper-roman", CSS_VAL_UPPER_ROMAN},
     294      {"infotext", CSS_VAL_INFOTEXT},
     295      {"-khtml-box", CSS_VAL__KHTML_BOX},
     296      {"buttonface", CSS_VAL_BUTTONFACE},
     297      {"overline", CSS_VAL_OVERLINE},
     298      {"n-resize", CSS_VAL_N_RESIZE},
     299      {"-khtml-body", CSS_VAL__KHTML_BODY},
     300      {"-khtml-link", CSS_VAL__KHTML_LINK},
     301      {"embed", CSS_VAL_EMBED},
     302      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
     303      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
     304      {"lowercase", CSS_VAL_LOWERCASE},
     305      {"groove", CSS_VAL_GROOVE},
     306      {"continuous", CSS_VAL_CONTINUOUS},
     307      {"dotted", CSS_VAL_DOTTED},
     308      {"forwards", CSS_VAL_FORWARDS},
     309      {"cursive", CSS_VAL_CURSIVE},
     310      {"repeat-x", CSS_VAL_REPEAT_X},
     311      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
     312      {"middle", CSS_VAL_MIDDLE},
     313      {"hebrew", CSS_VAL_HEBREW},
     314      {"uppercase", CSS_VAL_UPPERCASE},
     315      {"highlight", CSS_VAL_HIGHLIGHT},
     316      {"dashed", CSS_VAL_DASHED},
     317      {"green", CSS_VAL_GREEN},
     318      {"close-quote", CSS_VAL_CLOSE_QUOTE},
     319      {"double", CSS_VAL_DOUBLE},
    182320      {"wider", CSS_VAL_WIDER},
    183 #line 44 "cssvalues.gperf"
    184       {"900", CSS_VAL_900},
    185 #line 43 "cssvalues.gperf"
    186       {"800", CSS_VAL_800},
    187 #line 220 "cssvalues.gperf"
    188       {"invert", CSS_VAL_INVERT},
    189 #line 11 "cssvalues.gperf"
    190       {"inherit", CSS_VAL_INHERIT},
    191 #line 77 "cssvalues.gperf"
    192       {"lime", CSS_VAL_LIME},
    193 #line 248 "cssvalues.gperf"
     321      {"unfurl", CSS_VAL_UNFURL},
     322      {"outside", CSS_VAL_OUTSIDE},
     323      {"medium", CSS_VAL_MEDIUM},
     324      {"marquee", CSS_VAL_MARQUEE},
     325      {"appworkspace", CSS_VAL_APPWORKSPACE},
     326      {"open-quote", CSS_VAL_OPEN_QUOTE},
     327      {"hidden", CSS_VAL_HIDDEN},
     328      {"-khtml-center", CSS_VAL__KHTML_CENTER},
     329      {"ridge", CSS_VAL_RIDGE},
     330      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
     331      {"-khtml-text", CSS_VAL__KHTML_TEXT},
     332      {"e-resize", CSS_VAL_E_RESIZE},
     333      {"se-resize", CSS_VAL_SE_RESIZE},
     334      {"x-large", CSS_VAL_X_LARGE},
    194335      {"reverse", CSS_VAL_REVERSE},
    195 #line 197 "cssvalues.gperf"
    196       {"ltr", CSS_VAL_LTR},
    197 #line 136 "cssvalues.gperf"
    198       {"center", CSS_VAL_CENTER},
    199 #line 222 "cssvalues.gperf"
    200       {"level", CSS_VAL_LEVEL},
    201 #line 126 "cssvalues.gperf"
    202       {"sub", CSS_VAL_SUB},
    203 #line 144 "cssvalues.gperf"
    204       {"circle", CSS_VAL_CIRCLE},
    205 #line 42 "cssvalues.gperf"
    206       {"700", CSS_VAL_700},
    207 #line 225 "cssvalues.gperf"
    208       {"lower", CSS_VAL_LOWER},
    209 #line 41 "cssvalues.gperf"
    210       {"600", CSS_VAL_600},
    211 #line 194 "cssvalues.gperf"
    212       {"text", CSS_VAL_TEXT},
    213 #line 40 "cssvalues.gperf"
    214       {"500", CSS_VAL_500},
    215 #line 243 "cssvalues.gperf"
     336      {"buttontext", CSS_VAL_BUTTONTEXT},
     337      {"window", CSS_VAL_WINDOW},
     338      {"dot-dot-dash", CSS_VAL_DOT_DOT_DASH},
     339      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
     340      {"default", CSS_VAL_DEFAULT},
     341      {"ne-resize", CSS_VAL_NE_RESIZE},
     342      {"backwards", CSS_VAL_BACKWARDS},
     343      {"fixed", CSS_VAL_FIXED},
     344      {"graytext", CSS_VAL_GRAYTEXT},
     345      {"w-resize", CSS_VAL_W_RESIZE},
     346      {"georgian", CSS_VAL_GEORGIAN},
     347      {"sw-resize", CSS_VAL_SW_RESIZE},
     348      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
     349      {"nw-resize", CSS_VAL_NW_RESIZE},
     350      {"activeborder", CSS_VAL_ACTIVEBORDER},
     351      {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
     352      {"line-through", CSS_VAL_LINE_THROUGH},
     353      {"condensed", CSS_VAL_CONDENSED},
     354      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
     355      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
     356      {"menutext", CSS_VAL_MENUTEXT},
     357      {"threedface", CSS_VAL_THREEDFACE},
     358      {"read-write", CSS_VAL_READ_WRITE},
     359      {"message-box", CSS_VAL_MESSAGE_BOX},
     360      {"skip-white-space", CSS_VAL_SKIP_WHITE_SPACE},
     361      {"-khtml-activelink", CSS_VAL__KHTML_ACTIVELINK},
     362      {"after-white-space", CSS_VAL_AFTER_WHITE_SPACE},
    216363      {"underline", CSS_VAL_UNDERLINE},
    217 #line 276 "cssvalues.gperf"
    218       {"wave", CSS_VAL_WAVE},
    219 #line 13 "cssvalues.gperf"
    220       {"none", CSS_VAL_NONE},
    221 #line 67 "cssvalues.gperf"
    222       {"cursive", CSS_VAL_CURSIVE},
    223 #line 169 "cssvalues.gperf"
    224       {"table", CSS_VAL_TABLE},
    225 #line 269 "cssvalues.gperf"
    226       {"intrinsic", CSS_VAL_INTRINSIC},
    227 #line 39 "cssvalues.gperf"
    228       {"400", CSS_VAL_400},
    229 #line 198 "cssvalues.gperf"
    230       {"rtl", CSS_VAL_RTL},
    231 #line 18 "cssvalues.gperf"
    232       {"outset", CSS_VAL_OUTSET},
    233 #line 38 "cssvalues.gperf"
    234       {"300", CSS_VAL_300},
    235 #line 65 "cssvalues.gperf"
    236       {"serif", CSS_VAL_SERIF},
    237 #line 37 "cssvalues.gperf"
    238       {"200", CSS_VAL_200},
    239 #line 250 "cssvalues.gperf"
    240       {"vertical", CSS_VAL_VERTICAL},
    241 #line 237 "cssvalues.gperf"
    242       {"scroll", CSS_VAL_SCROLL},
    243 #line 163 "cssvalues.gperf"
    244       {"inline", CSS_VAL_INLINE},
    245 #line 261 "cssvalues.gperf"
    246       {"fast", CSS_VAL_FAST},
    247 #line 84 "cssvalues.gperf"
    248       {"silver", CSS_VAL_SILVER},
    249 #line 185 "cssvalues.gperf"
    250       {"move", CSS_VAL_MOVE},
    251 #line 56 "cssvalues.gperf"
    252       {"narrower", CSS_VAL_NARROWER},
    253 #line 181 "cssvalues.gperf"
    254       {"auto", CSS_VAL_AUTO},
    255 #line 79 "cssvalues.gperf"
    256       {"navy", CSS_VAL_NAVY},
    257 #line 201 "cssvalues.gperf"
    258       {"lowercase", CSS_VAL_LOWERCASE},
    259 #line 233 "cssvalues.gperf"
    260       {"overline", CSS_VAL_OVERLINE},
    261 #line 25 "cssvalues.gperf"
    262       {"menu", CSS_VAL_MENU},
    263 #line 108 "cssvalues.gperf"
    264       {"menutext", CSS_VAL_MENUTEXT},
    265 #line 156 "cssvalues.gperf"
    266       {"armenian", CSS_VAL_ARMENIAN},
    267 #line 227 "cssvalues.gperf"
    268       {"mix", CSS_VAL_MIX},
    269 #line 24 "cssvalues.gperf"
    270       {"icon", CSS_VAL_ICON},
    271 #line 236 "cssvalues.gperf"
    272       {"relative", CSS_VAL_RELATIVE},
    273 #line 258 "cssvalues.gperf"
    274       {"up", CSS_VAL_UP},
    275 #line 264 "cssvalues.gperf"
    276       {"alternate", CSS_VAL_ALTERNATE},
    277 #line 130 "cssvalues.gperf"
    278       {"top", CSS_VAL_TOP},
    279 #line 268 "cssvalues.gperf"
    280       {"element", CSS_VAL_ELEMENT},
    281 #line 277 "cssvalues.gperf"
    282       {"continuous", CSS_VAL_CONTINUOUS},
    283 #line 260 "cssvalues.gperf"
    284       {"slow", CSS_VAL_SLOW},
    285 #line 214 "cssvalues.gperf"
    286       {"cross", CSS_VAL_CROSS},
    287 #line 127 "cssvalues.gperf"
    288       {"super", CSS_VAL_SUPER},
    289 #line 120 "cssvalues.gperf"
    290       {"repeat", CSS_VAL_REPEAT},
    291 #line 48 "cssvalues.gperf"
    292       {"medium", CSS_VAL_MEDIUM},
    293 #line 235 "cssvalues.gperf"
    294       {"pre", CSS_VAL_PRE},
    295 #line 87 "cssvalues.gperf"
    296       {"yellow", CSS_VAL_YELLOW},
    297 #line 206 "cssvalues.gperf"
    298       {"always", CSS_VAL_ALWAYS},
    299 #line 32 "cssvalues.gperf"
    300       {"normal", CSS_VAL_NORMAL},
    301 #line 145 "cssvalues.gperf"
    302       {"square", CSS_VAL_SQUARE},
    303 #line 186 "cssvalues.gperf"
    304       {"e-resize", CSS_VAL_E_RESIZE},
    305 #line 78 "cssvalues.gperf"
    306       {"maroon", CSS_VAL_MAROON},
    307 #line 193 "cssvalues.gperf"
    308       {"w-resize", CSS_VAL_W_RESIZE},
    309 #line 189 "cssvalues.gperf"
    310       {"n-resize", CSS_VAL_N_RESIZE},
    311 #line 230 "cssvalues.gperf"
    312       {"nowrap", CSS_VAL_NOWRAP},
    313 #line 232 "cssvalues.gperf"
    314       {"overlay", CSS_VAL_OVERLAY},
    315 #line 167 "cssvalues.gperf"
    316       {"compact", CSS_VAL_COMPACT},
    317 #line 23 "cssvalues.gperf"
    318       {"caption", CSS_VAL_CAPTION},
    319 #line 192 "cssvalues.gperf"
    320       {"s-resize", CSS_VAL_S_RESIZE},
    321 #line 99 "cssvalues.gperf"
    322       {"captiontext", CSS_VAL_CAPTIONTEXT},
    323 #line 234 "cssvalues.gperf"
    324       {"portrait", CSS_VAL_PORTRAIT},
    325 #line 166 "cssvalues.gperf"
    326       {"run-in", CSS_VAL_RUN_IN},
    327 #line 71 "cssvalues.gperf"
    328       {"aqua", CSS_VAL_AQUA},
    329 #line 85 "cssvalues.gperf"
    330       {"teal", CSS_VAL_TEAL},
    331 #line 246 "cssvalues.gperf"
    332       {"start", CSS_VAL_START},
    333 #line 73 "cssvalues.gperf"
    334       {"blue", CSS_VAL_BLUE},
    335 #line 240 "cssvalues.gperf"
    336       {"static", CSS_VAL_STATIC},
    337 #line 238 "cssvalues.gperf"
    338       {"separate", CSS_VAL_SEPARATE},
    339 #line 29 "cssvalues.gperf"
    340       {"italic", CSS_VAL_ITALIC},
    341 #line 202 "cssvalues.gperf"
    342       {"visible", CSS_VAL_VISIBLE},
    343 #line 213 "cssvalues.gperf"
    344       {"crop", CSS_VAL_CROP},
    345 #line 68 "cssvalues.gperf"
    346       {"fantasy", CSS_VAL_FANTASY},
    347 #line 199 "cssvalues.gperf"
    348       {"capitalize", CSS_VAL_CAPITALIZE},
    349 #line 272 "cssvalues.gperf"
    350       {"ellipsis", CSS_VAL_ELLIPSIS},
    351 #line 165 "cssvalues.gperf"
    352       {"list-item", CSS_VAL_LIST_ITEM},
    353 #line 177 "cssvalues.gperf"
    354       {"table-cell", CSS_VAL_TABLE_CELL},
    355 #line 174 "cssvalues.gperf"
    356       {"table-row", CSS_VAL_TABLE_ROW},
    357 #line 226 "cssvalues.gperf"
    358       {"marquee", CSS_VAL_MARQUEE},
    359 #line 152 "cssvalues.gperf"
    360       {"lower-latin", CSS_VAL_LOWER_LATIN},
    361 #line 124 "cssvalues.gperf"
    362       {"baseline", CSS_VAL_BASELINE},
    363 #line 98 "cssvalues.gperf"
    364       {"buttontext", CSS_VAL_BUTTONTEXT},
    365 #line 82 "cssvalues.gperf"
    366       {"purple", CSS_VAL_PURPLE},
    367 #line 92 "cssvalues.gperf"
    368       {"activecaption", CSS_VAL_ACTIVECAPTION},
    369 #line 143 "cssvalues.gperf"
    370       {"disc", CSS_VAL_DISC},
    371 #line 142 "cssvalues.gperf"
    372       {"inside", CSS_VAL_INSIDE},
    373 #line 203 "cssvalues.gperf"
    374       {"collapse", CSS_VAL_COLLAPSE},
    375 #line 254 "cssvalues.gperf"
    376       {"multiple", CSS_VAL_MULTIPLE},
    377 #line 46 "cssvalues.gperf"
    378       {"x-small", CSS_VAL_X_SMALL},
    379 #line 270 "cssvalues.gperf"
    380       {"min-intrinsic", CSS_VAL_MIN_INTRINSIC},
    381 #line 208 "cssvalues.gperf"
    382       {"below", CSS_VAL_BELOW},
    383 #line 205 "cssvalues.gperf"
    384       {"absolute", CSS_VAL_ABSOLUTE},
    385 #line 259 "cssvalues.gperf"
    386       {"down", CSS_VAL_DOWN},
    387 #line 251 "cssvalues.gperf"
    388       {"inline-axis", CSS_VAL_INLINE_AXIS},
    389 #line 200 "cssvalues.gperf"
    390       {"uppercase", CSS_VAL_UPPERCASE},
    391 #line 47 "cssvalues.gperf"
    392       {"small", CSS_VAL_SMALL},
    393 #line 121 "cssvalues.gperf"
    394       {"repeat-x", CSS_VAL_REPEAT_X},
    395 #line 224 "cssvalues.gperf"
    396       {"loud", CSS_VAL_LOUD},
    397 #line 53 "cssvalues.gperf"
    398       {"smaller", CSS_VAL_SMALLER},
    399 #line 66 "cssvalues.gperf"
    400       {"sans-serif", CSS_VAL_SANS_SERIF},
    401 #line 69 "cssvalues.gperf"
    402       {"monospace", CSS_VAL_MONOSPACE},
    403 #line 280 "cssvalues.gperf"
    404       {"space", CSS_VAL_SPACE},
    405 #line 109 "cssvalues.gperf"
    406       {"scrollbar", CSS_VAL_SCROLLBAR},
    407 #line 115 "cssvalues.gperf"
    408       {"window", CSS_VAL_WINDOW},
    409 #line 128 "cssvalues.gperf"
    410       {"text-top", CSS_VAL_TEXT_TOP},
    411 #line 117 "cssvalues.gperf"
     364      {"break-word", CSS_VAL_BREAK_WORD},
     365      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
     366      {"xx-large", CSS_VAL_XX_LARGE},
     367      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
     368      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
     369      {"windowframe", CSS_VAL_WINDOWFRAME},
     370      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
     371      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
     372      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
     373      {"background", CSS_VAL_BACKGROUND},
     374      {"expanded", CSS_VAL_EXPANDED},
     375      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
     376      {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
     377      {"threedshadow", CSS_VAL_THREEDSHADOW},
    412378      {"windowtext", CSS_VAL_WINDOWTEXT},
    413 #line 131 "cssvalues.gperf"
    414       {"bottom", CSS_VAL_BOTTOM},
    415 #line 215 "cssvalues.gperf"
    416       {"embed", CSS_VAL_EMBED},
    417 #line 218 "cssvalues.gperf"
    418       {"hide", CSS_VAL_HIDE},
    419 #line 148 "cssvalues.gperf"
    420       {"lower-roman", CSS_VAL_LOWER_ROMAN},
    421 #line 141 "cssvalues.gperf"
    422       {"outside", CSS_VAL_OUTSIDE},
    423 #line 176 "cssvalues.gperf"
    424       {"table-column", CSS_VAL_TABLE_COLUMN},
    425 #line 155 "cssvalues.gperf"
    426       {"hebrew", CSS_VAL_HEBREW},
    427 #line 125 "cssvalues.gperf"
    428       {"middle", CSS_VAL_MIDDLE},
    429 #line 204 "cssvalues.gperf"
    430       {"above", CSS_VAL_ABOVE},
    431 #line 17 "cssvalues.gperf"
    432       {"ridge", CSS_VAL_RIDGE},
    433 #line 122 "cssvalues.gperf"
    434       {"repeat-y", CSS_VAL_REPEAT_Y},
    435 #line 95 "cssvalues.gperf"
    436       {"buttonface", CSS_VAL_BUTTONFACE},
    437 #line 134 "cssvalues.gperf"
    438       {"left", CSS_VAL_LEFT},
    439 #line 216 "cssvalues.gperf"
    440       {"fixed", CSS_VAL_FIXED},
    441 #line 80 "cssvalues.gperf"
    442       {"olive", CSS_VAL_OLIVE},
    443 #line 245 "cssvalues.gperf"
    444       {"stretch", CSS_VAL_STRETCH},
    445 #line 195 "cssvalues.gperf"
    446       {"wait", CSS_VAL_WAIT},
    447 #line 262 "cssvalues.gperf"
    448       {"infinite", CSS_VAL_INFINITE},
    449 #line 21 "cssvalues.gperf"
    450       {"solid", CSS_VAL_SOLID},
    451 #line 88 "cssvalues.gperf"
    452       {"transparent", CSS_VAL_TRANSPARENT},
    453 #line 107 "cssvalues.gperf"
    454       {"infotext", CSS_VAL_INFOTEXT},
    455 #line 187 "cssvalues.gperf"
    456       {"ne-resize", CSS_VAL_NE_RESIZE},
    457 #line 12 "cssvalues.gperf"
    458       {"initial", CSS_VAL_INITIAL},
    459 #line 188 "cssvalues.gperf"
    460       {"nw-resize", CSS_VAL_NW_RESIZE},
    461 #line 190 "cssvalues.gperf"
    462       {"se-resize", CSS_VAL_SE_RESIZE},
    463 #line 178 "cssvalues.gperf"
    464       {"table-caption", CSS_VAL_TABLE_CAPTION},
    465 #line 191 "cssvalues.gperf"
    466       {"sw-resize", CSS_VAL_SW_RESIZE},
    467 #line 253 "cssvalues.gperf"
    468       {"single", CSS_VAL_SINGLE},
    469 #line 76 "cssvalues.gperf"
    470       {"green", CSS_VAL_GREEN},
    471 #line 265 "cssvalues.gperf"
    472       {"unfurl", CSS_VAL_UNFURL},
    473 #line 104 "cssvalues.gperf"
    474       {"inactivecaption", CSS_VAL_INACTIVECAPTION},
    475 #line 105 "cssvalues.gperf"
    476       {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
    477 #line 49 "cssvalues.gperf"
    478       {"large", CSS_VAL_LARGE},
    479 #line 255 "cssvalues.gperf"
    480       {"forwards", CSS_VAL_FORWARDS},
    481 #line 30 "cssvalues.gperf"
    482       {"oblique", CSS_VAL_OBLIQUE},
    483 #line 54 "cssvalues.gperf"
    484       {"larger", CSS_VAL_LARGER},
    485 #line 207 "cssvalues.gperf"
    486       {"avoid", CSS_VAL_AVOID},
    487 #line 160 "cssvalues.gperf"
    488       {"katakana", CSS_VAL_KATAKANA},
    489 #line 164 "cssvalues.gperf"
    490       {"block", CSS_VAL_BLOCK},
    491 #line 137 "cssvalues.gperf"
    492       {"justify", CSS_VAL_JUSTIFY},
    493 #line 212 "cssvalues.gperf"
    494       {"close-quote", CSS_VAL_CLOSE_QUOTE},
    495 #line 271 "cssvalues.gperf"
    496       {"clip", CSS_VAL_CLIP},
    497 #line 118 "cssvalues.gperf"
    498       {"grey", CSS_VAL_GREY},
    499 #line 154 "cssvalues.gperf"
    500       {"upper-latin", CSS_VAL_UPPER_LATIN},
    501 #line 239 "cssvalues.gperf"
    502       {"show", CSS_VAL_SHOW},
    503 #line 184 "cssvalues.gperf"
    504       {"pointer", CSS_VAL_POINTER},
    505 #line 249 "cssvalues.gperf"
    506       {"horizontal", CSS_VAL_HORIZONTAL},
    507 #line 170 "cssvalues.gperf"
    508       {"inline-table", CSS_VAL_INLINE_TABLE},
    509 #line 16 "cssvalues.gperf"
    510       {"groove", CSS_VAL_GROOVE},
    511 #line 231 "cssvalues.gperf"
    512       {"open-quote", CSS_VAL_OPEN_QUOTE},
    513 #line 116 "cssvalues.gperf"
    514       {"windowframe", CSS_VAL_WINDOWFRAME},
    515 #line 119 "cssvalues.gperf"
    516       {"-khtml-text", CSS_VAL__KHTML_TEXT},
    517 #line 22 "cssvalues.gperf"
    518       {"double", CSS_VAL_DOUBLE},
    519 #line 129 "cssvalues.gperf"
    520       {"text-bottom", CSS_VAL_TEXT_BOTTOM},
    521 #line 140 "cssvalues.gperf"
    522       {"-khtml-center", CSS_VAL__KHTML_CENTER},
    523 #line 196 "cssvalues.gperf"
    524       {"help", CSS_VAL_HELP},
    525 #line 221 "cssvalues.gperf"
    526       {"landscape", CSS_VAL_LANDSCAPE},
    527 #line 45 "cssvalues.gperf"
    528       {"xx-small", CSS_VAL_XX_SMALL},
    529 #line 72 "cssvalues.gperf"
    530       {"black", CSS_VAL_BLACK},
    531 #line 182 "cssvalues.gperf"
    532       {"crosshair", CSS_VAL_CROSSHAIR},
    533 #line 149 "cssvalues.gperf"
    534       {"upper-roman", CSS_VAL_UPPER_ROMAN},
    535 #line 123 "cssvalues.gperf"
    536       {"no-repeat", CSS_VAL_NO_REPEAT},
    537 #line 33 "cssvalues.gperf"
    538       {"bold", CSS_VAL_BOLD},
    539 #line 34 "cssvalues.gperf"
    540       {"bolder", CSS_VAL_BOLDER},
    541 #line 138 "cssvalues.gperf"
    542       {"-khtml-left", CSS_VAL__KHTML_LEFT},
    543 #line 91 "cssvalues.gperf"
    544       {"activeborder", CSS_VAL_ACTIVEBORDER},
    545 #line 19 "cssvalues.gperf"
    546       {"dotted", CSS_VAL_DOTTED},
    547 #line 211 "cssvalues.gperf"
    548       {"both", CSS_VAL_BOTH},
    549 #line 81 "cssvalues.gperf"
    550       {"orange", CSS_VAL_ORANGE},
    551 #line 273 "cssvalues.gperf"
    552       {"discard", CSS_VAL_DISCARD},
    553 #line 133 "cssvalues.gperf"
    554       {"-khtml-auto", CSS_VAL__KHTML_AUTO},
    555 #line 93 "cssvalues.gperf"
    556       {"appworkspace", CSS_VAL_APPWORKSPACE},
    557 #line 168 "cssvalues.gperf"
    558       {"inline-block", CSS_VAL_INLINE_BLOCK},
    559 #line 75 "cssvalues.gperf"
    560       {"gray", CSS_VAL_GRAY},
    561 #line 100 "cssvalues.gperf"
    562       {"graytext", CSS_VAL_GRAYTEXT},
    563 #line 59 "cssvalues.gperf"
    564       {"condensed", CSS_VAL_CONDENSED},
    565 #line 14 "cssvalues.gperf"
    566       {"hidden", CSS_VAL_HIDDEN},
    567 #line 50 "cssvalues.gperf"
    568       {"x-large", CSS_VAL_X_LARGE},
    569 #line 263 "cssvalues.gperf"
    570       {"slide", CSS_VAL_SLIDE},
    571 #line 267 "cssvalues.gperf"
    572       {"read-write", CSS_VAL_READ_WRITE},
    573 #line 31 "cssvalues.gperf"
    574       {"small-caps", CSS_VAL_SMALL_CAPS},
    575 #line 28 "cssvalues.gperf"
    576       {"status-bar", CSS_VAL_STATUS_BAR},
    577 #line 89 "cssvalues.gperf"
    578       {"-khtml-link", CSS_VAL__KHTML_LINK},
    579 #line 27 "cssvalues.gperf"
    580       {"small-caption", CSS_VAL_SMALL_CAPTION},
    581 #line 252 "cssvalues.gperf"
    582       {"block-axis", CSS_VAL_BLOCK_AXIS},
    583 #line 209 "cssvalues.gperf"
    584       {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
    585 #line 210 "cssvalues.gperf"
    586       {"blink", CSS_VAL_BLINK},
    587 #line 146 "cssvalues.gperf"
    588       {"decimal", CSS_VAL_DECIMAL},
    589 #line 150 "cssvalues.gperf"
     379      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
     380      {"infobackground", CSS_VAL_INFOBACKGROUND},
     381      {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
     382      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
    590383      {"lower-greek", CSS_VAL_LOWER_GREEK},
    591 #line 86 "cssvalues.gperf"
    592       {"white", CSS_VAL_WHITE},
    593 #line 242 "cssvalues.gperf"
    594       {"thin", CSS_VAL_THIN},
    595 #line 217 "cssvalues.gperf"
    596       {"hand", CSS_VAL_HAND},
    597 #line 135 "cssvalues.gperf"
    598       {"right", CSS_VAL_RIGHT},
    599 #line 183 "cssvalues.gperf"
    600       {"default", CSS_VAL_DEFAULT},
    601 #line 62 "cssvalues.gperf"
    602       {"expanded", CSS_VAL_EXPANDED},
    603 #line 244 "cssvalues.gperf"
    604       {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
    605 #line 35 "cssvalues.gperf"
    606       {"lighter", CSS_VAL_LIGHTER},
    607 #line 90 "cssvalues.gperf"
    608       {"-khtml-activelink", CSS_VAL__KHTML_ACTIVELINK},
    609 #line 266 "cssvalues.gperf"
    610       {"read-only", CSS_VAL_READ_ONLY},
    611 #line 103 "cssvalues.gperf"
    612       {"inactiveborder", CSS_VAL_INACTIVEBORDER},
    613 #line 111 "cssvalues.gperf"
    614       {"threedface", CSS_VAL_THREEDFACE},
    615 #line 179 "cssvalues.gperf"
    616       {"-khtml-box", CSS_VAL__KHTML_BOX},
    617 #line 74 "cssvalues.gperf"
    618       {"fuchsia", CSS_VAL_FUCHSIA},
    619 #line 257 "cssvalues.gperf"
    620       {"ahead", CSS_VAL_AHEAD},
    621 #line 151 "cssvalues.gperf"
    622       {"lower-alpha", CSS_VAL_LOWER_ALPHA},
    623 #line 228 "cssvalues.gperf"
    624       {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
    625 #line 60 "cssvalues.gperf"
    626       {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
    627 #line 51 "cssvalues.gperf"
    628       {"xx-large", CSS_VAL_XX_LARGE},
    629 #line 241 "cssvalues.gperf"
    630       {"thick", CSS_VAL_THICK},
    631 #line 58 "cssvalues.gperf"
    632384      {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
    633 #line 57 "cssvalues.gperf"
    634       {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
    635 #line 229 "cssvalues.gperf"
    636       {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
    637 #line 159 "cssvalues.gperf"
    638       {"hiragana", CSS_VAL_HIRAGANA},
    639 #line 26 "cssvalues.gperf"
    640       {"message-box", CSS_VAL_MESSAGE_BOX},
    641 #line 279 "cssvalues.gperf"
    642       {"break-word", CSS_VAL_BREAK_WORD},
    643 #line 61 "cssvalues.gperf"
    644       {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
    645 #line 157 "cssvalues.gperf"
    646       {"georgian", CSS_VAL_GEORGIAN},
    647 #line 171 "cssvalues.gperf"
    648       {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
    649 #line 180 "cssvalues.gperf"
    650       {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
    651 #line 63 "cssvalues.gperf"
     385      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
     386      {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
     387      {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
     388      {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
     389      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
     390      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
    652391      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
    653 #line 20 "cssvalues.gperf"
    654       {"dashed", CSS_VAL_DASHED},
    655 #line 281 "cssvalues.gperf"
    656       {"after-white-space", CSS_VAL_AFTER_WHITE_SPACE},
    657 #line 64 "cssvalues.gperf"
    658       {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
    659 #line 153 "cssvalues.gperf"
    660       {"upper-alpha", CSS_VAL_UPPER_ALPHA},
    661 #line 256 "cssvalues.gperf"
    662       {"backwards", CSS_VAL_BACKWARDS},
    663 #line 97 "cssvalues.gperf"
    664       {"buttonshadow", CSS_VAL_BUTTONSHADOW},
    665 #line 173 "cssvalues.gperf"
    666       {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
    667 #line 162 "cssvalues.gperf"
    668       {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
    669 #line 175 "cssvalues.gperf"
    670       {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
    671 #line 219 "cssvalues.gperf"
    672       {"higher", CSS_VAL_HIGHER},
    673 #line 70 "cssvalues.gperf"
    674       {"-khtml-body", CSS_VAL__KHTML_BODY},
    675 #line 52 "cssvalues.gperf"
    676       {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
    677 #line 274 "cssvalues.gperf"
    678       {"dot-dash", CSS_VAL_DOT_DASH},
    679 #line 139 "cssvalues.gperf"
    680       {"-khtml-right", CSS_VAL__KHTML_RIGHT},
    681 #line 223 "cssvalues.gperf"
    682       {"line-through", CSS_VAL_LINE_THROUGH},
    683 #line 94 "cssvalues.gperf"
    684       {"background", CSS_VAL_BACKGROUND},
    685 #line 114 "cssvalues.gperf"
    686       {"threedshadow", CSS_VAL_THREEDSHADOW},
    687 #line 278 "cssvalues.gperf"
    688       {"skip-white-space", CSS_VAL_SKIP_WHITE_SPACE},
    689 #line 161 "cssvalues.gperf"
    690       {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
    691 #line 106 "cssvalues.gperf"
    692       {"infobackground", CSS_VAL_INFOBACKGROUND},
    693 #line 172 "cssvalues.gperf"
    694       {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
    695 #line 132 "cssvalues.gperf"
    696       {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
    697 #line 275 "cssvalues.gperf"
    698       {"dot-dot-dash", CSS_VAL_DOT_DOT_DASH},
    699 #line 158 "cssvalues.gperf"
    700       {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
    701 #line 147 "cssvalues.gperf"
    702       {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
    703 #line 101 "cssvalues.gperf"
    704       {"highlight", CSS_VAL_HIGHLIGHT},
    705 #line 102 "cssvalues.gperf"
    706       {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
    707 #line 110 "cssvalues.gperf"
    708       {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW},
    709 #line 96 "cssvalues.gperf"
    710       {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
    711 #line 113 "cssvalues.gperf"
    712       {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
    713 #line 112 "cssvalues.gperf"
    714       {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT}
     392      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}
    715393    };
    716394
    717395  static const short lookup[] =
    718396    {
    719         0,  -1,  -1,  -1,  -1,   1,  -1,  -1,  -1,  -1,
    720         2,  -1,  -1,  -1,  -1,   3,  -1,  -1,   4,  -1,
    721         5,  -1,  -1,  -1,  -1,   6,  -1,  -1,   7,  -1,
    722         8,  -1,  -1,  -1,  -1,   9,  -1,  -1,  10,  -1,
    723        11,  -1,  -1,  -1,  -1,  12,  -1,  -1,  13,  -1,
    724        14,  -1,  -1,  -1,  -1,  15,  -1,  -1,  -1,  -1,
    725        16,  -1,  -1,  17,  -1,  18,  -1,  -1,  19,  -1,
    726        20,  -1,  -1,  -1,  -1,  21,  22,  -1,  -1,  -1,
    727        23,  -1,  -1,  24,  -1,  25,  -1,  -1,  -1,  -1,
    728        26,  -1,  -1,  -1,  -1,  27,  -1,  -1,  -1,  -1,
    729        28,  -1,  -1,  -1,  -1,  29,  -1,  -1,  -1,  -1,
    730        30,  -1,  -1,  31,  -1,  32,  -1,  -1,  33,  -1,
    731        34,  -1,  -1,  -1,  -1,  35,  -1,  -1,  36,  -1,
    732        -1,  -1,  -1,  37,  -1,  -1,  -1,  -1,  38,  -1,
    733        -1,  -1,  -1,  39,  -1,  40,  41,  -1,  42,  -1,
    734        -1,  43,  -1,  -1,  -1,  44,  -1,  -1,  45,  -1,
    735        46,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  47,  -1,
    736        48,  -1,  -1,  49,  -1,  50,  -1,  -1,  -1,  -1,
    737        51,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  52,  -1,
    738        -1,  -1,  -1,  53,  -1,  54,  -1,  -1,  55,  -1,
    739        56,  -1,  -1,  57,  -1,  -1,  -1,  -1,  -1,  -1,
    740        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  58,  -1,
    741        59,  -1,  -1,  60,  -1,  -1,  61,  -1,  -1,  -1,
    742        -1,  62,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    743        63,  -1,  -1,  -1,  -1,  -1,  64,  -1,  -1,  -1,
    744        65,  -1,  -1,  -1,  -1,  66,  -1,  -1,  67,  -1,
    745        68,  -1,  -1,  69,  70,  71,  -1,  -1,  72,  -1,
    746        73,  74,  -1,  -1,  -1,  75,  -1,  -1,  -1,  -1,
    747        76,  77,  -1,  -1,  -1,  78,  -1,  -1,  -1,  -1,
    748        79,  -1,  -1,  80,  -1,  81,  -1,  -1,  82,  -1,
    749        83,  -1,  -1,  84,  -1,  -1,  -1,  -1,  -1,  -1,
    750        85,  86,  -1,  87,  -1,  88,  -1,  -1,  -1,  -1,
    751        -1,  -1,  -1,  -1,  -1,  89,  -1,  -1,  -1,  -1,
    752        90,  -1,  -1,  91,  -1,  -1,  -1,  -1,  -1,  -1,
    753        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    754        -1,  -1,  -1,  92,  -1,  -1,  -1,  -1,  93,  -1,
    755        94,  -1,  -1,  95,  -1,  96,  -1,  -1,  97,  -1,
    756        98,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    757        99,  -1,  -1,  -1,  -1, 100,  -1,  -1,  -1,  -1,
    758       101,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 102,  -1,
    759       103,  -1,  -1, 104,  -1, 105,  -1,  -1, 106,  -1,
    760        -1,  -1,  -1, 107,  -1,  -1,  -1,  -1, 108,  -1,
    761       109, 110,  -1, 111,  -1, 112,  -1,  -1,  -1,  -1,
    762        -1,  -1,  -1, 113,  -1, 114,  -1,  -1,  -1,  -1,
    763       115,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    764       116, 117,  -1, 118, 119, 120,  -1,  -1,  -1,  -1,
    765       121,  -1,  -1,  -1,  -1, 122,  -1,  -1, 123,  -1,
    766       124,  -1,  -1,  -1,  -1, 125,  -1,  -1, 126,  -1,
    767       127,  -1,  -1, 128,  -1, 129, 130,  -1,  -1,  -1,
    768        -1,  -1,  -1, 131,  -1, 132,  -1,  -1,  -1,  -1,
    769        -1, 133,  -1, 134,  -1, 135,  -1,  -1, 136,  -1,
    770       137,  -1,  -1,  -1,  -1, 138,  -1,  -1,  -1,  -1,
    771        -1,  -1,  -1,  -1,  -1, 139,  -1,  -1, 140,  -1,
    772        -1,  -1,  -1,  -1,  -1, 141,  -1,  -1,  -1,  -1,
    773       142,  -1,  -1, 143,  -1, 144,  -1,  -1,  -1,  -1,
    774       145,  -1,  -1, 146,  -1, 147,  -1,  -1, 148,  -1,
    775       149,  -1,  -1, 150,  -1,  -1, 151,  -1,  -1,  -1,
    776        -1,  -1,  -1,  -1,  -1, 152, 153,  -1, 154,  -1,
    777       155,  -1,  -1, 156,  -1,  -1,  -1,  -1,  -1,  -1,
    778        -1,  -1,  -1,  -1,  -1, 157,  -1,  -1,  -1,  -1,
    779       158,  -1,  -1,  -1,  -1,  -1, 159,  -1, 160,  -1,
    780        -1,  -1,  -1,  -1,  -1, 161, 162,  -1,  -1,  -1,
    781        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 163,  -1,
    782        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 164,  -1,
    783       165,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    784       166,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    785        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    786       167,  -1,  -1, 168,  -1,  -1, 169,  -1,  -1, 170,
    787        -1,  -1,  -1, 171,  -1,  -1,  -1,  -1, 172,  -1,
    788        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 173,  -1,
    789       174,  -1,  -1,  -1,  -1, 175,  -1,  -1,  -1,  -1,
    790       176, 177,  -1,  -1,  -1, 178,  -1,  -1,  -1,  -1,
    791        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    792       179,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 180,  -1,
    793        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    794       181,  -1,  -1,  -1,  -1, 182,  -1,  -1,  -1,  -1,
    795       183,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 184,  -1,
    796        -1,  -1,  -1, 185,  -1,  -1,  -1,  -1,  -1,  -1,
    797       186,  -1,  -1,  -1,  -1, 187,  -1,  -1,  -1,  -1,
    798       188,  -1,  -1,  -1,  -1, 189,  -1,  -1,  -1,  -1,
    799       190,  -1,  -1,  -1,  -1,  -1, 191,  -1,  -1,  -1,
    800       192,  -1,  -1, 193,  -1,  -1, 194,  -1,  -1,  -1,
    801        -1,  -1,  -1,  -1,  -1, 195,  -1,  -1,  -1,  -1,
    802        -1,  -1,  -1,  -1,  -1, 196,  -1,  -1, 197,  -1,
    803       198,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 199,  -1,
    804        -1,  -1,  -1,  -1,  -1, 200,  -1,  -1,  -1,  -1,
    805       201,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    806        -1,  -1,  -1,  -1,  -1, 202,  -1,  -1,  -1,  -1,
    807        -1,  -1,  -1,  -1,  -1, 203,  -1,  -1, 204,  -1,
    808        -1,  -1,  -1, 205,  -1, 206,  -1,  -1,  -1,  -1,
    809       207,  -1,  -1, 208,  -1,  -1,  -1,  -1, 209,  -1,
    810       210,  -1,  -1,  -1,  -1, 211,  -1,  -1,  -1,  -1,
    811        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    812       212,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    813       213,  -1,  -1,  -1,  -1,  -1, 214,  -1, 215,  -1,
    814       216,  -1,  -1, 217,  -1,  -1,  -1,  -1,  -1,  -1,
    815        -1,  -1,  -1, 218,  -1,  -1,  -1,  -1, 219,  -1,
    816        -1,  -1,  -1, 220,  -1,  -1,  -1,  -1,  -1,  -1,
    817        -1,  -1,  -1, 221,  -1,  -1,  -1,  -1,  -1,  -1,
    818        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 222,  -1,
    819        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 223,  -1,
    820        -1,  -1,  -1, 224,  -1,  -1,  -1,  -1,  -1,  -1,
    821        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 225,  -1,
    822        -1,  -1,  -1,  -1,  -1, 226,  -1,  -1,  -1,  -1,
    823        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    824        -1,  -1,  -1,  -1,  -1,  -1, 227,  -1,  -1,  -1,
    825        -1,  -1,  -1,  -1,  -1, 228,  -1,  -1,  -1,  -1,
    826        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    827        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    828        -1,  -1,  -1, 229,  -1,  -1,  -1,  -1,  -1,  -1,
    829        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    830        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    831        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    832        -1,  -1,  -1,  -1,  -1, 230,  -1,  -1,  -1,  -1,
    833        -1,  -1,  -1, 231,  -1,  -1,  -1,  -1,  -1,  -1,
    834       232,  -1,  -1, 233,  -1,  -1,  -1,  -1,  -1,  -1,
    835        -1,  -1,  -1,  -1,  -1,  -1, 234,  -1,  -1,  -1,
    836        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 235,  -1,
    837       236,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    838        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    839        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    840        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    841        -1,  -1,  -1, 237,  -1,  -1,  -1,  -1,  -1,  -1,
    842        -1,  -1,  -1, 238,  -1,  -1, 239,  -1,  -1,  -1,
    843       240,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    844        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    845        -1,  -1,  -1,  -1,  -1,  -1, 241,  -1,  -1,  -1,
    846        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 242,  -1,
    847        -1,  -1,  -1, 243,  -1,  -1,  -1,  -1,  -1,  -1,
    848        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 244,  -1,
    849        -1,  -1,  -1, 245,  -1,  -1,  -1,  -1,  -1,  -1,
    850        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 246,  -1,
    851        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    852        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    853        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    854        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    855       247,  -1,  -1,  -1,  -1, 248,  -1,  -1,  -1,  -1,
    856        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    857        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    858       249,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    859        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 250,  -1,
    860        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    861        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    862        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    863        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 251,
    864        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    865        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    866        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    867        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    868        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    869        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    870        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    871       252,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    872        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    873        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    874        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    875        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    876        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    877        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    878        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    879        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    880        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    881        -1,  -1,  -1,  -1,  -1, 253,  -1,  -1,  -1,  -1,
    882        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    883        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    884        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    885        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    886        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    887        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    888        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    889        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    890        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    891       254,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    892        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    893        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    894        -1,  -1,  -1,  -1,  -1, 255,  -1,  -1,  -1,  -1,
    895        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    896        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    897        -1,  -1,  -1, 256,  -1,  -1,  -1,  -1,  -1,  -1,
    898        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    899        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    900        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    901        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    902        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    903        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    904        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    905        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    906        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 257,  -1,
    907        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    908        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    909        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    910        -1,  -1,  -1,  -1,  -1, 258,  -1,  -1,  -1,  -1,
    911        -1,  -1,  -1,  -1,  -1, 259,  -1,  -1,  -1,  -1,
    912        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    913        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    914        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    915        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    916        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    917        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    918        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    919        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    920        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    921        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    922        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    923        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    924        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    925       260,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    926        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    927        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    928        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    929       261,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    930        -1,  -1,  -1,  -1,  -1, 262,  -1,  -1,  -1,  -1,
    931        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    932        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    933        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    934        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    935        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    936        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    937        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    938        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    939        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    940        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    941        -1,  -1,  -1,  -1,  -1, 263,  -1,  -1,  -1,  -1,
    942        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    943        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    944        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    945        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    946        -1,  -1,  -1,  -1,  -1, 264,  -1,  -1,  -1,  -1,
    947        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    948        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    949        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    950        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    951        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    952        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    953        -1,  -1,  -1,  -1,  -1, 265,  -1,  -1, 266,  -1,
    954        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    955        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 267,  -1,
    956        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    957        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    958        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    959        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    960        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    961        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    962        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    963        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    964        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    965        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    966        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    967        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    968        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    969        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    970        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    971        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    972        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    973        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    974        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    975        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    976        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    977        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    978        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    979        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    980        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    981        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    982        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    983        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    984        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    985        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    986        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    987        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    988        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    989        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    990        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    991       268,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    992        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    993        -1,  -1,  -1, 269,  -1,  -1,  -1,  -1,  -1,  -1,
    994        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    995        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    996        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    997        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    998        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    999        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1000        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1001        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1002        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1003        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1004        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1005        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1006        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1007        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1008        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1009        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1010        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1011        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1012        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1013        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1014        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1015        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1016        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1017        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1018        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1019        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1020        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1021        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1022        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1023        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1024        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1025        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1026        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1027        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1028        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1029        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1030        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1031        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1032        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1033        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1034        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1035        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1036        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1037        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1038        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
    1039       270
     397         0,   -1,   -1,   -1,   -1,    1,   -1,   -1,
     398        -1,   -1,    2,   -1,   -1,    3,   -1,    4,
     399        -1,   -1,   -1,   -1,    5,   -1,   -1,    6,
     400        -1,    7,   -1,   -1,   -1,   -1,    8,   -1,
     401         9,   -1,   -1,   10,   -1,   -1,   -1,   -1,
     402        11,   -1,   -1,   -1,   -1,   -1,   12,   -1,
     403        13,   -1,   -1,   14,   -1,   -1,   -1,   -1,
     404        -1,   -1,   -1,   15,   -1,   -1,   -1,   -1,
     405        -1, -338, -255,   -2,   -1,   -1,   -1,   -1,
     406        -1,   18,   -1,   19,   -1,   -1,   -1,   -1,
     407        -1,   20,   -1,   21,   -1,   -1,   -1,   -1,
     408        -1,   22,   -1,   -1,   -1,   23,   -1,   -1,
     409        -1,   -1,   24,   -1,   -1,   -1,   -1,   -1,
     410        -1,   -1,   25,   -1,   -1,   -1,   -1,   -1,
     411        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     412        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     413        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     414        -1,   -1,   26,   -1,   -1,   -1,   -1,   27,
     415        28,   -1,   29,   -1,   -1,   -1,   -1,   -1,
     416        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     417        30,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     418        -1,   -1,   31,   -1,   -1,   -1,   -1,   -1,
     419        32,   -1,   33,   -1,   -1,   -1,   -1,   -1,
     420        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     421        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     422        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     423        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     424        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     425        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     426        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     427        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     428        -1,   34,   -1,   -1,   -1,   -1,   -1,   -1,
     429        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     430        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     431        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     432        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     433        -1,   -1,   -1,   -1,   -1,   35,   -1,   -1,
     434        -1,   -1,   -1,   -1,   36,   -1,   -1,   -1,
     435        -1,   37,   -1,   -1,   -1,   -1,   -1,   -1,
     436        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     437        -1,   38,   -1,   -1,   -1,   -1,   39,   -1,
     438        40,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     439        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     440        -1,   -1,   -1,   -1,   41,   -1,   -1,   -1,
     441        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     442        -1,   -1,   -1,   -1,   42,   -1,   -1,   -1,
     443        -1,   -1,   -1,   -1,   -1,   43,   -1,   -1,
     444        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     445        -1,   -1,   -1,   -1,   44,   -1,   -1,   -1,
     446        -1,   45,   -1,   -1,   -1,   -1,   46,   47,
     447        48,   -1,   -1,   -1,   -1,   -1,   49,   -1,
     448        50,   -1,   -1,   51,   -1,   -1,   -1,   52,
     449        -1,   -1,   -1,   -1,   53,   -1,   -1,   -1,
     450        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     451        -1,   54,   55,   -1,   -1,   -1,   -1,   -1,
     452        56,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     453        57,   58,   59,   -1,   -1,   -1,   -1,   -1,
     454        60,   -1,   -1,   -1,   61,   62,   -1,   -1,
     455        -1,   -1,   -1,   -1,   63,   -1,   64,   65,
     456        -1,   66,   -1,   -1,   67,   -1,   -1,   -1,
     457        68,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     458        69,   -1,   -1,   -1,   -1,   -1,   -1,   70,
     459        -1,   -1,   71,   -1,   -1,   -1,   -1,   72,
     460        -1,   -1,   -1,   -1,   -1,   -1,   -1,   73,
     461        -1,   -1,   -1,   -1,   -1,   -1,   -1,   74,
     462        -1,   -1,   -1,   75,   -1,   -1,   -1,   -1,
     463        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     464        -1,   -1,   76,   -1,   -1,   -1,   -1,   77,
     465        -1,   -1,   78,   -1,   -1,   -1,   -1,   -1,
     466        -1,   -1,   -1,   79,   -1,   -1,   80,   -1,
     467        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     468        -1,   -1,   81,   -1,   -1,   -1,   -1,   -1,
     469        82,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     470        -1,   -1,   -1,   -1,   -1,   -1,   -1,   83,
     471        -1,   84,   -1,   -1,   -1,   -1,   85,   -1,
     472        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     473        86,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     474        -1,   -1,   -1,   87,   -1,   -1,   -1,   -1,
     475        -1,   -1,   -1,   -1,   -1,   -1,   -1,   88,
     476        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     477        -1,   -1,   -1,   -1,   -1,   -1,   89,   -1,
     478        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     479        -1,   -1,   -1,   -1,   90,   91,   -1,   -1,
     480        -1,   -1,   92,   -1,   93,   -1,   -1,   -1,
     481        -1,   94,   95,   96,   -1,   -1,   -1,   -1,
     482        -1,   -1,   -1,   97,   -1,   -1,   -1,   -1,
     483        -1,   -1,   98,   -1,   -1,   -1,   -1,   -1,
     484        -1,   -1,   99,   -1,   -1,   -1,  100,   -1,
     485        -1,   -1,   -1,   -1,  101,   -1,   -1,   -1,
     486        -1,  102,   -1,   -1,   -1,   -1,   -1,   -1,
     487       103,   -1,   -1,  104,   -1,   -1,   -1,   -1,
     488       105,  106,   -1,   -1,   -1,   -1,   -1,   -1,
     489        -1,   -1,  107,   -1,   -1,   -1,   -1,   -1,
     490        -1,  108,   -1,   -1,  109,   -1,  110,  111,
     491        -1,   -1,   -1,  112,  113,   -1,   -1,   -1,
     492       114,   -1,   -1,   -1,   -1,  115,   -1,   -1,
     493       116,   -1,   -1,   -1,   -1,   -1,   -1,  117,
     494       118,   -1,  119,   -1,  120,   -1,   -1,   -1,
     495        -1,   -1,   -1,   -1,   -1,   -1,  121,  122,
     496       123,  124,   -1,   -1,  125,   -1,  126,   -1,
     497        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     498       127,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     499       128,   -1,  129,   -1,   -1,  130,   -1,  131,
     500        -1,   -1,   -1,   -1,  132,   -1,   -1,   -1,
     501        -1,  133,   -1,  134,   -1,   -1,   -1,   -1,
     502        -1,   -1,   -1,   -1,   -1,   -1,  135,   -1,
     503       136,   -1,  137,   -1,   -1,   -1,  138,   -1,
     504       139,   -1,  140,   -1,   -1,   -1,   -1,  141,
     505        -1,  142,   -1,   -1,   -1,   -1,  143,   -1,
     506        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     507       144,   -1,   -1,   -1,  145,   -1,  146,   -1,
     508       147,   -1,   -1,   -1,   -1,  148,   -1,   -1,
     509        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     510        -1,  149,   -1,   -1,  150,   -1,   -1,   -1,
     511        -1,  151,   -1,   -1,   -1,   -1,   -1,  152,
     512       153,   -1,   -1,  154,   -1,  155,   -1,   -1,
     513       156,   -1,  157,   -1,   -1,   -1,   -1,   -1,
     514        -1,   -1,  158,   -1,   -1,   -1,   -1,   -1,
     515        -1,   -1,   -1,   -1,   -1,   -1,   -1,  159,
     516        -1,   -1,   -1,   -1,  160,   -1,  161,   -1,
     517       162,   -1,   -1,  163,   -1,   -1,   -1,   -1,
     518       164,   -1,   -1,  165,   -1,   -1,   -1,  166,
     519        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     520       167,  168,   -1,   -1,   -1,   -1,  169,   -1,
     521        -1,   -1,  170,   -1,   -1,   -1,   -1,  171,
     522        -1,   -1,   -1,   -1,   -1,  172,   -1,  173,
     523        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     524       174,   -1,  175,   -1,   -1,   -1,   -1,   -1,
     525        -1,   -1,   -1,   -1,   -1,   -1,  176,   -1,
     526        -1,   -1,   -1,   -1,   -1,  177,   -1,  178,
     527        -1,  179,   -1,   -1,   -1,   -1,   -1,   -1,
     528        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     529        -1,   -1,   -1,   -1,   -1,   -1,  180,   -1,
     530        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     531        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     532        -1,  181,   -1,   -1,   -1,   -1,   -1,   -1,
     533       182,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     534       183,   -1,  184,   -1,   -1,   -1,   -1,   -1,
     535        -1,  185,   -1,   -1,   -1,   -1,  186,   -1,
     536        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     537        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     538        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     539       187,   -1,  188,   -1,   -1,   -1,   -1,  189,
     540        -1,   -1,   -1,   -1,  190,   -1,   -1,   -1,
     541        -1,   -1,  191,   -1,   -1,   -1,   -1,  192,
     542        -1,   -1,   -1,   -1,  193,   -1,  194,   -1,
     543        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     544        -1,   -1,   -1,   -1,   -1,   -1,   -1,  195,
     545        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     546        -1,  196,   -1,   -1,   -1,   -1,  197,   -1,
     547        -1,   -1,   -1,   -1,   -1,  198,   -1,   -1,
     548        -1,   -1,  199,   -1,   -1,   -1,   -1,  200,
     549        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     550        -1,   -1,  201,   -1,   -1,   -1,   -1,   -1,
     551        -1,  202,   -1,   -1,   -1,  203,   -1,   -1,
     552        -1,   -1,   -1,  204,   -1,   -1,  205,  206,
     553        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     554        -1,   -1,   -1,   -1,   -1,   -1,   -1,  207,
     555        -1,   -1,   -1,   -1,  208,   -1,   -1,   -1,
     556        -1,   -1,  209,  210,   -1,   -1,   -1,   -1,
     557        -1,   -1,   -1,   -1,   -1,  211,   -1,   -1,
     558        -1,   -1,   -1,   -1,   -1,  212,   -1,   -1,
     559        -1,   -1,  213,   -1,   -1,   -1,   -1,  214,
     560        -1,  215,  216,   -1,   -1,   -1,   -1,   -1,
     561        -1,   -1,   -1,   -1,   -1,   -1,  217,   -1,
     562        -1,   -1,   -1,   -1,   -1,  218,   -1,   -1,
     563        -1,   -1,  219,   -1,   -1,   -1,   -1,   -1,
     564       220,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     565        -1,  221,   -1,   -1,   -1,   -1,   -1,   -1,
     566        -1,   -1,   -1,   -1,   -1,   -1,  222,   -1,
     567        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     568        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     569        -1,   -1,   -1,   -1,  223,   -1,   -1,   -1,
     570        -1,   -1,  224,   -1,   -1,   -1,  225,   -1,
     571        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     572        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     573        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     574        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     575        -1,   -1,   -1,   -1,   -1,  226,   -1,   -1,
     576        -1,   -1,   -1,  227,   -1,   -1,   -1,   -1,
     577        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     578        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     579        -1,   -1,   -1,  228,   -1,   -1,   -1,   -1,
     580        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     581        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     582        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     583        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     584        -1,   -1,   -1,   -1,   -1,   -1,  229,   -1,
     585        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     586        -1,   -1,   -1,  230,   -1,   -1,   -1,   -1,
     587        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     588       231,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     589        -1,   -1,   -1,   -1,   -1,   -1,  232,   -1,
     590        -1,   -1,   -1,   -1,   -1,  233,   -1,   -1,
     591        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     592        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     593        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     594        -1,   -1,   -1,   -1,   -1,   -1,   -1,  234,
     595       235,  236,   -1,   -1,   -1,   -1,   -1,   -1,
     596        -1,   -1,  237,   -1,   -1,   -1,   -1,   -1,
     597        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     598        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     599        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     600        -1,  238,   -1,   -1,   -1,   -1,   -1,   -1,
     601        -1,   -1,   -1,  239,   -1,   -1,   -1,   -1,
     602        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     603        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     604        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     605        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     606       240,   -1,   -1,  241,   -1,   -1,   -1,   -1,
     607        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     608        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     609        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     610        -1,   -1,   -1,   -1,  242,   -1,   -1,   -1,
     611        -1,   -1,   -1,   -1,   -1,  243,   -1,   -1,
     612        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     613        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     614        -1,   -1,   -1,   -1,   -1,   -1,   -1,  244,
     615        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     616        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     617        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     618        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     619        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     620        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     621        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     622        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     623        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     624        -1,   -1,   -1,   -1,   -1,   -1,   -1,  245,
     625        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     626        -1,   -1,   -1,   -1,   -1,   -1,   -1,  246,
     627        -1,   -1,   -1,  247,   -1,   -1,   -1,   -1,
     628        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     629        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     630        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     631        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     632        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     633        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     634        -1,   -1,   -1,  248,   -1,  249,   -1,   -1,
     635        -1,  250,   -1,   -1,   -1,  251,   -1,   -1,
     636        -1,  252,  253,   -1,   -1,   -1,   -1,   -1,
     637        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     638        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     639        -1,   -1,   -1,   -1,   -1,  254,   -1,   -1,
     640        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     641        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     642        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     643        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     644        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     645        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     646        -1,   -1,   -1,   -1,   -1,  255,   -1,   -1,
     647        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     648        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     649        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     650        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     651        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     652        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     653        -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,
     654        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     655        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     656        -1,  257,   -1,   -1,   -1,   -1,   -1,   -1,
     657        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     658        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     659        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     660        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     661        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     662        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     663        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     664        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     665        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     666        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     667        -1,   -1,   -1,   -1,  258,   -1,   -1,   -1,
     668        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     669        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     670        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     671        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     672        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     673        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     674        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     675        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     676        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     677        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     678        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     679        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     680        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     681        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     682        -1,   -1,   -1,   -1,   -1,  259,  260,   -1,
     683        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     684        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     685        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     686        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     687        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     688        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     689        -1,   -1,   -1,   -1,   -1,   -1,   -1,  261,
     690        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     691        -1,   -1,   -1,   -1,   -1,   -1,  262,   -1,
     692        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     693        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     694        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     695        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     696        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     697        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     698        -1,   -1,   -1,   -1,   -1,   -1,   -1,  263,
     699        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     700        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     701        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     702        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     703        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     704        -1,   -1,  264,   -1,   -1,   -1,   -1,   -1,
     705        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     706        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     707        -1,   -1,   -1,   -1,   -1,  265,   -1,   -1,
     708        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     709        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     710        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     711        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     712        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     713        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     714        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     715        -1,   -1,   -1,   -1,   -1,   -1,   -1,  266,
     716        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     717        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     718        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     719        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     720        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     721        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     722        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     723        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     724        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     725        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     726        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     727        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     728        -1,   -1,   -1,   -1,   -1,   -1,  267,   -1,
     729        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     730        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     731        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     732        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     733        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     734        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     735        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     736        -1,   -1,   -1,   -1,   -1,  268,   -1,   -1,
     737        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     738        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     739        -1,   -1,   -1,   -1,   -1,   -1,   -1,  269,
     740        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     741        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     742        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     743        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     744        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     745        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     746        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     747        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     748        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     749        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     750        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     751        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     752        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     753        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     754        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     755        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     756        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
     757        -1,   -1,   -1,   -1,   -1,   -1,   -1,  270
    1040758    };
    1041759
     
    1054772              if (*str == *s && !strcmp (str + 1, s + 1))
    1055773                return &wordlist_value[index];
     774            }
     775          else if (index < -TOTAL_KEYWORDS)
     776            {
     777              register int offset = - 1 - TOTAL_KEYWORDS - index;
     778              register const struct css_value *wordptr = &wordlist_value[TOTAL_KEYWORDS + lookup[offset]];
     779              register const struct css_value *wordendptr = wordptr + -lookup[offset + 1];
     780
     781              while (wordptr < wordendptr)
     782                {
     783                  register const char *s = wordptr->name;
     784
     785                  if (*str == *s && !strcmp (str + 1, s + 1))
     786                    return wordptr;
     787                  wordptr++;
     788                }
    1056789            }
    1057790        }
     
    1059792  return 0;
    1060793}
    1061 #line 282 "cssvalues.gperf"
    1062 
    1063794static const char * const valueList[] = {
    1064795"",
  • trunk/WebCore/khtml/editing/htmlediting.cpp

    r8464 r8466  
    388388
    389389        // Add this property
    390         styleText += property->cssText().string();
     390
     391        if (property->id() == CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT) {
     392            // we have to special-case text decorations
     393            CSSProperty alteredProperty = CSSProperty(CSS_PROP_TEXT_DECORATION, property->value(), property->isImportant());
     394            styleText += alteredProperty.cssText().string();
     395        } else {
     396            styleText += property->cssText().string();
     397        }
    391398    }
    392399
     
    13411348    document()->updateLayout();
    13421349
    1343     // split the start node and containingelement if the selection starts inside of it
     1350    // split the start node and containing element if the selection starts inside of it
    13441351    bool splitStart = splitTextElementAtStartIfNeeded(start, end);
    13451352    if (splitStart) {
     
    14881495}
    14891496
     1497static bool hasTextDecorationProperty(NodeImpl *node)
     1498{
     1499    if (!node->isElementNode())
     1500        return false;
     1501
     1502    ElementImpl *element = static_cast<ElementImpl *>(node);
     1503    CSSComputedStyleDeclarationImpl style(element);
     1504
     1505    CSSValueImpl *value = style.getPropertyCSSValue(CSS_PROP_TEXT_DECORATION, DoNotUpdateLayout);
     1506
     1507    if (value) {
     1508        value->ref();
     1509        DOMString valueText(value->cssText());
     1510        value->deref();
     1511        if (strcasecmp(valueText,"none") != 0)
     1512            return true;
     1513    }
     1514
     1515    return false;
     1516}
     1517
     1518static NodeImpl* highestAncestorWithTextDecoration(NodeImpl *node)
     1519{
     1520    NodeImpl *result = NULL;
     1521
     1522    for (NodeImpl *n = node; n; n = n->parentNode()) {
     1523        if (hasTextDecorationProperty(n))
     1524            result = n;
     1525    }
     1526
     1527    return result;
     1528}
     1529
     1530CSSMutableStyleDeclarationImpl *ApplyStyleCommand::extractTextDecorationStyle(NodeImpl *node)
     1531{
     1532    ASSERT(node);
     1533    ASSERT(node->isElementNode());
     1534   
     1535    // non-html elements not handled yet
     1536    if (!node->isHTMLElement())
     1537        return 0;
     1538
     1539    HTMLElementImpl *element = static_cast<HTMLElementImpl *>(node);
     1540    CSSMutableStyleDeclarationImpl *style = element->inlineStyleDecl();
     1541    if (!style)
     1542        return 0;
     1543
     1544    style->ref();
     1545    int properties[1] = { CSS_PROP_TEXT_DECORATION };
     1546    CSSMutableStyleDeclarationImpl *textDecorationStyle = style->copyPropertiesInSet(properties, 1);
     1547
     1548    CSSValueImpl *property = style->getPropertyCSSValue(CSS_PROP_TEXT_DECORATION);
     1549    if (property && strcasecmp(property->cssText(), "none") != 0) {
     1550        removeCSSProperty(style, CSS_PROP_TEXT_DECORATION);
     1551    }
     1552
     1553    style->deref();
     1554
     1555    return textDecorationStyle;
     1556}
     1557
     1558CSSMutableStyleDeclarationImpl *ApplyStyleCommand::extractAndNegateTextDecorationStyle(NodeImpl *node)
     1559{
     1560    ASSERT(node);
     1561    ASSERT(node->isElementNode());
     1562   
     1563    // non-html elements not handled yet
     1564    if (!node->isHTMLElement())
     1565        return 0;
     1566
     1567    HTMLElementImpl *element = static_cast<HTMLElementImpl *>(node);
     1568    CSSComputedStyleDeclarationImpl *computedStyle = new CSSComputedStyleDeclarationImpl(element);
     1569    ASSERT(computedStyle);
     1570
     1571    computedStyle->ref();
     1572
     1573    int properties[1] = { CSS_PROP_TEXT_DECORATION };
     1574    CSSMutableStyleDeclarationImpl *textDecorationStyle = computedStyle->copyPropertiesInSet(properties, 1);
     1575   
     1576
     1577    CSSValueImpl *property = computedStyle->getPropertyCSSValue(CSS_PROP_TEXT_DECORATION);
     1578    if (property && strcasecmp(property->cssText(), "none") != 0) {
     1579        property->ref();
     1580        CSSMutableStyleDeclarationImpl *newStyle = textDecorationStyle->copy();
     1581
     1582        newStyle->ref();
     1583        newStyle->setProperty(CSS_PROP_TEXT_DECORATION, "none");
     1584        applyTextDecorationStyle(node, newStyle);
     1585        newStyle->deref();
     1586
     1587        property->deref();
     1588    }
     1589
     1590    computedStyle->deref();
     1591
     1592    return textDecorationStyle;
     1593}
     1594
     1595void ApplyStyleCommand::applyTextDecorationStyle(NodeImpl *node, CSSMutableStyleDeclarationImpl *style)
     1596{
     1597    ASSERT(node);
     1598
     1599    if (!style || !style->cssText().length())
     1600        return;
     1601
     1602    if (node->isTextNode()) {
     1603        HTMLElementImpl *styleSpan = static_cast<HTMLElementImpl *>(createStyleSpanElement(document()));
     1604        insertNodeBefore(styleSpan, node);
     1605        surroundNodeRangeWithElement(node, node, styleSpan);
     1606        node = styleSpan;
     1607    }
     1608
     1609    if (!node->isElementNode())
     1610        return;
     1611
     1612    HTMLElementImpl *element = static_cast<HTMLElementImpl *>(node);
     1613       
     1614    StyleChange styleChange(style, Position(element, 0), StyleChange::DoNotUseLegacyHTMLStyles);
     1615    if (styleChange.cssStyle().length() > 0) {
     1616        DOMString cssText = styleChange.cssStyle();
     1617        CSSMutableStyleDeclarationImpl *decl = element->inlineStyleDecl();
     1618        if (decl)
     1619            cssText += decl->cssText();
     1620        setNodeAttribute(element, ATTR_STYLE, cssText);
     1621    }
     1622}
     1623
     1624void ApplyStyleCommand::pushDownTextDecorationStyleAroundNode(NodeImpl *node, const Position &start, const Position &end, bool force)
     1625{
     1626    NodeImpl *highestAncestor = highestAncestorWithTextDecoration(node);
     1627   
     1628    if (highestAncestor) {
     1629        NodeImpl *nextCurrent;
     1630        NodeImpl *nextChild;
     1631        for (NodeImpl *current = highestAncestor; current != node; current = nextCurrent) {
     1632            ASSERT(current);
     1633           
     1634            nextCurrent = NULL;
     1635           
     1636            CSSMutableStyleDeclarationImpl *decoration = force ? extractAndNegateTextDecorationStyle(current) : extractTextDecorationStyle(current);
     1637            if (decoration)
     1638                decoration->ref();
     1639
     1640            for (NodeImpl *child = current->firstChild(); child; child = nextChild) {
     1641                nextChild = child->nextSibling();
     1642
     1643                if (node == child) {
     1644                    nextCurrent = child;
     1645                } else if (node->isAncestor(child)) {
     1646                    applyTextDecorationStyle(child, decoration);
     1647                    nextCurrent = child;
     1648                } else {
     1649                    applyTextDecorationStyle(child, decoration);
     1650                }
     1651            }
     1652
     1653            if (decoration)
     1654                decoration->deref();
     1655        }
     1656    }
     1657}
     1658
     1659void ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries(const Position &start, const Position &end)
     1660{
     1661    // We need to work in two passes. First we push down any inline
     1662    // styles that set text decoration. Then we look for any remaining
     1663    // styles (caused by stylesheets) and explicitly negate text
     1664    // decoration while pushing down.
     1665
     1666    pushDownTextDecorationStyleAroundNode(start.node(), start, end, false);
     1667    document()->updateLayout();
     1668    pushDownTextDecorationStyleAroundNode(start.node(), start, end, true);
     1669
     1670    pushDownTextDecorationStyleAroundNode(end.node(), start, end, false);
     1671    document()->updateLayout();
     1672    pushDownTextDecorationStyleAroundNode(end.node(), start, end, true);
     1673}
     1674
    14901675void ApplyStyleCommand::removeInlineStyle(CSSMutableStyleDeclarationImpl *style, const Position &start, const Position &end)
    14911676{
     
    14941679    ASSERT(start.node()->inDocument());
    14951680    ASSERT(end.node()->inDocument());
    1496     ASSERT(RangeImpl::compareBoundaryPoints(start, end) <= 0);
    1497    
     1681    ASSERT(RangeImpl::compareBoundaryPoints(start, end) < 0);
     1682   
     1683    CSSValueImpl *textDecorationSpecialProperty = style->getPropertyCSSValue(CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT);
     1684
     1685    if (textDecorationSpecialProperty) {
     1686        pushDownTextDecorationStyleAtBoundaries(start.downstream(), end.upstream());
     1687        style = style->copy();
     1688        style->setProperty(CSS_PROP_TEXT_DECORATION, textDecorationSpecialProperty->cssText(), style->getPropertyPriority(CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT));
     1689    }
     1690
    14981691    NodeImpl *node = start.node();
    14991692    while (node) {
     
    15101703        node = next;
    15111704    }
     1705
     1706
     1707    if (textDecorationSpecialProperty) {
     1708        style->deref();
     1709    }
    15121710}
    15131711
     
    15201718        RangeImpl::compareBoundaryPoints(pos, end) <= 0;
    15211719}
     1720
     1721bool ApplyStyleCommand::nodeFullyUnselected(NodeImpl *node, const Position &start, const Position &end) const
     1722{
     1723    ASSERT(node);
     1724
     1725    Position pos = Position(node, node->childNodeCount()).upstream();
     1726    bool isFullyBeforeStart = RangeImpl::compareBoundaryPoints(pos, start) < 0;
     1727    bool isFullyAfterEnd = RangeImpl::compareBoundaryPoints(node, 0, end.node(), end.offset()) > 0;
     1728
     1729    return isFullyBeforeStart || isFullyAfterEnd;
     1730}
     1731
    15221732
    15231733//------------------------------------------------------------------------------------------
  • trunk/WebCore/khtml/editing/htmlediting.h

    r8464 r8466  
    276276    void removeInlineStyle(DOM::CSSMutableStyleDeclarationImpl *, const DOM::Position &start, const DOM::Position &end);
    277277    bool nodeFullySelected(DOM::NodeImpl *, const DOM::Position &start, const DOM::Position &end) const;
    278 
     278    bool nodeFullyUnselected(DOM::NodeImpl *node, const DOM::Position &start, const DOM::Position &end) const;
     279    DOM::CSSMutableStyleDeclarationImpl *extractTextDecorationStyle(DOM::NodeImpl *node);
     280    DOM::CSSMutableStyleDeclarationImpl *extractAndNegateTextDecorationStyle(DOM::NodeImpl *node);
     281    void applyTextDecorationStyle(DOM::NodeImpl *node, DOM::CSSMutableStyleDeclarationImpl *style);
     282    void pushDownTextDecorationStyleAroundNode(DOM::NodeImpl *node, const DOM::Position &start, const DOM::Position &end, bool force);
     283    void pushDownTextDecorationStyleAtBoundaries(const DOM::Position &start, const DOM::Position &end);
     284   
    279285    // style-application helpers
    280286    void applyBlockStyle(DOM::CSSMutableStyleDeclarationImpl *);
  • trunk/WebCore/khtml/editing/jsediting.cpp

    r8464 r8466  
    333333bool execUnderline(KHTMLPart *part, bool userInterface, const DOMString &value)
    334334{
    335     bool isUnderlined = selectionStartHasStyle(part, CSS_PROP_TEXT_DECORATION, "underline");
    336     return execStyleChange(part, CSS_PROP_TEXT_DECORATION, isUnderlined ? "none" : "underline");
     335    bool isUnderlined = selectionStartHasStyle(part, CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT, "underline");
     336    return execStyleChange(part, CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT, isUnderlined ? "none" : "underline");
    337337}
    338338
  • trunk/WebCore/khtml/html/html_elementimpl.cpp

    r8324 r8466  
    112112        return;
    113113    attrValueDict->remove(attrValue.implementation());
     114}
     115
     116void HTMLElementImpl::invalidateStyleAttribute()
     117{
     118    setStyleAttributeValid(false);
     119}
     120
     121void HTMLElementImpl::updateStyleAttribute()
     122{
     123    // we need to say teh attribute is valid before setting it to avoid the
     124    // possibility of an infinite loop
     125    setStyleAttributeValid(true);
     126    setAttribute(ATTR_STYLE, getInlineStyleDecl()->cssText());
    114127}
    115128
  • trunk/WebCore/khtml/html/html_elementimpl.h

    r8194 r8466  
    186186    static QPtrDict<QPtrDict<QPtrDict<CSSMappedAttributeDeclarationImpl> > >* m_mappedAttributeDecls;
    187187
     188    void invalidateStyleAttribute();
     189    void updateStyleAttribute();
    188190protected:
     191
    189192    // for IMG, OBJECT and APPLET
    190193    void addHTMLAlignment(HTMLAttributeImpl* htmlAttr);
  • trunk/WebCore/khtml/xml/dom_elementimpl.cpp

    r8057 r8466  
    195195    namedAttrMap = 0;
    196196    m_prefix = 0;
     197    m_isStyleAttributeValid = true;
    197198}
    198199
     
    224225}
    225226
     227void ElementImpl::updateStyleAttributeIfNeeded() const
     228{
     229    if (!m_isStyleAttributeValid && isHTMLElement()) {
     230        static_cast<HTMLElementImpl *>(const_cast<ElementImpl *>(this))->updateStyleAttribute();
     231    }
     232}
     233
     234NamedAttrMapImpl* ElementImpl::attributes(bool readonly) const
     235{
     236    updateStyleAttributeIfNeeded();
     237
     238    if (!readonly && !namedAttrMap) createAttributeMap();
     239    return namedAttrMap;
     240}
     241
    226242unsigned short ElementImpl::nodeType() const
    227243{
     
    241257const AtomicString& ElementImpl::getAttribute(NodeImpl::Id id) const
    242258{
     259    if (id == ATTR_STYLE)
     260        updateStyleAttributeIfNeeded();
     261
    243262    if (namedAttrMap) {
    244263        AttributeImpl* a = namedAttrMap->getAttributeItem(id);
     
    321340bool ElementImpl::hasAttributes() const
    322341{
     342    updateStyleAttributeIfNeeded();
     343
    323344    return namedAttrMap && namedAttrMap->length() > 0;
    324345}
     
    615636void ElementImpl::dump(QTextStream *stream, QString ind) const
    616637{
     638    updateStyleAttributeIfNeeded();
    617639    if (namedAttrMap) {
    618640        for (uint i = 0; i < namedAttrMap->length(); i++) {
  • trunk/WebCore/khtml/xml/dom_elementimpl.h

    r7785 r8466  
    182182    void setAttribute (NodeImpl::Id id, const DOMString &value);
    183183
    184     NamedAttrMapImpl* attributes(bool readonly = false) const
    185     {
    186         if (!readonly && !namedAttrMap) createAttributeMap();
    187         return namedAttrMap;
    188     }
     184    NamedAttrMapImpl* attributes(bool readonly = false) const;
    189185
    190186    // This method is called whenever an attribute is added, changed or removed.
     
    234230    DOMString openTagStartToString() const;
    235231
     232    bool isStyleAttributeValid() const { return m_isStyleAttributeValid; }
     233    void setStyleAttributeValid(bool valid) { m_isStyleAttributeValid = valid; }
     234
    236235private:
    237236    void updateId(const AtomicString& oldId, const AtomicString& newId);
     237
     238    void updateStyleAttributeIfNeeded() const;
    238239
    239240protected: // member variables
    240241    mutable NamedAttrMapImpl *namedAttrMap;
    241242    DOMStringImpl *m_prefix;
     243    bool m_isStyleAttributeValid;
    242244};
    243245
  • trunk/WebKit/ChangeLog

    r8464 r8466  
     12005-01-26  Maciej Stachowiak  <mjs@apple.com>
     2
     3        Reviewed by Darin, Hyatt and Ken.
     4
     5        <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
     6
     7        * WebView.subproj/WebHTMLView.m:
     8        (-[WebHTMLView _styleFromFontAttributes:]): Use new -khtml-text-decorations-in-effect
     9        property
     10        (-[WebHTMLView _styleForAttributeChange:]): likewise
     11        (-[WebHTMLView underline:]): likewise
     12
    1132005-01-27  Ken Kocienda  <kocienda@apple.com>
    214
  • trunk/WebKit/WebView.subproj/WebHTMLView.m

    r8464 r8466  
    34203420    // FIXME: Underline wins here if we have both (see bug 3790443).
    34213421    if (strikethroughInt == NSUnderlineStyleNone && underlineInt == NSUnderlineStyleNone)
    3422         [style setTextDecoration:@"none"];
     3422        [style setProperty:@"-khtml-text-decorations-in-effect" :@"none" :@""];
    34233423    else if (underlineInt == NSUnderlineStyleNone)
    3424         [style setTextDecoration:@"line-through"];
     3424        [style setProperty:@"-khtml-text-decorations-in-effect" :@"line-through" :@""];
    34253425    else
    3426         [style setTextDecoration:@"underline"];
     3426        [style setProperty:@"-khtml-text-decorations-in-effect" :@"underline" :@""];
    34273427
    34283428    return style;
     
    36823682    if (sa == sb) {
    36833683        if (sa == NSUnderlineStyleNone)
    3684             [style setTextDecoration:@"none"]; // we really mean "no line-through" rather than "none"
     3684            [style setProperty:@"-khtml-text-decorations-in-effect" :@"none" :@""];
     3685            // we really mean "no line-through" rather than "none"
    36853686        else
    3686             [style setTextDecoration:@"line-through"]; // we really mean "add line-through" rather than "line-through"
     3687            [style setProperty:@"-khtml-text-decorations-in-effect" :@"line-through" :@""];
     3688            // we really mean "add line-through" rather than "line-through"
    36873689    }
    36883690
     
    37023704    if (ua == ub) {
    37033705        if (ua == NSUnderlineStyleNone)
    3704             [style setTextDecoration:@"none"]; // we really mean "no underline" rather than "none"
     3706            [style setProperty:@"-khtml-text-decorations-in-effect" :@"none" :@""];
     3707            // we really mean "no underline" rather than "none"
    37053708        else
    3706             [style setTextDecoration:@"underline"]; // we really mean "add underline" rather than "underline"
     3709            [style setProperty:@"-khtml-text-decorations-in-effect" :@"underline" :@""];
     3710            // we really mean "add underline" rather than "underline"
    37073711    }
    37083712
     
    41074111    // FIXME: This currently clears overline, line-through, and blink as an unwanted side effect.
    41084112    DOMCSSStyleDeclaration *style = [self _emptyStyle];
    4109     [style setTextDecoration:@"underline"];
     4113    [style setProperty:@"-khtml-text-decorations-in-effect" :@"underline" :@""];
    41104114    if ([[self _bridge] selectionStartHasStyle:style])
    4111         [style setTextDecoration:@"none"];
     4115        [style setProperty:@"-khtml-text-decorations-in-effect" :@"none" :@""];
    41124116    [self _applyStyleToSelection:style withUndoAction:WebUndoActionUnderline];
    41134117}
Note: See TracChangeset for help on using the changeset viewer.