# The HTML Living Standard is Copyright © 2018 WHATWG (Apple, Google, Mozilla,
# Microsoft) and available under a Creative Commons Attribution 4.0
# International License: see https://whatwg.org/ and
# https://creativecommons.org/licenses/by/4.0/
#
# Accessible Rich Internet Applications (WAI-ARIA) is Copyright © 2013-2019
# W3C® (MIT, ERCIM, Keio, Beihang) and available under the W3C Document
# License: see https://w3c.github.io/aria/ and
# https://www.w3.org/Consortium/Legal/2015/doc-license or W3C-Document-
# License.html where provided
#
# Based on current published specifications accessed Thu 23 May 13:50:08 UTC
# 2019
#
# This file generated by free software by Tawesoft Ltd and/or contributor(s)
# available from `https://github.com/tawesoft` or
# `https://www.tawesoft.co.uk/products/open-source-software`
#
# This implementation of the above specifications is frozen as `tags_1`.
# Only backwards-compatible changes to this file will be made.


import dominate
from enum import Enum
from typing import Mapping, Optional, Tuple, Union
from typing_extensions import Literal


class Aria:
    """
    Holder for all `aria-*` attribute arguments. May be typechecked in future.

    e.g. `button(aria=Aria(pressed="false"))`
    """
    def __init__(self, **kwargs):
        self.kwargs = kwargs


class Events:
    """
    Holder for all `on*` event attribute arguments. May be typechecked in
    future.

    e.g. `button(events=Events(click="alert('Hello world');"))`
    """
    def __init__(self, **kwargs):
        self.kwargs = kwargs


class ElementType(Enum):
    normal_elements = 0
    foreign_elements = 1
    escapable_raw_text_elements = 2
    void_elements = 3
    the_template_element = 4
    raw_text_elements = 5


class a(dominate.tags.html_tag):
    """Hyperlink"""
    name='a'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        download:           Optional[str] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        href:               Optional[str] = None,
        hreflang:           Optional[str] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        ping:               Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        rel:                Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        target:             Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if download is not None: optional['download'] = download
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if href is not None: optional['href'] = href
        if hreflang is not None: optional['hreflang'] = hreflang
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if ping is not None: optional['ping'] = ping
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if rel is not None: optional['rel'] = rel
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if target is not None: optional['target'] = target
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        super().__init__(*args, **optional)

