/*
 * Copyright (C) 2020-2021 Alexander Borisov
 *
 * Author: Alexander Borisov <borisov@lexbor.com>
 */

/*
 * Caution!
 * This file generated by the script "utils/lexbor/css/selectors/pseudo.py"!
 * Do not change this file!
 */


#ifndef LXB_CSS_SELECTOS_PSEUDO_RES_H
#define LXB_CSS_SELECTOS_PSEUDO_RES_H

#include "lexbor/core/shs.h"
#include "lexbor/css/selectors/pseudo_const.h"


static const lxb_css_selectors_pseudo_data_t lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS__LAST_ENTRY] = 
{
    {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS__UNDEF},
    {(lxb_char_t *) "active", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_ACTIVE},
    {(lxb_char_t *) "any-link", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_ANY_LINK},
    {(lxb_char_t *) "blank", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_BLANK},
    {(lxb_char_t *) "checked", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_CHECKED},
    {(lxb_char_t *) "current", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_CURRENT},
    {(lxb_char_t *) "default", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_DEFAULT},
    {(lxb_char_t *) "disabled", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_DISABLED},
    {(lxb_char_t *) "empty", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_EMPTY},
    {(lxb_char_t *) "enabled", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_ENABLED},
    {(lxb_char_t *) "first-child", 11, LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_CHILD},
    {(lxb_char_t *) "first-of-type", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_OF_TYPE},
    {(lxb_char_t *) "focus", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS},
    {(lxb_char_t *) "focus-visible", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_VISIBLE},
    {(lxb_char_t *) "focus-within", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_WITHIN},
    {(lxb_char_t *) "fullscreen", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_FULLSCREEN},
    {(lxb_char_t *) "future", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUTURE},
    {(lxb_char_t *) "hover", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_HOVER},
    {(lxb_char_t *) "in-range", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_IN_RANGE},
    {(lxb_char_t *) "indeterminate", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_INDETERMINATE},
    {(lxb_char_t *) "invalid", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_INVALID},
    {(lxb_char_t *) "last-child", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_CHILD},
    {(lxb_char_t *) "last-of-type", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_OF_TYPE},
    {(lxb_char_t *) "link", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_LINK},
    {(lxb_char_t *) "local-link", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_LOCAL_LINK},
    {(lxb_char_t *) "only-child", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_CHILD},
    {(lxb_char_t *) "only-of-type", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_OF_TYPE},
    {(lxb_char_t *) "optional", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_OPTIONAL},
    {(lxb_char_t *) "out-of-range", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_OUT_OF_RANGE},
    {(lxb_char_t *) "past", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_PAST},
    {(lxb_char_t *) "placeholder-shown", 17, LXB_CSS_SELECTOR_PSEUDO_CLASS_PLACEHOLDER_SHOWN},
    {(lxb_char_t *) "read-only", 9, LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_ONLY},
    {(lxb_char_t *) "read-write", 10, LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_WRITE},
    {(lxb_char_t *) "required", 8, LXB_CSS_SELECTOR_PSEUDO_CLASS_REQUIRED},
    {(lxb_char_t *) "root", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_ROOT},
    {(lxb_char_t *) "scope", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_SCOPE},
    {(lxb_char_t *) "target", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET},
    {(lxb_char_t *) "target-within", 13, LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET_WITHIN},
    {(lxb_char_t *) "user-invalid", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_USER_INVALID},
    {(lxb_char_t *) "valid", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_VALID},
    {(lxb_char_t *) "visited", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_VISITED},
    {(lxb_char_t *) "warning", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_WARNING}
};

