# bash completion for talosctl                             -*- shell-script -*-

__talosctl_debug()
{
    if [[ -n ${BASH_COMP_DEBUG_FILE:-} ]]; then
        echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
    fi
}

# Homebrew on Macs have version 1.3 of bash-completion which doesn't include
# _init_completion. This is a very minimal version of that function.
__talosctl_init_completion()
{
    COMPREPLY=()
    _get_comp_words_by_ref "$@" cur prev words cword
}

__talosctl_index_of_word()
{
    local w word=$1
    shift
    index=0
    for w in "$@"; do
        [[ $w = "$word" ]] && return
        index=$((index+1))
    done
    index=-1
}

__talosctl_contains_word()
{
    local w word=$1; shift
    for w in "$@"; do
        [[ $w = "$word" ]] && return
    done
    return 1
}

__talosctl_handle_go_custom_completion()
{
    __talosctl_debug "${FUNCNAME[0]}: cur is ${cur}, words[*] is ${words[*]}, #words[@] is ${#words[@]}"

    local shellCompDirectiveError=1
    local shellCompDirectiveNoSpace=2
    local shellCompDirectiveNoFileComp=4
    local shellCompDirectiveFilterFileExt=8
    local shellCompDirectiveFilterDirs=16

    local out requestComp lastParam lastChar comp directive args

    # Prepare the command to request completions for the program.
    # Calling ${words[0]} instead of directly talosctl allows to handle aliases
    args=("${words[@]:1}")
    # Disable ActiveHelp which is not supported for bash completion v1
    requestComp="TALOSCTL_ACTIVE_HELP=0 ${words[0]} __completeNoDesc ${args[*]}"

    lastParam=${words[$((${#words[@]}-1))]}
    lastChar=${lastParam:$((${#lastParam}-1)):1}
    __talosctl_debug "${FUNCNAME[0]}: lastParam ${lastParam}, lastChar ${lastChar}"

    if [ -z "${cur}" ] && [ "${lastChar}" != "=" ]; then
        # If the last parameter is complete (there is a space following it)
        # We add an extra empty parameter so we can indicate this to the go method.
        __talosctl_debug "${FUNCNAME[0]}: Adding extra empty parameter"
        requestComp="${requestComp} \"\""
    fi

    __talosctl_debug "${FUNCNAME[0]}: calling ${requestComp}"
    # Use eval to handle any environment variables and such
    out=$(eval "${requestComp}" 2>/dev/null)

    # Extract the directive integer at the very end of the output following a colon (:)
    directive=${out##*:}
    # Remove the directive
    out=${out%:*}
    if [ "${directive}" = "${out}" ]; then
        # There is not directive specified
        directive=0
    fi
    __talosctl_debug "${FUNCNAME[0]}: the completion directive is: ${directive}"
    __talosctl_debug "${FUNCNAME[0]}: the completions are: ${out}"

    if [ $((directive & shellCompDirectiveError)) -ne 0 ]; then
        # Error code.  No completion.
        __talosctl_debug "${FUNCNAME[0]}: received error from custom completion go code"
        return
    else
        if [ $((directive & shellCompDirectiveNoSpace)) -ne 0 ]; then
            if [[ $(type -t compopt) = "builtin" ]]; then
                __talosctl_debug "${FUNCNAME[0]}: activating no space"
                compopt -o nospace
            fi
        fi
        if [ $((directive & shellCompDirectiveNoFileComp)) -ne 0 ]; then
            if [[ $(type -t compopt) = "builtin" ]]; then
                __talosctl_debug "${FUNCNAME[0]}: activating no file completion"
                compopt +o default
            fi
        fi
    fi

    if [ $((directive & shellCompDirectiveFilterFileExt)) -ne 0 ]; then
        # File extension filtering
        local fullFilter filter filteringCmd
        # Do not use quotes around the $out variable or else newline
        # characters will be kept.
        for filter in ${out}; do
            fullFilter+="$filter|"
        done

        filteringCmd="_filedir $fullFilter"
        __talosctl_debug "File filtering command: $filteringCmd"
        $filteringCmd
    elif [ $((directive & shellCompDirectiveFilterDirs)) -ne 0 ]; then
        # File completion for directories only
        local subdir
        # Use printf to strip any trailing newline
        subdir=$(printf "%s" "${out}")
        if [ -n "$subdir" ]; then
            __talosctl_debug "Listing directories in $subdir"
            __talosctl_handle_subdirs_in_dir_flag "$subdir"
        else
            __talosctl_debug "Listing directories in ."
            _filedir -d
        fi
    else
        while IFS='' read -r comp; do
            COMPREPLY+=("$comp")
        done < <(compgen -W "${out}" -- "$cur")
    fi
}

__talosctl_handle_reply()
{
    __talosctl_debug "${FUNCNAME[0]}"
    local comp
    case $cur in
        -*)
            if [[ $(type -t compopt) = "builtin" ]]; then
                compopt -o nospace
            fi
            local allflags
            if [ ${#must_have_one_flag[@]} -ne 0 ]; then
                allflags=("${must_have_one_flag[@]}")
            else
                allflags=("${flags[*]} ${two_word_flags[*]}")
            fi
            while IFS='' read -r comp; do
                COMPREPLY+=("$comp")
            done < <(compgen -W "${allflags[*]}" -- "$cur")
            if [[ $(type -t compopt) = "builtin" ]]; then
                [[ "${COMPREPLY[0]}" == *= ]] || compopt +o nospace
            fi

            # complete after --flag=abc
            if [[ $cur == *=* ]]; then
                if [[ $(type -t compopt) = "builtin" ]]; then
                    compopt +o nospace
                fi

                local index flag
                flag="${cur%=*}"
                __talosctl_index_of_word "${flag}" "${flags_with_completion[@]}"
                COMPREPLY=()
                if [[ ${index} -ge 0 ]]; then
                    PREFIX=""
                    cur="${cur#*=}"
                    ${flags_completion[${index}]}
                    if [ -n "${ZSH_VERSION:-}" ]; then
                        # zsh completion needs --flag= prefix
                        eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )"
                    fi
                fi
            fi

            if [[ -z "${flag_parsing_disabled}" ]]; then
                # If flag parsing is enabled, we have completed the flags and can return.
                # If flag parsing is disabled, we may not know all (or any) of the flags, so we fallthrough
                # to possibly call handle_go_custom_completion.
                return 0;
            fi
            ;;
    esac

    # check if we are handling a flag with special work handling
    local index
    __talosctl_index_of_word "${prev}" "${flags_with_completion[@]}"
    if [[ ${index} -ge 0 ]]; then
        ${flags_completion[${index}]}
        return
    fi

    # we are parsing a flag and don't have a special handler, no completion
    if [[ ${cur} != "${words[cword]}" ]]; then
        return
    fi

    local completions
    completions=("${commands[@]}")
    if [[ ${#must_have_one_noun[@]} -ne 0 ]]; then
        completions+=("${must_have_one_noun[@]}")
    elif [[ -n "${has_completion_function}" ]]; then
        # if a go completion function is provided, defer to that function
        __talosctl_handle_go_custom_completion
    fi
    if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then
        completions+=("${must_have_one_flag[@]}")
    fi
    while IFS='' read -r comp; do
        COMPREPLY+=("$comp")
    done < <(compgen -W "${completions[*]}" -- "$cur")

    if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then
        while IFS='' read -r comp; do
            COMPREPLY+=("$comp")
        done < <(compgen -W "${noun_aliases[*]}" -- "$cur")
    fi

    if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
        if declare -F __talosctl_custom_func >/dev/null; then
            # try command name qualified custom func
            __talosctl_custom_func
        else
            # otherwise fall back to unqualified for compatibility
            declare -F __custom_func >/dev/null && __custom_func
        fi
    fi

    # available in bash-completion >= 2, not always present on macOS
    if declare -F __ltrim_colon_completions >/dev/null; then
        __ltrim_colon_completions "$cur"
    fi

    # If there is only 1 completion and it is a flag with an = it will be completed
    # but we don't want a space after the =
    if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then
       compopt -o nospace
    fi
}

# The arguments should be in the form "ext1|ext2|extn"
__talosctl_handle_filename_extension_flag()
{
    local ext="$1"
    _filedir "@(${ext})"
}

__talosctl_handle_subdirs_in_dir_flag()
{
    local dir="$1"
    pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1 || return
}

__talosctl_handle_flag()
{
    __talosctl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"

    # if a command required a flag, and we found it, unset must_have_one_flag()
    local flagname=${words[c]}
    local flagvalue=""
    # if the word contained an =
    if [[ ${words[c]} == *"="* ]]; then
        flagvalue=${flagname#*=} # take in as flagvalue after the =
        flagname=${flagname%=*} # strip everything after the =
        flagname="${flagname}=" # but put the = back
    fi
    __talosctl_debug "${FUNCNAME[0]}: looking for ${flagname}"
    if __talosctl_contains_word "${flagname}" "${must_have_one_flag[@]}"; then
        must_have_one_flag=()
    fi

    # if you set a flag which only applies to this command, don't show subcommands
    if __talosctl_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
      commands=()
    fi

    # keep flag value with flagname as flaghash
    # flaghash variable is an associative array which is only supported in bash > 3.
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        if [ -n "${flagvalue}" ] ; then
            flaghash[${flagname}]=${flagvalue}
        elif [ -n "${words[ $((c+1)) ]}" ] ; then
            flaghash[${flagname}]=${words[ $((c+1)) ]}
        else
            flaghash[${flagname}]="true" # pad "true" for bool flag
        fi
    fi

    # skip the argument to a two word flag
    if [[ ${words[c]} != *"="* ]] && __talosctl_contains_word "${words[c]}" "${two_word_flags[@]}"; then
        __talosctl_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument"
        c=$((c+1))
        # if we are looking for a flags value, don't show commands
        if [[ $c -eq $cword ]]; then
            commands=()
        fi
    fi

    c=$((c+1))

}

__talosctl_handle_noun()
{
    __talosctl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"

    if __talosctl_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
        must_have_one_noun=()
    elif __talosctl_contains_word "${words[c]}" "${noun_aliases[@]}"; then
        must_have_one_noun=()
    fi

    nouns+=("${words[c]}")
    c=$((c+1))
}

__talosctl_handle_command()
{
    __talosctl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"

    local next_command
    if [[ -n ${last_command} ]]; then
        next_command="_${last_command}_${words[c]//:/__}"
    else
        if [[ $c -eq 0 ]]; then
            next_command="_talosctl_root_command"
        else
            next_command="_${words[c]//:/__}"
        fi
    fi
    c=$((c+1))
    __talosctl_debug "${FUNCNAME[0]}: looking for ${next_command}"
    declare -F "$next_command" >/dev/null && $next_command
}

__talosctl_handle_word()
{
    if [[ $c -ge $cword ]]; then
        __talosctl_handle_reply
        return
    fi
    __talosctl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
    if [[ "${words[c]}" == -* ]]; then
        __talosctl_handle_flag
    elif __talosctl_contains_word "${words[c]}" "${commands[@]}"; then
        __talosctl_handle_command
    elif [[ $c -eq 0 ]]; then
        __talosctl_handle_command
    elif __talosctl_contains_word "${words[c]}" "${command_aliases[@]}"; then
        # aliashash variable is an associative array which is only supported in bash > 3.
        if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
            words[c]=${aliashash[${words[c]}]}
            __talosctl_handle_command
        else
            __talosctl_handle_noun
        fi
    else
        __talosctl_handle_noun
    fi
    __talosctl_handle_word
}

_talosctl_apply-config()
{
    last_command="talosctl_apply-config"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cert-fingerprint=")
    two_word_flags+=("--cert-fingerprint")
    local_nonpersistent_flags+=("--cert-fingerprint")
    local_nonpersistent_flags+=("--cert-fingerprint=")
    flags+=("--config-patch=")
    two_word_flags+=("--config-patch")
    two_word_flags+=("-p")
    local_nonpersistent_flags+=("--config-patch")
    local_nonpersistent_flags+=("--config-patch=")
    local_nonpersistent_flags+=("-p")
    flags+=("--dry-run")
    local_nonpersistent_flags+=("--dry-run")
    flags+=("--file=")
    two_word_flags+=("--file")
    two_word_flags+=("-f")
    local_nonpersistent_flags+=("--file")
    local_nonpersistent_flags+=("--file=")
    local_nonpersistent_flags+=("-f")
    flags+=("--insecure")
    flags+=("-i")
    local_nonpersistent_flags+=("--insecure")
    local_nonpersistent_flags+=("-i")
    flags+=("--mode=")
    two_word_flags+=("--mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_bootstrap()
{
    last_command="talosctl_bootstrap"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--recover-from=")
    two_word_flags+=("--recover-from")
    local_nonpersistent_flags+=("--recover-from")
    local_nonpersistent_flags+=("--recover-from=")
    flags+=("--recover-skip-hash-check")
    local_nonpersistent_flags+=("--recover-skip-hash-check")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_cluster_create()
{
    last_command="talosctl_cluster_create"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--arch=")
    two_word_flags+=("--arch")
    local_nonpersistent_flags+=("--arch")
    local_nonpersistent_flags+=("--arch=")
    flags+=("--bad-rtc")
    local_nonpersistent_flags+=("--bad-rtc")
    flags+=("--cidr=")
    two_word_flags+=("--cidr")
    local_nonpersistent_flags+=("--cidr")
    local_nonpersistent_flags+=("--cidr=")
    flags+=("--cni-bin-path=")
    two_word_flags+=("--cni-bin-path")
    local_nonpersistent_flags+=("--cni-bin-path")
    local_nonpersistent_flags+=("--cni-bin-path=")
    flags+=("--cni-bundle-url=")
    two_word_flags+=("--cni-bundle-url")
    local_nonpersistent_flags+=("--cni-bundle-url")
    local_nonpersistent_flags+=("--cni-bundle-url=")
    flags+=("--cni-cache-dir=")
    two_word_flags+=("--cni-cache-dir")
    local_nonpersistent_flags+=("--cni-cache-dir")
    local_nonpersistent_flags+=("--cni-cache-dir=")
    flags+=("--cni-conf-dir=")
    two_word_flags+=("--cni-conf-dir")
    local_nonpersistent_flags+=("--cni-conf-dir")
    local_nonpersistent_flags+=("--cni-conf-dir=")
    flags+=("--config-patch=")
    two_word_flags+=("--config-patch")
    local_nonpersistent_flags+=("--config-patch")
    local_nonpersistent_flags+=("--config-patch=")
    flags+=("--config-patch-control-plane=")
    two_word_flags+=("--config-patch-control-plane")
    local_nonpersistent_flags+=("--config-patch-control-plane")
    local_nonpersistent_flags+=("--config-patch-control-plane=")
    flags+=("--config-patch-worker=")
    two_word_flags+=("--config-patch-worker")
    local_nonpersistent_flags+=("--config-patch-worker")
    local_nonpersistent_flags+=("--config-patch-worker=")
    flags+=("--control-plane-port=")
    two_word_flags+=("--control-plane-port")
    local_nonpersistent_flags+=("--control-plane-port")
    local_nonpersistent_flags+=("--control-plane-port=")
    flags+=("--controlplanes=")
    two_word_flags+=("--controlplanes")
    local_nonpersistent_flags+=("--controlplanes")
    local_nonpersistent_flags+=("--controlplanes=")
    flags+=("--cpus=")
    two_word_flags+=("--cpus")
    local_nonpersistent_flags+=("--cpus")
    local_nonpersistent_flags+=("--cpus=")
    flags+=("--cpus-workers=")
    two_word_flags+=("--cpus-workers")
    local_nonpersistent_flags+=("--cpus-workers")
    local_nonpersistent_flags+=("--cpus-workers=")
    flags+=("--crashdump")
    local_nonpersistent_flags+=("--crashdump")
    flags+=("--custom-cni-url=")
    two_word_flags+=("--custom-cni-url")
    local_nonpersistent_flags+=("--custom-cni-url")
    local_nonpersistent_flags+=("--custom-cni-url=")
    flags+=("--disable-dhcp-hostname")
    local_nonpersistent_flags+=("--disable-dhcp-hostname")
    flags+=("--disk=")
    two_word_flags+=("--disk")
    local_nonpersistent_flags+=("--disk")
    local_nonpersistent_flags+=("--disk=")
    flags+=("--disk-encryption-key-types=")
    two_word_flags+=("--disk-encryption-key-types")
    local_nonpersistent_flags+=("--disk-encryption-key-types")
    local_nonpersistent_flags+=("--disk-encryption-key-types=")
    flags+=("--disk-image-path=")
    two_word_flags+=("--disk-image-path")
    local_nonpersistent_flags+=("--disk-image-path")
    local_nonpersistent_flags+=("--disk-image-path=")
    flags+=("--dns-domain=")
    two_word_flags+=("--dns-domain")
    local_nonpersistent_flags+=("--dns-domain")
    local_nonpersistent_flags+=("--dns-domain=")
    flags+=("--docker-disable-ipv6")
    local_nonpersistent_flags+=("--docker-disable-ipv6")
    flags+=("--docker-host-ip=")
    two_word_flags+=("--docker-host-ip")
    local_nonpersistent_flags+=("--docker-host-ip")
    local_nonpersistent_flags+=("--docker-host-ip=")
    flags+=("--encrypt-ephemeral")
    local_nonpersistent_flags+=("--encrypt-ephemeral")
    flags+=("--encrypt-state")
    local_nonpersistent_flags+=("--encrypt-state")
    flags+=("--endpoint=")
    two_word_flags+=("--endpoint")
    local_nonpersistent_flags+=("--endpoint")
    local_nonpersistent_flags+=("--endpoint=")
    flags+=("--exposed-ports=")
    two_word_flags+=("--exposed-ports")
    two_word_flags+=("-p")
    local_nonpersistent_flags+=("--exposed-ports")
    local_nonpersistent_flags+=("--exposed-ports=")
    local_nonpersistent_flags+=("-p")
    flags+=("--extra-boot-kernel-args=")
    two_word_flags+=("--extra-boot-kernel-args")
    local_nonpersistent_flags+=("--extra-boot-kernel-args")
    local_nonpersistent_flags+=("--extra-boot-kernel-args=")
    flags+=("--extra-disks=")
    two_word_flags+=("--extra-disks")
    local_nonpersistent_flags+=("--extra-disks")
    local_nonpersistent_flags+=("--extra-disks=")
    flags+=("--extra-disks-size=")
    two_word_flags+=("--extra-disks-size")
    local_nonpersistent_flags+=("--extra-disks-size")
    local_nonpersistent_flags+=("--extra-disks-size=")
    flags+=("--extra-uefi-search-paths=")
    two_word_flags+=("--extra-uefi-search-paths")
    local_nonpersistent_flags+=("--extra-uefi-search-paths")
    local_nonpersistent_flags+=("--extra-uefi-search-paths=")
    flags+=("--image=")
    two_word_flags+=("--image")
    local_nonpersistent_flags+=("--image")
    local_nonpersistent_flags+=("--image=")
    flags+=("--init-node-as-endpoint")
    local_nonpersistent_flags+=("--init-node-as-endpoint")
    flags+=("--initrd-path=")
    two_word_flags+=("--initrd-path")
    local_nonpersistent_flags+=("--initrd-path")
    local_nonpersistent_flags+=("--initrd-path=")
    flags+=("--input-dir=")
    two_word_flags+=("--input-dir")
    two_word_flags+=("-i")
    local_nonpersistent_flags+=("--input-dir")
    local_nonpersistent_flags+=("--input-dir=")
    local_nonpersistent_flags+=("-i")
    flags+=("--install-image=")
    two_word_flags+=("--install-image")
    local_nonpersistent_flags+=("--install-image")
    local_nonpersistent_flags+=("--install-image=")
    flags+=("--ipv4")
    local_nonpersistent_flags+=("--ipv4")
    flags+=("--ipv6")
    local_nonpersistent_flags+=("--ipv6")
    flags+=("--iso-path=")
    two_word_flags+=("--iso-path")
    local_nonpersistent_flags+=("--iso-path")
    local_nonpersistent_flags+=("--iso-path=")
    flags+=("--kubeprism-port=")
    two_word_flags+=("--kubeprism-port")
    local_nonpersistent_flags+=("--kubeprism-port")
    local_nonpersistent_flags+=("--kubeprism-port=")
    flags+=("--kubernetes-version=")
    two_word_flags+=("--kubernetes-version")
    local_nonpersistent_flags+=("--kubernetes-version")
    local_nonpersistent_flags+=("--kubernetes-version=")
    flags+=("--memory=")
    two_word_flags+=("--memory")
    local_nonpersistent_flags+=("--memory")
    local_nonpersistent_flags+=("--memory=")
    flags+=("--memory-workers=")
    two_word_flags+=("--memory-workers")
    local_nonpersistent_flags+=("--memory-workers")
    local_nonpersistent_flags+=("--memory-workers=")
    flags+=("--mtu=")
    two_word_flags+=("--mtu")
    local_nonpersistent_flags+=("--mtu")
    local_nonpersistent_flags+=("--mtu=")
    flags+=("--nameservers=")
    two_word_flags+=("--nameservers")
    local_nonpersistent_flags+=("--nameservers")
    local_nonpersistent_flags+=("--nameservers=")
    flags+=("--registry-insecure-skip-verify=")
    two_word_flags+=("--registry-insecure-skip-verify")
    local_nonpersistent_flags+=("--registry-insecure-skip-verify")
    local_nonpersistent_flags+=("--registry-insecure-skip-verify=")
    flags+=("--registry-mirror=")
    two_word_flags+=("--registry-mirror")
    local_nonpersistent_flags+=("--registry-mirror")
    local_nonpersistent_flags+=("--registry-mirror=")
    flags+=("--skip-boot-phase-finished-check")
    local_nonpersistent_flags+=("--skip-boot-phase-finished-check")
    flags+=("--skip-injecting-config")
    local_nonpersistent_flags+=("--skip-injecting-config")
    flags+=("--skip-kubeconfig")
    local_nonpersistent_flags+=("--skip-kubeconfig")
    flags+=("--talos-version=")
    two_word_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version=")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")
    local_nonpersistent_flags+=("--talosconfig")
    local_nonpersistent_flags+=("--talosconfig=")
    flags+=("--use-vip")
    local_nonpersistent_flags+=("--use-vip")
    flags+=("--user-disk=")
    two_word_flags+=("--user-disk")
    local_nonpersistent_flags+=("--user-disk")
    local_nonpersistent_flags+=("--user-disk=")
    flags+=("--vmlinuz-path=")
    two_word_flags+=("--vmlinuz-path")
    local_nonpersistent_flags+=("--vmlinuz-path")
    local_nonpersistent_flags+=("--vmlinuz-path=")
    flags+=("--wait")
    local_nonpersistent_flags+=("--wait")
    flags+=("--wait-timeout=")
    two_word_flags+=("--wait-timeout")
    local_nonpersistent_flags+=("--wait-timeout")
    local_nonpersistent_flags+=("--wait-timeout=")
    flags+=("--wireguard-cidr=")
    two_word_flags+=("--wireguard-cidr")
    local_nonpersistent_flags+=("--wireguard-cidr")
    local_nonpersistent_flags+=("--wireguard-cidr=")
    flags+=("--with-apply-config")
    local_nonpersistent_flags+=("--with-apply-config")
    flags+=("--with-bootloader")
    local_nonpersistent_flags+=("--with-bootloader")
    flags+=("--with-cluster-discovery")
    local_nonpersistent_flags+=("--with-cluster-discovery")
    flags+=("--with-debug")
    local_nonpersistent_flags+=("--with-debug")
    flags+=("--with-init-node")
    local_nonpersistent_flags+=("--with-init-node")
    flags+=("--with-kubespan")
    local_nonpersistent_flags+=("--with-kubespan")
    flags+=("--with-network-bandwidth=")
    two_word_flags+=("--with-network-bandwidth")
    local_nonpersistent_flags+=("--with-network-bandwidth")
    local_nonpersistent_flags+=("--with-network-bandwidth=")
    flags+=("--with-network-chaos")
    local_nonpersistent_flags+=("--with-network-chaos")
    flags+=("--with-network-jitter=")
    two_word_flags+=("--with-network-jitter")
    local_nonpersistent_flags+=("--with-network-jitter")
    local_nonpersistent_flags+=("--with-network-jitter=")
    flags+=("--with-network-latency=")
    two_word_flags+=("--with-network-latency")
    local_nonpersistent_flags+=("--with-network-latency")
    local_nonpersistent_flags+=("--with-network-latency=")
    flags+=("--with-network-packet-corrupt=")
    two_word_flags+=("--with-network-packet-corrupt")
    local_nonpersistent_flags+=("--with-network-packet-corrupt")
    local_nonpersistent_flags+=("--with-network-packet-corrupt=")
    flags+=("--with-network-packet-loss=")
    two_word_flags+=("--with-network-packet-loss")
    local_nonpersistent_flags+=("--with-network-packet-loss")
    local_nonpersistent_flags+=("--with-network-packet-loss=")
    flags+=("--with-network-packet-reorder=")
    two_word_flags+=("--with-network-packet-reorder")
    local_nonpersistent_flags+=("--with-network-packet-reorder")
    local_nonpersistent_flags+=("--with-network-packet-reorder=")
    flags+=("--with-tpm2")
    local_nonpersistent_flags+=("--with-tpm2")
    flags+=("--with-uefi")
    local_nonpersistent_flags+=("--with-uefi")
    flags+=("--workers=")
    two_word_flags+=("--workers")
    local_nonpersistent_flags+=("--workers")
    local_nonpersistent_flags+=("--workers=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--name=")
    two_word_flags+=("--name")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--provisioner=")
    two_word_flags+=("--provisioner")
    flags+=("--state=")
    two_word_flags+=("--state")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_cluster_destroy()
{
    last_command="talosctl_cluster_destroy"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--force")
    flags+=("-f")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--name=")
    two_word_flags+=("--name")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--provisioner=")
    two_word_flags+=("--provisioner")
    flags+=("--state=")
    two_word_flags+=("--state")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_cluster_show()
{
    last_command="talosctl_cluster_show"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--name=")
    two_word_flags+=("--name")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--provisioner=")
    two_word_flags+=("--provisioner")
    flags+=("--state=")
    two_word_flags+=("--state")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_cluster()
{
    last_command="talosctl_cluster"

    command_aliases=()

    commands=()
    commands+=("create")
    commands+=("destroy")
    commands+=("show")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--name=")
    two_word_flags+=("--name")
    flags+=("--provisioner=")
    two_word_flags+=("--provisioner")
    flags+=("--state=")
    two_word_flags+=("--state")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_completion()
{
    last_command="talosctl_completion"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--help")
    flags+=("-h")
    local_nonpersistent_flags+=("--help")
    local_nonpersistent_flags+=("-h")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    must_have_one_noun+=("bash")
    must_have_one_noun+=("fish")
    must_have_one_noun+=("zsh")
    noun_aliases=()
}

_talosctl_config_add()
{
    last_command="talosctl_config_add"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--ca=")
    two_word_flags+=("--ca")
    local_nonpersistent_flags+=("--ca")
    local_nonpersistent_flags+=("--ca=")
    flags+=("--crt=")
    two_word_flags+=("--crt")
    local_nonpersistent_flags+=("--crt")
    local_nonpersistent_flags+=("--crt=")
    flags+=("--key=")
    two_word_flags+=("--key")
    local_nonpersistent_flags+=("--key")
    local_nonpersistent_flags+=("--key=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_context()
{
    last_command="talosctl_config_context"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_config_contexts()
{
    last_command="talosctl_config_contexts"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_endpoint()
{
    last_command="talosctl_config_endpoint"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_info()
{
    last_command="talosctl_config_info"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_merge()
{
    last_command="talosctl_config_merge"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_new()
{
    last_command="talosctl_config_new"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--crt-ttl=")
    two_word_flags+=("--crt-ttl")
    local_nonpersistent_flags+=("--crt-ttl")
    local_nonpersistent_flags+=("--crt-ttl=")
    flags+=("--roles=")
    two_word_flags+=("--roles")
    local_nonpersistent_flags+=("--roles")
    local_nonpersistent_flags+=("--roles=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_node()
{
    last_command="talosctl_config_node"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_config_remove()
{
    last_command="talosctl_config_remove"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--dry-run")
    local_nonpersistent_flags+=("--dry-run")
    flags+=("--noconfirm")
    flags+=("-y")
    local_nonpersistent_flags+=("--noconfirm")
    local_nonpersistent_flags+=("-y")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_config()
{
    last_command="talosctl_config"

    command_aliases=()

    commands=()
    commands+=("add")
    commands+=("context")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("use-context")
        aliashash["use-context"]="context"
    fi
    commands+=("contexts")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("get-contexts")
        aliashash["get-contexts"]="contexts"
    fi
    commands+=("endpoint")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("endpoints")
        aliashash["endpoints"]="endpoint"
    fi
    commands+=("info")
    commands+=("merge")
    commands+=("new")
    commands+=("node")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("nodes")
        aliashash["nodes"]="node"
    fi
    commands+=("remove")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_conformance_kubernetes()
{
    last_command="talosctl_conformance_kubernetes"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--mode=")
    two_word_flags+=("--mode")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_conformance()
{
    last_command="talosctl_conformance"

    command_aliases=()

    commands=()
    commands+=("kubernetes")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("k8s")
        aliashash["k8s"]="kubernetes"
    fi

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_containers()
{
    last_command="talosctl_containers"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--kubernetes")
    flags+=("-k")
    local_nonpersistent_flags+=("--kubernetes")
    local_nonpersistent_flags+=("-k")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_copy()
{
    last_command="talosctl_copy"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_dashboard()
{
    last_command="talosctl_dashboard"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--update-interval=")
    two_word_flags+=("--update-interval")
    two_word_flags+=("-d")
    local_nonpersistent_flags+=("--update-interval")
    local_nonpersistent_flags+=("--update-interval=")
    local_nonpersistent_flags+=("-d")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_disks()
{
    last_command="talosctl_disks"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--insecure")
    flags+=("-i")
    local_nonpersistent_flags+=("--insecure")
    local_nonpersistent_flags+=("-i")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_dmesg()
{
    last_command="talosctl_dmesg"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--follow")
    flags+=("-f")
    local_nonpersistent_flags+=("--follow")
    local_nonpersistent_flags+=("-f")
    flags+=("--tail")
    local_nonpersistent_flags+=("--tail")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_edit()
{
    last_command="talosctl_edit"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--dry-run")
    local_nonpersistent_flags+=("--dry-run")
    flags+=("--mode=")
    two_word_flags+=("--mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace=")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_alarm_disarm()
{
    last_command="talosctl_etcd_alarm_disarm"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_alarm_list()
{
    last_command="talosctl_etcd_alarm_list"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_alarm()
{
    last_command="talosctl_etcd_alarm"

    command_aliases=()

    commands=()
    commands+=("disarm")
    commands+=("list")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_defrag()
{
    last_command="talosctl_etcd_defrag"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_forfeit-leadership()
{
    last_command="talosctl_etcd_forfeit-leadership"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_leave()
{
    last_command="talosctl_etcd_leave"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_members()
{
    last_command="talosctl_etcd_members"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_remove-member()
{
    last_command="talosctl_etcd_remove-member"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_snapshot()
{
    last_command="talosctl_etcd_snapshot"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd_status()
{
    last_command="talosctl_etcd_status"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_etcd()
{
    last_command="talosctl_etcd"

    command_aliases=()

    commands=()
    commands+=("alarm")
    commands+=("defrag")
    commands+=("forfeit-leadership")
    commands+=("leave")
    commands+=("members")
    commands+=("remove-member")
    commands+=("snapshot")
    commands+=("status")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_events()
{
    last_command="talosctl_events"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--actor-id=")
    two_word_flags+=("--actor-id")
    local_nonpersistent_flags+=("--actor-id")
    local_nonpersistent_flags+=("--actor-id=")
    flags+=("--duration=")
    two_word_flags+=("--duration")
    local_nonpersistent_flags+=("--duration")
    local_nonpersistent_flags+=("--duration=")
    flags+=("--since=")
    two_word_flags+=("--since")
    local_nonpersistent_flags+=("--since")
    local_nonpersistent_flags+=("--since=")
    flags+=("--tail=")
    two_word_flags+=("--tail")
    local_nonpersistent_flags+=("--tail")
    local_nonpersistent_flags+=("--tail=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_ca()
{
    last_command="talosctl_gen_ca"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--hours=")
    two_word_flags+=("--hours")
    local_nonpersistent_flags+=("--hours")
    local_nonpersistent_flags+=("--hours=")
    flags+=("--organization=")
    two_word_flags+=("--organization")
    local_nonpersistent_flags+=("--organization")
    local_nonpersistent_flags+=("--organization=")
    flags+=("--rsa")
    local_nonpersistent_flags+=("--rsa")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--organization=")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_config()
{
    last_command="talosctl_gen_config"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--additional-sans=")
    two_word_flags+=("--additional-sans")
    local_nonpersistent_flags+=("--additional-sans")
    local_nonpersistent_flags+=("--additional-sans=")
    flags+=("--config-patch=")
    two_word_flags+=("--config-patch")
    local_nonpersistent_flags+=("--config-patch")
    local_nonpersistent_flags+=("--config-patch=")
    flags+=("--config-patch-control-plane=")
    two_word_flags+=("--config-patch-control-plane")
    local_nonpersistent_flags+=("--config-patch-control-plane")
    local_nonpersistent_flags+=("--config-patch-control-plane=")
    flags+=("--config-patch-worker=")
    two_word_flags+=("--config-patch-worker")
    local_nonpersistent_flags+=("--config-patch-worker")
    local_nonpersistent_flags+=("--config-patch-worker=")
    flags+=("--dns-domain=")
    two_word_flags+=("--dns-domain")
    local_nonpersistent_flags+=("--dns-domain")
    local_nonpersistent_flags+=("--dns-domain=")
    flags+=("--install-disk=")
    two_word_flags+=("--install-disk")
    local_nonpersistent_flags+=("--install-disk")
    local_nonpersistent_flags+=("--install-disk=")
    flags+=("--install-image=")
    two_word_flags+=("--install-image")
    local_nonpersistent_flags+=("--install-image")
    local_nonpersistent_flags+=("--install-image=")
    flags+=("--kubernetes-version=")
    two_word_flags+=("--kubernetes-version")
    local_nonpersistent_flags+=("--kubernetes-version")
    local_nonpersistent_flags+=("--kubernetes-version=")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    local_nonpersistent_flags+=("--output")
    local_nonpersistent_flags+=("--output=")
    local_nonpersistent_flags+=("-o")
    flags+=("--output-types=")
    two_word_flags+=("--output-types")
    two_word_flags+=("-t")
    local_nonpersistent_flags+=("--output-types")
    local_nonpersistent_flags+=("--output-types=")
    local_nonpersistent_flags+=("-t")
    flags+=("--persist")
    flags+=("-p")
    local_nonpersistent_flags+=("--persist")
    local_nonpersistent_flags+=("-p")
    flags+=("--registry-mirror=")
    two_word_flags+=("--registry-mirror")
    local_nonpersistent_flags+=("--registry-mirror")
    local_nonpersistent_flags+=("--registry-mirror=")
    flags+=("--talos-version=")
    two_word_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version=")
    flags+=("--version=")
    two_word_flags+=("--version")
    local_nonpersistent_flags+=("--version")
    local_nonpersistent_flags+=("--version=")
    flags+=("--with-cluster-discovery")
    local_nonpersistent_flags+=("--with-cluster-discovery")
    flags+=("--with-docs")
    local_nonpersistent_flags+=("--with-docs")
    flags+=("--with-examples")
    local_nonpersistent_flags+=("--with-examples")
    flags+=("--with-kubespan")
    local_nonpersistent_flags+=("--with-kubespan")
    flags+=("--with-secrets=")
    two_word_flags+=("--with-secrets")
    local_nonpersistent_flags+=("--with-secrets")
    local_nonpersistent_flags+=("--with-secrets=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_crt()
{
    last_command="talosctl_gen_crt"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--ca=")
    two_word_flags+=("--ca")
    local_nonpersistent_flags+=("--ca")
    local_nonpersistent_flags+=("--ca=")
    flags+=("--csr=")
    two_word_flags+=("--csr")
    local_nonpersistent_flags+=("--csr")
    local_nonpersistent_flags+=("--csr=")
    flags+=("--hours=")
    two_word_flags+=("--hours")
    local_nonpersistent_flags+=("--hours")
    local_nonpersistent_flags+=("--hours=")
    flags+=("--name=")
    two_word_flags+=("--name")
    local_nonpersistent_flags+=("--name")
    local_nonpersistent_flags+=("--name=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--ca=")
    must_have_one_flag+=("--csr=")
    must_have_one_flag+=("--name=")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_csr()
{
    last_command="talosctl_gen_csr"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--ip=")
    two_word_flags+=("--ip")
    local_nonpersistent_flags+=("--ip")
    local_nonpersistent_flags+=("--ip=")
    flags+=("--key=")
    two_word_flags+=("--key")
    local_nonpersistent_flags+=("--key")
    local_nonpersistent_flags+=("--key=")
    flags+=("--roles=")
    two_word_flags+=("--roles")
    local_nonpersistent_flags+=("--roles")
    local_nonpersistent_flags+=("--roles=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--ip=")
    must_have_one_flag+=("--key=")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_key()
{
    last_command="talosctl_gen_key"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--name=")
    two_word_flags+=("--name")
    local_nonpersistent_flags+=("--name")
    local_nonpersistent_flags+=("--name=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--name=")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_keypair()
{
    last_command="talosctl_gen_keypair"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--ip=")
    two_word_flags+=("--ip")
    local_nonpersistent_flags+=("--ip")
    local_nonpersistent_flags+=("--ip=")
    flags+=("--organization=")
    two_word_flags+=("--organization")
    local_nonpersistent_flags+=("--organization")
    local_nonpersistent_flags+=("--organization=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--organization=")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_secrets()
{
    last_command="talosctl_gen_secrets"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--from-kubernetes-pki=")
    two_word_flags+=("--from-kubernetes-pki")
    two_word_flags+=("-p")
    local_nonpersistent_flags+=("--from-kubernetes-pki")
    local_nonpersistent_flags+=("--from-kubernetes-pki=")
    local_nonpersistent_flags+=("-p")
    flags+=("--kubernetes-bootstrap-token=")
    two_word_flags+=("--kubernetes-bootstrap-token")
    two_word_flags+=("-t")
    local_nonpersistent_flags+=("--kubernetes-bootstrap-token")
    local_nonpersistent_flags+=("--kubernetes-bootstrap-token=")
    local_nonpersistent_flags+=("-t")
    flags+=("--output-file=")
    two_word_flags+=("--output-file")
    two_word_flags+=("-o")
    local_nonpersistent_flags+=("--output-file")
    local_nonpersistent_flags+=("--output-file=")
    local_nonpersistent_flags+=("-o")
    flags+=("--talos-version=")
    two_word_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version")
    local_nonpersistent_flags+=("--talos-version=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_secureboot_database()
{
    last_command="talosctl_gen_secureboot_database"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--enrolled-certificate=")
    two_word_flags+=("--enrolled-certificate")
    local_nonpersistent_flags+=("--enrolled-certificate")
    local_nonpersistent_flags+=("--enrolled-certificate=")
    flags+=("--signing-certificate=")
    two_word_flags+=("--signing-certificate")
    local_nonpersistent_flags+=("--signing-certificate")
    local_nonpersistent_flags+=("--signing-certificate=")
    flags+=("--signing-key=")
    two_word_flags+=("--signing-key")
    local_nonpersistent_flags+=("--signing-key")
    local_nonpersistent_flags+=("--signing-key=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_secureboot_pcr()
{
    last_command="talosctl_gen_secureboot_pcr"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_secureboot_uki()
{
    last_command="talosctl_gen_secureboot_uki"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--common-name=")
    two_word_flags+=("--common-name")
    local_nonpersistent_flags+=("--common-name")
    local_nonpersistent_flags+=("--common-name=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen_secureboot()
{
    last_command="talosctl_gen_secureboot"

    command_aliases=()

    commands=()
    commands+=("database")
    commands+=("pcr")
    commands+=("uki")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--force")
    flags+=("-f")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_gen()
{
    last_command="talosctl_gen"

    command_aliases=()

    commands=()
    commands+=("ca")
    commands+=("config")
    commands+=("crt")
    commands+=("csr")
    commands+=("key")
    commands+=("keypair")
    commands+=("secrets")
    commands+=("secureboot")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--force")
    flags+=("-f")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_get()
{
    last_command="talosctl_get"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--insecure")
    flags+=("-i")
    local_nonpersistent_flags+=("--insecure")
    local_nonpersistent_flags+=("-i")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace=")
    flags+=("--output=")
    two_word_flags+=("--output")
    flags_with_completion+=("--output")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-o")
    flags_with_completion+=("-o")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    local_nonpersistent_flags+=("--output")
    local_nonpersistent_flags+=("--output=")
    local_nonpersistent_flags+=("-o")
    flags+=("--watch")
    flags+=("-w")
    local_nonpersistent_flags+=("--watch")
    local_nonpersistent_flags+=("-w")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_health()
{
    last_command="talosctl_health"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--control-plane-nodes=")
    two_word_flags+=("--control-plane-nodes")
    local_nonpersistent_flags+=("--control-plane-nodes")
    local_nonpersistent_flags+=("--control-plane-nodes=")
    flags+=("--init-node=")
    two_word_flags+=("--init-node")
    local_nonpersistent_flags+=("--init-node")
    local_nonpersistent_flags+=("--init-node=")
    flags+=("--k8s-endpoint=")
    two_word_flags+=("--k8s-endpoint")
    local_nonpersistent_flags+=("--k8s-endpoint")
    local_nonpersistent_flags+=("--k8s-endpoint=")
    flags+=("--run-e2e")
    local_nonpersistent_flags+=("--run-e2e")
    flags+=("--server")
    local_nonpersistent_flags+=("--server")
    flags+=("--wait-timeout=")
    two_word_flags+=("--wait-timeout")
    local_nonpersistent_flags+=("--wait-timeout")
    local_nonpersistent_flags+=("--wait-timeout=")
    flags+=("--worker-nodes=")
    two_word_flags+=("--worker-nodes")
    local_nonpersistent_flags+=("--worker-nodes")
    local_nonpersistent_flags+=("--worker-nodes=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_help()
{
    last_command="talosctl_help"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_image_default()
{
    last_command="talosctl_image_default"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_image_list()
{
    last_command="talosctl_image_list"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_image_pull()
{
    last_command="talosctl_image_pull"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_image()
{
    last_command="talosctl_image"

    command_aliases=()

    commands=()
    commands+=("default")
    commands+=("list")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("l")
        aliashash["l"]="list"
        command_aliases+=("ls")
        aliashash["ls"]="list"
    fi
    commands+=("pull")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("p")
        aliashash["p"]="pull"
    fi

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_inject_serviceaccount()
{
    last_command="talosctl_inject_serviceaccount"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--file=")
    two_word_flags+=("--file")
    two_word_flags+=("-f")
    local_nonpersistent_flags+=("--file")
    local_nonpersistent_flags+=("--file=")
    local_nonpersistent_flags+=("-f")
    flags+=("--roles=")
    two_word_flags+=("--roles")
    two_word_flags+=("-r")
    local_nonpersistent_flags+=("--roles")
    local_nonpersistent_flags+=("--roles=")
    local_nonpersistent_flags+=("-r")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_inject()
{
    last_command="talosctl_inject"

    command_aliases=()

    commands=()
    commands+=("serviceaccount")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("tsa")
        aliashash["tsa"]="serviceaccount"
    fi

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_inspect_dependencies()
{
    last_command="talosctl_inspect_dependencies"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--with-resources")
    local_nonpersistent_flags+=("--with-resources")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_inspect()
{
    last_command="talosctl_inspect"

    command_aliases=()

    commands=()
    commands+=("dependencies")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_kubeconfig()
{
    last_command="talosctl_kubeconfig"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--force")
    flags+=("-f")
    local_nonpersistent_flags+=("--force")
    local_nonpersistent_flags+=("-f")
    flags+=("--force-context-name=")
    two_word_flags+=("--force-context-name")
    local_nonpersistent_flags+=("--force-context-name")
    local_nonpersistent_flags+=("--force-context-name=")
    flags+=("--merge")
    flags+=("-m")
    local_nonpersistent_flags+=("--merge")
    local_nonpersistent_flags+=("-m")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_list()
{
    last_command="talosctl_list"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--depth=")
    two_word_flags+=("--depth")
    two_word_flags+=("-d")
    local_nonpersistent_flags+=("--depth")
    local_nonpersistent_flags+=("--depth=")
    local_nonpersistent_flags+=("-d")
    flags+=("--humanize")
    flags+=("-H")
    local_nonpersistent_flags+=("--humanize")
    local_nonpersistent_flags+=("-H")
    flags+=("--long")
    flags+=("-l")
    local_nonpersistent_flags+=("--long")
    local_nonpersistent_flags+=("-l")
    flags+=("--recurse")
    flags+=("-r")
    local_nonpersistent_flags+=("--recurse")
    local_nonpersistent_flags+=("-r")
    flags+=("--type=")
    two_word_flags+=("--type")
    two_word_flags+=("-t")
    local_nonpersistent_flags+=("--type")
    local_nonpersistent_flags+=("--type=")
    local_nonpersistent_flags+=("-t")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_logs()
{
    last_command="talosctl_logs"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--follow")
    flags+=("-f")
    local_nonpersistent_flags+=("--follow")
    local_nonpersistent_flags+=("-f")
    flags+=("--kubernetes")
    flags+=("-k")
    local_nonpersistent_flags+=("--kubernetes")
    local_nonpersistent_flags+=("-k")
    flags+=("--tail=")
    two_word_flags+=("--tail")
    local_nonpersistent_flags+=("--tail")
    local_nonpersistent_flags+=("--tail=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_machineconfig_gen()
{
    last_command="talosctl_machineconfig_gen"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_machineconfig_patch()
{
    last_command="talosctl_machineconfig_patch"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    local_nonpersistent_flags+=("--output")
    local_nonpersistent_flags+=("--output=")
    local_nonpersistent_flags+=("-o")
    flags+=("--patch=")
    two_word_flags+=("--patch")
    two_word_flags+=("-p")
    local_nonpersistent_flags+=("--patch")
    local_nonpersistent_flags+=("--patch=")
    local_nonpersistent_flags+=("-p")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_machineconfig()
{
    last_command="talosctl_machineconfig"

    command_aliases=()

    commands=()
    commands+=("gen")
    commands+=("patch")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_memory()
{
    last_command="talosctl_memory"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--verbose")
    flags+=("-v")
    local_nonpersistent_flags+=("--verbose")
    local_nonpersistent_flags+=("-v")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_meta_delete()
{
    last_command="talosctl_meta_delete"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_meta_write()
{
    last_command="talosctl_meta_write"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_meta()
{
    last_command="talosctl_meta"

    command_aliases=()

    commands=()
    commands+=("delete")
    commands+=("write")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_mounts()
{
    last_command="talosctl_mounts"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_netstat()
{
    last_command="talosctl_netstat"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--all")
    flags+=("-a")
    local_nonpersistent_flags+=("--all")
    local_nonpersistent_flags+=("-a")
    flags+=("--extend")
    flags+=("-x")
    local_nonpersistent_flags+=("--extend")
    local_nonpersistent_flags+=("-x")
    flags+=("--ipv4")
    flags+=("-4")
    local_nonpersistent_flags+=("--ipv4")
    local_nonpersistent_flags+=("-4")
    flags+=("--ipv6")
    flags+=("-6")
    local_nonpersistent_flags+=("--ipv6")
    local_nonpersistent_flags+=("-6")
    flags+=("--listening")
    flags+=("-l")
    local_nonpersistent_flags+=("--listening")
    local_nonpersistent_flags+=("-l")
    flags+=("--pods")
    flags+=("-k")
    local_nonpersistent_flags+=("--pods")
    local_nonpersistent_flags+=("-k")
    flags+=("--programs")
    flags+=("-p")
    local_nonpersistent_flags+=("--programs")
    local_nonpersistent_flags+=("-p")
    flags+=("--raw")
    flags+=("-w")
    local_nonpersistent_flags+=("--raw")
    local_nonpersistent_flags+=("-w")
    flags+=("--tcp")
    flags+=("-t")
    local_nonpersistent_flags+=("--tcp")
    local_nonpersistent_flags+=("-t")
    flags+=("--timers")
    flags+=("-o")
    local_nonpersistent_flags+=("--timers")
    local_nonpersistent_flags+=("-o")
    flags+=("--udp")
    flags+=("-u")
    local_nonpersistent_flags+=("--udp")
    local_nonpersistent_flags+=("-u")
    flags+=("--udplite")
    flags+=("-U")
    local_nonpersistent_flags+=("--udplite")
    local_nonpersistent_flags+=("-U")
    flags+=("--verbose")
    flags+=("-v")
    local_nonpersistent_flags+=("--verbose")
    local_nonpersistent_flags+=("-v")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_patch()
{
    last_command="talosctl_patch"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--dry-run")
    local_nonpersistent_flags+=("--dry-run")
    flags+=("--mode=")
    two_word_flags+=("--mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--namespace=")
    two_word_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace")
    local_nonpersistent_flags+=("--namespace=")
    flags+=("--patch=")
    two_word_flags+=("--patch")
    two_word_flags+=("-p")
    local_nonpersistent_flags+=("--patch")
    local_nonpersistent_flags+=("--patch=")
    local_nonpersistent_flags+=("-p")
    flags+=("--patch-file=")
    two_word_flags+=("--patch-file")
    local_nonpersistent_flags+=("--patch-file")
    local_nonpersistent_flags+=("--patch-file=")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_pcap()
{
    last_command="talosctl_pcap"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--bpf-filter=")
    two_word_flags+=("--bpf-filter")
    local_nonpersistent_flags+=("--bpf-filter")
    local_nonpersistent_flags+=("--bpf-filter=")
    flags+=("--duration=")
    two_word_flags+=("--duration")
    local_nonpersistent_flags+=("--duration")
    local_nonpersistent_flags+=("--duration=")
    flags+=("--interface=")
    two_word_flags+=("--interface")
    two_word_flags+=("-i")
    local_nonpersistent_flags+=("--interface")
    local_nonpersistent_flags+=("--interface=")
    local_nonpersistent_flags+=("-i")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-o")
    local_nonpersistent_flags+=("--output")
    local_nonpersistent_flags+=("--output=")
    local_nonpersistent_flags+=("-o")
    flags+=("--promiscuous")
    local_nonpersistent_flags+=("--promiscuous")
    flags+=("--snaplen=")
    two_word_flags+=("--snaplen")
    two_word_flags+=("-s")
    local_nonpersistent_flags+=("--snaplen")
    local_nonpersistent_flags+=("--snaplen=")
    local_nonpersistent_flags+=("-s")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_processes()
{
    last_command="talosctl_processes"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--sort=")
    two_word_flags+=("--sort")
    two_word_flags+=("-s")
    local_nonpersistent_flags+=("--sort")
    local_nonpersistent_flags+=("--sort=")
    local_nonpersistent_flags+=("-s")
    flags+=("--watch")
    flags+=("-w")
    local_nonpersistent_flags+=("--watch")
    local_nonpersistent_flags+=("-w")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_read()
{
    last_command="talosctl_read"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_reboot()
{
    last_command="talosctl_reboot"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--debug")
    local_nonpersistent_flags+=("--debug")
    flags+=("--mode=")
    two_word_flags+=("--mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--wait")
    local_nonpersistent_flags+=("--wait")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_reset()
{
    last_command="talosctl_reset"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--debug")
    local_nonpersistent_flags+=("--debug")
    flags+=("--graceful")
    local_nonpersistent_flags+=("--graceful")
    flags+=("--insecure")
    local_nonpersistent_flags+=("--insecure")
    flags+=("--reboot")
    local_nonpersistent_flags+=("--reboot")
    flags+=("--system-labels-to-wipe=")
    two_word_flags+=("--system-labels-to-wipe")
    local_nonpersistent_flags+=("--system-labels-to-wipe")
    local_nonpersistent_flags+=("--system-labels-to-wipe=")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--user-disks-to-wipe=")
    two_word_flags+=("--user-disks-to-wipe")
    local_nonpersistent_flags+=("--user-disks-to-wipe")
    local_nonpersistent_flags+=("--user-disks-to-wipe=")
    flags+=("--wait")
    local_nonpersistent_flags+=("--wait")
    flags+=("--wipe-mode=")
    two_word_flags+=("--wipe-mode")
    local_nonpersistent_flags+=("--wipe-mode")
    local_nonpersistent_flags+=("--wipe-mode=")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_restart()
{
    last_command="talosctl_restart"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--kubernetes")
    flags+=("-k")
    local_nonpersistent_flags+=("--kubernetes")
    local_nonpersistent_flags+=("-k")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_rollback()
{
    last_command="talosctl_rollback"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_service()
{
    last_command="talosctl_service"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_shutdown()
{
    last_command="talosctl_shutdown"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--debug")
    local_nonpersistent_flags+=("--debug")
    flags+=("--force")
    local_nonpersistent_flags+=("--force")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--wait")
    local_nonpersistent_flags+=("--wait")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_stats()
{
    last_command="talosctl_stats"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--kubernetes")
    flags+=("-k")
    local_nonpersistent_flags+=("--kubernetes")
    local_nonpersistent_flags+=("-k")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_support()
{
    last_command="talosctl_support"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--num-workers=")
    two_word_flags+=("--num-workers")
    two_word_flags+=("-w")
    local_nonpersistent_flags+=("--num-workers")
    local_nonpersistent_flags+=("--num-workers=")
    local_nonpersistent_flags+=("-w")
    flags+=("--output=")
    two_word_flags+=("--output")
    two_word_flags+=("-O")
    local_nonpersistent_flags+=("--output")
    local_nonpersistent_flags+=("--output=")
    local_nonpersistent_flags+=("-O")
    flags+=("--verbose")
    flags+=("-v")
    local_nonpersistent_flags+=("--verbose")
    local_nonpersistent_flags+=("-v")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_time()
{
    last_command="talosctl_time"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--check=")
    two_word_flags+=("--check")
    two_word_flags+=("-c")
    local_nonpersistent_flags+=("--check")
    local_nonpersistent_flags+=("--check=")
    local_nonpersistent_flags+=("-c")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_upgrade()
{
    last_command="talosctl_upgrade"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--debug")
    local_nonpersistent_flags+=("--debug")
    flags+=("--force")
    flags+=("-f")
    local_nonpersistent_flags+=("--force")
    local_nonpersistent_flags+=("-f")
    flags+=("--image=")
    two_word_flags+=("--image")
    two_word_flags+=("-i")
    local_nonpersistent_flags+=("--image")
    local_nonpersistent_flags+=("--image=")
    local_nonpersistent_flags+=("-i")
    flags+=("--insecure")
    local_nonpersistent_flags+=("--insecure")
    flags+=("--preserve")
    flags+=("-p")
    local_nonpersistent_flags+=("--preserve")
    local_nonpersistent_flags+=("-p")
    flags+=("--reboot-mode=")
    two_word_flags+=("--reboot-mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--reboot-mode")
    local_nonpersistent_flags+=("--reboot-mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--stage")
    flags+=("-s")
    local_nonpersistent_flags+=("--stage")
    local_nonpersistent_flags+=("-s")
    flags+=("--timeout=")
    two_word_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout")
    local_nonpersistent_flags+=("--timeout=")
    flags+=("--wait")
    local_nonpersistent_flags+=("--wait")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_upgrade-k8s()
{
    last_command="talosctl_upgrade-k8s"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--dry-run")
    local_nonpersistent_flags+=("--dry-run")
    flags+=("--endpoint=")
    two_word_flags+=("--endpoint")
    local_nonpersistent_flags+=("--endpoint")
    local_nonpersistent_flags+=("--endpoint=")
    flags+=("--from=")
    two_word_flags+=("--from")
    local_nonpersistent_flags+=("--from")
    local_nonpersistent_flags+=("--from=")
    flags+=("--pre-pull-images")
    local_nonpersistent_flags+=("--pre-pull-images")
    flags+=("--to=")
    two_word_flags+=("--to")
    local_nonpersistent_flags+=("--to")
    local_nonpersistent_flags+=("--to=")
    flags+=("--upgrade-kubelet")
    local_nonpersistent_flags+=("--upgrade-kubelet")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_usage()
{
    last_command="talosctl_usage"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--all")
    flags+=("-a")
    local_nonpersistent_flags+=("--all")
    local_nonpersistent_flags+=("-a")
    flags+=("--depth=")
    two_word_flags+=("--depth")
    two_word_flags+=("-d")
    local_nonpersistent_flags+=("--depth")
    local_nonpersistent_flags+=("--depth=")
    local_nonpersistent_flags+=("-d")
    flags+=("--humanize")
    flags+=("-H")
    local_nonpersistent_flags+=("--humanize")
    local_nonpersistent_flags+=("-H")
    flags+=("--threshold=")
    two_word_flags+=("--threshold")
    two_word_flags+=("-t")
    local_nonpersistent_flags+=("--threshold")
    local_nonpersistent_flags+=("--threshold=")
    local_nonpersistent_flags+=("-t")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    has_completion_function=1
    noun_aliases=()
}

_talosctl_validate()
{
    last_command="talosctl_validate"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--config=")
    two_word_flags+=("--config")
    two_word_flags+=("-c")
    local_nonpersistent_flags+=("--config")
    local_nonpersistent_flags+=("--config=")
    local_nonpersistent_flags+=("-c")
    flags+=("--mode=")
    two_word_flags+=("--mode")
    two_word_flags+=("-m")
    local_nonpersistent_flags+=("--mode")
    local_nonpersistent_flags+=("--mode=")
    local_nonpersistent_flags+=("-m")
    flags+=("--strict")
    local_nonpersistent_flags+=("--strict")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_flag+=("--mode=")
    must_have_one_flag+=("-m")
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_version()
{
    last_command="talosctl_version"

    command_aliases=()

    commands=()

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--client")
    local_nonpersistent_flags+=("--client")
    flags+=("--insecure")
    flags+=("-i")
    local_nonpersistent_flags+=("--insecure")
    local_nonpersistent_flags+=("-i")
    flags+=("--short")
    local_nonpersistent_flags+=("--short")
    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

_talosctl_root_command()
{
    last_command="talosctl"

    command_aliases=()

    commands=()
    commands+=("apply-config")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("apply")
        aliashash["apply"]="apply-config"
    fi
    commands+=("bootstrap")
    commands+=("cluster")
    commands+=("completion")
    commands+=("config")
    commands+=("conformance")
    commands+=("containers")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("c")
        aliashash["c"]="containers"
    fi
    commands+=("copy")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("cp")
        aliashash["cp"]="copy"
    fi
    commands+=("dashboard")
    commands+=("disks")
    commands+=("dmesg")
    commands+=("edit")
    commands+=("etcd")
    commands+=("events")
    commands+=("gen")
    commands+=("get")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("g")
        aliashash["g"]="get"
    fi
    commands+=("health")
    commands+=("help")
    commands+=("image")
    commands+=("inject")
    commands+=("inspect")
    commands+=("kubeconfig")
    commands+=("list")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("ls")
        aliashash["ls"]="list"
    fi
    commands+=("logs")
    commands+=("machineconfig")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("mc")
        aliashash["mc"]="machineconfig"
    fi
    commands+=("memory")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("free")
        aliashash["free"]="memory"
        command_aliases+=("m")
        aliashash["m"]="memory"
    fi
    commands+=("meta")
    commands+=("mounts")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("mount")
        aliashash["mount"]="mounts"
    fi
    commands+=("netstat")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("ss")
        aliashash["ss"]="netstat"
    fi
    commands+=("patch")
    commands+=("pcap")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("tcpdump")
        aliashash["tcpdump"]="pcap"
    fi
    commands+=("processes")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("p")
        aliashash["p"]="processes"
        command_aliases+=("ps")
        aliashash["ps"]="processes"
    fi
    commands+=("read")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("cat")
        aliashash["cat"]="read"
    fi
    commands+=("reboot")
    commands+=("reset")
    commands+=("restart")
    commands+=("rollback")
    commands+=("service")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("services")
        aliashash["services"]="service"
    fi
    commands+=("shutdown")
    commands+=("stats")
    commands+=("support")
    commands+=("time")
    commands+=("upgrade")
    commands+=("upgrade-k8s")
    commands+=("usage")
    if [[ -z "${BASH_VERSION:-}" || "${BASH_VERSINFO[0]:-}" -gt 3 ]]; then
        command_aliases+=("du")
        aliashash["du"]="usage"
    fi
    commands+=("validate")
    commands+=("version")

    flags=()
    two_word_flags=()
    local_nonpersistent_flags=()
    flags_with_completion=()
    flags_completion=()

    flags+=("--cluster=")
    two_word_flags+=("--cluster")
    flags+=("--context=")
    two_word_flags+=("--context")
    flags_with_completion+=("--context")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--endpoints=")
    two_word_flags+=("--endpoints")
    two_word_flags+=("-e")
    flags+=("--nodes=")
    two_word_flags+=("--nodes")
    flags_with_completion+=("--nodes")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    two_word_flags+=("-n")
    flags_with_completion+=("-n")
    flags_completion+=("__talosctl_handle_go_custom_completion")
    flags+=("--talosconfig=")
    two_word_flags+=("--talosconfig")

    must_have_one_flag=()
    must_have_one_noun=()
    noun_aliases=()
}

__start_talosctl()
{
    local cur prev words cword split
    declare -A flaghash 2>/dev/null || :
    declare -A aliashash 2>/dev/null || :
    if declare -F _init_completion >/dev/null 2>&1; then
        _init_completion -s || return
    else
        __talosctl_init_completion -n "=" || return
    fi

    local c=0
    local flag_parsing_disabled=
    local flags=()
    local two_word_flags=()
    local local_nonpersistent_flags=()
    local flags_with_completion=()
    local flags_completion=()
    local commands=("talosctl")
    local command_aliases=()
    local must_have_one_flag=()
    local must_have_one_noun=()
    local has_completion_function=""
    local last_command=""
    local nouns=()
    local noun_aliases=()

    __talosctl_handle_word
}

if [[ $(type -t compopt) = "builtin" ]]; then
    complete -o default -F __start_talosctl talosctl
else
    complete -o default -o nospace -F __start_talosctl talosctl
fi

# ex: ts=4 sw=4 et filetype=sh