class abbr(dominate.tags.html_tag):
    """Abbreviation"""
    name='abbr'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class address(dominate.tags.html_tag):
    """Contact information for a page or article element"""
    name='address'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class area(dominate.tags.html_tag):
    """Hyperlink or dead area on an image map"""
    name='area'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        alt:                Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        coords:             Optional[str] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        download:           Optional[str] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        href:               Optional[str] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        ping:               Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        rel:                Optional[str] = None,
        role:               Optional[str] = None,
        shape:              Optional[Literal['circle', 'default', 'poly', 'rect']] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        target:             Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if alt is not None: optional['alt'] = alt
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if coords is not None: optional['coords'] = coords
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if download is not None: optional['download'] = download
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if href is not None: optional['href'] = href
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if ping is not None: optional['ping'] = ping
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if rel is not None: optional['rel'] = rel
        if role is not None: optional['role'] = role
        if shape is not None: optional['shape'] = shape
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if target is not None: optional['target'] = target
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class article(dominate.tags.html_tag):
    """Self-contained syndicatable or reusable composition"""
    name='article'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class aside(dominate.tags.html_tag):
    """Sidebar for tangentially related content"""
    name='aside'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class audio(dominate.tags.html_tag):
    """Audio player"""
    name='audio'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autoplay:           Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        controls:           Optional[bool] = None,
        crossorigin:        Optional[Literal['anonymous', 'use-credentials']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        loop:               Optional[bool] = None,
        muted:              Optional[bool] = None,
        nonce:              Optional[str] = None,
        preload:            Optional[Literal['auto', 'metadata', 'none']] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autoplay is not None: optional['autoplay'] = autoplay
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if controls is not None: optional['controls'] = controls
        if crossorigin is not None: optional['crossorigin'] = crossorigin
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if loop is not None: optional['loop'] = loop
        if muted is not None: optional['muted'] = muted
        if nonce is not None: optional['nonce'] = nonce
        if preload is not None: optional['preload'] = preload
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class b(dominate.tags.html_tag):
    """Keywords"""
    name='b'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class base(dominate.tags.html_tag):
    """
    Base URL and default target browsing context for hyperlinks and forms
    """
    name='base'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        href:               Optional[str] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        target:             Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if href is not None: optional['href'] = href
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if target is not None: optional['target'] = target
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class bdi(dominate.tags.html_tag):
    """Text directionality isolation"""
    name='bdi'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class bdo(dominate.tags.html_tag):
    """Text directionality formatting"""
    name='bdo'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class blockquote(dominate.tags.html_tag):
    """A section quoted from another source"""
    name='blockquote'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        cite:               Optional[str] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if cite is not None: optional['cite'] = cite
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class body(dominate.tags.html_tag):
    """Document body"""
    name='body'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class br(dominate.tags.html_tag):
    """Line break, e.g. in poem or postal address"""
    name='br'
    kind=ElementType.void_elements
    is_single=True
    is_inline=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class button(dominate.tags.html_tag):
    """Button control"""
    name='button'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autofocus:          Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        formaction:         Optional[str] = None,
        formenctype:        Optional[Literal['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']] = None,
        formmethod:         Optional[Literal['GET', 'POST', 'dialog']] = None,
        formnovalidate:     Optional[bool] = None,
        formtarget:         Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[Literal['button', 'reset', 'submit']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autofocus is not None: optional['autofocus'] = autofocus
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if formaction is not None: optional['formaction'] = formaction
        if formenctype is not None: optional['formenctype'] = formenctype
        if formmethod is not None: optional['formmethod'] = formmethod
        if formnovalidate is not None: optional['formnovalidate'] = formnovalidate
        if formtarget is not None: optional['formtarget'] = formtarget
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class canvas(dominate.tags.html_tag):
    """Scriptable bitmap canvas"""
    name='canvas'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if width is not None: optional['width'] = width
        super().__init__(*args, **optional)

class caption(dominate.tags.html_tag):
    """Table caption"""
    name='caption'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class cite(dominate.tags.html_tag):
    """Title of a work"""
    name='cite'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class code(dominate.tags.html_tag):
    """Computer code"""
    name='code'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class col(dominate.tags.html_tag):
    """Table column"""
    name='col'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        span:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if span is not None: optional['span'] = span
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class colgroup(dominate.tags.html_tag):
    """Group of columns in a table"""
    name='colgroup'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        span:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if span is not None: optional['span'] = span
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class data(dominate.tags.html_tag):
    """Machine-readable equivalent"""
    name='data'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class datalist(dominate.tags.html_tag):
    """Container for options for combo box control"""
    name='datalist'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class dd(dominate.tags.html_tag):
    """Content for corresponding dt element(s)"""
    name='dd'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class del_(dominate.tags.html_tag):
    """A removal from the document"""
    name='del'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        cite:               Optional[str] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        datetime:           Optional[str] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if cite is not None: optional['cite'] = cite
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if datetime is not None: optional['datetime'] = datetime
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class details(dominate.tags.html_tag):
    """Disclosure control for hiding details"""
    name='details'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        open:               Optional[bool] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if open is not None: optional['open'] = open
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class dfn(dominate.tags.html_tag):
    """Defining instance"""
    name='dfn'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class dialog(dominate.tags.html_tag):
    """Dialog box or window"""
    name='dialog'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        open:               Optional[bool] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if open is not None: optional['open'] = open
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class div(dominate.tags.html_tag):
    """
    Generic flow container, or container for name-value groups in dl
    elements
    """
    name='div'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class dl(dominate.tags.html_tag):
    """Association list consisting of zero or more name-value groups"""
    name='dl'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class dt(dominate.tags.html_tag):
    """Legend for corresponding dd element(s)"""
    name='dt'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class em(dominate.tags.html_tag):
    """Stress emphasis"""
    name='em'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class embed(dominate.tags.html_tag):
    """Plugin"""
    name='embed'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None,
        width:              Optional[str] = None
        , **kwargs # any extra attributes
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        if width is not None: optional['width'] = width
        assert not (set(kwargs) & set(optional)) # collisions
        optional.update(kwargs)

        super().__init__(**optional)
        assert args is None

class fieldset(dominate.tags.html_tag):
    """Group of form controls"""
    name='fieldset'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class figcaption(dominate.tags.html_tag):
    """Caption for figure"""
    name='figcaption'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class figure(dominate.tags.html_tag):
    """Figure with optional caption"""
    name='figure'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class footer(dominate.tags.html_tag):
    """Footer for a page or section"""
    name='footer'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class form(dominate.tags.html_tag):
    """User-submittable form"""
    name='form'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accept_charset:     Optional[str] = None,
        accesskey:          Optional[str] = None,
        action:             Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autocomplete:       Optional[Literal['off', 'on']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enctype:            Optional[Literal['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        method:             Optional[Literal['GET', 'POST', 'dialog']] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        novalidate:         Optional[bool] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        target:             Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accept_charset is not None: optional['accept_charset'] = accept_charset
        if accesskey is not None: optional['accesskey'] = accesskey
        if action is not None: optional['action'] = action
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autocomplete is not None: optional['autocomplete'] = autocomplete
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enctype is not None: optional['enctype'] = enctype
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if method is not None: optional['method'] = method
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if novalidate is not None: optional['novalidate'] = novalidate
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if target is not None: optional['target'] = target
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h1(dominate.tags.html_tag):
    """Section heading"""
    name='h1'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h2(dominate.tags.html_tag):
    """Section heading"""
    name='h2'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h3(dominate.tags.html_tag):
    """Section heading"""
    name='h3'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h4(dominate.tags.html_tag):
    """Section heading"""
    name='h4'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h5(dominate.tags.html_tag):
    """Section heading"""
    name='h5'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class h6(dominate.tags.html_tag):
    """Section heading"""
    name='h6'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class head(dominate.tags.html_tag):
    """Container for document metadata"""
    name='head'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class header(dominate.tags.html_tag):
    """Introductory or navigational aids for a page or section"""
    name='header'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class hgroup(dominate.tags.html_tag):
    """heading group"""
    name='hgroup'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class hr(dominate.tags.html_tag):
    """Thematic break"""
    name='hr'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class html(dominate.tags.html_tag):
    """Root element"""
    name='html'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        manifest:           Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if manifest is not None: optional['manifest'] = manifest
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class i(dominate.tags.html_tag):
    """Alternate voice"""
    name='i'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class iframe(dominate.tags.html_tag):
    """Nested browsing context"""
    name='iframe'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        allow:              Optional[str] = None,
        allowfullscreen:    Optional[bool] = None,
        allowpaymentrequest: Optional[bool] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        role:               Optional[str] = None,
        sandbox:            Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        srcdoc:             Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if allow is not None: optional['allow'] = allow
        if allowfullscreen is not None: optional['allowfullscreen'] = allowfullscreen
        if allowpaymentrequest is not None: optional['allowpaymentrequest'] = allowpaymentrequest
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if role is not None: optional['role'] = role
        if sandbox is not None: optional['sandbox'] = sandbox
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if srcdoc is not None: optional['srcdoc'] = srcdoc
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if width is not None: optional['width'] = width
        super().__init__(*args, **optional)

class img(dominate.tags.html_tag):
    """Image"""
    name='img'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        alt:                Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        crossorigin:        Optional[Literal['anonymous', 'use-credentials']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        decoding:           Optional[Literal['async', 'auto', 'sync']] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        ismap:              Optional[bool] = None,
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        srcset:             Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        usemap:             Optional[str] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if alt is not None: optional['alt'] = alt
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if crossorigin is not None: optional['crossorigin'] = crossorigin
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if decoding is not None: optional['decoding'] = decoding
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if ismap is not None: optional['ismap'] = ismap
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if srcset is not None: optional['srcset'] = srcset
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if usemap is not None: optional['usemap'] = usemap
        if width is not None: optional['width'] = width
        super().__init__(**optional)
        assert args is None

class input(dominate.tags.html_tag):
    """Form control"""
    name='input'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accept:             Optional[str] = None,
        accesskey:          Optional[str] = None,
        alt:                Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autocomplete:       Optional[str] = None,
        autofocus:          Optional[bool] = None,
        checked:            Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        dirname:            Optional[str] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        formaction:         Optional[str] = None,
        formenctype:        Optional[Literal['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain']] = None,
        formmethod:         Optional[Literal['GET', 'POST', 'dialog']] = None,
        formnovalidate:     Optional[bool] = None,
        formtarget:         Optional[str] = None,
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        list:               Optional[str] = None,
        max:                Optional[str] = None,
        maxlength:          Optional[str] = None,
        min:                Optional[str] = None,
        minlength:          Optional[str] = None,
        multiple:           Optional[bool] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        pattern:            Optional[str] = None,
        placeholder:        Optional[str] = None,
        readonly:           Optional[bool] = None,
        required:           Optional[bool] = None,
        role:               Optional[str] = None,
        size:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        step:               Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None,
        value:              Optional[str] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accept is not None: optional['accept'] = accept
        if accesskey is not None: optional['accesskey'] = accesskey
        if alt is not None: optional['alt'] = alt
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autocomplete is not None: optional['autocomplete'] = autocomplete
        if autofocus is not None: optional['autofocus'] = autofocus
        if checked is not None: optional['checked'] = checked
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if dirname is not None: optional['dirname'] = dirname
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if formaction is not None: optional['formaction'] = formaction
        if formenctype is not None: optional['formenctype'] = formenctype
        if formmethod is not None: optional['formmethod'] = formmethod
        if formnovalidate is not None: optional['formnovalidate'] = formnovalidate
        if formtarget is not None: optional['formtarget'] = formtarget
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if list is not None: optional['list'] = list
        if max is not None: optional['max'] = max
        if maxlength is not None: optional['maxlength'] = maxlength
        if min is not None: optional['min'] = min
        if minlength is not None: optional['minlength'] = minlength
        if multiple is not None: optional['multiple'] = multiple
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if pattern is not None: optional['pattern'] = pattern
        if placeholder is not None: optional['placeholder'] = placeholder
        if readonly is not None: optional['readonly'] = readonly
        if required is not None: optional['required'] = required
        if role is not None: optional['role'] = role
        if size is not None: optional['size'] = size
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if step is not None: optional['step'] = step
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        if value is not None: optional['value'] = value
        if width is not None: optional['width'] = width
        super().__init__(**optional)
        assert args is None

class ins(dominate.tags.html_tag):
    """An addition to the document"""
    name='ins'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        cite:               Optional[str] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        datetime:           Optional[str] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if cite is not None: optional['cite'] = cite
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if datetime is not None: optional['datetime'] = datetime
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class kbd(dominate.tags.html_tag):
    """User input"""
    name='kbd'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class label(dominate.tags.html_tag):
    """Caption for a form control"""
    name='label'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        for_:               Optional[str] = None, # 'for' is a keyword
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if for_ is not None: optional['html_for'] = for_
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class legend(dominate.tags.html_tag):
    """Caption for fieldset"""
    name='legend'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class li(dominate.tags.html_tag):
    """List item"""
    name='li'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class link(dominate.tags.html_tag):
    """Link metadata"""
    name='link'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        as_:                Optional[str] = None, # 'as' is a keyword
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        crossorigin:        Optional[Literal['anonymous', 'use-credentials']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        href:               Optional[str] = None,
        hreflang:           Optional[str] = None,
        id:                 Optional[str] = None,
        imagesizes:         Optional[str] = None,
        imagesrcset:        Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        integrity:          Optional[str] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        media:              Optional[str] = None,
        nonce:              Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        rel:                Optional[str] = None,
        role:               Optional[str] = None,
        sizes:              Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if as_ is not None: optional['_as'] = as_
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if crossorigin is not None: optional['crossorigin'] = crossorigin
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if href is not None: optional['href'] = href
        if hreflang is not None: optional['hreflang'] = hreflang
        if id is not None: optional['id'] = id
        if imagesizes is not None: optional['imagesizes'] = imagesizes
        if imagesrcset is not None: optional['imagesrcset'] = imagesrcset
        if inputmode is not None: optional['inputmode'] = inputmode
        if integrity is not None: optional['integrity'] = integrity
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if media is not None: optional['media'] = media
        if nonce is not None: optional['nonce'] = nonce
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if rel is not None: optional['rel'] = rel
        if role is not None: optional['role'] = role
        if sizes is not None: optional['sizes'] = sizes
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        super().__init__(**optional)
        assert args is None

class main(dominate.tags.html_tag):
    """Container for the dominant contents of the document"""
    name='main'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class map(dominate.tags.html_tag):
    """Image map"""
    name='map'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class mark(dominate.tags.html_tag):
    """Highlight"""
    name='mark'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class math(dominate.tags.html_tag):
    """MathML root"""
    name='math'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        events:             Optional[Events] = None # `on*` event attributes
        , **kwargs # any extra attributes
    ) -> None:
        optional = {}
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        assert not (set(kwargs) & set(optional)) # collisions
        optional.update(kwargs)

        super().__init__(*args, **optional)

class menu(dominate.tags.html_tag):
    """Menu of commands"""
    name='menu'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class meta(dominate.tags.html_tag):
    """Text metadata"""
    name='meta'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        charset:            Optional[Literal['utf-8']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        content:            Optional[str] = None,
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        http_equiv:         Optional[Literal['content-security-policy', 'content-type', 'default-style', 'refresh', 'x-ua-compatible']] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if charset is not None: optional['charset'] = charset
        if class_ is not None: optional['cls'] = class_
        if content is not None: optional['content'] = content
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if http_equiv is not None: optional['http_equiv'] = http_equiv
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class meter(dominate.tags.html_tag):
    """Gauge"""
    name='meter'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        high:               Optional[str] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        low:                Optional[str] = None,
        max:                Optional[str] = None,
        min:                Optional[str] = None,
        nonce:              Optional[str] = None,
        optimum:            Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if high is not None: optional['high'] = high
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if low is not None: optional['low'] = low
        if max is not None: optional['max'] = max
        if min is not None: optional['min'] = min
        if nonce is not None: optional['nonce'] = nonce
        if optimum is not None: optional['optimum'] = optimum
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class nav(dominate.tags.html_tag):
    """Section with navigational links"""
    name='nav'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class noscript(dominate.tags.html_tag):
    """Fallback content for script"""
    name='noscript'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class object(dominate.tags.html_tag):
    """Image, nested browsing context, or plugin"""
    name='object'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        data:               Optional[str] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None,
        usemap:             Optional[str] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if data is not None: optional['data'] = data
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        if usemap is not None: optional['usemap'] = usemap
        if width is not None: optional['width'] = width
        super().__init__(*args, **optional)

class ol(dominate.tags.html_tag):
    """Ordered list"""
    name='ol'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        reversed:           Optional[bool] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        start:              Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[Literal['1', 'A', 'I', 'a', 'i']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if reversed is not None: optional['reversed'] = reversed
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if start is not None: optional['start'] = start
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        super().__init__(*args, **optional)

class optgroup(dominate.tags.html_tag):
    """Group of options in a list box"""
    name='optgroup'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        label:              Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if label is not None: optional['label'] = label
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class option(dominate.tags.html_tag):
    """Option in a list box or combo box control"""
    name='option'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        label:              Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        selected:           Optional[bool] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if label is not None: optional['label'] = label
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if selected is not None: optional['selected'] = selected
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class output(dominate.tags.html_tag):
    """Calculated output value"""
    name='output'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        for_:               Optional[str] = None, # 'for' is a keyword
        form:               Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if for_ is not None: optional['html_for'] = for_
        if form is not None: optional['form'] = form
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class p(dominate.tags.html_tag):
    """Paragraph"""
    name='p'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class param(dominate.tags.html_tag):
    """Parameter for object"""
    name='param'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(**optional)
        assert args is None

class picture(dominate.tags.html_tag):
    """Image"""
    name='picture'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class pre(dominate.tags.html_tag):
    """Block of preformatted text"""
    name='pre'
    kind=ElementType.normal_elements
    is_pretty=False

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class progress(dominate.tags.html_tag):
    """Progress bar"""
    name='progress'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        max:                Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        value:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if max is not None: optional['max'] = max
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if value is not None: optional['value'] = value
        super().__init__(*args, **optional)

class q(dominate.tags.html_tag):
    """Quotation"""
    name='q'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        cite:               Optional[str] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if cite is not None: optional['cite'] = cite
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class rp(dominate.tags.html_tag):
    """Parenthesis for ruby annotation text"""
    name='rp'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class rt(dominate.tags.html_tag):
    """Ruby annotation text"""
    name='rt'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class ruby(dominate.tags.html_tag):
    """Ruby annotation(s)"""
    name='ruby'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class s(dominate.tags.html_tag):
    """Inaccurate text"""
    name='s'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class samp(dominate.tags.html_tag):
    """Computer output"""
    name='samp'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class script(dominate.tags.html_tag):
    """Embedded script"""
    name='script'
    kind=ElementType.raw_text_elements
    is_pretty=False

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        async:              Optional[bool] = None,
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        crossorigin:        Optional[Literal['anonymous', 'use-credentials']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        defer:              Optional[bool] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        integrity:          Optional[str] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        referrerpolicy:     Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if async is not None: optional['async'] = async
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if crossorigin is not None: optional['crossorigin'] = crossorigin
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if defer is not None: optional['defer'] = defer
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if integrity is not None: optional['integrity'] = integrity
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if referrerpolicy is not None: optional['referrerpolicy'] = referrerpolicy
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        super().__init__(*args, **optional)

class section(dominate.tags.html_tag):
    """Generic document or application section"""
    name='section'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class select(dominate.tags.html_tag):
    """List box control"""
    name='select'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autocomplete:       Optional[str] = None,
        autofocus:          Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        multiple:           Optional[bool] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        required:           Optional[bool] = None,
        role:               Optional[str] = None,
        size:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autocomplete is not None: optional['autocomplete'] = autocomplete
        if autofocus is not None: optional['autofocus'] = autofocus
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if multiple is not None: optional['multiple'] = multiple
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if required is not None: optional['required'] = required
        if role is not None: optional['role'] = role
        if size is not None: optional['size'] = size
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class slot(dominate.tags.html_tag):
    """Shadow tree slot"""
    name='slot'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class small(dominate.tags.html_tag):
    """Side comment"""
    name='small'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class source(dominate.tags.html_tag):
    """Image source for img or media source for video or audio"""
    name='source'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        media:              Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        sizes:              Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        srcset:             Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        type:               Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if media is not None: optional['media'] = media
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if sizes is not None: optional['sizes'] = sizes
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if srcset is not None: optional['srcset'] = srcset
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if type is not None: optional['type'] = type
        super().__init__(**optional)
        assert args is None

class span(dominate.tags.html_tag):
    """Generic phrasing container"""
    name='span'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class strong(dominate.tags.html_tag):
    """Importance"""
    name='strong'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class style(dominate.tags.html_tag):
    """Embedded styling information"""
    name='style'
    kind=ElementType.raw_text_elements
    is_pretty=False

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        media:              Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if media is not None: optional['media'] = media
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class sub(dominate.tags.html_tag):
    """Subscript"""
    name='sub'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class summary(dominate.tags.html_tag):
    """Caption for details"""
    name='summary'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class sup(dominate.tags.html_tag):
    """Superscript"""
    name='sup'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class svg(dominate.tags.html_tag):
    """SVG root"""
    name='svg'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        events:             Optional[Events] = None # `on*` event attributes
        , **kwargs # any extra attributes
    ) -> None:
        optional = {}
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        assert not (set(kwargs) & set(optional)) # collisions
        optional.update(kwargs)

        super().__init__(*args, **optional)

class table(dominate.tags.html_tag):
    """Table"""
    name='table'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class tbody(dominate.tags.html_tag):
    """Group of rows in a table"""
    name='tbody'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class td(dominate.tags.html_tag):
    """Table cell"""
    name='td'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        colspan:            Optional[str] = None,
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        headers:            Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        rowspan:            Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if colspan is not None: optional['colspan'] = colspan
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if headers is not None: optional['headers'] = headers
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if rowspan is not None: optional['rowspan'] = rowspan
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class template(dominate.tags.html_tag):
    """Template"""
    name='template'
    kind=ElementType.the_template_element

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class textarea(dominate.tags.html_tag):
    """Multiline text controls"""
    name='textarea'
    kind=ElementType.escapable_raw_text_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autofocus:          Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        cols:               Optional[str] = None,
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        dirname:            Optional[str] = None,
        disabled:           Optional[bool] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        form:               Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        maxlength:          Optional[str] = None,
        minlength:          Optional[str] = None,
        name:               Optional[str] = None,
        nonce:              Optional[str] = None,
        placeholder:        Optional[str] = None,
        readonly:           Optional[bool] = None,
        required:           Optional[bool] = None,
        role:               Optional[str] = None,
        rows:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        wrap:               Optional[Literal['hard', 'soft']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autofocus is not None: optional['autofocus'] = autofocus
        if class_ is not None: optional['cls'] = class_
        if cols is not None: optional['cols'] = cols
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if dirname is not None: optional['dirname'] = dirname
        if disabled is not None: optional['disabled'] = disabled
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if form is not None: optional['form'] = form
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if maxlength is not None: optional['maxlength'] = maxlength
        if minlength is not None: optional['minlength'] = minlength
        if name is not None: optional['name'] = name
        if nonce is not None: optional['nonce'] = nonce
        if placeholder is not None: optional['placeholder'] = placeholder
        if readonly is not None: optional['readonly'] = readonly
        if required is not None: optional['required'] = required
        if role is not None: optional['role'] = role
        if rows is not None: optional['rows'] = rows
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if wrap is not None: optional['wrap'] = wrap
        super().__init__(*args, **optional)

class tfoot(dominate.tags.html_tag):
    """Group of footer rows in a table"""
    name='tfoot'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class th(dominate.tags.html_tag):
    """Table header cell"""
    name='th'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        abbr:               Optional[str] = None,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        colspan:            Optional[str] = None,
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        headers:            Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        rowspan:            Optional[str] = None,
        scope:              Optional[Literal['col', 'colgroup', 'row', 'rowgroup']] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if abbr is not None: optional['abbr'] = abbr
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if colspan is not None: optional['colspan'] = colspan
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if headers is not None: optional['headers'] = headers
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if rowspan is not None: optional['rowspan'] = rowspan
        if scope is not None: optional['scope'] = scope
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class thead(dominate.tags.html_tag):
    """Group of heading rows in a table"""
    name='thead'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class time(dominate.tags.html_tag):
    """Machine-readable equivalent of date- or time-related data"""
    name='time'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        datetime:           Optional[str] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if datetime is not None: optional['datetime'] = datetime
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class title(dominate.tags.html_tag):
    """Document title"""
    name='title'
    kind=ElementType.escapable_raw_text_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class tr(dominate.tags.html_tag):
    """Table row"""
    name='tr'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class track(dominate.tags.html_tag):
    """Timed text track"""
    name='track'
    kind=ElementType.void_elements
    is_single=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        default:            Optional[bool] = None,
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        kind:               Optional[Literal['captions', 'chapters', 'descriptions', 'metadata', 'subtitles']] = None,
        label:              Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        srclang:            Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if default is not None: optional['default'] = default
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if kind is not None: optional['kind'] = kind
        if label is not None: optional['label'] = label
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if srclang is not None: optional['srclang'] = srclang
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

class u(dominate.tags.html_tag):
    """Unarticulated annotation"""
    name='u'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class ul(dominate.tags.html_tag):
    """List"""
    name='ul'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class var(dominate.tags.html_tag):
    """Variable"""
    name='var'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(*args, **optional)

class video(dominate.tags.html_tag):
    """Video player"""
    name='video'
    kind=ElementType.normal_elements

    def __init__(self,
        *args,
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        autoplay:           Optional[bool] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        controls:           Optional[bool] = None,
        crossorigin:        Optional[Literal['anonymous', 'use-credentials']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        height:             Optional[str] = None,
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        loop:               Optional[bool] = None,
        muted:              Optional[bool] = None,
        nonce:              Optional[str] = None,
        playsinline:        Optional[bool] = None,
        poster:             Optional[str] = None,
        preload:            Optional[Literal['auto', 'metadata', 'none']] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        src:                Optional[str] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None,
        width:              Optional[str] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if autoplay is not None: optional['autoplay'] = autoplay
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if controls is not None: optional['controls'] = controls
        if crossorigin is not None: optional['crossorigin'] = crossorigin
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if height is not None: optional['height'] = height
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if loop is not None: optional['loop'] = loop
        if muted is not None: optional['muted'] = muted
        if nonce is not None: optional['nonce'] = nonce
        if playsinline is not None: optional['playsinline'] = playsinline
        if poster is not None: optional['poster'] = poster
        if preload is not None: optional['preload'] = preload
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if src is not None: optional['src'] = src
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        if width is not None: optional['width'] = width
        super().__init__(*args, **optional)

class wbr(dominate.tags.html_tag):
    """Line breaking opportunity"""
    name='wbr'
    kind=ElementType.void_elements
    is_single=True
    is_inline=True

    def __init__(self,
        *args: None, # this is a void element
        accesskey:          Optional[str] = None,
        aria:               Optional[Aria] = None, # `aria-*` attributes
        autocapitalize:     Optional[Literal['characters', 'none', 'off', 'on', 'sentences', 'words']] = None,
        class_:             Optional[str] = None, # 'class' is a keyword
        contenteditable:    Optional[Literal['false', 'true']] = None,
        custom:             Optional[Mapping[str, str]] = None, # Custom `data-*` attributes
        dir:                Optional[Literal['auto', 'ltr', 'rtl']] = None,
        draggable:          Optional[Literal['false', 'true']] = None,
        enterkeyhint:       Optional[Literal['done', 'enter', 'go', 'next', 'previous', 'search', 'send']] = None,
        events:             Optional[Events] = None, # `on*` event attributes
        hidden:             Optional[bool] = None,
        id:                 Optional[str] = None,
        inputmode:          Optional[Literal['decimal', 'email', 'none', 'numeric', 'search', 'tel', 'text', 'url']] = None,
        is_:                Optional[str] = None, # 'is' is a keyword
        itemid:             Optional[str] = None,
        itemprop:           Optional[str] = None,
        itemref:            Optional[str] = None,
        itemscope:          Optional[bool] = None,
        itemtype:           Optional[str] = None,
        lang:               Optional[str] = None,
        nonce:              Optional[str] = None,
        role:               Optional[str] = None,
        slot:               Optional[str] = None,
        spellcheck:         Optional[Literal['false', 'true']] = None,
        style:              Optional[str] = None,
        tabindex:           Optional[str] = None,
        title:              Optional[str] = None,
        translate:          Optional[Literal['no', 'yes']] = None
    ) -> None:
        optional = {}
        if accesskey is not None: optional['accesskey'] = accesskey
        if aria is not None: optional.update({'aria-'+k: v for k, v in aria.kwargs.items()})
        if autocapitalize is not None: optional['autocapitalize'] = autocapitalize
        if class_ is not None: optional['cls'] = class_
        if contenteditable is not None: optional['contenteditable'] = contenteditable
        if custom is not None: optional.update({'data-'+k: v for k, v in custom.items()})
        if dir is not None: optional['dir'] = dir
        if draggable is not None: optional['draggable'] = draggable
        if enterkeyhint is not None: optional['enterkeyhint'] = enterkeyhint
        if events is not None: optional.update({'on'+k: v for k, v in events.kwargs.items()})
        if hidden is not None: optional['hidden'] = hidden
        if id is not None: optional['id'] = id
        if inputmode is not None: optional['inputmode'] = inputmode
        if is_ is not None: optional['_is'] = is_
        if itemid is not None: optional['itemid'] = itemid
        if itemprop is not None: optional['itemprop'] = itemprop
        if itemref is not None: optional['itemref'] = itemref
        if itemscope is not None: optional['itemscope'] = itemscope
        if itemtype is not None: optional['itemtype'] = itemtype
        if lang is not None: optional['lang'] = lang
        if nonce is not None: optional['nonce'] = nonce
        if role is not None: optional['role'] = role
        if slot is not None: optional['slot'] = slot
        if spellcheck is not None: optional['spellcheck'] = spellcheck
        if style is not None: optional['style'] = style
        if tabindex is not None: optional['tabindex'] = tabindex
        if title is not None: optional['title'] = title
        if translate is not None: optional['translate'] = translate
        super().__init__(**optional)
        assert args is None