static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__LAST_ENTRY] = 
{
    {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION__UNDEF,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function__undef, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "current", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_current, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
    {(lxb_char_t *) "dir", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_dir, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "has", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS,
     false, LXB_CSS_SELECTOR_COMBINATOR_DESCENDANT,
     {.state = lxb_css_selectors_state_pseudo_class_function_has, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving_relative}, true, true},
    {(lxb_char_t *) "is", 2, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_is, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true},
    {(lxb_char_t *) "lang", 4, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_lang, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "lexbor-contains", 15, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_lexbor_contains, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "not", 3, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_not, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
    {(lxb_char_t *) "nth-child", 9, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_child, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
    {(lxb_char_t *) "nth-col", 7, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_col, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "nth-last-child", 14, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_child, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, true},
    {(lxb_char_t *) "nth-last-col", 12, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_col, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "nth-last-of-type", 16, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_last_of_type, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "nth-of-type", 11, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_nth_of_type, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false},
    {(lxb_char_t *) "where", 5, LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_class_function_where, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_forgiving}, true, true}
};

static const lxb_css_selectors_pseudo_data_t lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT__LAST_ENTRY] = 
{
    {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT__UNDEF},
    {(lxb_char_t *) "after", 5, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_AFTER},
    {(lxb_char_t *) "backdrop", 8, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BACKDROP},
    {(lxb_char_t *) "before", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BEFORE},
    {(lxb_char_t *) "first-letter", 12, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LETTER},
    {(lxb_char_t *) "first-line", 10, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LINE},
    {(lxb_char_t *) "grammar-error", 13, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_GRAMMAR_ERROR},
    {(lxb_char_t *) "inactive-selection", 18, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_INACTIVE_SELECTION},
    {(lxb_char_t *) "marker", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_MARKER},
    {(lxb_char_t *) "placeholder", 11, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_PLACEHOLDER},
    {(lxb_char_t *) "selection", 9, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SELECTION},
    {(lxb_char_t *) "spelling-error", 14, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SPELLING_ERROR},
    {(lxb_char_t *) "target-text", 11, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TARGET_TEXT}
};

static const lxb_css_selectors_pseudo_data_func_t lxb_css_selectors_pseudo_data_pseudo_element_function[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FUNCTION__LAST_ENTRY] = 
{
    {(lxb_char_t *) "#undef", 6, LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FUNCTION__UNDEF,
     false, LXB_CSS_SELECTOR_COMBINATOR_CLOSE,
     {.state = lxb_css_selectors_state_pseudo_element_function__undef, .block = NULL,
      .failed = lxb_css_state_failed, .end = lxb_css_selectors_state_function_end}, false, false}
};

static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_shs[79] = 
{
    {NULL, NULL, 78, 0}, 
    {"focus-visible", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_VISIBLE], 13, 0}, 
    {"first-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_OF_TYPE], 13, 1}, 
    {"in-range", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_IN_RANGE], 8, 0}, 
    {"out-of-range", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_OUT_OF_RANGE], 12, 0}, 
    {"read-write", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_WRITE], 10, 0}, 
    {"hover", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_HOVER], 5, 3}, 
    {"enabled", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ENABLED], 7, 0}, 
    {"fullscreen", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FULLSCREEN], 10, 0}, 
    {"placeholder-shown", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_PLACEHOLDER_SHOWN], 17, 0}, 
    {"target-within", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET_WITHIN], 13, 0}, 
    {"indeterminate", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_INDETERMINATE], 13, 0}, 
    {"local-link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LOCAL_LINK], 10, 0}, 
    {"user-invalid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_USER_INVALID], 12, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"past", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_PAST], 4, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"only-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_OF_TYPE], 12, 4}, 
    {"only-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ONLY_CHILD], 10, 5}, 
    {"focus", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS], 5, 7}, 
    {NULL, NULL, 0, 0}, 
    {"any-link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ANY_LINK], 8, 0}, 
    {NULL, NULL, 0, 0}, 
    {"valid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_VALID], 5, 0}, 
    {NULL, NULL, 0, 0}, 
    {"visited", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_VISITED], 7, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"root", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ROOT], 4, 8}, 
    {NULL, NULL, 0, 0}, 
    {"focus-within", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FOCUS_WITHIN], 12, 0}, 
    {"checked", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_CHECKED], 7, 9}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"active", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_ACTIVE], 6, 0}, 
    {"last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_OF_TYPE], 12, 0}, 
    {NULL, NULL, 0, 0}, 
    {"target", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_TARGET], 6, 0}, 
    {"read-only", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_READ_ONLY], 9, 10}, 
    {NULL, NULL, 0, 0}, 
    {"first-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FIRST_CHILD], 11, 0}, 
    {"disabled", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_DISABLED], 8, 0}, 
    {NULL, NULL, 0, 0}, 
    {"required", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_REQUIRED], 8, 0}, 
    {NULL, NULL, 0, 0}, 
    {"link", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LINK], 4, 0}, 
    {NULL, NULL, 0, 0}, 
    {"empty", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_EMPTY], 5, 0}, 
    {"invalid", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_INVALID], 7, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"scope", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_SCOPE], 5, 12}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"blank", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_BLANK], 5, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"warning", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_WARNING], 7, 0}, 
    {"default", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_DEFAULT], 7, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"future", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUTURE], 6, 0}, 
    {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_CURRENT], 7, 0}, 
    {"optional", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_OPTIONAL], 8, 0}, 
    {NULL, NULL, 0, 0}, 
    {"last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class[LXB_CSS_SELECTOR_PSEUDO_CLASS_LAST_CHILD], 10, 0}, 
    {NULL, NULL, 0, 0}
};

static const lexbor_shs_entry_t lxb_css_selectors_pseudo_class_function_shs[43] = 
{
    {NULL, NULL, 42, 0}, 
    {"nth-last-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_OF_TYPE], 16, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"not", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NOT], 3, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"has", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_HAS], 3, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"nth-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_COL], 7, 0}, 
    {NULL, NULL, 0, 0}, 
    {"lexbor-contains", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LEXBOR_CONTAINS], 15, 0}, 
    {NULL, NULL, 0, 0}, 
    {"is", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_IS], 2, 0}, 
    {"nth-last-col", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_COL], 12, 0}, 
    {"current", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_CURRENT], 7, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"lang", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_LANG], 4, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"nth-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_CHILD], 9, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"nth-last-child", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_LAST_CHILD], 14, 0}, 
    {"nth-of-type", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_NTH_OF_TYPE], 11, 0}, 
    {NULL, NULL, 0, 0}, 
    {"dir", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_DIR], 3, 0}, 
    {"where", (void *) &lxb_css_selectors_pseudo_data_pseudo_class_function[LXB_CSS_SELECTOR_PSEUDO_CLASS_FUNCTION_WHERE], 5, 0}, 
    {NULL, NULL, 0, 0}
};

static const lexbor_shs_entry_t lxb_css_selectors_pseudo_element_shs[24] = 
{
    {NULL, NULL, 23, 0}, 
    {NULL, NULL, 0, 0}, 
    {"inactive-selection", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_INACTIVE_SELECTION], 18, 0}, 
    {"placeholder", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_PLACEHOLDER], 11, 0}, 
    {"after", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_AFTER], 5, 0}, 
    {"first-letter", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LETTER], 12, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"grammar-error", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_GRAMMAR_ERROR], 13, 0}, 
    {"before", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BEFORE], 6, 0}, 
    {"selection", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SELECTION], 9, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {"target-text", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TARGET_TEXT], 11, 0}, 
    {"first-line", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LINE], 10, 0}, 
    {"spelling-error", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_SPELLING_ERROR], 14, 0}, 
    {"backdrop", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BACKDROP], 8, 0}, 
    {"marker", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_MARKER], 6, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}
};

static const lexbor_shs_entry_t lxb_css_selectors_pseudo_element_function_shs[6] = 
{
    {NULL, NULL, 5, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}, 
    {NULL, NULL, 0, 0}
};


#endif /* LXB_CSS_SELECTOS_PSEUDO_RES_H */
