Commit fdebf44611c9

Vincent Demeester <vincent@sbr.pm>
2025-06-17 18:32:48
systems: heavy cleanup…
Remove old configuration systems (systems/{modules,hardware,hosts,…}) and home as everything migrated to the new one. Next step is to update the README. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent b27b46e
Changed files (152)
systems
users
systems/hardware/dell-latitude-e6540.nix
@@ -1,30 +0,0 @@
-{ pkgs, ... }:
-
-{
-  boot = {
-    loader.efi.canTouchEfiVariables = true;
-    kernelParams = [
-      # Kernel GPU Savings Options (NOTE i915 chipset only)
-      "i915.enable_rc6=0"
-      "i915.enable_fbc=1"
-      "i915.lvds_use_ssc=0"
-      "drm.debug=0"
-      "drm.vblankoffdelay=1"
-    ];
-    blacklistedKernelModules = [
-      # Kernel GPU Savings Options (NOTE i915 chipset only)
-      "sierra_net"
-      "cdc_mbim"
-      "cdc_ncm"
-    ];
-  };
-  hardware = {
-    opengl = {
-      enable = true;
-      extraPackages = [ pkgs.vaapiIntel ];
-      driSupport32Bit = true;
-    };
-  };
-  nix.maxJobs = 8;
-  services.acpid.enable = true;
-}
systems/hardware/gigabyte-brix.nix
@@ -1,24 +0,0 @@
-_:
-
-{
-  boot = {
-    initrd.availableKernelModules = [
-      "xhci_pci"
-      "ahci"
-      "nvme"
-      "usb_storage"
-      "usbhid"
-      "sd_mod"
-    ];
-    kernelModules = [ "kvm-intel" ];
-    extraModulePackages = [ ];
-    kernelParams = [
-      "kvm_intel.nested=1"
-      "intel_iommu=on"
-    ];
-    loader.efi.canTouchEfiVariables = true;
-  };
-  hardware = {
-    cpu.intel.updateMicrocode = true;
-  };
-}
systems/hardware/lenovo-p1.nix
@@ -1,57 +0,0 @@
-{ lib, ... }:
-#let
-#  sources = import ../../nix/sources.nix;
-#in
-{
-  imports = [
-    #    (sources.nixos-hardware + "/common/pc/ssd")
-    #    (sources.nixos-hardware + "/lenovo/thinkpad/p1/3th-gen")
-    ./thinkpad.nix
-  ];
-  boot = {
-    initrd.availableKernelModules = [
-      "nvme"
-      "rtsx_pci_sdmmc"
-      "thunderbolt"
-      "dm-mod"
-    ];
-  };
-  hardware = {
-    enableAllFirmware = true;
-    bluetooth = {
-      enable = true;
-      powerOnBoot = true;
-    };
-  };
-  nix.maxJobs = 12;
-  services.throttled.enable = lib.mkDefault true;
-  services = {
-    tlp = {
-      settings = {
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 50;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Docking
-        "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
-        "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
-        # Make sure it uses the right hard drive
-        "DISK_DEVICES" = "nvme0n1p2";
-      };
-    };
-  };
-}
systems/hardware/lenovo-p50.nix
@@ -1,65 +0,0 @@
-{ pkgs, lib, ... }:
-#let
-#  sources = import ../../nix/sources.nix;
-#in
-{
-  imports = [
-    # (sources.nixos-hardware + "/common/pc/ssd")
-    ./thinkpad.nix
-  ];
-  boot = {
-    initrd.availableKernelModules = [
-      "nvme"
-      "rtsx_pci_sdmmc"
-    ];
-  };
-  hardware = {
-
-    enableAllFirmware = true;
-    bluetooth = {
-      enable = true;
-      powerOnBoot = true;
-    };
-    nvidia.prime = {
-      sync.enable = true;
-      nvidiaBusId = "PCI:1:0:0";
-      intelBusId = "PCI:0:2:0";
-    };
-  };
-  nix.maxJobs = 12;
-  services.throttled.enable = lib.mkDefault true;
-  services = {
-    tlp = {
-      settings = {
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 50;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Docking
-        "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
-        "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
-        # Make sure it uses the right hard drive
-        "DISK_DEVICES" = "nvme0n1p2";
-      };
-    };
-    udev.extraRules = ''
-      # Rules for Lenovo Thinkpad WS Dock
-      SUBSYSTEM=="usb", ACTION=="add|remove", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="305a", RUN+="${pkgs.vde-thinkpad}/bin/dock"
-      ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
-    '';
-  };
-}
systems/hardware/thinkpad-t460s.nix
@@ -1,44 +0,0 @@
-{ ... }:
-#let
-#  sources = import ../../nix/sources.nix;
-#in
-{
-  imports = [
-    #  (sources.nixos-hardware + "/lenovo/thinkpad/t460s")
-    #  (sources.nixos-hardware + "/common/pc/ssd")
-    ./thinkpad.nix
-  ];
-  nix.maxJobs = 12;
-  services = {
-    tlp = {
-      settings = {
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 50;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Docking
-        "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
-        "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
-        # Make sure it uses the right hard drive
-        "DISK_DEVICES" = "nvme0n1p3";
-      };
-    };
-    xserver = {
-      dpi = 128;
-    };
-  };
-}
systems/hardware/thinkpad-t480s.nix
@@ -1,67 +0,0 @@
-{ pkgs, ... }:
-#let
-#  sources = import ../../nix/sources.nix;
-#in
-{
-  imports = [
-    #(sources.nixos-hardware + "/lenovo/thinkpad/t480s")
-    #(sources.nixos-hardware + "/common/pc/ssd")
-    ./thinkpad.nix
-  ];
-  boot = {
-    initrd.availableKernelModules = [
-      "nvme"
-      "rtsx_pci_sdmmc"
-      "thunderbolt"
-    ];
-    kernelParams = [ "intel_idle.max_cstate=4" ];
-  };
-  hardware = {
-    enableAllFirmware = true;
-    bluetooth = {
-      enable = true;
-      powerOnBoot = true;
-    };
-  };
-  nix.maxJobs = 12;
-  programs.light.enable = true;
-  services = {
-    throttled.enable = true;
-    tlp = {
-      settings = {
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 50;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Docking
-        "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
-        "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
-        # Make sure it uses the right hard drive
-        "DISK_DEVICES" = "nvme0n1p3";
-      };
-    };
-    udev.extraRules = ''
-      # Rules for Lenovo Thinkpad WS Dock
-      # SUBSYSTEM=="usb", ACTION=="add|remove", ENV{ID_VENDOR}=="17ef", ENV{ID_MODEL}=="305a", RUN+="${pkgs.vde-thinkpad}/bin/dock"
-      ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
-    '';
-    xserver = {
-      # dpi = 128;
-      dpi = 96;
-    };
-  };
-}
systems/hardware/thinkpad-x1g9.nix
@@ -1,88 +0,0 @@
-{ pkgs, ... }:
-{
-  # NixOS options
-  boot = {
-    blacklistedKernelModules = [
-      "sierra_net" # sierra wireless modules
-      "cdc_mbim" # modem mobile broadband modules
-      "cdc_ncm" # similar
-    ];
-    extraModprobeConfig = ''
-      options snd_hda_intel power_save=1
-    '';
-    initrd = {
-      availableKernelModules = [
-        "nvme" # required for nvme disks
-        "thunderbolt" # required for thunderbolt (dock, ...)
-        "dm-mod"
-        "cryptd" # required for encryption
-        "ahci" # sata controller, might not be needed
-        "xhci_pci" # usb controller related
-        "usb_storage" # usb storage related
-        "sd_mod" # block device related
-        "sdhci_pci" # block device related as well
-        "aesni-intel" # advanced encryption for intel
-      ];
-    };
-    loader.efi.canTouchEfiVariables = true;
-  };
-  hardware = {
-    enableAllFirmware = true;
-    trackpoint.enable = false;
-    cpu.intel.updateMicrocode = true;
-    opengl.extraPackages = with pkgs; [
-      vaapiIntel
-      libvdpau-va-gl
-      vaapiVdpau
-      intel-ocl
-      intel-media-driver
-    ];
-  };
-  services = {
-    hardware.bolt.enable = true;
-    # throttled.enable = true; # might not be needed
-    tlp = {
-      # FIXME: to disable
-      enable = false;
-      settings = {
-        # Charge threshold
-        # If the battery is used somewhat frequently,
-        # set the start threshold at around 85% and stop at 90%. This
-        # will still give a good lifespan benefit over keeping the
-        # battery charged to 100%.
-        START_CHARGE_THRESH_BAT0 = 75;
-        STOP_CHARGE_THRESH_BAT0 = 80;
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "PLATFORM_PROFILE_ON_AC" = "balanced"; # or performance ?
-        "PLATFORM_PROFILE_ON_BAT" = "low-power";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 75;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "wifi";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "wifi";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Docking
-        "DEVICES_TO_DISABLE_ON_DOCK" = "wifi";
-        "DEVICES_TO_ENABLE_ON_UNDOCK" = "wifi";
-        # Make sure it uses the right hard drive
-        "DISK_DEVICES" = "nvme0n1p1";
-      };
-    };
-    udev.extraRules = ''
-      # Rules for Lenovo Thinkpad WS Dock
-      ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
-      ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness"
-    '';
-  };
-}
systems/hardware/thinkpad-x220.nix
@@ -1,64 +0,0 @@
-{ ... }:
-#let
-#  sources = import ../../nix/sources.nix;
-#in
-{
-  imports = [
-    ./thinkpad.nix
-    #(sources.nixos-hardware + "/lenovo/thinkpad/tp-smapi.nix")
-    #(sources.nixos-hardware + "/common/cpu/intel")
-    #(sources.nixos-hardware + "/common/pc/ssd")
-  ];
-  boot = {
-    kernelParams = [ "i915.enable_psr=1" ];
-    extraModprobeConfig = ''
-      options iwlwifi 11n_disable=1
-    '';
-  };
-  nix.maxJobs = 8;
-  security = {
-    pam.services = {
-      slimlock.fprintAuth = false;
-      slim.fprintAuth = false;
-      login.fprintAuth = false;
-      xscreensaver.fprintAuth = false;
-    };
-  };
-  services = {
-    fprintd.enable = true;
-    tlp = {
-      settings = {
-        # CPU optimizations
-        "CPU_SCALING_GOVERNOR_ON_AC" = "performance";
-        "CPU_SCALING_GOVERNOR_ON_BAT" = "powersave";
-        "CPU_MIN_PERF_ON_AC" = 0;
-        "CPU_MAX_PERF_ON_AC" = 100;
-        "CPU_MIN_PERF_ON_BAT" = 0;
-        "CPU_MAX_PERF_ON_BAT" = 50;
-        "CPU_BOOST_ON_AC" = 1;
-        "CPU_BOOST_ON_BAT" = 0;
-        # DEVICES (wifi, ..)
-        "DEVICES_TO_DISABLE_ON_STARTUP" = "bluetooth";
-        "DEVICES_TO_ENABLE_ON_AC" = "bluetooth wifi wwan";
-        "DEVICES_TO_DISABLE_ON_BAT" = "bluetooth";
-        # Network management
-        "DEVICES_TO_DISABLE_ON_LAN_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WIFI_CONNECT" = "";
-        "DEVICES_TO_DISABLE_ON_WWAN_CONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_LAN_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT" = "";
-        "DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT" = "";
-        # Misc
-        "DISK_IDLE_SECS_ON_AC" = 0;
-        "DISK_IDLE_SECS_ON_BAT" = 2;
-        "MAX_LOST_WORK_SECS_ON_AC" = 15;
-        "MAX_LOST_WORK_SECS_ON_BAT" = 60;
-        "DISK_DEVICES" = "ata-Corsair_Force_LX_SSD_15256501000102160059";
-        "SOUND_POWER_SAVE_ON_AC" = 0;
-        "SOUND_POWER_SAVE_ON_BAT" = 1;
-        "USB_AUTOSUSPEND" = 1;
-        "USB_BLACKLIST_BTUSB" = 1;
-      };
-    };
-  };
-}
systems/hardware/thinkpad.nix
@@ -1,75 +0,0 @@
-{ config, pkgs, ... }:
-{
-  boot = {
-    blacklistedKernelModules = [
-      # Kernel GPU Savings Options (NOTE i915 chipset only)
-      "sierra_net"
-      "cdc_mbim"
-      "cdc_ncm"
-    ];
-    extraModprobeConfig = ''
-      options snd_hda_intel power_save=1
-    '';
-    initrd = {
-      availableKernelModules = [
-        "ehci_pci"
-        "ahci"
-        "xhci_pci"
-        "usb_storage"
-        "sd_mod"
-        "sdhci_pci"
-        "aesni-intel"
-        "cryptd"
-      ];
-    };
-    kernelModules = [ "kvm_intel" ];
-    kernelParams = [
-      # Kernel GPU Savings Options (NOTE i915 chipset only)
-      "i915.enable_rc6=1"
-      "i915.enable_fbc=1"
-      "i915.lvds_use_ssc=0"
-      "drm.debug=0"
-      "drm.vblankoffdelay=1"
-      "kvm_intel.nested=1"
-      "intel_iommu=on"
-    ];
-    loader.efi.canTouchEfiVariables = true;
-  };
-  hardware = {
-    trackpoint.enable = false;
-    cpu.intel.updateMicrocode = true;
-    opengl.extraPackages = with pkgs; [
-      vaapiIntel
-      libvdpau-va-gl
-      vaapiVdpau
-      intel-ocl
-      intel-media-driver
-    ];
-  };
-  services = {
-    acpid = {
-      enable = true;
-    };
-    xserver = {
-      synaptics.enable = false;
-      config = ''
-        Section "InputClass"
-          Identifier     "Enable libinput for TrackPoint"
-          MatchIsPointer "on"
-          Driver         "libinput"
-          Option         "ScrollMethod" "button"
-          Option         "ScrollButton" "8"
-        EndSection
-      '';
-      inputClassSections = [
-        ''
-          Identifier "evdev touchpad off"
-          MatchIsTouchpad "on"
-          MatchDevicePath "/dev/input/event*"
-          Driver "evdev"
-          Option "Ignore" "true"
-        ''
-      ];
-    };
-  };
-}
systems/hosts/sakhalin.nix
@@ -1,280 +0,0 @@
-{ pkgs, lib, ... }:
-
-with lib;
-let
-  hostname = "sakhalin";
-  secretPath = ../../secrets/machines.nix;
-  secretCondition = builtins.pathExists secretPath;
-
-  ip = strings.optionalString secretCondition (import secretPath).wireguard.ips."${hostname}";
-  ips = lists.optionals secretCondition [ "${ip}/24" ];
-  endpointIP = strings.optionalString secretCondition (import secretPath).wg.endpointIP;
-  endpointPort = if secretCondition then (import secretPath).wg.listenPort else 0;
-  endpointPublicKey = strings.optionalString secretCondition (import secretPath)
-  .wireguard.kerkouane.publicKey;
-
-  metadata = importTOML ../../ops/hosts.toml;
-in
-{
-  imports = [
-    ../hardware/gigabyte-brix.nix
-    # (import ../../nix).home-manager-stable
-    # ../modules/default.stable.nix
-    (import ../../users/vincent)
-    (import ../../users/root)
-  ];
-
-  fileSystems."/" = {
-    device = "/dev/disk/by-uuid/92ce650d-873e-41c1-a44e-71c2b9191b9d";
-    fsType = "ext4";
-    options = [
-      "noatime"
-      "discard"
-    ];
-  };
-  fileSystems."/boot" = {
-    device = "/dev/disk/by-uuid/B226-075A";
-    fsType = "vfat";
-  };
-  fileSystems."/home" = {
-    device = "/dev/disk/by-uuid/4f614c00-d94d-42f9-8386-3ecd396aa246";
-    fsType = "ext4";
-    options = [
-      "noatime"
-      "discard"
-    ];
-  };
-  fileSystems."/mnt/gaia" = {
-    device = "/dev/disk/by-uuid/88d3d686-d451-4ba9-bd6e-373601ed2683";
-    fsType = "ext4";
-    options = [ "noatime" ];
-  };
-  fileSystems."/mnt/toshito" = {
-    device = "/dev/disk/by-uuid/3c7cf84e-2486-417d-9de8-4b7757d483e4";
-    fsType = "ext4";
-    options = [ "noatime" ];
-  };
-  swapDevices = [ { device = "/dev/disk/by-uuid/9eb067d1-b329-4fbb-ae27-38abfbe7c108"; } ];
-
-  networking = {
-    hostName = hostname;
-    firewall.enable = false; # we are in safe territory :D
-    bridges.br1.interfaces = [ "enp0s31f6" ];
-    useDHCP = false;
-    interfaces.br1 = {
-      useDHCP = true;
-    };
-  };
-
-  modules = {
-    profiles.home = true;
-    services = {
-      syncthing = {
-        enable = true;
-        guiAddress = "${metadata.hosts.sakhalin.wireguard.addrs.v4}:8384";
-      };
-      avahi.enable = true;
-      ssh.enable = true;
-    };
-    virtualisation.libvirt = {
-      enable = true;
-      nested = true;
-      listenTCP = true;
-    };
-  };
-
-  fileSystems."/export/gaia" = {
-    device = "/mnt/gaia";
-    options = [ "bind" ];
-  };
-  fileSystems."/export/toshito" = {
-    device = "/mnt/toshito";
-    options = [ "bind" ];
-  };
-
-  services = {
-    atuin = {
-      enable = true;
-      host = "0.0.0.0";
-      openRegistration = false;
-    };
-
-    # services.postgresql.enable = true;
-    # services.postgresql.package = pkgs.postgresql_15;
-    # services.postgresql.dataDir = "/var/lib/postgresql/15";
-    # services.postgresqlBackup.databases = [ "atuin" "homepage_production" "nextcloud" ];
-    # services.postgresqlBackup.enable = true;
-    # services.postgresqlBackup.location = "/var/backup/postgresql";
-    # services.postgresqlBackup.startAt = "*-*-* 02:15:00";
-
-    grafana = {
-      enable = true;
-      settings = {
-        server = {
-          http_addr = "0.0.0.0";
-          http_port = 3000;
-          domain = "graphana.sbr.pm";
-        };
-      };
-    };
-    prometheus = {
-      enable = true;
-      port = 9001;
-      scrapeConfigs = [
-        {
-          job_name = "node";
-          static_configs = [
-            {
-              # TODO: make this dynamic
-              targets = [
-                "aion.sbr.pm:9100"
-                "aix.sbr.pm:9000"
-                "aomi.sbr.pm:9000"
-                "athena.sbr.pm:9000"
-                "demeter.sbr.pm:9000"
-                "kerkouane.sbr.pm:9000"
-                "sakhalin.sbr.pm:9000"
-                "shikoku.sbr.pm:9000"
-              ];
-            }
-          ];
-        }
-        {
-          job_name = "bind";
-          static_configs = [
-            {
-              targets = [
-                "demeter.sbr.pm:9009"
-                "athena.sbr.pm:9009"
-              ];
-            }
-          ];
-        }
-        {
-          job_name = "nginx";
-          static_configs = [
-            {
-              targets = [ "kerkouane.sbr.pm:9001" ];
-            }
-          ];
-        }
-      ];
-      exporters.node = {
-        enable = true;
-        port = 9000;
-        enabledCollectors = [
-          "systemd"
-          "processes"
-        ];
-        extraFlags = [
-          "--collector.ethtool"
-          "--collector.softirqs"
-          "--collector.tcpstat"
-        ];
-      };
-    };
-    tarsnap = {
-      enable = true;
-      archives = {
-        documents = {
-          directories = [ "/home/vincent/desktop/documents" ];
-          period = "daily";
-          keyfile = "/etc/nixos/assets/tarsnap.documents.key";
-        };
-        org = {
-          directories = [ "/home/vincent/desktop/org" ];
-          period = "daily";
-          keyfile = "/etc/nixos/assets/tarsnap.org.key";
-        };
-      };
-    };
-    nfs.server = {
-      enable = true;
-      exports = ''
-        /export                      192.168.1.0/24(rw,fsid=0,no_subtree_check) 10.100.0.0/24(rw,fsid=0,no_subtree_check)
-        /export/gaia                 192.168.1.0/24(rw,fsid=1,no_subtree_check) 10.100.0.0/24(rw,fsid=1,no_subtree_check)
-        /export/toshito              192.168.1.0/24(rw,fsid=2,no_subtree_check) 10.100.0.0/24(rw,fsid=2,no_subtree_check)
-      '';
-    };
-    # nix-binary-cache = {
-    #   enable = true;
-    #   domain = "nix.cache.home";
-    #   aliases = [ "cache.sakhalin.home" ];
-    # };
-    dockerRegistry = {
-      enable = true;
-      listenAddress = "0.0.0.0";
-      enableGarbageCollect = true;
-    };
-    wireguard = {
-      enable = true;
-      inherit ips;
-      endpoint = endpointIP;
-      inherit endpointPort;
-      inherit endpointPublicKey;
-    };
-  };
-  security.apparmor.enable = true;
-  security.pam.enableSSHAgentAuth = true;
-  environment.systemPackages = with pkgs; [ yt-dlp ];
-  # -----------------------------------
-  environment.etc."vrsync".text = ''
-    /home/vincent/desktop/pictures/screenshots/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/screenshots/
-    /home/vincent/desktop/pictures/wallpapers/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/wallpapers/
-    /home/vincent/desktop/documents/ vincent@synodine.home:/volume1/documents/
-    /mnt/gaia/photos/ vincent@synodine.home:/volumeUSB2/usbshare/pictures/photos/
-    /mnt/gaia/music/ vincent@synodine.home:/volumeUSB2/usbshare/music/
-  '';
-  systemd.services.vrsync = {
-    description = "vrsync - sync folders to NAS";
-    requires = [ "network-online.target" ];
-    after = [ "network-online.target" ];
-
-    unitConfig.X-StopOnRemoval = false;
-    restartIfChanged = false;
-
-    path = with pkgs; [
-      rsync
-      coreutils
-      bash
-      openssh
-    ];
-    script = ''
-      ${pkgs.vrsync}/bin/vrsync
-    '';
-
-    startAt = "hourly";
-    serviceConfig = {
-      Type = "oneshot";
-      OnFailure = "status-email-root@%n.service";
-    };
-  };
-  # mr -i u daily
-  systemd.services.mr = {
-    description = "Update configs daily";
-    requires = [ "network-online.target" ];
-    after = [ "network-online.target" ];
-
-    restartIfChanged = false;
-    unitConfig.X-StopOnRemoval = false;
-
-    serviceConfig = {
-      Type = "oneshot";
-      User = "vincent";
-      OnFailure = "status-email-root@%n.service";
-    };
-
-    path = with pkgs; [
-      git
-      mr
-    ];
-    script = ''
-      set -e
-       cd /mnt/gaia/src/configs/
-       mr -t run git reset --hard
-       mr -t u
-    '';
-
-    startAt = "daily";
-  };
-}
systems/hosts/shikoku.nix
@@ -1,275 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  hostname = "shikoku";
-  secretPath = ../../secrets/machines.nix;
-  secretCondition = builtins.pathExists secretPath;
-
-  ip = strings.optionalString secretCondition (import secretPath).wireguard.ips."${hostname}";
-  ips = lists.optionals secretCondition [ "${ip}/24" ];
-  endpointIP = strings.optionalString secretCondition (import secretPath).wg.endpointIP;
-  endpointPort = if secretCondition then (import secretPath).wg.listenPort else 0;
-  endpointPublicKey = strings.optionalString secretCondition (import secretPath)
-  .wireguard.kerkouane.publicKey;
-
-  metadata = importTOML ../../ops/hosts.toml;
-
-  gpuIDs = [
-    "10de:1b80" # Graphics
-    "10de:10f0" # Audio
-  ];
-in
-{
-  imports = [
-    # (import ../../nix).home-manager-stable
-    #../modules/default.stable.nix
-    (import ../../users/vincent)
-    (import ../../users/root)
-  ];
-
-  boot.supportedFilesystems = [ "zfs" ];
-  networking = {
-    hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName);
-    hostName = hostname;
-    bridges.br1.interfaces = [ "enp0s31f6" ];
-    firewall.enable = false; # we are in safe territory :D
-    useDHCP = false;
-    interfaces.br1 = {
-      useDHCP = true;
-    };
-  };
-
-  # TODO: check if it's done elsewhere
-  boot.initrd.availableKernelModules = [
-    "xhci_pci"
-    "ahci"
-    "nvme"
-    "usb_storage"
-    "usbhid"
-    "sd_mod"
-    "sr_mod"
-  ];
-  boot.initrd.kernelModules = [
-    "vfio_pci"
-    "vfio"
-    "vfio_iommu_type1"
-
-    "nvidia"
-    "nvidia_modeset"
-    "nvidia_uvm"
-    "nvidia_drm"
-  ];
-  boot.kernelModules = [ "kvm-intel" ];
-  boot.extraModulePackages = [
-    config.boot.kernelPackages.nvidiaPackages.stable
-  ];
-  boot.kernelParams = [
-    "intel_iommu=on"
-    "kvm_intel.nested=1"
-    ("vfio-pci.ids=" + lib.concatStringsSep "," gpuIDs)
-  ];
-
-  hardware.opengl.enable = true;
-  virtualisation.spiceUSBRedirection.enable = true;
-  # TODO: check if it's done elsewhere
-  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
-
-  fileSystems."/" = {
-    device = "/dev/disk/by-uuid/73fd8864-f6af-4fdd-b826-0dfdeacd3c19";
-    fsType = "ext4";
-    options = [
-      "noatime"
-      "discard"
-    ];
-  };
-
-  fileSystems."/boot" = {
-    device = "/dev/disk/by-uuid/829D-BFD1";
-    fsType = "vfat";
-  };
-
-  # Extra data
-  # HDD:   b58e59a4-92e7-4278-97ba-6fe361913f50
-  fileSystems."/data" = {
-    device = "/dev/disk/by-uuid/b58e59a4-92e7-4278-97ba-6fe361913f50";
-    fsType = "ext4";
-    options = [ "noatime" ];
-  };
-  # ZFS Pool
-  # SSD1:  469077df-049f-4f5d-a34f-1f5449d782ec
-  # SSD2:  e11a3b63-791c-418b-9f4b-5ae0199f1f97
-  # NVME2: 3d2dff80-f2b1-4c48-8e76-12b01fdf4137
-  # boot.zfs.extraPools = [ "tank" ];
-  # networking.hostId = "03129692bea040488878aa0133e54914";
-  # networking.hostId = "03129692";
-  # fileSystems."/tank/data" =
-  #   {
-  #     device = "tank/data";
-  #     fsType = "zfs";
-  #     options = [ "zfsutil" ];
-  #   };
-  #
-  # fileSystems."/tank/virt" =
-  #   {
-  #     device = "tank/virt";
-  #     fsType = "zfs";
-  #     options = [ "zfsutil" ];
-  #   };
-
-  swapDevices = [
-    {
-      device = "/dev/disk/by-uuid/a9ec44e6-0c1d-4f60-9f5c-81a7eaa8e8fd";
-    }
-  ];
-
-  modules = {
-    core.binfmt.enable = true;
-    dev = {
-      enable = false;
-      containers = {
-        docker = {
-          enable = true;
-          package = pkgs.docker_27;
-        };
-        podman.enable = true;
-        buildkit = {
-          enable = true;
-          grpcAddress = [
-            "unix:///run/buildkit/buildkitd.sock"
-            "tcp://aomi.home:1234"
-            "tcp://${metadata.hosts.shikoku.addrs.v4}:1234"
-            "tcp://${metadata.hosts.shikoku.wireguard.addrs.v4}:1234"
-          ];
-        };
-      };
-    };
-    services = {
-      syncthing = {
-        enable = true;
-        guiAddress = "${metadata.hosts.shikoku.wireguard.addrs.v4}:8384";
-      };
-      avahi.enable = true;
-      ssh.enable = true;
-    };
-    virtualisation.libvirt = {
-      enable = true;
-      nested = true;
-      listenTCP = true;
-    };
-    profiles.home = true;
-  };
-
-  # environment.systemPackages = [ pkgs.python310Packages.aria2p ];
-
-  programs.ssh.setXAuthLocation = true;
-
-  age.secrets."aria2RPCSecret" = {
-    file = ../../secrets/shikoku/aria2rpcsecret.age;
-    mode = "444";
-    owner = "aria2";
-    group = "aria2";
-  };
-  nixpkgs.config.permittedInsecurePackages = [
-    "dotnet-sdk-6.0.428"
-    "aspnetcore-runtime-6.0.36"
-  ];
-  services = {
-    ollama = {
-      enable = true;
-      acceleration = "cuda";
-    };
-    prometheus.exporters.node = {
-      enable = true;
-      port = 9000;
-      enabledCollectors = [
-        "systemd"
-        "processes"
-      ];
-      extraFlags = [
-        "--collector.ethtool"
-        "--collector.softirqs"
-        "--collector.tcpstat"
-      ];
-    };
-    aria2 = {
-      enable = true;
-      openPorts = true;
-      # extraArguments = "--max-concurrent-downloads=20";
-      settings = {
-        max-concurrent-downloads = 20;
-      };
-      downloadDir = "/data/downloads";
-      rpcSecretFile = "${pkgs.writeText "aria" "aria2rpc\n"}";
-    };
-    bazarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    radarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    sonarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    prowlarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    readarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    lidarr = {
-      enable = true;
-      # Use reverse proxy instead
-      openFirewall = true;
-    };
-    smartd = {
-      enable = true;
-      devices = [ { device = "/dev/nvme0n1"; } ];
-    };
-    dockerRegistry = {
-      enable = true;
-      listenAddress = "0.0.0.0";
-      port = 5000;
-      enableDelete = true;
-      enableGarbageCollect = true;
-      garbageCollectDates = "daily";
-    };
-    wireguard = {
-      enable = true;
-      inherit ips;
-      endpoint = endpointIP;
-      inherit endpointPort;
-      inherit endpointPublicKey;
-    };
-  };
-
-  # Move this to a "builder" role
-  users.extraUsers.builder = {
-    isNormalUser = true;
-    uid = 1018;
-    extraGroups = [ ];
-    openssh.authorizedKeys.keys = [ (builtins.readFile ../../secrets/builder.pub) ];
-  };
-  nix.settings.trusted-users = [
-    "root"
-    "vincent"
-    "builder"
-  ];
-
-  security.pam.sshAgentAuth.enable = true;
-}
systems/modules/core/binfmt.nix
@@ -1,36 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.core.binfmt;
-in
-{
-  options = {
-    modules.core.binfmt = {
-      enable = mkEnableOption "Register extra emulated systems using binfmt";
-    };
-  };
-  config = mkIf cfg.enable {
-    boot = {
-      binfmt.registrations = {
-        s390x-linux = {
-          # interpreter = getEmulator "s390x-linux";
-          interpreter = "${pkgs.qemu}/bin/qemu-s390x";
-          magicOrExtension = ''\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x16'';
-          mask = ''\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff'';
-        };
-      };
-      binfmt.emulatedSystems = [
-        "armv6l-linux"
-        "armv7l-linux"
-        "aarch64-linux"
-        "powerpc64le-linux"
-      ];
-    };
-  };
-}
systems/modules/core/boot.nix
@@ -1,19 +0,0 @@
-{ config, lib, ... }:
-
-let
-  inherit (lib) mkOption types;
-  cfg = config.core.boot;
-in
-{
-  options = {
-    core.boot.systemd-boot = mkOption {
-      description = "Enable systemd-boot for loading";
-      # This is meant to be disable only on a few cases (qemu images, DigitalOcean droplets, …)
-      default = true;
-      type = types.bool;
-    };
-  };
-  config = {
-    boot.loader.systemd-boot.enable = cfg.systemd-boot;
-  };
-}
systems/modules/core/config.nix
@@ -1,21 +0,0 @@
-{ lib, ... }:
-
-with lib;
-{
-  # This options are mainly used for user side for now
-  # aka, in users/vincent, there is a check if these are enabled, to conditionnally
-  # add something to the user environments
-  # This shouldn't prevent to have real thing behind this
-  options = {
-    profiles.kubernetes = {
-      enable = mkEnableOption "Enable Kubernetes profile";
-    };
-    profiles.openshift = {
-      enable = mkEnableOption "Enable OpenShift profile";
-      crc.enable = mkEnableOption "Enable CodeReady Containers";
-    };
-    profiles.tekton = {
-      enable = mkEnableOption "Enable Tekton profile";
-    };
-  };
-}
systems/modules/core/default.nix
@@ -1,170 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-{
-  imports = [
-    ./binfmt.nix
-    ./boot.nix
-    ./config.nix
-    ./i18n.nix
-    ./nix.nix
-    ./users.nix
-  ];
-
-  environment.systemPackages = with pkgs; [
-    age
-    cachix
-    file
-    htop
-    iotop
-    lsof
-    netcat
-    psmisc
-    pv
-    tree
-    vim
-    wget
-  ];
-  # FIXME fix tmpOnTmpfs
-  # systemd.additionalUpstreamSystemUnits = [ "tmp.mount" ];
-
-  security.sudo = {
-    extraConfig = ''
-      Defaults env_keep += SSH_AUTH_SOCK
-    '';
-  };
-
-  age.secrets."minica.pem" = {
-    file = ../../../secrets/minica.pem.age;
-    path = "/etc/ssl/certs/minica.pem";
-  };
-  age.secrets."redhat.pem" = {
-    file = ../../../secrets/redhat/redhat.pem.age;
-    path = "/etc/ssl/certs/redhat.pem";
-  };
-
-  security.pki.certificates = [
-    ''
-          -----BEGIN CERTIFICATE-----
-          MIIDSzCCAjOgAwIBAgIIJx9OWfxgsgswDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
-          AxMVbWluaWNhIHJvb3QgY2EgMjcxZjRlMCAXDTI0MDIyODA5MjIxNVoYDzIxMjQw
-          MjI4MDkyMjE1WjAgMR4wHAYDVQQDExVtaW5pY2Egcm9vdCBjYSAyNzFmNGUwggEi
-          MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8UCyxEPiBME64NkwlOWLh19qE
-          mlu3rAoT+CiFtEaUdjmEN34Emw/Tt0QbsKDhpkAEQwlsHuw5GFCI4ueI3bbC2LV1
-          qkWVLgRrd6qduKnndzvDp8FwXHZFlG7tz0ds83cg4iRdPBt/jwHrqCm5sLVMaKKG
-          heg+JlvEhGjiSlXQUIxUZGPpykVca1SHdleIWPb6fCLPogwo1mTMHPa8Flmze0IF
-          bNhhlrW/eL5qoO96/tw/EsKGj6qzmjfGfCN76yu58tcW/bKaP18/DI6gLDw3c7b7
-          oWlX8w+PBdOcmdllHiGdmHk/jojHPLy8kNAG/mSZC0j8w+pAI2IUhQO720QRAgMB
-          AAGjgYYwgYMwDgYDVR0PAQH/BAQDAgKEMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggr
-          BgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRRiUxAxMcL9FFg
-          MiJq1YVpsbXVijAfBgNVHSMEGDAWgBRRiUxAxMcL9FFgMiJq1YVpsbXVijANBgkq
-          hkiG9w0BAQsFAAOCAQEARNZy1lSXCQwXKCrIPDnEu58QBLiaCFTyUtc1/IuHgpjy
-          0Rvi5jnGj2pSJqG0lXEeHeMrs9dbFW7SJkC7HnCnER9Y3+Q712AG4vvagcD3lbrQ
-          GfDSOa5tKtEESRlSfoQ1NEr5es4TRXxZrEL5yKU+GV6j3AtHFkgLYlcMbqZsbJIK
-          Ag5Oy9aIjnXJ2cjRE+Y0Onsbmzp8sv7JefJ8KcZh23v6LBki7NCOLyetlpuikGGg
-          58SnY+5uWgUV8coraFWPnmFC8Y+yHLmWCousU/t8FvEXIuYtc5PQm3RI9zG75Jp1
-          cJBDKkh55goYNkjU4zjdljsEImjoBlJdP0hpiyQKAg==
-          -----END CERTIFICATE-----
-      		''
-    ''
-          -----BEGIN CERTIFICATE-----
-          MIIENDCCAxygAwIBAgIJANunI0D662cnMA0GCSqGSIb3DQEBCwUAMIGlMQswCQYD
-          VQQGEwJVUzEXMBUGA1UECAwOTm9ydGggQ2Fyb2xpbmExEDAOBgNVBAcMB1JhbGVp
-          Z2gxFjAUBgNVBAoMDVJlZCBIYXQsIEluYy4xEzARBgNVBAsMClJlZCBIYXQgSVQx
-          GzAZBgNVBAMMElJlZCBIYXQgSVQgUm9vdCBDQTEhMB8GCSqGSIb3DQEJARYSaW5m
-          b3NlY0ByZWRoYXQuY29tMCAXDTE1MDcwNjE3MzgxMVoYDzIwNTUwNjI2MTczODEx
-          WjCBpTELMAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYD
-          VQQHDAdSYWxlaWdoMRYwFAYDVQQKDA1SZWQgSGF0LCBJbmMuMRMwEQYDVQQLDApS
-          ZWQgSGF0IElUMRswGQYDVQQDDBJSZWQgSGF0IElUIFJvb3QgQ0ExITAfBgkqhkiG
-          9w0BCQEWEmluZm9zZWNAcmVkaGF0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
-          ADCCAQoCggEBALQt9OJQh6GC5LT1g80qNh0u50BQ4sZ/yZ8aETxt+5lnPVX6MHKz
-          bfwI6nO1aMG6j9bSw+6UUyPBHP796+FT/pTS+K0wsDV7c9XvHoxJBJJU38cdLkI2
-          c/i7lDqTfTcfLL2nyUBd2fQDk1B0fxrskhGIIZ3ifP1Ps4ltTkv8hRSob3VtNqSo
-          GxkKfvD2PKjTPxDPWYyruy9irLZioMffi3i/gCut0ZWtAyO3MVH5qWF/enKwgPES
-          X9po+TdCvRB/RUObBaM761EcrLSM1GqHNueSfqnho3AjLQ6dBnPWlo638Zm1VebK
-          BELyhkLWMSFkKwDmne0jQ02Y4g075vCKvCsCAwEAAaNjMGEwHQYDVR0OBBYEFH7R
-          4yC+UehIIPeuL8Zqw3PzbgcZMB8GA1UdIwQYMBaAFH7R4yC+UehIIPeuL8Zqw3Pz
-          bgcZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
-          CwUAA4IBAQBDNvD2Vm9sA5A9AlOJR8+en5Xz9hXcxJB5phxcZQ8jFoG04Vshvd0e
-          LEnUrMcfFgIZ4njMKTQCM4ZFUPAieyLx4f52HuDopp3e5JyIMfW+KFcNIpKwCsak
-          oSoKtIUOsUJK7qBVZxcrIyeQV2qcYOeZhtS5wBqIwOAhFwlCET7Ze58QHmS48slj
-          S9K0JAcps2xdnGu0fkzhSQxY8GPQNFTlr6rYld5+ID/hHeS76gq0YG3q6RLWRkHf
-          4eTkRjivAlExrFzKcljC4axKQlnOvVAzz+Gm32U0xPBF4ByePVxCJUHw1TsyTmel
-          RxNEp7yHoXcwn+fXna+t5JWh1gxUZty3
-          -----END CERTIFICATE-----
-          -----BEGIN CERTIFICATE-----
-          MIIGcjCCBFqgAwIBAgIFICIEEFwwDQYJKoZIhvcNAQEMBQAwgaMxCzAJBgNVBAYT
-          AlVTMRcwFQYDVQQIDA5Ob3J0aCBDYXJvbGluYTEQMA4GA1UEBwwHUmFsZWlnaDEW
-          MBQGA1UECgwNUmVkIEhhdCwgSW5jLjETMBEGA1UECwwKUmVkIEhhdCBJVDEZMBcG
-          A1UEAwwQSW50ZXJuYWwgUm9vdCBDQTEhMB8GCSqGSIb3DQEJARYSaW5mb3NlY0By
-          ZWRoYXQuY29tMCAXDTIzMDQwNTE4MzM0NFoYDzIwNTIwNDAyMTgzMzQ0WjCBozEL
-          MAkGA1UEBhMCVVMxFzAVBgNVBAgMDk5vcnRoIENhcm9saW5hMRAwDgYDVQQHDAdS
-          YWxlaWdoMRYwFAYDVQQKDA1SZWQgSGF0LCBJbmMuMRMwEQYDVQQLDApSZWQgSGF0
-          IElUMRkwFwYDVQQDDBBJbnRlcm5hbCBSb290IENBMSEwHwYJKoZIhvcNAQkBFhJp
-          bmZvc2VjQHJlZGhhdC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
-          AQCxuloEVglzWXZ9FFFUOSVdpRIB2jW5YBpwgMem2fPZeWIIvrVQ6PL9XNenDOXu
-          BHbShD/PApxi/ujSZyOIjLsNh7WDO+0NqpkfTyB9wUYAhx3GTIGY75RSoyZy1yKb
-          ZDTKv+rSfui9IlstAMz6L3OQLZES9zAYK8ICiDUwTeNZ7quA6qf0Kam2LyuBc/bl
-          BI7WFLOGGWY135P1OUXJgnJUsMhnYMTgvZQyJ2P7eLQpiR8TOr5ZI6CYapiyG64L
-          nkr/rsALjSxoUo09Yai1CVO66VFJ/XgMNt3mzQtLDMPXiKUuwsBsgvo4QvLjkXYI
-          ii+/YQyQaypsKctG8mefKkTT1kRDKj4LNdTRRgd5tco+b4+O/4upt8mIsx1+tbdM
-          LNGEz3Jqd0sj8Fl4Rzus+W+enzXmMfZH86X6bU5tMvueuFd5LV+M9XzliscaEQMK
-          EQ7CC72ldrOK2K12Gjb7bu8dKq+aSlNuWK+Gz1NvbwYpaCBYp0JoryvHEq5jrCLP
-          lTkuJQ3HaaAf+4LaBm8no9xK2VbDf6l/7Htb5I5LnAAZi0/5TzH07NhHoIeMSmTE
-          Ea07i/i5lbhM2qbx6pfLukg24HLCKTdi4Fo6/JqPWH6/3eI55NsoWSmoDdTiLg4v
-          1G/rgUVr2N6F36GTYMGqiITvvd4Qm3i9XOTQvsx8RJx4JQIDAQABo4GoMIGlMB0G
-          A1UdDgQWBBS1+o3lCnihCZXbTSGGlWpZT0nIizAfBgNVHSMEGDAWgBS1+o3lCnih
-          CZXbTSGGlWpZT0nIizAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAR
-          BglghkgBhvhCAQEEBAMCAQYwLwYDVR0fBCgwJjAkoCKgIIYeaHR0cDovL29jc3Au
-          cmVkaGF0LmNvbS9jcmwucGVtMA0GCSqGSIb3DQEBDAUAA4ICAQCDLaGTS0g2HmMS
-          g0i6Z0RVDC7sSnWFgEk2ZO1WUQj5WkFVS7gWxed/mXCzeL2EV1Pd22YKHM1eU1vo
-          6b03cbNRXlRGGFksmQeM9h2sVjbP0hRZxqqfI+UW223N8E+qK3wSa8m6nhOfIJie
-          DD9s8CdL1VT6l4qq2gR8mVBW7EZ+Ux5u+AMXpN4WPEkcLer2djbfhXoPsJ4r5CcX
-          vh7W5rCZbo+0oBI5hrTlG4Tjhv1atqLhMmssjn8NbRrnhrbGF7w8NxFts69GkKDB
-          UIXr1pWZSAuRELlIxmvh5ZSX5YTbFmDuTvmNx8RPPy6OY4W1v1BUKp0HyJTi07s2
-          8SN+n9htHPHX9XBZctQmOSFLiqhi15LIqI54tR2tSgwH3Z5moh4sy6MuApXstsu4
-          qtkII2KZk3SottI8MOS6zqKrU7jPou6ZE0fznNiu23Q3Ksuuj6mBkLVw3bQe68Vm
-          NUTDac1oVzc8d5NMbx5kVb4Lahq+SATVFC8NK9G/Pk1AiwO8WhKffySsLeO5nMib
-          4BOVq0qFoAi8YCFuJOl9FlH1dPW/TnqlTQMQNhXpzGjU3HV3lr/Mk+ghNgIYcLcz
-          pEBsiGwKOVW4nYKIqPLn/36Ao/kfXeAdJhaAZq1SkTbeqNiwHQm3KNHzNObmjD0f
-          56vmq8fwQYIcazjrygWiaOnoep/SMw==
-          -----END CERTIFICATE-----
-      		''
-  ];
-
-  security.pki.certificateFiles = [
-    "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
-    # "/etc/ssl/certs/minica.pem"
-    # "/etc/ssl/certs/redhat.pem"
-  ];
-
-  # Only keep the last 500MiB of systemd journal.
-  services.journald.extraConfig = "SystemMaxUse=500M";
-
-  # Clear out /tmp after a fortnight and give all normal users a ~/tmp
-  # cleaned out weekly.
-  systemd.tmpfiles.rules =
-    [ "d /tmp 1777 root root 14d" ]
-    ++ (
-      let
-        mkTmpDir = n: u: "d ${u.home}/tmp 0700 ${n} ${u.group} 7d";
-      in
-      lib.mapAttrsToList mkTmpDir (lib.filterAttrs (_: u: u.isNormalUser) config.users.extraUsers)
-    );
-
-  systemd.services."status-email-root@" = {
-    description = "status email for %i to vincent";
-    serviceConfig = {
-      Type = "oneshot";
-      ExecStart = ''
-        ${pkgs.my.systemd-email}/bin/systemd-email vincent@demeester.fr %i
-      '';
-      User = "root";
-      Environment = "PATH=/run/current-system/sw/bin";
-    };
-  };
-}
systems/modules/core/i18n.nix
@@ -1,24 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.core.i18n;
-in
-{
-  options = {
-    core.i18n = {
-      enable = mkOption {
-        default = true;
-        description = "Enable i18n profile";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    console.keyMap = "fr-bepo";
-    console.font = "Lat2-Terminus16";
-    i18n = {
-      defaultLocale = "en_US.UTF-8";
-    };
-  };
-}
systems/modules/core/nix.nix
@@ -1,141 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  dummyConfig = pkgs.writeText "configuration.nix" ''
-    # assert builtins.trace "This is a dummy config, use switch!" false;
-    {}
-  '';
-  cfg = config.core.nix;
-in
-{
-  options = {
-    core.nix = {
-      enable = mkOption {
-        type = types.bool;
-        default = true;
-        description = "Enable core.nix";
-      };
-      gcDates = mkOption {
-        default = "daily";
-        description = "Specification (in the format described by systemd.time(7)) of the time at which the garbage collector will run. ";
-        type = types.str;
-      };
-      olderThan = mkOption {
-        default = "15d";
-        description = "Number of day to keep when garbage collect";
-        type = types.str;
-      };
-      buildCores = mkOption {
-        type = types.int;
-        default = 2;
-        example = 4;
-        description = ''
-          Maximum number of concurrent tasks during one build.
-        '';
-      };
-      localCaches = mkOption {
-        default = [ ];
-        description = "List of local nix caches";
-        type = types.listOf types.str;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    environment.systemPackages = [ pkgs.git ];
-    nix = {
-      settings = {
-        cores = cfg.buildCores;
-        substituters = cfg.localCaches ++ [
-          "https://cache.nixos.org/"
-          "https://r-ryantm.cachix.org"
-          "https://shortbrain.cachix.org"
-          "https://vdemeester.cachix.org"
-          "https://chapeau-rouge.cachix.org"
-        ];
-        trusted-public-keys = [
-          "r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c="
-          "shortbrain.cachix.org-1:dqXcXzM0yXs3eo9ChmMfmob93eemwNyhTx7wCR4IjeQ="
-          "mic92.cachix.org-1:gi8IhgiT3CYZnJsaW7fxznzTkMUOn1RY4GmXdT/nXYQ="
-          "chapeau-rouge.cachix.org-1:r34IG766Ez4Eeanr7Zx+egzXLE2Zgvc+XRspYZPDAn8="
-          "vdemeester.cachix.org-1:eZWNOrLR9A9szeMahn9ENaoT9DB3WgOos8va+d2CU44="
-        ];
-      };
-      # On laptops at least, make the daemon and builders low priority
-      # to have a responding system while building
-      daemonIOSchedClass = "idle";
-      daemonCPUSchedPolicy = "idle";
-      # FIXME: On servers, we may change this.
-      # daemonIOSchedPriority = 5;
-      # daemonCPUSchedPolicy = "batch";
-
-      # if hydra is down, don't wait forever
-      extraOptions = ''
-        connect-timeout = 20
-        build-cores = 0
-        keep-outputs = true
-        keep-derivations = true
-        builders-use-substitutes = true
-        experimental-features = flakes nix-command
-      '';
-      gc = {
-        automatic = true;
-        dates = cfg.gcDates;
-        options = "--delete-older-than ${cfg.olderThan}";
-      };
-      nixPath = [
-        "nixos-config=${dummyConfig}"
-        "nixpkgs=/run/current-system/nixpkgs"
-        "nixpkgs-overlays=/run/current-system/overlays/compat"
-      ];
-      optimise = {
-        automatic = true;
-        dates = [
-          "01:10"
-          "12:10"
-        ];
-      };
-      nrBuildUsers = 32;
-      #nrBuildUsers = config.nix.maxJobs * 2;
-      settings = {
-        sandbox = true;
-        allowed-users = [ "@wheel" ];
-        trusted-users = [
-          "root"
-          "@wheel"
-        ];
-        # See https://nixos.org/manual/nix/stable/command-ref/conf-file#conf-use-xdg-base-directories
-        use-xdg-base-directories = true;
-      };
-    };
-
-    # `nix-daemon` will hit the stack limit when using `nixFlakes`.
-    systemd.services.nix-daemon.serviceConfig."LimitSTACK" = "infinity";
-
-    nixpkgs = {
-      overlays = [
-        # (import ../../../nix/overlays/mkSecret.nix)
-        # (import ../../../nix/overlays/sbr.nix)
-        # (import ../../../nix/overlays/unstable.nix)
-        # (import ../../../nix).emacs
-      ];
-      config = {
-        allowUnfree = true;
-        #allowBroken = true;
-      };
-    };
-    system = {
-      extraSystemBuilderCmds = ''
-        ln -sv ${pkgs.path} $out/nixpkgs
-        ln -sv ${../../../nix/overlays} $out/overlays
-      '';
-
-      stateVersion = "22.05";
-    };
-  };
-}
systems/modules/core/users.nix
@@ -1,13 +0,0 @@
-{ config, ... }:
-{
-  users.motd = with config; ''
-    Welcome to ${networking.hostName}
-
-    - This machine is managed by NixOS
-    - All changes are futile
-
-    OS:      Nixos ${system.nixos.release} (${system.nixos.codeName})
-    Version: ${system.nixos.version}
-    Kernel:  ${boot.kernelPackages.kernel.version}
-  '';
-}
systems/modules/desktop/base.nix
@@ -1,237 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib)
-    mkIf
-    mkEnableOption
-    mkDefault
-    mkOption
-    types
-    ;
-  cfg = config.modules.desktop;
-in
-{
-  options = {
-    modules.desktop = {
-      enable = mkEnableOption "desktop configuration";
-      plymouth = {
-        theme = mkOption {
-          default = "deus_ex";
-          description = "Plymouth theme to use for boot (hexagon, green_loader, deus_ex, cuts, sphere, spinner_alt)";
-          type = types.str;
-        };
-        themePackage = mkOption {
-          default = pkgs.my.adi1090x-plymouth;
-          description = "Plymouth theme package to use";
-          type = types.package;
-        };
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    # Putting this in desktop for now
-    programs = {
-      nix-ld = {
-        enable = true;
-        # put whatever libraries you think you might need
-        # nix-ld includes a strong sane-default as well
-        # in addition to these
-        libraries = with pkgs; [
-          acl
-          alsa-lib
-          at-spi2-atk
-          at-spi2-core
-          atk
-          attr
-          bzip2
-          cairo
-          curl
-          dbus
-          expat
-          fontconfig
-          freetype
-          fuse3
-          gdk-pixbuf
-          glib
-          glibc
-          gtk3
-          icu
-          libGL
-          libappindicator-gtk3
-          libdrm
-          libglvnd
-          libnotify
-          libpulseaudio
-          libsecret
-          libsodium
-          libssh
-          libunwind
-          libusb1
-          libuuid
-          libxkbcommon
-          mesa
-          nspr
-          nss
-          openssl
-          pango
-          pipewire
-          systemd
-          stdenv.cc.cc # .lib
-          util-linux
-          # vulkan-loader
-          # xorg.libX11
-          # xorg.libXScrnSaver
-          # xorg.libXcomposite
-          # xorg.libXcursor
-          # xorg.libXdamage
-          # xorg.libXext
-          # xorg.libXfixes
-          # xorg.libXi
-          # xorg.libXrandr
-          # xorg.libXrender
-          # xorg.libXtst
-          # xorg.libxcb
-          # xorg.libxkbfile
-          # xorg.libxshmfence
-          zlib
-          zstd
-        ];
-      };
-    };
-
-    services = {
-      envfs = {
-        enable = true;
-      };
-    };
-
-    modules.services.avahi.enable = true;
-    # Enable netbootxyz if systemd-boot is enabled
-    boot = {
-      loader.systemd-boot.netbootxyz.enable = config.core.boot.systemd-boot;
-      # /tmp to be tmpfs
-      tmp = {
-        useTmpfs = true;
-        cleanOnBoot = true;
-      };
-      # Enable Plymouth on desktops
-      plymouth = {
-        enable = true;
-        themePackages = [ cfg.plymouth.themePackage ];
-        inherit (cfg.plymouth) theme;
-      };
-    };
-
-    # Configure some fonts
-    fonts = {
-      # enableFontDir = true;
-      fontDir.enable = true;
-      enableGhostscriptFonts = true;
-      packages = with pkgs; [
-        cascadia-code
-        corefonts
-        dejavu_fonts
-        # emojione
-        feh
-        fira
-        fira-code
-        fira-code-symbols
-        fira-mono
-        font-awesome
-        go-font
-        hack-font
-        inconsolata
-        jetbrains-mono
-        liberation_ttf
-        nerd-fonts.jetbrains-mono
-        nerd-fonts.inconsolata
-        nerd-fonts.fira-code
-        nerd-fonts.fira-mono
-        nerd-fonts.caskaydia-cove
-        nerd-fonts.caskaydia-mono
-        nerd-fonts.overpass
-        nerd-fonts.ubuntu
-        nerd-fonts.ubuntu-mono
-        nerd-fonts.ubuntu-sans
-        noto-fonts
-        noto-fonts-cjk-sans
-        noto-fonts-emoji
-        noto-fonts-extra
-        overpass
-        symbola
-        twemoji-color-font
-        ubuntu_font_family
-        unifont
-        recursive
-      ];
-    };
-
-    # Enable NetkworManager by default
-    networking.networkmanager = {
-      enable = mkDefault true;
-      unmanaged =
-        [
-          "interface-name:br-*"
-          "interface-name:ve-*" # FIXME are those docker's or libvirt's
-          "interface-name:veth-*" # FIXME are those docker's or libvirt's
-        ]
-        # Do not manager wireguard
-        ++ lib.optionals config.networking.wireguard.enable [ "interface-name:wg0" ]
-        # Do not manage docker interfaces
-        ++ lib.optionals config.virtualisation.docker.enable [ "interface-name:docker0" ]
-        # Do not manager libvirt interfaces
-        ++ lib.optionals config.virtualisation.libvirtd.enable [ "interface-name:virbr*" ];
-      plugins = with pkgs; [ networkmanager-openvpn ];
-      # dispatcherScripts = [{
-      #   # https://askubuntu.com/questions/1271491/disable-wifi-if-lan-is-connected
-      #   source = pkgs.writeText "wifi-wired-exclusive" ''
-      #     #!${pkgs.bash}/bin/bash
-      #     export LC_ALL=C
-      #
-      #     enable_disable_wifi ()
-      #     {
-      #         result=$(${pkgs.networkmanager}/bin/nmcli dev | ${pkgs.gnugrep}/bin/grep "ethernet" | ${pkgs.gnugrep}/bin/grep -w "connected")
-      #         if [ -n "$result" ]; then
-      #             ${pkgs.networkmanager}/bin/nmcli radio wifi off
-      #         else
-      #             ${pkgs.networkmanager}/bin/nmcli radio wifi on
-      #         fi
-      #     }
-      #
-      #     if [ "$2" = "up" ]; then
-      #         enable_disable_wifi
-      #     fi
-      #
-      #     if [ "$2" = "down" ]; then
-      #         enable_disable_wifi
-      #     fi
-      #   '';
-      #   type = "basic";
-      # }];
-    };
-
-    nix = {
-      # Enable SSH-serving nix packages
-      sshServe.enable = mkDefault true;
-    };
-
-    services = {
-      udisks2.enable = true;
-
-      # Make `/run/user/X` larger.
-      logind.extraConfig = ''
-        RuntimeDirectorySize=20%
-      '';
-
-      # Enable printing by default too
-      printing = {
-        enable = true;
-        drivers = [ pkgs.gutenprint ];
-      };
-    };
-  };
-}
systems/modules/desktop/default.nix
@@ -1,9 +0,0 @@
-{
-  imports = [
-    ./base.nix
-    ./i3.nix
-    ./sway.nix
-    ./wayland.nix
-    ./xorg.nix
-  ];
-}
systems/modules/desktop/i3.nix
@@ -1,40 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.modules.desktop.xorg.i3;
-in
-{
-  options = {
-    modules.desktop.xorg.i3 = {
-      enable = mkEnableOption "Enable i3 desktop profile";
-    };
-  };
-
-  config = mkIf cfg.enable {
-    # Enable xorg desktop modules if not already
-    modules.desktop.xorg.enable = true;
-    services = {
-      blueman.enable = true;
-      autorandr.enable = true;
-      xserver = {
-        displayManager = {
-          defaultSession = "none+i3";
-          lightdm.enable = true;
-          lightdm.greeters.pantheon.enable = true;
-        };
-        windowManager.i3.enable = true;
-      };
-      dbus = {
-        enable = true;
-        # socketActivated = true;
-        packages = [ pkgs.dconf ];
-      };
-    };
-  };
-}
systems/modules/desktop/sway.nix
@@ -1,58 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkIf mkEnableOption;
-  cfg = config.modules.desktop.wayland.sway;
-in
-{
-  options = {
-    modules.desktop.wayland.sway = {
-      enable = mkEnableOption "Enable sway desktop profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    # Enable wayland desktop modules if not already
-    modules.desktop.wayland.enable = true;
-
-    # Enable pipewire
-    modules.hardware.audio = {
-      enable = true;
-      pipewire.enable = true;
-    };
-
-    services.blueman.enable = config.modules.hardware.bluetooth.enable;
-    environment.sessionVariables = {
-      # only needed for Sway
-      XDG_CURRENT_DESKTOP = "sway";
-    };
-    xdg = {
-      portal = {
-        enable = true;
-        wlr.enable = true;
-        extraPortals = with pkgs; [
-          xdg-desktop-portal-wlr
-          xdg-desktop-portal-gtk
-        ];
-      };
-    };
-
-    # Allow swaylock to unlock the computer for us
-    security.pam.services.swaylock = {
-      text = "auth include login";
-    };
-
-    # FIXME are those needed
-    programs.dconf.enable = true;
-    services.dbus = {
-      enable = true;
-      packages = [
-        pkgs.dconf
-        pkgs.gcr
-      ];
-    };
-  };
-}
systems/modules/desktop/wayland.nix
@@ -1,79 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib)
-    mkIf
-    mkEnableOption
-    mkForce
-    versionOlder
-    ;
-  cfg = config.modules.desktop.wayland;
-  stable = versionOlder config.system.nixos.release "24.05";
-  swayRun = pkgs.writeShellScript "sway-run" ''
-    export XDG_SESSION_TYPE=wayland
-    export XDG_SESSION_DESKTOP=sway
-    export XDG_CURRENT_DESKTOP=sway
-
-    systemd-run --user --scope --collect --quiet --unit=sway systemd-cat --identifier=sway ${pkgs.sway}/bin/sway $@
-  '';
-in
-{
-  options = {
-    modules.desktop.wayland = {
-      enable = mkEnableOption "Enable wayland desktop";
-    };
-  };
-  config = mkIf cfg.enable {
-    # Enable desktop module if not already.
-    modules.desktop.enable = true;
-    # Force disable xorg desktop module
-    modules.desktop.xorg.enable = mkForce false;
-    # Hardware Support for Wayland Sway, …
-    hardware = {
-      # graphics
-      opengl = {
-        enable = true;
-      };
-    };
-    services =
-      {
-        greetd = {
-          enable = true;
-          settings = {
-            default_session = {
-              # command = "${pkgs.greetd.greetd}/bin/agreety --cmd sway";
-              command = "${lib.makeBinPath [ pkgs.greetd.tuigreet ]}/tuigreet --time --cmd ${swayRun}";
-              users = "greeter";
-            };
-            initial_session = {
-              command = "${swayRun}";
-              user = "vincent";
-            };
-          };
-          # restart = false;
-        };
-      }
-      // (
-        if stable then
-          { }
-        else
-          {
-            libinput = {
-              touchpad = {
-                disableWhileTyping = true;
-                additionalOptions = ''
-                  							Option "Ignore" "on"
-                  						'';
-              };
-            };
-          }
-      );
-    environment.systemPackages = with pkgs; [
-      qogir-icon-theme
-    ];
-  };
-}
systems/modules/desktop/xorg.nix
@@ -1,38 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkIf mkEnableOption;
-  cfg = config.modules.desktop.xorg;
-in
-{
-  options = {
-    modules.desktop.xorg = {
-      enable = mkEnableOption "Enable Xorg desktop";
-    };
-  };
-  config = mkIf cfg.enable {
-    modules.desktop.enable = true;
-    # Extra packages to add to the system
-    environment.systemPackages = with pkgs; [
-      xorg.xmessage
-    ];
-
-    services = {
-      # Enable xserver on desktop
-      xserver = {
-        enable = true;
-        enableTCP = false;
-        libinput.enable = true;
-        synaptics.enable = false;
-        layout = "fr";
-        xkbVariant = "bepo";
-        xkbOptions = "grp:menu_toggle,grp_led:caps,compose:caps";
-      };
-    };
-
-  };
-}
systems/modules/dev/base.nix
@@ -1,35 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  cfg = config.modules.dev;
-  inherit (lib) mkEnableOption mkIf;
-in
-{
-  options = {
-    modules.dev = {
-      enable = mkEnableOption "Mark this machine as a dev machine";
-    };
-  };
-  config = mkIf cfg.enable {
-    # Dev means Emacs 🙃
-    modules.editors.emacs.enable = true;
-    modules.shell = {
-      direnv.enable = true;
-      git.enable = true;
-      gnupg.enable = true;
-      tmux.enable = true;
-    };
-    # Enable lorri (to handle nix shells)
-    # services.lorri.enable = true;
-    environment.systemPackages = with pkgs; [
-      grc
-      ripgrep
-      gnumake
-    ];
-  };
-}
systems/modules/dev/containers-image-mirroring.nix
@@ -1,96 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  inherit (lib)
-    mkEnableOption
-    mkOption
-    mkIf
-    types
-    ;
-  cfg = config.modules.dev.containers.image-mirroring;
-  settingsFormat = pkgs.formats.yaml { };
-  settingsFile = settingsFormat.generate "sync.yaml" cfg.settings;
-in
-{
-  ##### interface
-  options = {
-    modules.dev.containers.image-mirroring = {
-      enable = mkEnableOption "Enable container image mirroring service";
-      targets = mkOption {
-        type = types.listOf types.str;
-        example = [
-          "quay.io/vdemeest"
-          "ghcr.io/vdemeester"
-        ];
-        description = lib.mdDoc ''
-          A list of targets to sync images to. It will use the same
-          sync configuration to push on all.
-        '';
-      };
-      settings = mkOption {
-        inherit (settingsFormat) type;
-        default = { };
-        example = {
-          "docker.io" = {
-            "vdemeester/foo" = [
-              "latest"
-              "bar"
-            ];
-          };
-          "quay.io" = {
-            "buildah/stable" = [ "latest" ];
-          };
-        };
-        description = lib.mdDoc ''
-          Configuration of the image to sync, using skopeo-sync.
-          See skopeo-sync(1) for the content. 
-        '';
-      };
-    };
-  };
-  ##### implementation
-  config = mkIf cfg.enable {
-    systemd.services.container-image-mirroring = {
-      description = "Synchronize docker images to a set of targets";
-      requires = [ "network-online.target" ];
-
-      restartIfChanged = false;
-      unitConfig.X-StopOnRemoval = false;
-
-      serviceConfig = {
-        Type = "oneshot";
-        User = "vincent";
-        OnFailure = "status-email-root@%.service";
-      };
-
-      path = with pkgs; [ skopeo ];
-      # ./scripts/docker.mirroring.script.sh;
-      script = ''
-        BUILDTMPDIR=$(mktemp -d)
-        trap 'rm -rf -- "$BUILDTMPDIR"' EXIT
-
-
-        # Pull to dir first
-        skopeo sync --preserve-digests --src yaml --dest dir \
-               ${settingsFile} \
-               $BUILDTMPDIR
-
-        # Push to targets
-        for target in ${lib.strings.concatStringsSep " " cfg.targets}; do
-            skopeo sync --preserve-digests --src dir --dest docker \
-                   $BUILDTMPDIR \
-                   $target
-        done
-      '';
-
-      after = [ "network-online.target" ];
-      # Make it configurable ?
-      startAt = "weekly";
-    };
-  };
-}
systems/modules/dev/containers.nix
@@ -1,190 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  cfg = config.modules.dev.containers;
-  inherit (lib)
-    mkEnableOption
-    mkIf
-    mkMerge
-    mkOption
-    types
-    ;
-in
-{
-  options = {
-    modules.dev.containers = {
-      enable = mkEnableOption "Enable dev containers";
-      docker = {
-        enable = mkEnableOption "Enable docker containers";
-        package = mkOption {
-          default = pkgs.docker;
-          description = "docker package to be used";
-          type = types.package;
-        };
-        runcPackage = mkOption {
-          default = pkgs.runc;
-          description = "runc package to be used";
-          type = types.package;
-        };
-      };
-      podman = {
-        enable = mkEnableOption "Enable podman containers";
-      };
-      buildkit = {
-        enable = mkEnableOption "Enable podman containers";
-        grpcAddress = mkOption {
-          type = types.listOf types.str;
-          default = [ "unix:///run/buildkit/buildkitd.sock" ];
-          example = [
-            "unix:///run/buildkit/buildkitd.sock"
-            "tcp://0.0.0.0:1234"
-          ];
-          description = lib.mdDoc ''
-            A list of address to listen to for the grpc service.
-          '';
-        };
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      networking.firewall.checkReversePath = false;
-      virtualisation.containers = {
-        enable = true;
-        containersConf.settings = {
-          network = {
-            default_subnet_pools = [
-              # See https://github.com/kubernetes-sigs/kind/issues/2872 for this
-              {
-                "base" = "11.0.0.0/24";
-                "size" = 24;
-              }
-              {
-                "base" = "192.168.129.0/24";
-                "size" = 24;
-              }
-              {
-                "base" = "192.168.130.0/24";
-                "size" = 24;
-              }
-              {
-                "base" = "192.168.131.0/24";
-                "size" = 24;
-              }
-              {
-                "base" = "192.168.132.0/24";
-                "size" = 24;
-              }
-            ];
-          };
-        };
-      };
-    }
-    (mkIf cfg.docker.enable {
-      virtualisation = {
-        containerd = {
-          enable = true;
-        };
-        buildkitd = {
-          enable = true;
-          settings = {
-            grpc = {
-              address = cfg.buildkit.grpcAddress;
-            };
-            worker.oci = {
-              enabled = false;
-            };
-            worker.containerd = {
-              enabled = true;
-              platforms = [
-                "linux/amd64"
-                "linux/arm64"
-              ];
-              namespace = "buildkit";
-            };
-            # FIXME: move to home
-            registry = {
-              "r.svc.home:5000" = {
-                http = true;
-                insecure = true;
-              };
-              "r.svc.home" = {
-                http = true;
-                insecure = true;
-              };
-            };
-          };
-        };
-        docker = {
-          enable = true;
-          inherit (cfg.docker) package;
-          liveRestore = false;
-          storageDriver = "overlay2";
-          daemon.settings = {
-            userland-proxy = false;
-            experimental = true;
-            bip = "172.26.0.1/16";
-            runtimes = {
-              "docker-runc" = {
-                path = "${cfg.docker.runcPackage}/bin/runc";
-              };
-            };
-            default-runtime = "docker-runc";
-            containerd = "/run/containerd/containerd.sock";
-            features = {
-              buildkit = true;
-            };
-            insecure-registries = [
-              "172.30.0.0/16"
-              "192.168.1.0/16"
-              "10.100.0.0/16"
-              "shikoku.home:5000"
-              "r.svc.home:5000"
-              "r.svc.home"
-            ];
-            seccomp-profile = ./my-seccomp.json;
-          };
-        };
-      };
-      environment.systemPackages = with pkgs; [
-        docker-buildx
-      ];
-      networking.firewall.trustedInterfaces = [
-        "docker0"
-        "podman"
-      ];
-    })
-    (mkIf cfg.podman.enable {
-      virtualisation.podman.enable = true;
-    })
-    (mkIf config.modules.profiles.work.redhat {
-      # Red Hat specific setup for virtualisation (buildah, podman, skopeo)
-      virtualisation = {
-        containers = {
-          registries = {
-            search = [
-              "registry.fedoraproject.org"
-              "registry.access.redhat.com"
-              "registry.centos.org"
-              "docker.io"
-              "quay.io"
-            ];
-          };
-          policy = {
-            default = [ { type = "insecureAcceptAnything"; } ];
-            transports = {
-              docker-daemon = {
-                "" = [ { type = "insecureAcceptAnything"; } ];
-              };
-            };
-          };
-        };
-      };
-    })
-  ]);
-}
systems/modules/dev/default.nix
@@ -1,7 +0,0 @@
-{
-  imports = [
-    ./base.nix
-    ./containers.nix
-    ./containers-image-mirroring.nix
-  ];
-}
systems/modules/dev/my-seccomp.json
@@ -1,1041 +0,0 @@
-{
-	"defaultAction": "SCMP_ACT_ERRNO",
-	"defaultErrnoRet": 38,
-	"defaultErrno": "ENOSYS",
-	"archMap": [
-		{
-			"architecture": "SCMP_ARCH_X86_64",
-			"subArchitectures": [
-				"SCMP_ARCH_X86",
-				"SCMP_ARCH_X32"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_AARCH64",
-			"subArchitectures": [
-				"SCMP_ARCH_ARM"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_MIPS64",
-			"subArchitectures": [
-				"SCMP_ARCH_MIPS",
-				"SCMP_ARCH_MIPS64N32"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_MIPS64N32",
-			"subArchitectures": [
-				"SCMP_ARCH_MIPS",
-				"SCMP_ARCH_MIPS64"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_MIPSEL64",
-			"subArchitectures": [
-				"SCMP_ARCH_MIPSEL",
-				"SCMP_ARCH_MIPSEL64N32"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_MIPSEL64N32",
-			"subArchitectures": [
-				"SCMP_ARCH_MIPSEL",
-				"SCMP_ARCH_MIPSEL64"
-			]
-		},
-		{
-			"architecture": "SCMP_ARCH_S390X",
-			"subArchitectures": [
-				"SCMP_ARCH_S390"
-			]
-		}
-	],
-	"syscalls": [
-		{
-			"names": [
-				"bdflush",
-				"io_pgetevents",
-				"kexec_file_load",
-				"kexec_load",
-				"migrate_pages",
-				"move_pages",
-				"nfsservctl",
-				"nice",
-				"oldfstat",
-				"oldlstat",
-				"oldolduname",
-				"oldstat",
-				"olduname",
-				"pciconfig_iobase",
-				"pciconfig_read",
-				"pciconfig_write",
-				"sgetmask",
-				"ssetmask",
-				"swapcontext",
-				"swapoff",
-				"swapon",
-				"sysfs",
-				"uselib",
-				"userfaultfd",
-				"ustat",
-				"vm86",
-				"vm86old",
-				"vmsplice"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"_llseek",
-				"_newselect",
-				"accept",
-				"accept4",
-				"access",
-				"adjtimex",
-				"alarm",
-				"bind",
-				"brk",
-				"capget",
-				"capset",
-				"chdir",
-				"chmod",
-				"chown",
-				"chown32",
-				"clock_adjtime",
-				"clock_adjtime64",
-				"clock_getres",
-				"clock_getres_time64",
-				"clock_gettime",
-				"clock_gettime64",
-				"clock_nanosleep",
-				"clock_nanosleep_time64",
-				"clone",
-				"clone3",
-				"close",
-				"close_range",
-				"connect",
-				"copy_file_range",
-				"creat",
-				"dup",
-				"dup2",
-				"dup3",
-				"epoll_create",
-				"epoll_create1",
-				"epoll_ctl",
-				"epoll_ctl_old",
-				"epoll_pwait",
-				"epoll_pwait2",
-				"epoll_wait",
-				"epoll_wait_old",
-				"eventfd",
-				"eventfd2",
-				"execve",
-				"execveat",
-				"exit",
-				"exit_group",
-				"faccessat",
-				"faccessat2",
-				"fadvise64",
-				"fadvise64_64",
-				"fallocate",
-				"fanotify_mark",
-				"fchdir",
-				"fchmod",
-				"fchmodat",
-				"fchown",
-				"fchown32",
-				"fchownat",
-				"fcntl",
-				"fcntl64",
-				"fdatasync",
-				"fgetxattr",
-				"flistxattr",
-				"flock",
-				"fork",
-				"fremovexattr",
-				"fsconfig",
-				"fsetxattr",
-				"fsmount",
-				"fsopen",
-				"fspick",
-				"fstat",
-				"fstat64",
-				"fstatat64",
-				"fstatfs",
-				"fstatfs64",
-				"fsync",
-				"ftruncate",
-				"ftruncate64",
-				"futex",
-				"futex_time64",
-				"futimesat",
-				"get_robust_list",
-				"get_thread_area",
-				"getcpu",
-				"getcwd",
-				"getdents",
-				"getdents64",
-				"getegid",
-				"getegid32",
-				"geteuid",
-				"geteuid32",
-				"getgid",
-				"getgid32",
-				"getgroups",
-				"getgroups32",
-				"getitimer",
-				"get_mempolicy",
-				"getpeername",
-				"getpgid",
-				"getpgrp",
-				"getpid",
-				"getppid",
-				"getpriority",
-				"getrandom",
-				"getresgid",
-				"getresgid32",
-				"getresuid",
-				"getresuid32",
-				"getrlimit",
-				"getrusage",
-				"getsid",
-				"getsockname",
-				"getsockopt",
-				"gettid",
-				"gettimeofday",
-				"getuid",
-				"getuid32",
-				"getxattr",
-				"inotify_add_watch",
-				"inotify_init",
-				"inotify_init1",
-				"inotify_rm_watch",
-				"io_cancel",
-				"io_destroy",
-				"io_getevents",
-				"io_setup",
-				"io_submit",
-				"ioctl",
-				"ioprio_get",
-				"ioprio_set",
-				"ipc",
-				"keyctl",
-				"kill",
-				"lchown",
-				"lchown32",
-				"lgetxattr",
-				"link",
-				"linkat",
-				"listen",
-				"listxattr",
-				"llistxattr",
-				"lremovexattr",
-				"lseek",
-				"lsetxattr",
-				"lstat",
-				"lstat64",
-				"madvise",
-				"mbind",
-				"memfd_create",
-				"memfd_secret",
-				"mincore",
-				"mkdir",
-				"mkdirat",
-				"mknod",
-				"mknodat",
-				"mlock",
-				"mlock2",
-				"mlockall",
-				"mmap",
-				"mmap2",
-				"mount",
-				"move_mount",
-				"mprotect",
-				"mq_getsetattr",
-				"mq_notify",
-				"mq_open",
-				"mq_timedreceive",
-				"mq_timedreceive_time64",
-				"mq_timedsend",
-				"mq_timedsend_time64",
-				"mq_unlink",
-				"mremap",
-				"msgctl",
-				"msgget",
-				"msgrcv",
-				"msgsnd",
-				"msync",
-				"munlock",
-				"munlockall",
-				"munmap",
-				"name_to_handle_at",
-				"nanosleep",
-				"newfstatat",
-				"open",
-				"openat",
-				"openat2",
-				"open_tree",
-				"pause",
-				"pidfd_getfd",
-				"pidfd_open",
-				"pidfd_send_signal",
-				"pipe",
-				"pipe2",
-				"pivot_root",
-				"pkey_alloc",
-				"pkey_free",
-				"pkey_mprotect",
-				"poll",
-				"ppoll",
-				"ppoll_time64",
-				"prctl",
-				"pread64",
-				"preadv",
-				"preadv2",
-				"prlimit64",
-				"pselect6",
-				"pselect6_time64",
-				"pwrite64",
-				"pwritev",
-				"pwritev2",
-				"read",
-				"readahead",
-				"readdir",
-				"readlink",
-				"readlinkat",
-				"readv",
-				"reboot",
-				"recv",
-				"recvfrom",
-				"recvmmsg",
-				"recvmmsg_time64",
-				"recvmsg",
-				"remap_file_pages",
-				"removexattr",
-				"rename",
-				"renameat",
-				"renameat2",
-				"restart_syscall",
-				"rmdir",
-				"rseq",
-				"rt_sigaction",
-				"rt_sigpending",
-				"rt_sigprocmask",
-				"rt_sigqueueinfo",
-				"rt_sigreturn",
-				"rt_sigsuspend",
-				"rt_sigtimedwait",
-				"rt_sigtimedwait_time64",
-				"rt_tgsigqueueinfo",
-				"sched_get_priority_max",
-				"sched_get_priority_min",
-				"sched_getaffinity",
-				"sched_getattr",
-				"sched_getparam",
-				"sched_getscheduler",
-				"sched_rr_get_interval",
-				"sched_rr_get_interval_time64",
-				"sched_setaffinity",
-				"sched_setattr",
-				"sched_setparam",
-				"sched_setscheduler",
-				"sched_yield",
-				"seccomp",
-				"select",
-				"semctl",
-				"semget",
-				"semop",
-				"semtimedop",
-				"semtimedop_time64",
-				"send",
-				"sendfile",
-				"sendfile64",
-				"sendmmsg",
-				"sendmsg",
-				"sendto",
-				"setns",
-				"set_mempolicy",
-				"set_robust_list",
-				"set_thread_area",
-				"set_tid_address",
-				"setfsgid",
-				"setfsgid32",
-				"setfsuid",
-				"setfsuid32",
-				"setgid",
-				"setgid32",
-				"setgroups",
-				"setgroups32",
-				"setitimer",
-				"setpgid",
-				"setpriority",
-				"setregid",
-				"setregid32",
-				"setresgid",
-				"setresgid32",
-				"setresuid",
-				"setresuid32",
-				"setreuid",
-				"setreuid32",
-				"setrlimit",
-				"setsid",
-				"setsockopt",
-				"setuid",
-				"setuid32",
-				"setxattr",
-				"shmat",
-				"shmctl",
-				"shmdt",
-				"shmget",
-				"shutdown",
-				"sigaltstack",
-				"signalfd",
-				"signalfd4",
-				"sigreturn",
-				"socketcall",
-				"socketpair",
-				"splice",
-				"stat",
-				"stat64",
-				"statfs",
-				"statfs64",
-				"statx",
-				"symlink",
-				"symlinkat",
-				"sync",
-				"sync_file_range",
-				"syncfs",
-				"sysinfo",
-				"syslog",
-				"tee",
-				"tgkill",
-				"time",
-				"timer_create",
-				"timer_delete",
-				"timer_getoverrun",
-				"timer_gettime",
-				"timer_gettime64",
-				"timer_settime",
-				"timer_settime64",
-				"timerfd_create",
-				"timerfd_gettime",
-				"timerfd_gettime64",
-				"timerfd_settime",
-				"timerfd_settime64",
-				"times",
-				"tkill",
-				"truncate",
-				"truncate64",
-				"ugetrlimit",
-				"umask",
-				"umount",
-				"umount2",
-				"uname",
-				"unlink",
-				"unlinkat",
-				"unshare",
-				"utime",
-				"utimensat",
-				"utimensat_time64",
-				"utimes",
-				"vfork",
-				"wait4",
-				"waitid",
-				"waitpid",
-				"write",
-				"writev"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"personality"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 0,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"personality"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 8,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"personality"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 131072,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"personality"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 131080,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"personality"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 4294967295,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"sync_file_range2"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"arches": [
-					"ppc64le"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"arm_fadvise64_64",
-				"arm_sync_file_range",
-				"sync_file_range2",
-				"breakpoint",
-				"cacheflush",
-				"set_tls"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"arches": [
-					"arm",
-					"arm64"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"arch_prctl"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"arches": [
-					"amd64",
-					"x32"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"modify_ldt"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"arches": [
-					"amd64",
-					"x32",
-					"x86"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"s390_pci_mmio_read",
-				"s390_pci_mmio_write",
-				"s390_runtime_instr"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"arches": [
-					"s390",
-					"s390x"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"open_by_handle_at"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_DAC_READ_SEARCH"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"open_by_handle_at"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_DAC_READ_SEARCH"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"bpf",
-				"fanotify_init",
-				"lookup_dcookie",
-				"perf_event_open",
-				"quotactl",
-				"setdomainname",
-				"sethostname",
-				"setns"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_ADMIN"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"bpf",
-				"fanotify_init",
-				"lookup_dcookie",
-				"perf_event_open",
-				"quotactl",
-				"setdomainname",
-				"sethostname",
-				"setns"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_ADMIN"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"chroot"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_CHROOT"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"chroot"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_CHROOT"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"delete_module",
-				"init_module",
-				"finit_module",
-				"query_module"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_MODULE"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"delete_module",
-				"init_module",
-				"finit_module",
-				"query_module"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_MODULE"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"acct"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_PACCT"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"acct"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_PACCT"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"kcmp",
-				"process_madvise",
-				"process_vm_readv",
-				"process_vm_writev",
-				"ptrace"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_PTRACE"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"kcmp",
-				"process_madvise",
-				"process_vm_readv",
-				"process_vm_writev",
-				"ptrace"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_PTRACE"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"iopl",
-				"ioperm"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_RAWIO"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"iopl",
-				"ioperm"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_RAWIO"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"settimeofday",
-				"stime",
-				"clock_settime",
-				"clock_settime64"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_TIME"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"settimeofday",
-				"stime",
-				"clock_settime",
-				"clock_settime64"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_TIME"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"vhangup"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [],
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_SYS_TTY_CONFIG"
-				]
-			},
-			"excludes": {}
-		},
-		{
-			"names": [
-				"vhangup"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_SYS_TTY_CONFIG"
-				]
-			},
-			"errnoRet": 1,
-			"errno": "EPERM"
-		},
-		{
-			"names": [
-				"socket"
-			],
-			"action": "SCMP_ACT_ERRNO",
-			"args": [
-				{
-					"index": 0,
-					"value": 16,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				},
-				{
-					"index": 2,
-					"value": 9,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_EQ"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_AUDIT_WRITE"
-				]
-			},
-			"errnoRet": 22,
-			"errno": "EINVAL"
-		},
-		{
-			"names": [
-				"socket"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 2,
-					"value": 9,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_NE"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_AUDIT_WRITE"
-				]
-			}
-		},
-		{
-			"names": [
-				"socket"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 0,
-					"value": 16,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_NE"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_AUDIT_WRITE"
-				]
-			}
-		},
-		{
-			"names": [
-				"socket"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": [
-				{
-					"index": 2,
-					"value": 9,
-					"valueTwo": 0,
-					"op": "SCMP_CMP_NE"
-				}
-			],
-			"comment": "",
-			"includes": {},
-			"excludes": {
-				"caps": [
-					"CAP_AUDIT_WRITE"
-				]
-			}
-		},
-		{
-			"names": [
-				"socket"
-			],
-			"action": "SCMP_ACT_ALLOW",
-			"args": null,
-			"comment": "",
-			"includes": {
-				"caps": [
-					"CAP_AUDIT_WRITE"
-				]
-			},
-			"excludes": {}
-		}
-	]
-}
systems/modules/editors/default.nix
@@ -1,29 +0,0 @@
-{ config, lib, ... }:
-let
-  inherit (lib)
-    mkIf
-    mkOption
-    mkOverride
-    types
-    ;
-  cfg = config.modules.editors;
-in
-{
-  imports = [
-    ./vim.nix
-    ./emacs.nix
-    ./neovim.nix
-  ];
-  options.modules.editors = {
-    default = mkOption {
-      description = "default editor";
-      type = types.str;
-      default = "vim";
-    };
-  };
-  config = mkIf (cfg.default != null) {
-    environment.variables = {
-      EDITOR = mkOverride 0 cfg.default;
-    };
-  };
-}
systems/modules/editors/emacs.nix
@@ -1,25 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.editors.emacs;
-in
-{
-  options.modules.editors.emacs = {
-    enable = mkEnableOption "enable emacs editor";
-  };
-  config = mkIf cfg.enable {
-    # modules.editors.default = "emacs";
-    # FIXME add a default configuration
-    environment = {
-      systemPackages = [ pkgs.emacs ];
-      shellAliases = {
-        e = "emacs";
-      };
-    };
-  };
-}
systems/modules/editors/neovim.nix
@@ -1,20 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.editors.neovim;
-in
-{
-  options.modules.editors.neovim = {
-    enable = mkEnableOption "enable neovim editor";
-  };
-  config = mkIf cfg.enable {
-    environment = {
-      systemPackages = [ pkgs.neovim ];
-    };
-  };
-}
systems/modules/editors/vim.nix
@@ -1,23 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.editors.vim;
-in
-{
-  options.modules.editors.vim = {
-    enable = mkEnableOption "enable vim editor";
-  };
-  config = mkIf cfg.enable {
-    environment = {
-      systemPackages = [ pkgs.vim ];
-      shellAliases = {
-        v = "vim";
-      };
-    };
-  };
-}
systems/modules/hardware/audio.nix
@@ -1,170 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib)
-    mkEnableOption
-    mkIf
-    mkMerge
-    mkOption
-    types
-    versionOlder
-    ;
-  cfg = config.modules.hardware.audio;
-  stable = versionOlder config.system.nixos.release "24.05";
-in
-{
-  options.modules.hardware.audio = {
-    enable = mkEnableOption "enable audio";
-    pulseaudio = {
-      enable = mkEnableOption "enable pulseaudio";
-      tcp = mkOption {
-        default = false;
-        description = "enable pulseaudio tcp";
-        type = types.bool;
-      };
-    };
-    pipewire = {
-      enable = mkEnableOption "enable pipewire";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      # Enable sound (alsa)
-      # sound.enable = true;
-      # FIXME is it needed
-      security.pam.loginLimits = [
-        {
-          domain = "@audio";
-          item = "memlock";
-          type = "-";
-          value = "unlimited";
-        }
-        {
-          domain = "@audio";
-          item = "rtprio";
-          type = "-";
-          value = "99";
-        }
-        {
-          domain = "@audio";
-          item = "nofile";
-          type = "-";
-          value = "99999";
-        }
-      ];
-    }
-    (mkIf cfg.pipewire.enable {
-      security.rtkit.enable = true;
-      services.pipewire =
-        {
-          enable = true;
-          alsa.enable = true;
-          alsa.support32Bit = true;
-          pulse.enable = true;
-          wireplumber =
-            {
-              enable = true;
-            }
-            // (
-              if stable then
-                { }
-              else
-                {
-                  configPackages = [
-                    (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" ''
-                      bluez_monitor.properties = {
-                        ["bluez5.enable-sbc-xq"] = true,
-                        ["bluez5.enable-msbc"] = true,
-                        ["bluez5.enable-hw-volume"] = true,
-                        ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
-                      }
-                    '')
-                  ];
-                }
-            );
-        }
-        // (
-          if stable then
-            { }
-          else
-            {
-              extraConfig = {
-                pipewire-pulse = {
-                  "50-network-party.conf" = {
-                    # "context.modules" = [
-                    #   { name = "libpipewire-module-protocol-native"; }
-                    #   { name = "libpipewire-module-client-node"; }
-                    #   { name = "libpipewire-module-adapter"; }
-                    #   { name = "libpipewire-module-metadata"; }
-                    # ];
-                    "context.exec" = [
-                      {
-                        path = "pactl";
-                        args = "load-module module-native-protocol-tcp";
-                      }
-                      {
-                        path = "pactl";
-                        args = "load-module module-zeroconf-discover";
-                      }
-                      {
-                        path = "pactl";
-                        args = "load-module module-zeroconf-publish";
-                      }
-                    ];
-                  };
-                };
-              };
-            }
-        );
-      networking.firewall = {
-        allowedTCPPorts = [
-          6001
-          6002
-        ];
-      };
-    })
-    (mkIf cfg.pulseaudio.enable {
-      # Enable and configure pulseaudio
-      hardware.pulseaudio = {
-        enable = true;
-        support32Bit = true;
-        zeroconf.discovery.enable = true;
-      };
-    })
-    (mkIf (cfg.pulseaudio.enable || cfg.pipewire.enable) {
-      # Add extra packages
-      environment.systemPackages = with pkgs; [
-        apulse # allow alsa application to use pulse
-        pavucontrol # pulseaudio volume control
-        pasystray # systray application
-        pulseaudioFull # pactl, etc..
-      ];
-    })
-    (mkIf (cfg.pulseaudio.enable && cfg.pulseaudio.tcp) {
-      hardware.pulseaudio = {
-        zeroconf = {
-          discovery.enable = cfg.tcp;
-          publish.enable = cfg.tcp;
-        };
-        tcp = {
-          enable = cfg.tcp;
-          anonymousClients = {
-            allowAll = true;
-            allowedIpRanges = [
-              "127.0.0.1"
-              "192.168.12.0/24"
-              "10.0.0.0/24"
-            ];
-          };
-        };
-      };
-      networking.firewall = {
-        allowedTCPPorts = [ 4713 ];
-      };
-    })
-  ]);
-}
systems/modules/hardware/bluetooth.nix
@@ -1,35 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf mkMerge;
-  cfg = config.modules.hardware.bluetooth;
-in
-{
-  options.modules.hardware.bluetooth = {
-    enable = mkEnableOption "Enable bluetooth";
-  };
-
-  config = mkIf cfg.enable (mkMerge [
-    {
-      hardware.bluetooth.enable = true;
-      # warnings = if stable then [ ] else [ "NixOS release: ${config.system.nixos.release}" ];
-    }
-    (mkIf config.modules.hardware.audio.pulseaudio.enable {
-      hardware.pulseaudio = {
-        # NixOS allows either a lightweight build (default) or full build of
-        # PulseAudio to be installed.  Only the full build has Bluetooth
-        # support, so it must be selected here.
-        package = pkgs.pulseaudioFull;
-      };
-      hardware.bluetooth.settings = {
-        General = {
-          Enable = "Source,Sink,Media,Socket";
-        };
-      };
-    })
-  ]);
-}
systems/modules/hardware/default.nix
@@ -1,11 +0,0 @@
-{
-  imports = [
-    ./audio.nix
-    ./bluetooth.nix
-    ./yubikey.nix
-    ./laptop.nix
-    ./server.nix
-    # remove "nixos"
-    ./sane-extra-config.nixos.nix
-  ];
-}
systems/modules/hardware/laptop.nix
@@ -1,50 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf mkMerge;
-  cfg = config.modules.hardware.laptop;
-in
-{
-  options = {
-    modules.hardware.laptop = {
-      enable = mkEnableOption "Enable laptop profile";
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      # Some systctl options for all laptops
-      boot.kernel.sysctl = {
-        "vm.swappiness" = 10;
-        "vm.dirty_ratio" = 25;
-        "vm.dirty_background_ratio" = 10;
-        "vm.dirty_writeback_centisecs" = 5000;
-        "vm.dirty_expire_centisecs" = 5000;
-      };
-      # Packages that are always useful for laptops
-      environment.systemPackages = with pkgs; [
-        lm_sensors
-        powertop
-        acpi
-      ];
-      # Run nix-gc only when on AC power
-      systemd.services.nix-gc.unitConfig.ConditionACPower = true;
-      # When a laptop is docked or on external power, ignore the lid state (if the laptop is opened or closed)
-      services = {
-        logind.extraConfig = ''
-          HandleLidSwitchExternalPower=ignore
-          HandleLidSwitchDocked=ignore
-        '';
-      };
-    }
-    (mkIf config.modules.desktop.enable {
-      # FIXME to enable
-      # Graphical interface, we can add additionnal packages
-      # Enable setting power-profiles trough DBus
-      services.power-profiles-daemon.enable = true;
-    })
-  ]);
-}
systems/modules/hardware/sane-extra-config.nixos.nix
@@ -1,42 +0,0 @@
-{
-  config,
-  lib,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.hardware.sane;
-  # saneExtraConfig =
-  #   pkgs.runCommand "sane-extra-config"
-  #     { } ''
-  #     cp -Lr '${pkgs.mkSaneConfig { paths = [ pkgs.sane-backends ]; }}'/etc/sane.d $out
-  #     chmod +w $out
-  #     ${concatMapStrings
-  #       (
-  #       c: ''
-  #         f="$out/${c.name}.conf"
-  #         [ ! -e "$f" ] || chmod +w "$f"
-  #         cat ${builtins.toFile "" (c.value + "\n")} >>"$f"
-  #         chmod -w "$f"
-  #       ''
-  #       )
-  #       (mapAttrsToList nameValuePair cfg.extraConfig)}
-  #     chmod -w $out
-  #   '';
-in
-{
-  options = {
-    hardware.sane.extraConfig = mkOption {
-      type = types.attrsOf types.lines;
-      default = { };
-      example = {
-        "some-backend" = "# some lines to add to its .conf";
-      };
-    };
-  };
-
-  config = mkIf (cfg.enable && cfg.extraConfig != { }) {
-    # hardware.sane.configDir = saneExtraConfig.outPath;
-  };
-}
systems/modules/hardware/server.nix
@@ -1,13 +0,0 @@
-{ config, lib, ... }:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.hardware.server;
-in
-{
-  options = {
-    modules.hardware.server = {
-      enable = mkEnableOption "Enable server profile";
-    };
-  };
-  config = mkIf cfg.enable { };
-}
systems/modules/hardware/yubikey.nix
@@ -1,81 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib)
-    mkEnableOption
-    mkIf
-    mkMerge
-    mkOption
-    types
-    ;
-  cfg = config.modules.hardware.yubikey;
-in
-{
-  options = {
-    modules.hardware.yubikey = {
-      enable = mkEnableOption "Enable yubikey profile";
-      agent = mkOption {
-        default = true;
-        description = "wether to enable yubikey-agent";
-        type = types.bool;
-      };
-      u2f = mkOption {
-        default = true;
-        description = "wether to enable auth with yubkeys throguh pam using u2f";
-        type = types.bool;
-      };
-    };
-  };
-  config = mkIf cfg.enable (mkMerge [
-    {
-      environment = {
-        systemPackages = with pkgs; [
-          yubico-piv-tool
-          yubikey-personalization
-          yubikey-manager
-          age-plugin-yubikey
-        ];
-      };
-      services = {
-        pcscd.enable = true;
-        udev = {
-          packages = with pkgs; [ yubikey-personalization ];
-          extraRules = ''
-            # Yubico YubiKey
-            KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", TAG+="uaccess", MODE="0660", GROUP="wheel"
-            # ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0113|0114|0115|0116|0120|0402|0403|0406|0407|0410", RUN+="${pkgs.systemd}/bin/loginctl lock-sessions"
-          '';
-        };
-      };
-    }
-    (mkIf config.modules.desktop.enable {
-      environment.systemPackages = with pkgs; [
-        yubioath-flutter
-      ];
-      programs.yubikey-touch-detector = {
-        enable = true;
-      };
-    })
-    (mkIf cfg.u2f {
-      security.pam.u2f = {
-        enable = true;
-        origin = "pam://yubi";
-        authFile = pkgs.writeText "u2f-mappings" (
-          lib.concatStrings [
-            "vincent"
-            ":4IiWZI9g6D8W6LeAW13ug4CnS8PreNRcHdcebkUDny3gWGfmpMJg4TgBWaZSIdh+sgg4jQA4MxYwTCmmP/ipWQ==,qOl+ouBRk6MMEJiE7H5LuTAirhBhN0UQrCNlLQoRsVttp6IBKG4yq4zDwm4fmYlfy1MFhvh7oOapMOmodMKJpQ==,es256,+presence" # yubikey5-a
-            ":Sz4J2qMhoE7bE/uzwUzjJxG/bE0s+cw18zXcQjRsLIdJTVbuMad1ivKlYeLZW6vWV0lYiODlRW21HTSaFzu06A==,p7OZ3z5fiAIuJRHVzm56Y8Ti934+4cVHjsG7kaapmz8cWPfXfXfj5c8QiyIz3EQ0hOoxVV5cbkzUTxe7hdQIsA==,es256,+presence" # yubikey5-c1
-          ]
-        );
-      };
-    })
-    (mkIf cfg.agent {
-      programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
-      services.yubikey-agent.enable = true;
-    })
-  ]);
-}
systems/modules/profiles/builder.nix
@@ -1,72 +0,0 @@
-{ config, lib, ... }:
-
-let
-  inherit (lib)
-    mkIf
-    mkEnableOption
-    importTOML
-    filter
-    ;
-  cfg = config.profiles.externalbuilder;
-  metadata = importTOML ../../../ops/hosts.toml;
-  currentHostIP =
-    if builtins.hasAttr "addrs" metadata.hosts.${config.networking.hostName} then
-      metadata.hosts.${config.networking.hostName}.addrs.v4
-    else
-      "0.0.0.0";
-  isCurrentHost = n: n.hostName != currentHostIP;
-in
-{
-  options = {
-    profiles.externalbuilder = {
-      enable = mkEnableOption "Enable externalbuilder profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    nix.distributedBuilds = true;
-    # FIXME Redo this later
-    # sops.secrets.builder = {
-    #   sopsFile = ../../../secrets/builder.yaml;
-    #   mode = "600";
-    #   path = "/etc/nix/builder.key";
-    # };
-
-    nix.buildMachines = filter isCurrentHost [
-      {
-        hostName = "${metadata.hosts.shikoku.addrs.v4}";
-        inherit (metadata.hosts.shikoku.builder) maxJobs;
-        sshUser = "builder";
-        # sshKey = config.sops.secrets.builder.path;
-        inherit (metadata.hosts.shikoku.builder) systems;
-        supportedFeatures = metadata.hosts.shikoku.builder.features;
-      }
-      {
-        hostName = "${metadata.hosts.aomi.addrs.v4}";
-        inherit (metadata.hosts.aomi.builder) maxJobs;
-        sshUser = "builder";
-        # sshKey = config.sops.secrets.builder.path;
-        inherit (metadata.hosts.aomi.builder) systems;
-        supportedFeatures = metadata.hosts.aomi.builder.features;
-      }
-    ];
-
-    programs.ssh.knownHosts = {
-      "shikoku" = {
-        hostNames = [
-          "shikoku.home"
-          "${metadata.hosts.shikoku.addrs.v4}"
-        ];
-        publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm";
-      };
-      "aomi" = {
-        hostNames = [
-          "aomi.home"
-          "${metadata.hosts.aomi.addrs.v4}"
-        ];
-        publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQVlSrUKU0xlM9E+sJ8qgdgqCW6ePctEBD2Yf+OnyME";
-      };
-    };
-
-  };
-
-}
systems/modules/profiles/default.nix
@@ -1,7 +0,0 @@
-{
-  imports = [
-    ./builder.nix
-    ./home.nix
-    ./work.nix
-  ];
-}
systems/modules/profiles/home.nix
@@ -1,112 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.modules.profiles.home;
-  secretPath = ../../../secrets/machines.nix;
-  secretCondition = builtins.pathExists secretPath;
-  machines = lib.optionalAttrs secretCondition (import secretPath);
-in
-{
-  options = {
-    modules.profiles.home = mkEnableOption "Enable home profile";
-  };
-  config = mkIf cfg {
-    boot.kernelParams = [
-      "nfs.nfs4_disable_idmapping=0"
-      "nfsd.nfs4_disable_idmapping=0"
-    ];
-    networking = {
-      domain = "home";
-      hosts =
-        with machines;
-        mkIf secretCondition {
-          "${home.ips.honshu}" = [ "honshu.home" ];
-          "${home.ips.aion}" = [ "aion.home" ];
-          "${home.ips.aomi}" = [ "aomi.home" ];
-          "${wireguard.ips.aomi}" = [ "aomi.vpn" ];
-          "${home.ips.shikoku}" = [ "shikoku.home" ];
-          "${wireguard.ips.shikoku}" = [ "shikoku.vpn" ];
-          # "${home.ips.wakasu}" = [ "wakasu.home" ];
-          # "${wireguard.ips.wakasu}" = [ "wakasu.vpn" ];
-          "${home.ips.hokkaido}" = [ "hokkaido.home" ];
-          "${wireguard.ips.hokkaido}" = [ "hokkaido.vpn" ];
-          # "${home.ips.sakhalin}" = [ "sakhalin.home" ];
-          "${home.ips.sakhalin}" = [
-            "sakhalin.home"
-            "nix.cache.home"
-          ];
-          "${wireguard.ips.sakhalin}" = [ "sakhalin.vpn" ];
-          "${home.ips.synodine}" = [ "synodine.home" ];
-          "${home.ips.okinawa}" = [ "okinawa.home" ];
-          "${wireguard.ips.okinawa}" = [ "okinawa.vpn" ];
-          "${wireguard.ips.kerkouane}" = [ "kerkouane.vpn" ];
-          "${wireguard.ips.naruhodo}" = [ "naruhodo.vpn" ];
-          "${home.ips.demeter}" = [ "demeter.home" ];
-          "${home.ips.athena}" = [ "athena.home" ];
-        };
-    };
-    time.timeZone = "Europe/Paris";
-    # To mimic autofs on fedora
-    fileSystems = mkIf secretCondition {
-      "/net/synodine.home" = {
-        device = "${machines.home.ips.synodine}:/";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      # FIXME(vdemeester): I think it acts like this because there is only one export
-      "/net/sakhalin.home/export" = {
-        device = "${machines.home.ips.sakhalin}:/";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      # FIXME(vdemeester): Loop
-      "/net/aion.home/export/documents" = {
-        device = "aion.home:/export/documents";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      "/net/aion.home/export/downloads" = {
-        device = "aion.home:/export/downloads";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      "/net/aion.home/export/music" = {
-        device = "aion.home:/export/music";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      "/net/aion.home/export/pictures" = {
-        device = "aion.home:/export/pictures";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-      "/net/aion.home/export/videos" = {
-        device = "aion.home:/export/videos";
-        fsType = "nfs";
-        options = [
-          "x-systemd.automount"
-          "noauto"
-        ];
-      };
-    };
-  };
-}
systems/modules/profiles/work.nix
@@ -1,97 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.modules.profiles.work;
-in
-{
-  options = {
-    modules.profiles.work = {
-      redhat = mkEnableOption "Enable the Red Hat profiles (VPN, certs, …)";
-    };
-  };
-  config = mkIf cfg.redhat {
-    environment.systemPackages = with pkgs; [
-      krb5
-      (google-chrome.override {
-        commandLineArgs = "--auth-negotiate-delegate-whitelist='*.redhat.com' --auth-server-whitelist=.redhat.com --enable-features=UseOzonePlatform --enable-gpu --ozone-platform=wayland";
-      })
-      libnotify
-    ];
-    # Kerberos
-    age.secrets."krb5.conf" = {
-      file = ../../../secrets/redhat/krb5.conf.age;
-      path = "/etc/krb5.conf";
-      mode = "444";
-      group = "wheel";
-    };
-    # NetworkManager
-    age.secrets."RHVPN.ovpn" = {
-      file = ../../../secrets/redhat/RHVPN.ovpn.age;
-      path = "/etc/NetworkManager/system-connections/RHVPN.ovpn";
-      mode = "600";
-    };
-    age.secrets."redhat/AMS2.ovpn" = {
-      file = ../../../secrets/redhat/AMS2.ovpn.age;
-      path = "/etc/NetworkManager/system-connections/AMS2.ovpn";
-      mode = "600";
-    };
-    age.secrets."BBRQ.ovpn" = {
-      file = ../../../secrets/redhat/BBRQ.ovpn.age;
-      path = "/etc/NetworkManager/system-connections/BBRQ.ovpn";
-      mode = "600";
-    };
-    age.secrets."RDU2.ovpn" = {
-      file = ../../../secrets/redhat/RDU2.ovpn.age;
-      path = "/etc/NetworkManager/system-connections/RDU2.ovpn";
-      mode = "600";
-    };
-    # Certificates
-    age.secrets."ipa.crt" = {
-      file = ../../../secrets/redhat/ipa.crt.age;
-      path = "/etc/ipa/ipa.crt";
-      mode = "444";
-    };
-    age.secrets."2015-RH-IT-Root-CA.pem" = {
-      file = ../../../secrets/redhat/2015-RH-IT-Root-CA.pem.age;
-      path = "/etc/pki/tls/certs/2015-RH-IT-Root-CA.pem";
-      mode = "444";
-    };
-    age.secrets."Eng-CA.crt" = {
-      file = ../../../secrets/redhat/Eng-CA.crt.age;
-      path = "/etc/pki/tls/certs/Eng-CA.crt";
-      mode = "444";
-    };
-    age.secrets."newca.crt" = {
-      file = ../../../secrets/redhat/newca.crt.age;
-      path = "/etc/pki/tls/certs/newca.crt";
-      mode = "444";
-    };
-    age.secrets."oracle_ebs.crt" = {
-      file = ../../../secrets/redhat/oracle_ebs.crt.age;
-      path = "/etc/pki/tls/certs/oracle_ebs.crt";
-      mode = "444";
-    };
-    age.secrets."pki-ca-chain.crt" = {
-      file = ../../../secrets/redhat/pki-ca-chain.crt.age;
-      path = "/etc/pki/tls/certs/pki-ca-chain.crt";
-      mode = "444";
-    };
-    age.secrets."RH_ITW.crt" = {
-      file = ../../../secrets/redhat/RH_ITW.crt.age;
-      path = "/etc/pki/tls/certs/RH_ITW.crt";
-      mode = "444";
-    };
-    age.secrets."win-intermediate-ca.cer" = {
-      file = ../../../secrets/redhat/win-intermediate-ca.cer.age;
-      path = "/etc/pki/tls/certs/win-intermediate-ca.cer";
-      mode = "444";
-    };
-  };
-
-}
systems/modules/programs/crc.nix
@@ -1,32 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.programs.crc;
-in
-{
-  options = {
-    programs.crc = {
-      enable = mkEnableOption "wether to enable crc";
-      package = mkOption {
-        default = pkgs.my.crc; # FIXME use pkgs.crc at some point
-        description = "crc package to be used";
-        type = types.package;
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    environment.systemPackages = with pkgs; [ cfg.package ];
-    networking.networkmanager.dns = "dnsmasq";
-    environment.etc."NetworkManager/dnsmasq.d/crc.conf".text = ''
-      server=/apps-crc.testing/192.168.130.11
-      server=/crc.testing/192.168.130.11
-    '';
-  };
-}
systems/modules/programs/default.nix
@@ -1,5 +0,0 @@
-{
-  imports = [
-    ./crc.nix
-  ];
-}
systems/modules/services/athens.nix
@@ -1,84 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.services.athens;
-in
-{
-  options = {
-    services.athens = {
-      enable = mkEnableOption ''
-        Athens is a go module proxy
-      '';
-      package = mkOption {
-        type = types.package;
-        default = pkgs.my.athens;
-        description = ''
-          Athens package to use.
-        '';
-      };
-
-      user = mkOption {
-        type = types.str;
-      };
-
-      group = mkOption {
-        type = types.str;
-        default = "nogroup";
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    networking.firewall = {
-      allowedTCPPorts = [ 3000 ];
-    };
-    systemd.packages = [ cfg.package ];
-    environment.etc."athens/config.toml".text = ''
-      GoBinary = "${pkgs.go}/bin/go"
-      # what is that ?
-      GoEnv = "development"
-      GoGetWorkers = 30
-      ProtocolWorkers = 30
-      LogLevel = "debug"
-      BuffaloLogLevel = "debug"
-      Port = ":3000"
-      ForceSSL = false
-      CloudRuntime = "none"
-      Timeout = 300
-      StorageType = "disk"
-
-      [Storage]
-        [Storage.Disk]
-          RootPath = "/var/lib/athens"
-    '';
-    systemd.services.athens = {
-      description = "Athens service";
-      after = [ "network.target" ];
-      wantedBy = [ "multi-user.target" ];
-      preStart = ''
-        mkdir -p /var/lib/athens
-      '';
-      environment = {
-        HOME = "/var/lib/athens";
-      };
-      serviceConfig = {
-        User = cfg.user;
-        Restart = "on-failure";
-        ExecStart = ''
-          ${cfg.package}/bin/proxy -config_file=/etc/athens/config.toml
-        '';
-      };
-      path =
-        [ cfg.package ]
-        ++ [
-          pkgs.go
-          pkgs.git
-        ];
-    };
-  };
-}
systems/modules/services/avahi.nix
@@ -1,40 +0,0 @@
-{ config, lib, ... }:
-
-let
-  inherit (lib) mkEnableOption mkIf versionOlder;
-  cfg = config.modules.services.avahi;
-  stable = versionOlder config.system.nixos.release "24.05";
-in
-{
-  options = {
-    modules.services.avahi = {
-      enable = mkEnableOption "Enable avahi profile";
-    };
-  };
-
-  config = mkIf cfg.enable {
-    services = {
-      avahi =
-        {
-          enable = true;
-          ipv4 = true;
-          ipv6 = true;
-          publish = {
-            enable = true;
-            userServices = true;
-          };
-          openFirewall = true;
-        }
-        // (
-          if stable then
-            {
-              nssmdns = true;
-            }
-          else
-            {
-              nssmdns4 = true;
-            }
-        );
-    };
-  };
-}
systems/modules/services/barrier.nix
@@ -1,18 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.services.barrier;
-in
-{
-  options = {
-    services.barrier = {
-      enable = mkEnableOption ''
-        Barrier is a software kvm
-      '';
-    };
-  };
-  config = mkIf cfg.enable {
-    networking.firewall.allowedTCPPorts = [ 24800 ];
-  };
-}
systems/modules/services/bind.nix
@@ -1,70 +0,0 @@
-{ config, lib, ... }:
-
-let
-  inherit (lib) mkIf mkEnableOption;
-  cfg = config.modules.services.bind;
-in
-{
-  options = {
-    modules.services.bind = {
-      enable = mkEnableOption "Enable bind profile";
-    };
-  };
-  config = mkIf cfg.enable {
-
-    services = {
-      bind = {
-        enable = true;
-        forwarders = [
-          "8.8.8.8"
-          "8.8.4.4"
-        ];
-        extraOptions = ''
-          dnssec-validation no;
-        '';
-        cacheNetworks = [
-          "192.168.1.0/24"
-          "127.0.0.0/8"
-          "10.100.0.0/24"
-        ];
-        zones = [
-          {
-            # sbr
-            name = "sbr.pm";
-            master = true;
-            slaves = [ ];
-            file = ../../../secrets/db.sbr.pm;
-          }
-          {
-            # home
-            name = "home";
-            master = true;
-            slaves = [ ];
-            file = ../../../secrets/db.home;
-          }
-          {
-            # home.reverse
-            name = "192.168.1.in-addr.arpa";
-            master = true;
-            slaves = [ ];
-            file = ../../../secrets/db.192.168.1;
-          }
-          {
-            # vpn
-            name = "vpn";
-            master = true;
-            slaves = [ ];
-            file = ../../../secrets/db.vpn;
-          }
-          {
-            # vpn.reverse
-            name = "10.100.0.in-addr.arpa";
-            master = true;
-            slaves = [ ];
-            file = ../../../secrets/db.10.100.0;
-          }
-        ];
-      };
-    };
-  };
-}
systems/modules/services/default.nix
@@ -1,14 +0,0 @@
-{
-  imports = [
-    ./avahi.nix
-    ./barrier.nix
-    ./bind.nix
-    ./gosmee.nix
-    ./govanityurl.nix
-    ./nix-binary-cache.nix
-    ./ssh.nix
-    ./syncthing.nix
-    ./wireguard.client.nix
-    ./wireguard.server.nix
-  ];
-}
systems/modules/services/gosmee.nix
@@ -1,52 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.services.gosmee;
-in
-{
-  options = {
-    services.gosmee = {
-      enable = mkEnableOption ''
-        gosmee is a webhook forwader/relayer
-      '';
-      package = mkOption {
-        type = types.package;
-        default = pkgs.gosmee;
-        description = ''
-          gosmee package to use.
-        '';
-      };
-
-      public-url = mkOption {
-        description = ''
-          Public URL to show to user, useful when you are behind a proxy.
-        '';
-        type = types.str;
-        default = "";
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    systemd.packages = [ cfg.package ];
-    systemd.services.gosmee = {
-      description = "Gosmee service";
-      after = [ "network.target" ];
-      wantedBy = [ "multi-user.target" ];
-      serviceConfig = {
-        # User = cfg.user;
-        Restart = "on-failure";
-        ExecStart = ''
-          ${cfg.package}/bin/gosmee server \
-          ${optionalString (cfg.public-url != "") "--public-url ${escapeShellArg cfg.public-url}"}
-        '';
-      };
-      path = [ cfg.package ];
-    };
-  };
-}
systems/modules/services/govanityurl.nix
@@ -1,59 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.services.govanityurl;
-in
-{
-  options = {
-    services.govanityurl = {
-      enable = mkEnableOption ''
-        govanityurl is a go canonical path server
-      '';
-      package = mkOption {
-        type = types.package;
-        default = pkgs.my.govanityurl;
-        description = ''
-          govanityurl package to use.
-        '';
-      };
-
-      user = mkOption {
-        type = types.str;
-      };
-
-      host = mkOption {
-        type = types.str;
-      };
-
-      config = mkOption {
-        type = types.lines;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    systemd.packages = [ cfg.package ];
-    environment.etc."govanityurl/config.yaml".text = ''
-      host: ${cfg.host}
-      ${cfg.config}
-    '';
-    systemd.services.govanityurl = {
-      description = "Govanity service";
-      after = [ "network.target" ];
-      wantedBy = [ "multi-user.target" ];
-      serviceConfig = {
-        User = cfg.user;
-        Restart = "on-failure";
-        ExecStart = ''
-          ${cfg.package}/bin/vanityurl /etc/govanityurl/config.yaml
-        '';
-      };
-      path = [ cfg.package ];
-    };
-  };
-}
systems/modules/services/nix-binary-cache.nix
@@ -1,94 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.services.nix-binary-cache;
-in
-{
-  options = {
-    services.nix-binary-cache = {
-      enable = mkEnableOption "Enable nix-binary-cache";
-      domain = mkOption {
-        description = "domain to serve";
-        type = types.str;
-      };
-      aliases = mkOption {
-        default = [ ];
-        description = "server aliases to serve";
-        type = types.listOf types.str;
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    networking.firewall.allowedTCPPorts = [
-      80
-      443
-    ];
-    systemd.services.nginx.serviceConfig.ReadWritePaths = [ "/var/public-nix-cache" ];
-    services.nginx = {
-      enable = true;
-      appendHttpConfig = ''
-        proxy_cache_path /var/public-nix-cache/ levels=1:2 keys_zone=cachecache:1200m max_size=20g inactive=365d use_temp_path=off;
-        # Cache only success status codes; in particular we don't want to cache 404s.
-        # See https://serverfault.com/a/690258/128321
-        map $status $cache_header {
-          200     "public";
-          302     "public";
-          default "no-cache";
-        }
-        access_log /var/public-nix-cache/access.log;
-      '';
-      virtualHosts."${cfg.domain}" = {
-        serverAliases = cfg.aliases;
-        # enableACME = true;
-
-        locations."/" = {
-          root = "/var/public-nix-cache/";
-          extraConfig = ''
-            expires max;
-            add_header Cache-Control $cache_header always;
-            # Ask the upstream server if a file isn't available locally
-            error_page 404 = @fallback;
-          '';
-        };
-        extraConfig = ''
-          # Using a variable for the upstream endpoint to ensure that it is
-          # resolved at runtime as opposed to once when the config file is loaded
-          # and then cached forever (we don't want that):
-          # see https://tenzer.dk/nginx-with-dynamic-upstreams/
-          # This fixes errors like
-          #   nginx: [emerg] host not found in upstream "upstream.example.com"
-          # when the upstream host is not reachable for a short time when
-          # nginx is started.
-          resolver 8.8.8.8;
-          set $upstream_endpoint https://cache.nixos.org;
-        '';
-        locations."@fallback" = {
-          proxyPass = "$upstream_endpoint";
-          extraConfig = ''
-            proxy_cache cachecache;
-            proxy_cache_valid  200 302  60m;
-            expires max;
-            add_header Cache-Control $cache_header always;
-          '';
-        };
-        # We always want to copy cache.nixos.org's nix-cache-info file,
-        # and ignore our own, because `nix-push` by default generates one
-        # without `Priority` field, and thus that file by default has priority
-        # 50 (compared to cache.nixos.org's `Priority: 40`), which will make
-        # download clients prefer `cache.nixos.org` over our binary cache.
-        locations."= /nix-cache-info" = {
-          # Note: This is duplicated with the `@fallback` above,
-          # would be nicer if we could redirect to the @fallback instead.
-          proxyPass = "$upstream_endpoint";
-          extraConfig = ''
-            proxy_cache cachecache;
-            proxy_cache_valid  200 302  60m;
-            expires max;
-            add_header Cache-Control $cache_header always;
-          '';
-        };
-      };
-    };
-  };
-}
systems/modules/services/ssh.nix
@@ -1,48 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  cfg = config.modules.services.ssh;
-in
-{
-  options = {
-    modules.services.ssh = {
-      enable = mkEnableOption "Enable ssh profile";
-      listenAddresses = mkOption {
-        type = types.listOf types.str;
-        default = [ ];
-      };
-      forwardX11 = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Whether to allow X11 connections to be forwarded.
-        '';
-      };
-      extraConfig = mkOption {
-        type = types.lines;
-        default = "";
-        description = "Verbatim contents of <filename>sshd_config</filename>.";
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    services = {
-      openssh = {
-        enable = true;
-        startWhenNeeded = false;
-        settings = {
-          X11Forwarding = cfg.forwardX11;
-        };
-        # listenAddresses = map
-        # Move this for kerkouane only
-        extraConfig = ''
-          StreamLocalBindUnlink yes
-          ${cfg.extraConfig}
-        '';
-      };
-      sshguard.enable = true;
-    };
-    programs.mosh.enable = true;
-  };
-}
systems/modules/services/syncthing.nix
@@ -1,195 +0,0 @@
-{ config, lib, ... }:
-
-with lib;
-let
-  # unstable = versionOlder config.system.nixos.release "21.05";
-  cfg = config.modules.services.syncthing;
-  isCurrentHost = n: _v: n != config.networking.hostName;
-  isFull = n: v: (isCurrentHost n v) && v.full; # TODO: handle this
-  devices = {
-    wakasu = {
-      id = "3P5BRF6-27NH2OX-3ZUI7EZ-BP4KCSE-EF2GMJL-DHUGPP2-OGHIJVO-LAJOMA7";
-      addresses = [
-        "tcp://wakasu.light"
-        "tcp://wakasu.vpn"
-        "tcp://wakasu.sbr.pm"
-      ];
-      full = true;
-    };
-    aomi = {
-      id = "XCR6WWB-OZUDGFB-LQPFW73-MV5SPJK-4IGOMA4-IAXON3I-C6OFETL-TPK5FQS";
-      addresses = [
-        "tcp://aomi.vpn"
-        "tcp://aomi.light"
-        "tcp://aomi.sbr.pm"
-      ];
-      full = true;
-    };
-    sakhalin = {
-      id = "4TYYG7V-A67D5SN-HMEJCI7-POOZRLL-RNCIE4U-ZYVGTOB-JQ5DOSV-ZCGWUAL";
-      addresses = [
-        "tcp://sakhalin.light"
-        "tcp://sakhalin.vpn"
-        "tcp://sakhalin.sbr.pm"
-      ];
-      full = true;
-    };
-    shikoku = {
-      id = "KZMMXRR-UINDQTS-H3TV2W7-EIGOUDI-3LW4ZDG-7PRKDFV-MJ5KUTJ-YG5Y5AI";
-      addresses = [
-        "tcp://shikoku.light"
-        "tcp://shikoku.vpn"
-        "tcp://shikoku.sbr.pm"
-      ];
-      full = true;
-    };
-    kerkouane = {
-      id = "IFVRRQ7-KMIOQXP-5YDJXQU-UJXUKHB-7THCSY6-B3NHRNA-ED7IRI7-2JPPKQY";
-      addresses = [
-        "tcp://10.100.0.1"
-        "tcp://kerkouane.vpn"
-      ];
-      full = false;
-    };
-    aion = {
-      id = "YORNSGU-UC4IAG5-IWJCD7T-MVPIU7O-AYM36UK-LEHF7AP-CBC4L6C-ZWKUYQF";
-      addresses = [
-        "tcp://aion.light"
-        "tcp://aion.vpn"
-        "tcp://aion.sbr.pm"
-      ];
-      full = true;
-    };
-    honshu = {
-      id = "RGIR34D-3SH3GZK-CYPNNFI-5M5I2K4-HVTUS56-72GJTLH-SDMOY4I-I7AURQR";
-      addresses = [
-        "tcp://honshu.home"
-        "tcp://honshu.sbr.pm"
-      ];
-      full = true;
-    };
-    okinawa = {
-      id = "2RWT47Z-UGSH4QO-G4W6XN7-3XY722R-ZKGDN5U-4MDGHMA-6SM26QM-7VCQIAZ";
-      addresses = [
-        "tcp://okinawa.home"
-        "tcp://okinawa.vpn"
-        "tcp://okinawa.sbr.pm"
-      ];
-      full = true;
-    };
-    iphone = {
-      # hokkaido
-      id = "XD4XYNZ-DT3PJEY-UJYBHWX-6OQPPUI-HTW752L-FYTX3TW-GVHDTKW-PT336QV";
-      # addresses = [ "tcp://okinawa.home" "tcp://okinawa.vpn" "tcp://okinawa.sbr.pm" ];
-      full = false;
-    };
-    # Deprecated
-    # naruhodo = {
-    #   id = "BKZN3FH-KRP4XRN-XFEVCCG-VANAUJN-YFAUS5Q-WUOLQQ7-II7I6PR-NVJZXQT";
-    #   addresses = [ "tcp://naruhodo.vpn" "tcp://naruhodo.home" ];
-    # };
-  };
-  deviceNames = builtins.attrNames (filterAttrs isCurrentHost devices);
-  fullDeviceNames = builtins.attrNames (filterAttrs isFull devices);
-  musicDeviceNames = builtins.attrNames (
-    filterAttrs isCurrentHost {
-      inherit (devices) wakasu;
-      inherit (devices) iphone;
-      inherit (devices) aomi;
-      inherit (devices) aion;
-    }
-  );
-in
-{
-  options = {
-    modules.services.syncthing = {
-      enable = mkEnableOption "Enable syncthing profile";
-      guiAddress = mkOption {
-        type = types.str;
-        default = "127.0.0.1:8384";
-        description = ''
-          The address to serve the web interface at.
-        '';
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    services.syncthing =
-      if (builtins.hasAttr "devices" config.services.syncthing) then
-        {
-          enable = true;
-          user = "vincent";
-          dataDir = "/home/vincent/.syncthing";
-          configDir = "/home/vincent/.syncthing";
-          inherit (cfg) guiAddress;
-          settings = {
-            devices = filterAttrs isCurrentHost devices;
-            folders =
-              {
-                "/home/vincent/sync" = {
-                  label = "sync";
-                  id = "7dshg-r8zr6";
-                  devices = deviceNames;
-                };
-                # "/home/vincent/desktop/notes" = {
-                #   label = "notes";
-                #   id = "q2eld-jylbu";
-                #   devices = deviceNames;
-                # };
-                "/home/vincent/desktop/org" = {
-                  label = "org";
-                  id = "sjpsr-xfwdu";
-                  devices = deviceNames;
-                };
-              }
-              // (
-                if (config.networking.hostName != "kerkouane") then
-                  {
-                    "/home/vincent/desktop/documents" = {
-                      label = "documents";
-                      id = "oftdb-t5anv";
-                      devices = fullDeviceNames;
-                    };
-                    "/home/vincent/desktop/pictures/screenshots" = {
-                      label = "screenshots";
-                      id = "prpsz-azlz9";
-                      devices = fullDeviceNames;
-                    };
-                    "/home/vincent/desktop/pictures/wallpapers" = {
-                      label = "wallpapers";
-                      id = "wpiah-ydwwx";
-                      devices = fullDeviceNames;
-                    };
-                    "/home/vincent/desktop/pictures/photos" = {
-                      label = "photos";
-                      id = "uetya-ypa3d";
-                      devices = fullDeviceNames;
-                    };
-                  }
-                else
-                  { }
-              )
-              // (
-                if (config.networking.hostName == "wakasu") then
-                  {
-                    "/home/vincent/desktop/music" = {
-                      label = "music";
-                      id = "kcyrf-mugzt";
-                      devices = musicDeviceNames;
-                    };
-                  }
-                else
-                  { }
-              );
-          };
-        }
-      else
-        {
-          enable = true;
-          user = "vincent";
-          dataDir = "/home/vincent/.syncthing";
-          configDir = "/home/vincent/.syncthing";
-          inherit (cfg) guiAddress;
-        };
-  };
-}
systems/modules/services/wireguard.client.nix
@@ -1,70 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.services.wireguard;
-in
-{
-  options = {
-    services.wireguard = {
-      enable = mkEnableOption "Whether to enable a reverse SSH proxy.";
-      ips = mkOption {
-        type = with types; listOf str;
-        description = ''
-          The client IPs
-        '';
-      };
-      allowedIPs = mkOption {
-        default = [ "10.100.0.0/24" ];
-        type = with types; listOf str;
-        description = ''
-          The peer (server) allowedIPs
-        '';
-      };
-      endpoint = mkOption {
-        type = with types; str;
-        description = ''
-          The endpoint IP to target
-        '';
-      };
-      endpointPort = mkOption {
-        default = 51820;
-        type = with types; int;
-        description = ''
-          The endpoint Port to target
-        '';
-      };
-      endpointPublicKey = mkOption {
-        type = with types; str;
-        description = ''
-          The peer (server) public key
-        '';
-      };
-    };
-  };
-  config = mkIf cfg.enable {
-    # boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ];
-    environment.systemPackages = [ pkgs.wireguard-tools ];
-    networking.firewall.trustedInterfaces = [ "wg0" ];
-    networking.wireguard.enable = true;
-    networking.wireguard.interfaces = {
-      wg0 = {
-        inherit (cfg) ips;
-        privateKeyFile = "/etc/nixos/secrets/wireguard/private.key";
-        peers = [
-          {
-            publicKey = cfg.endpointPublicKey;
-            inherit (cfg) allowedIPs;
-            endpoint = "${cfg.endpoint}:${toString cfg.endpointPort}";
-            persistentKeepalive = 25;
-          }
-        ];
-      };
-    };
-  };
-}
systems/modules/services/wireguard.server.nix
@@ -1,44 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.modules.services.wireguard.server;
-
-  secretPath = ../../../secrets/machines.nix;
-  secretCondition = builtins.pathExists secretPath;
-  allowedIPs = lists.optionals secretCondition (import secretPath).wireguard.kerkouane.allowedIPs;
-  listenPort = if secretCondition then (import secretPath).wg.listenPort else 0;
-  peers = lists.optionals secretCondition (import secretPath).wg.peers;
-in
-{
-  options = {
-    modules.services.wireguard.server = {
-      enable = mkEnableOption "Enable wireguard.server profile";
-    };
-  };
-  config = mkIf cfg.enable {
-    # boot.extraModulePackages = [ config.boot.kernelPackages.wireguard ];
-    environment.systemPackages = [ pkgs.wireguard-tools ];
-    boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
-    networking.firewall.extraCommands = ''
-      iptables -t nat -A POSTROUTING -s10.100.0.0/24 -j MASQUERADE
-      iptables -A FORWARD -i wg+ -j ACCEPT
-    '';
-    networking.firewall.allowedUDPPorts = [ 51820 ];
-    networking.firewall.trustedInterfaces = [ "wg0" ];
-    networking.wireguard.enable = true;
-    networking.wireguard.interfaces = {
-      "wg0" = {
-        ips = allowedIPs;
-        inherit listenPort;
-        privateKeyFile = "/etc/nixos/secrets/wireguard/private.key";
-        inherit peers;
-      };
-    };
-  };
-}
systems/modules/shell/git/config
@@ -1,43 +0,0 @@
-[alias]
-	co = checkout
-	st = status
-	ci = commit --signoff
-	ca = commit --amend
-	b = branc --color -v
-	br = branch
-	unstage = reset HEAD
-	lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
-	lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes
-	lol = log --pretty=oneline --abbrev-commit --graph --decorate
-	conflicts = !git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR
-	resolve = !git ls-files --unmerged | cut -c51- | sort -u | xargs git add
-[color]
-	branch = auto
-	diff = auto
-	status = auto
-[color "branch"]
-	current = cyan reverse
-	local = cyan
-	remote = green
-[color "diff"]
-	meta = white reverse
-	frag = magenta reverse
-	old = red
-	new = green
-[color "status"]
-	added = green
-	changed = yellow
-	untracked = red
-[core]
-	excludesfile = /etc/gitignore
-[push]
-	default = matching
-[merge]
-	tool = vimdiff
-[user]
-	name = Vincent Demeester
-	email = vincent@sbr.pm
-[http]
-	cookiefile = /home/vincent/.gitcookies
-[url "git@github.com:"]
-	pushInsteadOf = git://github.com/
systems/modules/shell/git/ignore
@@ -1,61 +0,0 @@
-# For emacs:
-*~
-*.*~
-\#*
-.\#*
-
-# For vim:
-*.swp
-.*.sw[a-z]
-*.un~
-Session.vim
-.netrwhist
-
-# Ignore tags (from etags and ctags)
-TAGS
-!TAGS/
-tags
-!tags/
-
-# Logs and databases #
-######################
-*.log
-*.cache
-
-# OS generated files #
-######################
-.DS_Store?
-.DS_Store
-.CFUserTextEncoding
-.Trash
-.Xauthority
-thumbs.db
-Icon?
-Thumbs.db
-.cache
-.pid
-.sock
-
-# Code stuffs #
-###############
-.svn
-.git
-.swp
-.idea
-.*.swp
-*~
-.tags
-tags
-.sass-cache
-tmp
-.codekit-cache
-config.codekit
-
-# Compiled thangs #
-###################
-*.class
-*.exe
-*.o
-*.so
-*.dll
-*.pyc
systems/modules/shell/default.nix
@@ -1,10 +0,0 @@
-{ ... }:
-{
-  imports = [
-    ./direnv.nix
-    ./git.nix
-    ./gnupg.nix
-    ./tmux.nix
-    ./zsh.nix
-  ];
-}
systems/modules/shell/direnv.nix
@@ -1,25 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.shell.direnv;
-in
-{
-  options.modules.shell.direnv = {
-    enable = mkEnableOption "enable direnv";
-  };
-  config = mkIf cfg.enable {
-    programs.direnv.enable = true;
-    environment = {
-      # Path to link from packages to /run/current-system/sw
-      pathsToLink = [
-        "/share/nix-direnv"
-      ];
-      systemPackages = [ pkgs.direnv ];
-    };
-  };
-}
systems/modules/shell/git.nix
@@ -1,29 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.shell.git;
-in
-{
-  options.modules.shell.git = {
-    enable = mkEnableOption "enable git";
-  };
-  config = mkIf cfg.enable {
-    environment = {
-      # Install some packages
-      systemPackages = with pkgs; [
-        git
-        # gitAndTools.git-extras
-        (mkIf config.modules.shell.gnupg.enable gitAndTools.git-crypt)
-        lazygit
-      ];
-      # Default gitconfig
-      etc."gitconfig".source = ./git/config;
-      etc."gitignore".source = ./git/ignore;
-    };
-  };
-}
systems/modules/shell/gnupg.nix
@@ -1,21 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.shell.gnupg;
-in
-{
-  options.modules.shell.gnupg = {
-    enable = mkEnableOption "enable gnupg";
-  };
-  config = mkIf cfg.enable {
-    environment = {
-      # variables.GNUPGHOME = "$XDG_CONFIG_HOME/gnupg";
-      systemPackages = [ pkgs.gnupg ];
-    };
-  };
-}
systems/modules/shell/tmux.nix
@@ -1,18 +0,0 @@
-{ config, lib, ... }:
-let
-  inherit (lib) mkEnableOption mkIf;
-  cfg = config.modules.shell.tmux;
-in
-{
-  options.modules.shell.tmux = {
-    enable = mkEnableOption "enable tmux";
-  };
-  config = mkIf cfg.enable {
-    programs.tmux = {
-      enable = true;
-      clock24 = true;
-      escapeTime = 0;
-      terminal = "tmux-256color";
-    };
-  };
-}
systems/modules/shell/zsh.nix
@@ -1,20 +0,0 @@
-{ config, lib, ... }:
-let
-  inherit (lib) mkOption mkIf types;
-  cfg = config.modules.shell.zsh;
-in
-{
-  options.modules.shell.zsh = {
-    enable = mkOption {
-      default = true;
-      description = "Enable zsh profile";
-      type = types.bool;
-    };
-  };
-  config = mkIf cfg.enable {
-    programs.zsh = {
-      enable = true;
-      enableCompletion = true;
-    };
-  };
-}
systems/modules/virtualisation/buildkit.nix
@@ -1,123 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  cfg = config.virtualisation.buildkitd;
-  inherit (lib) mkOption mkIf;
-  inherit (lib.types)
-    attrsOf
-    str
-    nullOr
-    path
-    bool
-    package
-    listOf
-    ;
-
-  configFile =
-    if cfg.configFile == null then
-      settingsFormat.generate "buildkitd.toml" cfg.settings
-    else
-      cfg.configFile;
-
-  settingsFormat = pkgs.formats.toml { };
-in
-{
-  options.virtualisation.buildkitd = {
-    enable = mkOption {
-      type = bool;
-      default = false;
-      description = ''This option enables buildkitd'';
-    };
-
-    package = mkOption {
-      default = pkgs.buildkit;
-      type = package;
-      example = pkgs.buildkit;
-      description = ''
-        Buildkitd package to be used in the module
-      '';
-    };
-
-    packages = mkOption {
-      type = listOf package;
-      default = [
-        pkgs.runc
-        pkgs.git
-      ];
-      description = "List of packages to be added to buildkitd service path";
-    };
-
-    configFile = lib.mkOption {
-      default = null;
-      description = ''
-        Path to containerd config file.
-        Setting this option will override any configuration applied by the settings option.
-      '';
-      type = nullOr path;
-    };
-
-    args = lib.mkOption {
-      default = { };
-      description = "extra args to append to the containerd cmdline";
-      type = attrsOf str;
-    };
-
-    settings = lib.mkOption {
-      inherit (settingsFormat) type;
-      default = {
-        grpc.address = [ "unix:///run/buildkit/buildkitd.sock" ];
-      };
-      description = ''
-        Verbatim lines to add to containerd.toml
-      '';
-    };
-  };
-
-  config = mkIf cfg.enable {
-    users.groups.buildkit.gid = 350;
-    environment.systemPackages = [ cfg.package ];
-    systemd.packages = [ cfg.package ];
-
-    virtualisation.buildkitd = {
-      args = {
-        group = "buildkit";
-        config = toString configFile;
-      };
-      settings = {
-        debug = false;
-      };
-    };
-
-    systemd.services.buildkitd = {
-      after = [
-        "network.target"
-        "containerd.service"
-      ];
-      wantedBy = [ "multi-user.target" ];
-      serviceConfig = {
-        ExecStart = ''${cfg.package}/bin/buildkitd ${
-          lib.concatStringsSep " " (lib.cli.toGNUCommandLine { } cfg.args)
-        }'';
-        Delegate = "yes";
-        KillMode = "process";
-        Type = "notify";
-        Restart = "always";
-        RestartSec = "10";
-
-        # "limits" defined below are adopted from upstream: https://github.com/containerd/containerd/blob/master/containerd.service
-        LimitNPROC = "infinity";
-        LimitCORE = "infinity";
-        LimitNOFILE = "infinity";
-        TasksMax = "infinity";
-        OOMScoreAdjust = "-999";
-      };
-      path = [ cfg.package ] ++ cfg.packages;
-    };
-
-  };
-
-}
systems/modules/virtualisation/containerd.nix
@@ -1,90 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  cfg = config.virtualisation.mycontainerd;
-
-  inherit (lib) mkOption types mkIf;
-in
-{
-  options.virtualisation.mycontainerd = {
-    enable = mkOption {
-      type = types.bool;
-      default = false;
-      description = ''
-        This option enables containerd, a daemon that manages linux containers.
-      '';
-    };
-
-    autostart = mkOption {
-      type = types.bool;
-      default = true;
-      description = ''
-        Start containerd automatically.
-      '';
-    };
-
-    package = mkOption {
-      default = pkgs.containerd;
-      type = types.package;
-      example = pkgs.containerd;
-      description = ''
-        Containerd package to be used in the module
-      '';
-    };
-
-    extraPackages = mkOption {
-      type = types.listOf types.package;
-      default = [
-        pkgs.runc
-        pkgs.cni
-        pkgs.cni-plugins
-      ];
-      description = "List of packages to be added to containerd service path";
-    };
-
-    extraOptions = mkOption {
-      type = types.separatedString " ";
-      default = "";
-      description = ''
-        The extra command-line options to pass to
-        <command>containerd</command> daemon.
-      '';
-    };
-  };
-
-  config = mkIf cfg.enable {
-    environment.systemPackages = [ cfg.package ];
-    systemd.packages = [ cfg.package ];
-
-    systemd.services.containerd = {
-      wantedBy = lib.optional cfg.autostart [ "multi-user.target" ];
-      serviceConfig = {
-        ExecStart = [
-          ""
-          ''
-            ${cfg.package}/bin/containerd \
-            ${cfg.extraOptions}
-          ''
-        ];
-      };
-      path = [ cfg.package ] ++ cfg.extraPackages;
-    };
-
-    systemd.sockets.containerd = {
-      description = "Containerd Socket for the API";
-      wantedBy = [ "sockets.target" ];
-      socketConfig = {
-        ListenStream = "/run/containerd/containerd.sock";
-        SocketMode = "0660";
-        SocketUser = "root";
-        SocketGroup = "root";
-      };
-    };
-
-  };
-
-}
systems/modules/virtualisation/default.nix
@@ -1,9 +0,0 @@
-{
-  imports = [
-    # ./buildkit.nix # sourced in flake direclty
-    ./libvirt.nix
-    # Containerd is now a module upstream
-    # FIXME: remove this when 21.05 is out.
-    ./containerd.nix
-  ];
-}
users/houbeb/default.nix
@@ -1,18 +0,0 @@
-{ lib, pkgs, ... }:
-
-let
-  inherit (lib) importTOML;
-  metadata = importTOML ../../ops/hosts.toml;
-in
-{
-  users.users.houbeb = {
-    createHome = true;
-    description = "Houbeb Ben Othmene";
-    extraGroups = [ "wheel" ];
-    isNormalUser = true;
-    openssh.authorizedKeys.keys = metadata.ssh.keys.houbeb;
-  };
-  home-manager.users.houbeb = {
-    home.packages = with pkgs; [ hello ];
-  };
-}
users/modules/profiles/default.nix
@@ -1,5 +0,0 @@
-{
-  imports = [
-    ./mails.nix
-  ];
-}
users/modules/profiles/mails.nix
@@ -1,224 +0,0 @@
-# Generated from an org file 💃
-# See : https://sbr.pm/technical/configurations/mails.html
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  cfg = config.profiles.mails;
-in
-{
-
-  options = {
-    profiles.mails = {
-      enable = mkEnableOption "Enable mails configuration";
-      sync = mkEnableOption "Enable sync mail service";
-      frequency = mkOption {
-        default = "*:0/30";
-        description = "Frequency at which the mail should be checked";
-        type = types.str;
-      };
-    };
-  };
-
-  config = mkIf cfg.enable (mkMerge [
-    {
-      accounts.email = {
-        maildirBasePath = "desktop/mails";
-        accounts = {
-          "redhat" = {
-            address = "vdemeest@redhat.com";
-            userName = "vdemeest@redhat.com";
-            realName = "Vincent Demeester";
-            passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/rh.pass -d ${config.home.homeDirectory}/desktop/documents/0\ Archives/rh.pass.gpg";
-            imap.host = "imap.gmail.com";
-            smtp.host = "smtp.gmail.com";
-            mbsync = {
-              enable = true;
-              create = "both";
-              expunge = "both";
-              patterns = [
-                "*"
-                "![Gmail]*"
-                "[Gmail]/Sent Mail"
-                "[Gmail]/Starred"
-                "[Gmail]/All Mail"
-              ];
-              extraConfig = {
-                channel = {
-                  Sync = "All";
-                };
-                account = {
-                  Timeout = 120;
-                  PipelineDepth = 1;
-                };
-              };
-            };
-            notmuch.enable = cfg.sync;
-            # astroid.enable = cfg.sync;
-            msmtp.enable = true;
-          };
-          "perso" = {
-            address = "vinc.demeester@gmail.com";
-            userName = "vinc.demeester@gmail.com";
-            realName = "Vincent Demeester";
-            passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/perso.pass -d ${config.home.homeDirectory}/desktop/documents/0\ Archives/perso.pass.gpg";
-            imap.host = "imap.gmail.com";
-            smtp.host = "smtp.gmail.com";
-            mbsync = {
-              enable = true;
-              create = "both";
-              expunge = "both";
-              patterns = [
-                "*"
-                "![Gmail]*"
-                "[Gmail]/Sent Mail"
-                "[Gmail]/Starred"
-                "[Gmail]/All Mail"
-              ];
-              extraConfig = {
-                channel = {
-                  Sync = "All";
-                };
-                account = {
-                  Timeout = 120;
-                  PipelineDepth = 1;
-                };
-              };
-            };
-            notmuch.enable = cfg.sync;
-            # astroid.enable = cfg.sync;
-            msmtp.enable = true;
-          };
-          "prv" = {
-            primary = true;
-            address = "vincent@demeester.fr";
-            userName = "vincent@demeester.fr";
-            realName = "Vincent Demeester";
-            passwordCommand = "${pkgs.gnupg}/bin/gpg -q --for-your-eyes-only --no-tty --exit-on-status-write-error --batch --passphrase-file ${config.home.homeDirectory}/sync/prv.pass -d ${config.home.homeDirectory}/desktop/documents/prv.pass.gpg";
-            imap.host = "mail.gandi.net";
-            smtp.host = "mail.gandi.net";
-            mbsync = {
-              enable = true;
-              create = "both";
-              expunge = "both";
-              patterns = [ "*" ];
-              extraConfig = {
-                channel = {
-                  Sync = "All";
-                };
-                account = {
-                  Timeout = 120;
-                  PipelineDepth = 1;
-                };
-              };
-            };
-            notmuch.enable = cfg.sync;
-            # astroid.enable = cfg.sync;
-            msmtp.enable = true;
-          };
-        };
-      };
-
-      home.file."bin/msmtp" = {
-        text = ''
-          #!${pkgs.stdenv.shell}
-          ${pkgs.libnotify}/bin/notify-send "Sending mail ✉️"
-          ${pkgs.msmtp}/bin/msmtp --read-envelope-from $@
-        '';
-        executable = true;
-      };
-
-      programs.msmtp.enable = true;
-
-    }
-
-    (mkIf cfg.sync {
-
-      services.mbsync = {
-        enable = true;
-        preExec = "${config.xdg.configHome}/mbsync/preExec";
-        postExec = "${config.xdg.configHome}/mbsync/postExec";
-        inherit (cfg) frequency;
-      };
-
-      xdg.configFile."mbsync/preExec" = {
-        text = ''
-          #!${pkgs.stdenv.shell}
-
-          export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
-          export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
-          ${pkgs.coreutils}/bin/mkdir -p ${config.home.homeDirectory}/desktop/mails/redhat ${config.home.homeDirectory}/desktop/mails/perso
-          ${pkgs.afew}/bin/afew -C  ${config.xdg.configHome}/notmuch/notmuchrc -m -v || true
-        '';
-        executable = true;
-      };
-
-      xdg.configFile."mbsync/postExec" = {
-        text = ''
-          #!${pkgs.stdenv.shell}
-
-          export NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc
-          export NMBGIT=${config.xdg.dataHome}/notmuch/nmbug
-
-          ${pkgs.notmuch}/bin/notmuch new
-          ${pkgs.afew}/bin/afew -C ${config.xdg.configHome}/notmuch/notmuchrc --tag --new -v
-          # Remove inbox (lower-case)
-          ${pkgs.notmuch}/bin/notmuch tag -inbox -- tag:inbox
-          # Remove Inbox tagged message that are not in an Inbox
-          ${pkgs.notmuch}/bin/notmuch tag -Inbox -- not folder:redhat/Inbox and not folder:perso/Inbox and tag:Inbox
-          ${pkgs.libnotify}/bin/notify-send "Mails synced 📬"
-        '';
-        executable = true;
-      };
-
-      home.file."bin/msync" = {
-        text = ''
-          #!${pkgs.stdenv.shell}
-          ${pkgs.libnotify}/bin/notify-send "Syncing mails 📫️"
-          systemctl --user start mbsync
-        '';
-        executable = true;
-      };
-
-      programs.mbsync.enable = true;
-      programs.notmuch.enable = true;
-
-      programs.afew = {
-        enable = true;
-        extraConfig = ''
-          [SpamFilter]
-          [KillThreadsFilter]
-          [ListMailsFilter]
-          [ArchiveSentMailsFilter]
-          [FolderNameFilter]
-          maildir_separator = /
-
-          [MailMover]
-          folders = perso/Inbox redhat/Inbox
-          rename = true
-
-          perso/Inbox = 'NOT tag:Inbox':"perso/[Gmail]/All Mail"
-          redhat/Inbox = 'NOT tag:Inbox':"redhat/[Gmail]/All Mail"
-        '';
-      };
-
-      programs.astroid = {
-        enable = false;
-        externalEditor = "emacsclient -c";
-        extraConfig = {
-          startup.queries.inbox = "tag:Inbox";
-          startup.queries.inbox_perso = "folder:perso/Inbox";
-          startup.queries.inbox_redhat = "folder:redhat/Inbox";
-        };
-      };
-
-    })
-
-  ]);
-}
users/modules/services/default.nix
@@ -1,4 +0,0 @@
-{
-  imports = [
-  ];
-}
users/modules/default.nix
@@ -1,6 +0,0 @@
-{
-  imports = [
-    ./profiles
-    ./services
-  ];
-}
users/modules/modules.nix
@@ -1,4 +0,0 @@
-[
-  ./services
-  ./profiles
-]
users/root/default.nix
@@ -1,39 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  inherit (lib)
-    mkIf
-    optionals
-    versionOlder
-    importTOML
-    ;
-  metadata = importTOML ../../ops/hosts.toml;
-in
-{
-  users.users.root = {
-    shell = mkIf config.programs.zsh.enable pkgs.zsh;
-    openssh.authorizedKeys.keys = metadata.ssh.keys.root;
-  };
-  home-manager.users.root = lib.mkMerge (
-    [
-      (import ../vincent/core/zsh.nix)
-      (import ../vincent/core/ssh.nix)
-    ]
-    ++ optionals (versionOlder config.system.nixos.release "21.11") [
-      {
-        # manpages are broken on 21.05 and home-manager (for some reason..)
-        manual.manpages.enable = false;
-      }
-    ]
-    ++ [
-      {
-        home.stateVersion = "22.05";
-      }
-    ]
-  );
-}
users/vincent/containers/chos4.desktop
@@ -1,6 +0,0 @@
-[Desktop Entry]
-Name=chos4
-Exec=chos4
-Type=Application
-Terminal=true
-Categories=System;
users/vincent/containers/default.nix
@@ -1,16 +0,0 @@
-{ pkgs, ... }:
-
-{
-  imports = [
-    ./gcloud.nix
-  ];
-
-  home.packages = with pkgs; [
-    skopeo
-    my.manifest-tool
-    # nerdctl
-    # act
-    oras
-    dagger
-  ];
-}
users/vincent/containers/gcloud.nix
@@ -1,15 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.packages = with pkgs; [
-    (google-cloud-sdk.withExtraComponents (
-      with google-cloud-sdk.components;
-      [
-        gke-gcloud-auth-plugin
-        gcloud-man-pages
-        cloud-run-proxy
-        terraform-tools
-      ]
-    ))
-  ];
-}
users/vincent/containers/kubernetes.nix
@@ -1,30 +0,0 @@
-{ lib, pkgs, ... }:
-
-with lib;
-let
-  knd = pkgs.writeScriptBin "knd" ''
-    #!${pkgs.stdenv.shell}
-    ${pkgs.kubectl}/bin/kubectl get namespaces -o name | ${pkgs.fzf}/bin/fzf --multi | xargs kubectl delete
-  '';
-in
-{
-  home.packages = with pkgs; [
-    kail
-    kubectl
-    kustomize
-    kind
-    ko
-    crane
-    krew
-    kss
-    # our own scripts
-    knd
-    # bekind
-    my.chmouzies.kubernetes
-    # kubectx
-    kubelogin-oidc
-  ];
-  programs.zsh.initExtra = ''
-    alias -g SK="|snazy -s --kail --kail-prefix-format='{pod}'"
-  '';
-}
users/vincent/containers/openshift.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.file.".local/share/applications/chos4.desktop".source = ./chos4.desktop;
-  home.packages = with pkgs; [
-    oc
-    omc
-    openshift-install
-    operator-sdk
-    opm
-    my.operator-tool
-  ];
-}
users/vincent/containers/tekton.nix
@@ -1,14 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.packages = with pkgs; [
-    tektoncd-cli
-    kubernetes-helm
-    snazy
-    tkn-pac
-    tkn-local
-    rekor-cli
-    cosign
-    python312Packages.pyaml
-  ];
-}
users/vincent/core/ape/ape.conf
@@ -1,73 +0,0 @@
-# mirrors
-git@gitlab.com:vdemeester/nur-packages.git git@github.com:vdemeester/nur-packages.git
-git@gitlab.com:vdemeester/machines.git git@github.com:vdemeester/machines.git
-git@gitlab.com:vdemeester/ergodox.git git@github.com:vdemeester/ergodox.git
-
-# docker & co
-git@github.com:vdemeester/docker.git https://github.com/docker/docker.git
-git@github.com:vdemeester/cli.git https://github.com/docker/cli.git
-git@github.com:vdemeester/app.git https://github.com/docker/app.git
-git@github.com:vdemeester/docker-py.git https://github.com/docker/docker-py.git
-git@github.com:vdemeester/compose.git https://github.com/docker/compose.git
-git@github.com:vdemeester/libcompose.git https://github.com/docker/libcompose.git
-git@github.com:vdemeester/swarmkit.git https://github.com/docker/swarmkit.git
-git@github.com:vdemeester/go-units.git https://github.com/docker/go-units.git
-git@github.com:vdemeester/go-connections.git https://github.com/docker/go-connections.git
-
-# kubernetes
-git@github.com:vdemeester/kubernetes.git https://github.com/kubernetes/kubernetes.git
-git@github.com:vdemeester/kubernetes-test-infra.git https://github.com/kubernetes/test-infra.git
-
-# knative
-git@github.com:vdemeester/knative-serving.git https://github.com/knative/serving.git
-git@github.com:vdemeester/knative-pkg.git https://github.com/knative/pkg.git
-
-# tekton
-git@github.com:vdemeester/tektoncd-pipeline.git https://github.com/tektoncd/pipeline.git
-git@github.com:vdemeester/tektoncd-dashboard.git https://github.com/tektoncd/dashboard.git
-git@github.com:vdemeester/tektoncd-catalog.git https://github.com/tektoncd/catalog.git
-git@github.com:vdemeester/tektoncd-plumbing.git https://github.com/tektoncd/plumbing.git
-git@github.com:vdemeester/tektoncd-experimental.git https://github.com/tektoncd/experimental.git
-git@github.com:vdemeester/tektoncd-cli.git https://github.com/tektoncd/cli.git
-git@github.com:vdemeester/tektoncd-hub.git https://github.com/tektoncd/hub.git
-git@github.com:vdemeester/tektoncd-triggers.git https://github.com/tektoncd/triggers.git
-git@github.com:vdemeester/tektoncd-operator.git https://github.com/tektoncd/operator.git
-git@github.com:vdemeester/tektoncd-community.git https://github.com/tektoncd/community.git
-
-# openshift-pipelines
-git@github.com:vdemeester/openshift-pipelines-knowledge-base.git git@github.com:openshift-pipelines/knowledge-base.git
-
-# openshift
-git@github.com:vdemeester/source-to-image.git https://github.com/openshift/source-to-image.git
-git@github.com:vdemeester/imagebuilder.git https://github.com/openshift/imagebuilder.git
-git@github.com:vdemeester/origin.git https://github.com/openshift/origin.git
-git@github.com:vdemeester/release.git https://github.com/openshift/release.git
-git@github.com:vdemeester/openshift-pipelines-catalog.git https://github.com/openshift/pipelines-catalog.git
-
-# containers
-git@github.com:vdemeester/libpod.git https://github.com/containers/libpod.git
-git@github.com:vdemeester/containers-image.git https://github.com/containers/image.git
-git@github.com:vdemeester/containers-storage.git https://github.com/containers/storage.git
-git@github.com:vdemeester/skopeo.git https://github.com/containers/skopeo.git
-git@github.com:vdemeester/buildah.git https://github.com/containers/buildah.git
-
-# other red hat projects
-git@github.com:vdemeester/odo.git https://github.com/redhat-developer/odo.git
-
-# moby
-git@github.com:vdemeester/containerd.git https://github.com/containerd/containerd.git
-git@github.com:vdemeester/runc.git https://github.com/opencontainers/runc.git
-git@github.com:vdemeester/buildkit.git https://github.com/moby/buildkit.git
-git@github.com:vdemeester/linuxkit.git https://github.com/linuxkit/linuxkit.git
-
-git@github.com:vdemeester/gotest.tools.git https://github.com/gotestyourself/gotest.tools.git
-git@github.com:vdemeester/mergo.git https://github.com/imdario/mergo.git
-git@github.com:vdemeester/prm.git https://github.com/ldez/prm.git
-
-git@github.com:vdemeester/traefik.git https://github.com/containous/traefik.git
-
-git@github.com:vdemeester/home-manager.git https://github.com/rycee/home-manager.git
-git@github.com:vdemeester/nixpkgs.git https://github.com/NixOS/nixpkgs.git
-
-# google
-git@github.com:vdemeester/go-containerregistry.git https://github.com/google/go-containerregistry.git
users/vincent/core/git/redhat.gitconfig
@@ -1,3 +0,0 @@
-[user]
-  name  = Vincent Demeester
-  email = vdemeest@redhat.com
\ No newline at end of file
users/vincent/core/tmux/tmux.conf
@@ -1,97 +0,0 @@
-# Tmux configuration file
-# Documented by Vincent Demeester.
-# Note that I am using bepo keyboard (that why key binding might be a
-# little weird for you).
-# First thing first, quickly reload $HOME/.tmux.conf
-#bind o source-file ~/.tmux.conf; display "tmux configuration reloaded."
-set -g history-limit 500000
-# Be sure to deactive the mode
-# set -g mode-mouse off
-# By default tmux adds a small delay when sending commands.
-# Reducing this delay by setting escape-time.
-set -sg escape-time 1
-bind v paste-buffer
-# Vim-behavior for moving between panes
-bind c select-pane -L
-bind t select-pane -D
-bind s select-pane -U
-bind r select-pane -R
-# Re-binding new-window and kill-pane to something more bepo-ish
-bind x new-window
-unbind c
-bind y kill-pane
-# Re-binding list-of-session
-bind u list-sessions
-# Vim-behavior for moving between windows
-bind -r C-t select-window -t :-
-bind -r C-s select-window -t :+
-# Vim-behavior for resizing panes
-bind -r C resize-pane -L 5
-bind -r T resize-pane -D 5
-bind -r S resize-pane -U 5
-bind -r R resize-pane -R 5
-# vi-mode for copy.
-set -g mode-key vi
-# `PREFIX`-`ESCAPE` for going into copy mode
-bind-key ESCAPE copy-mode
-bind-key b copy-mode
-# Rebinding some vi-copy keys in a more bepoish fashion.
-#bind-key -Tvi-copy 'v' begin-selection
-#bind-key -Tvi-copy 'y' copy-selection
-#bind-key -Tvi-copy 'C' top-line
-#bind-key -Tvi-copy 'T' scroll-down
-#bind-key -Tvi-copy 'S' scroll-up
-#bind-key -Tvi-copy 'R' bottom-line
-#bind-key -Tvi-copy 'c' cursor-left
-#bind-key -Tvi-copy 't' cursor-down
-#bind-key -Tvi-copy 's' cursor-up
-#bind-key -Tvi-copy 'r' cursor-right
-# Telling childs that this is a 256 terminal multiplexer
-set -g default-terminal "screen-256color"
-# Maximizing/Restoring panes (useful for *a lot* of workflows)
-unbind Up
-bind Up new-window -d -n tmp \; swap-pane -s tmp \; select-window -t tmp
-unbind Down
-bind Down last-window \; swap-pane -s tmp \; kill-window -t tmp
-# Recording pane content to a file. (This is crasy !)
-bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
-
-# titles
-# set -g show -g says
-set -g set-titles on
-set -g set-titles-string "tmux - #S:#I.#P (#W)"
-# Set window notifications
-setw -g monitor-activity on
-set -g visual-activity on
-# Rather than constraining window size to the maximum size of any client
-# connected to the *session*, constrain window size to the maximum size of any
-# client connected to *that window*. Much more reasonable.
-setw -g aggressive-resize on
-# binding
-bind-key C-a last-window
-bind-key C-r command-prompt 'rename-window %%'
-bind-key '"' split-window -v -c '#{pane_current_path}'
-bind-key '%' split-window -h -c '#{pane_current_path}'
-
-# Custom status line
-set-option -g status-left '-- #[fg=colour253]#S - '
-set-window-option -g window-status-format '#[fg=colour244]#I/#[fg=colour253] #W '
-set-window-option -g window-status-current-format '#[fg=colour244]#I/#[fg=colour253,bg=colour238] #W '
-set-option -g status-right '#[fg=colour250] %Y-%m-%d #[fg=colour254]%H.%M'
-set-option -g status-bg colour234
-set-option -g status-fg colour007
-set-option -g status-position top
-
-# Custom split colours
-set -g pane-active-border-style bg=colour234,fg=colour234
-set -g pane-border-style bg=colour234,fg=colour234
-
-# loud or quiet?
-set-option -g visual-activity off
-set-option -g visual-bell on
-set-option -g visual-silence off
-set-window-option -g monitor-activity on
-set-option -g bell-action none
-
-bind m switch-client -l
-bind M command-prompt -p 'switch session:' "run \"tm.sh '%%'\""
\ No newline at end of file
users/vincent/core/zsh/_kubectl
@@ -1,8634 +0,0 @@
-#compdef kubectl
-
-# Copyright 2016 The Kubernetes Authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-__kubectl_bash_source() {
-	alias shopt=':'
-	alias _expand=_bash_expand
-	alias _complete=_bash_comp
-	emulate -L sh
-	setopt kshglob noshglob braceexpand
-
-	source "$@"
-}
-
-__kubectl_type() {
-	# -t is not supported by zsh
-	if [ "$1" == "-t" ]; then
-		shift
-
-		# fake Bash 4 to disable "complete -o nospace". Instead
-		# "compopt +-o nospace" is used in the code to toggle trailing
-		# spaces. We don't support that, but leave trailing spaces on
-		# all the time
-		if [ "$1" = "__kubectl_compopt" ]; then
-			echo builtin
-			return 0
-		fi
-	fi
-	type "$@"
-}
-
-__kubectl_compgen() {
-	local completions w
-	completions=( $(compgen "$@") ) || return $?
-
-	# filter by given word as prefix
-	while [[ "$1" = -* && "$1" != -- ]]; do
-		shift
-		shift
-	done
-	if [[ "$1" == -- ]]; then
-		shift
-	fi
-	for w in "${completions[@]}"; do
-		if [[ "${w}" = "$1"* ]]; then
-			echo "${w}"
-		fi
-	done
-}
-
-__kubectl_compopt() {
-	true # don't do anything. Not supported by bashcompinit in zsh
-}
-
-__kubectl_ltrim_colon_completions()
-{
-	if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then
-		# Remove colon-word prefix from COMPREPLY items
-		local colon_word=${1%${1##*:}}
-		local i=${#COMPREPLY[*]}
-		while [[ $((--i)) -ge 0 ]]; do
-			COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
-		done
-	fi
-}
-
-__kubectl_get_comp_words_by_ref() {
-	cur="${COMP_WORDS[COMP_CWORD]}"
-	prev="${COMP_WORDS[${COMP_CWORD}-1]}"
-	words=("${COMP_WORDS[@]}")
-	cword=("${COMP_CWORD[@]}")
-}
-
-__kubectl_filedir() {
-	local RET OLD_IFS w qw
-
-	__kubectl_debug "_filedir $@ cur=$cur"
-	if [[ "$1" = \~* ]]; then
-		# somehow does not work. Maybe, zsh does not call this at all
-		eval echo "$1"
-		return 0
-	fi
-
-	OLD_IFS="$IFS"
-	IFS=$'\n'
-	if [ "$1" = "-d" ]; then
-		shift
-		RET=( $(compgen -d) )
-	else
-		RET=( $(compgen -f) )
-	fi
-	IFS="$OLD_IFS"
-
-	IFS="," __kubectl_debug "RET=${RET[@]} len=${#RET[@]}"
-
-	for w in ${RET[@]}; do
-		if [[ ! "${w}" = "${cur}"* ]]; then
-			continue
-		fi
-		if eval "[[ \"\${w}\" = *.$1 || -d \"\${w}\" ]]"; then
-			qw="$(__kubectl_quote "${w}")"
-			if [ -d "${w}" ]; then
-				COMPREPLY+=("${qw}/")
-			else
-				COMPREPLY+=("${qw}")
-			fi
-		fi
-	done
-}
-
-__kubectl_quote() {
-    if [[ $1 == \'* || $1 == \"* ]]; then
-        # Leave out first character
-        printf %q "${1:1}"
-    else
-	printf %q "$1"
-    fi
-}
-
-autoload -U +X bashcompinit && bashcompinit
-
-# use word boundary patterns for BSD or GNU sed
-LWORD='[[:<:]]'
-RWORD='[[:>:]]'
-if sed --help 2>&1 | grep -q GNU; then
-	LWORD='\<'
-	RWORD='\>'
-fi
-
-__kubectl_convert_bash_to_zsh() {
-	sed \
-	-e 's/declare -F/whence -w/' \
-	-e 's/_get_comp_words_by_ref "\$@"/_get_comp_words_by_ref "\$*"/' \
-	-e 's/local \([a-zA-Z0-9_]*\)=/local \1; \1=/' \
-	-e 's/flags+=("\(--.*\)=")/flags+=("\1"); two_word_flags+=("\1")/' \
-	-e 's/must_have_one_flag+=("\(--.*\)=")/must_have_one_flag+=("\1")/' \
-	-e "s/${LWORD}_filedir${RWORD}/__kubectl_filedir/g" \
-	-e "s/${LWORD}_get_comp_words_by_ref${RWORD}/__kubectl_get_comp_words_by_ref/g" \
-	-e "s/${LWORD}__ltrim_colon_completions${RWORD}/__kubectl_ltrim_colon_completions/g" \
-	-e "s/${LWORD}compgen${RWORD}/__kubectl_compgen/g" \
-	-e "s/${LWORD}compopt${RWORD}/__kubectl_compopt/g" \
-	-e "s/${LWORD}declare${RWORD}/builtin declare/g" \
-	-e "s/\\\$(type${RWORD}/\$(__kubectl_type/g" \
-	<<'BASH_COMPLETION_EOF'
-# bash completion for kubectl                              -*- shell-script -*-
-
-__kubectl_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.
-__kubectl_init_completion()
-{
-    COMPREPLY=()
-    _get_comp_words_by_ref "$@" cur prev words cword
-}
-
-__kubectl_index_of_word()
-{
-    local w word=$1
-    shift
-    index=0
-    for w in "$@"; do
-        [[ $w = "$word" ]] && return
-        index=$((index+1))
-    done
-    index=-1
-}
-
-__kubectl_contains_word()
-{
-    local w word=$1; shift
-    for w in "$@"; do
-        [[ $w = "$word" ]] && return
-    done
-    return 1
-}
-
-__kubectl_handle_reply()
-{
-    __kubectl_debug "${FUNCNAME[0]}"
-    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
-            COMPREPLY=( $(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%=*}"
-                __kubectl_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
-            return 0;
-            ;;
-    esac
-
-    # check if we are handling a flag with special work handling
-    local index
-    __kubectl_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[@]}")
-    fi
-    if [[ ${#must_have_one_flag[@]} -ne 0 ]]; then
-        completions+=("${must_have_one_flag[@]}")
-    fi
-    COMPREPLY=( $(compgen -W "${completions[*]}" -- "$cur") )
-
-    if [[ ${#COMPREPLY[@]} -eq 0 && ${#noun_aliases[@]} -gt 0 && ${#must_have_one_noun[@]} -ne 0 ]]; then
-        COMPREPLY=( $(compgen -W "${noun_aliases[*]}" -- "$cur") )
-    fi
-
-    if [[ ${#COMPREPLY[@]} -eq 0 ]]; then
-        declare -F __custom_func >/dev/null && __custom_func
-    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"
-__kubectl_handle_filename_extension_flag()
-{
-    local ext="$1"
-    _filedir "@(${ext})"
-}
-
-__kubectl_handle_subdirs_in_dir_flag()
-{
-    local dir="$1"
-    pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
-}
-
-__kubectl_handle_flag()
-{
-    __kubectl_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
-    __kubectl_debug "${FUNCNAME[0]}: looking for ${flagname}"
-    if __kubectl_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 __kubectl_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 __kubectl_contains_word "${words[c]}" "${two_word_flags[@]}"; then
-        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))
-
-}
-
-__kubectl_handle_noun()
-{
-    __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
-
-    if __kubectl_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
-        must_have_one_noun=()
-    elif __kubectl_contains_word "${words[c]}" "${noun_aliases[@]}"; then
-        must_have_one_noun=()
-    fi
-
-    nouns+=("${words[c]}")
-    c=$((c+1))
-}
-
-__kubectl_handle_command()
-{
-    __kubectl_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="_kubectl_root_command"
-        else
-            next_command="_${words[c]//:/__}"
-        fi
-    fi
-    c=$((c+1))
-    __kubectl_debug "${FUNCNAME[0]}: looking for ${next_command}"
-    declare -F "$next_command" >/dev/null && $next_command
-}
-
-__kubectl_handle_word()
-{
-    if [[ $c -ge $cword ]]; then
-        __kubectl_handle_reply
-        return
-    fi
-    __kubectl_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
-    if [[ "${words[c]}" == -* ]]; then
-        __kubectl_handle_flag
-    elif __kubectl_contains_word "${words[c]}" "${commands[@]}"; then
-        __kubectl_handle_command
-    elif [[ $c -eq 0 ]]; then
-        __kubectl_handle_command
-    else
-        __kubectl_handle_noun
-    fi
-    __kubectl_handle_word
-}
-
-# call kubectl get $1,
-__kubectl_override_flag_list=(--kubeconfig --cluster --user --context --namespace --server -n -s)
-__kubectl_override_flags()
-{
-    local ${__kubectl_override_flag_list[*]##*-} two_word_of of var
-    for w in "${words[@]}"; do
-        if [ -n "${two_word_of}" ]; then
-            eval "${two_word_of##*-}=\"${two_word_of}=\${w}\""
-            two_word_of=
-            continue
-        fi
-        for of in "${__kubectl_override_flag_list[@]}"; do
-            case "${w}" in
-                ${of}=*)
-                    eval "${of##*-}=\"${w}\""
-                    ;;
-                ${of})
-                    two_word_of="${of}"
-                    ;;
-            esac
-        done
-    done
-    for var in "${__kubectl_override_flag_list[@]##*-}"; do
-        if eval "test -n \"\$${var}\""; then
-            eval "echo \${${var}}"
-        fi
-    done
-}
-
-__kubectl_config_get_contexts()
-{
-    __kubectl_parse_config "contexts"
-}
-
-__kubectl_config_get_clusters()
-{
-    __kubectl_parse_config "clusters"
-}
-
-__kubectl_config_get_users()
-{
-    __kubectl_parse_config "users"
-}
-
-# $1 has to be "contexts", "clusters" or "users"
-__kubectl_parse_config()
-{
-    local template kubectl_out
-    template="{{ range .$1  }}{{ .name }} {{ end }}"
-    if kubectl_out=$(kubectl config $(__kubectl_override_flags) -o template --template="${template}" view 2>/dev/null); then
-        COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
-    fi
-}
-
-# $1 is the name of resource (required)
-# $2 is template string for kubectl get (optional)
-__kubectl_parse_get()
-{
-    local template
-    template="${2:-"{{ range .items  }}{{ .metadata.name }} {{ end }}"}"
-    local kubectl_out
-    if kubectl_out=$(kubectl get $(__kubectl_override_flags) -o template --template="${template}" "$1" 2>/dev/null); then
-        COMPREPLY+=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
-    fi
-}
-
-__kubectl_get_resource()
-{
-    if [[ ${#nouns[@]} -eq 0 ]]; then
-      local kubectl_out
-      if kubectl_out=$(kubectl api-resources $(__kubectl_override_flags) -o name --cached --request-timeout=5s --verbs=get 2>/dev/null); then
-          COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
-          return 0
-      fi
-      return 1
-    fi
-    __kubectl_parse_get "${nouns[${#nouns[@]} -1]}"
-}
-
-__kubectl_get_resource_namespace()
-{
-    __kubectl_parse_get "namespace"
-}
-
-__kubectl_get_resource_pod()
-{
-    __kubectl_parse_get "pod"
-}
-
-__kubectl_get_resource_rc()
-{
-    __kubectl_parse_get "rc"
-}
-
-__kubectl_get_resource_node()
-{
-    __kubectl_parse_get "node"
-}
-
-__kubectl_get_resource_clusterrole()
-{
-    __kubectl_parse_get "clusterrole"
-}
-
-# $1 is the name of the pod we want to get the list of containers inside
-__kubectl_get_containers()
-{
-    local template
-    template="{{ range .spec.initContainers }}{{ .name }} {{end}}{{ range .spec.containers  }}{{ .name }} {{ end }}"
-    __kubectl_debug "${FUNCNAME} nouns are ${nouns[*]}"
-
-    local len="${#nouns[@]}"
-    if [[ ${len} -ne 1 ]]; then
-        return
-    fi
-    local last=${nouns[${len} -1]}
-    local kubectl_out
-    if kubectl_out=$(kubectl get $(__kubectl_override_flags) -o template --template="${template}" pods "${last}" 2>/dev/null); then
-        COMPREPLY=( $( compgen -W "${kubectl_out[*]}" -- "$cur" ) )
-    fi
-}
-
-# Require both a pod and a container to be specified
-__kubectl_require_pod_and_container()
-{
-    if [[ ${#nouns[@]} -eq 0 ]]; then
-        __kubectl_parse_get pods
-        return 0
-    fi;
-    __kubectl_get_containers
-    return 0
-}
-
-__kubectl_cp()
-{
-    if [[ $(type -t compopt) = "builtin" ]]; then
-        compopt -o nospace
-    fi
-
-    case "$cur" in
-        /*|[.~]*) # looks like a path
-            return
-            ;;
-        *:*) # TODO: complete remote files in the pod
-            return
-            ;;
-        */*) # complete <namespace>/<pod>
-            local template namespace kubectl_out
-            template="{{ range .items }}{{ .metadata.namespace }}/{{ .metadata.name }}: {{ end }}"
-            namespace="${cur%%/*}"
-            if kubectl_out=( $(kubectl get $(__kubectl_override_flags) --namespace "${namespace}" -o template --template="${template}" pods 2>/dev/null) ); then
-                COMPREPLY=( $(compgen -W "${kubectl_out[*]}" -- "${cur}") )
-            fi
-            return
-            ;;
-        *) # complete namespaces, pods, and filedirs
-            __kubectl_parse_get "namespace" "{{ range .items  }}{{ .metadata.name }}/ {{ end }}"
-            __kubectl_parse_get "pod" "{{ range .items  }}{{ .metadata.name }}: {{ end }}"
-            _filedir
-            ;;
-    esac
-}
-
-__custom_func() {
-    case ${last_command} in
-        kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_edit | kubectl_patch |\
-        kubectl_annotate | kubectl_expose | kubectl_scale | kubectl_autoscale | kubectl_taint | kubectl_rollout_* |\
-        kubectl_apply_edit-last-applied | kubectl_apply_view-last-applied)
-            __kubectl_get_resource
-            return
-            ;;
-        kubectl_logs)
-            __kubectl_require_pod_and_container
-            return
-            ;;
-        kubectl_exec | kubectl_port-forward | kubectl_top_pod | kubectl_attach)
-            __kubectl_get_resource_pod
-            return
-            ;;
-        kubectl_rolling-update)
-            __kubectl_get_resource_rc
-            return
-            ;;
-        kubectl_cordon | kubectl_uncordon | kubectl_drain | kubectl_top_node)
-            __kubectl_get_resource_node
-            return
-            ;;
-        kubectl_config_use-context | kubectl_config_rename-context)
-            __kubectl_config_get_contexts
-            return
-            ;;
-        kubectl_config_delete-cluster)
-            __kubectl_config_get_clusters
-            return
-            ;;
-        kubectl_cp)
-            __kubectl_cp
-            return
-            ;;
-        *)
-            ;;
-    esac
-}
-
-_kubectl_annotate()
-{
-    last_command="kubectl_annotate"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--field-selector=")
-    local_nonpersistent_flags+=("--field-selector=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overwrite")
-    local_nonpersistent_flags+=("--overwrite")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--resource-version=")
-    local_nonpersistent_flags+=("--resource-version=")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_api-resources()
-{
-    last_command="kubectl_api-resources"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--api-group=")
-    local_nonpersistent_flags+=("--api-group=")
-    flags+=("--cached")
-    local_nonpersistent_flags+=("--cached")
-    flags+=("--namespaced")
-    local_nonpersistent_flags+=("--namespaced")
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--verbs=")
-    local_nonpersistent_flags+=("--verbs=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_api-versions()
-{
-    last_command="kubectl_api-versions"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_apply_edit-last-applied()
-{
-    last_command="kubectl_apply_edit-last-applied"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--windows-line-endings")
-    local_nonpersistent_flags+=("--windows-line-endings")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_apply_set-last-applied()
-{
-    last_command="kubectl_apply_set-last-applied"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--create-annotation")
-    local_nonpersistent_flags+=("--create-annotation")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_apply_view-last-applied()
-{
-    last_command="kubectl_apply_view-last-applied"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_apply()
-{
-    last_command="kubectl_apply"
-    commands=()
-    commands+=("edit-last-applied")
-    commands+=("set-last-applied")
-    commands+=("view-last-applied")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--cascade")
-    local_nonpersistent_flags+=("--cascade")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--experimental-field-manager=")
-    local_nonpersistent_flags+=("--experimental-field-manager=")
-    flags+=("--experimental-force-conflicts")
-    local_nonpersistent_flags+=("--experimental-force-conflicts")
-    flags+=("--experimental-server-side")
-    local_nonpersistent_flags+=("--experimental-server-side")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--grace-period=")
-    local_nonpersistent_flags+=("--grace-period=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--openapi-patch")
-    local_nonpersistent_flags+=("--openapi-patch")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overwrite")
-    local_nonpersistent_flags+=("--overwrite")
-    flags+=("--prune")
-    local_nonpersistent_flags+=("--prune")
-    flags+=("--prune-whitelist=")
-    local_nonpersistent_flags+=("--prune-whitelist=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--server-dry-run")
-    local_nonpersistent_flags+=("--server-dry-run")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--wait")
-    local_nonpersistent_flags+=("--wait")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_attach()
-{
-    last_command="kubectl_attach"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--container=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--container=")
-    flags+=("--pod-running-timeout=")
-    local_nonpersistent_flags+=("--pod-running-timeout=")
-    flags+=("--stdin")
-    flags+=("-i")
-    local_nonpersistent_flags+=("--stdin")
-    flags+=("--tty")
-    flags+=("-t")
-    local_nonpersistent_flags+=("--tty")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_auth_can-i()
-{
-    last_command="kubectl_auth_can-i"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--list")
-    local_nonpersistent_flags+=("--list")
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--quiet")
-    flags+=("-q")
-    local_nonpersistent_flags+=("--quiet")
-    flags+=("--subresource=")
-    local_nonpersistent_flags+=("--subresource=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_auth_reconcile()
-{
-    last_command="kubectl_auth_reconcile"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--remove-extra-permissions")
-    local_nonpersistent_flags+=("--remove-extra-permissions")
-    flags+=("--remove-extra-subjects")
-    local_nonpersistent_flags+=("--remove-extra-subjects")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_auth()
-{
-    last_command="kubectl_auth"
-    commands=()
-    commands+=("can-i")
-    commands+=("reconcile")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_autoscale()
-{
-    last_command="kubectl_autoscale"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--cpu-percent=")
-    local_nonpersistent_flags+=("--cpu-percent=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--max=")
-    local_nonpersistent_flags+=("--max=")
-    flags+=("--min=")
-    local_nonpersistent_flags+=("--min=")
-    flags+=("--name=")
-    local_nonpersistent_flags+=("--name=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--max=")
-    must_have_one_noun=()
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("replicaset")
-    must_have_one_noun+=("replicationcontroller")
-    noun_aliases=()
-}
-
-_kubectl_certificate_approve()
-{
-    last_command="kubectl_certificate_approve"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_certificate_deny()
-{
-    last_command="kubectl_certificate_deny"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_certificate()
-{
-    last_command="kubectl_certificate"
-    commands=()
-    commands+=("approve")
-    commands+=("deny")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_cluster-info_dump()
-{
-    last_command="kubectl_cluster-info_dump"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--namespaces=")
-    local_nonpersistent_flags+=("--namespaces=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--output-directory=")
-    local_nonpersistent_flags+=("--output-directory=")
-    flags+=("--pod-running-timeout=")
-    local_nonpersistent_flags+=("--pod-running-timeout=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_cluster-info()
-{
-    last_command="kubectl_cluster-info"
-    commands=()
-    commands+=("dump")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_completion()
-{
-    last_command="kubectl_completion"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--help")
-    flags+=("-h")
-    local_nonpersistent_flags+=("--help")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("bash")
-    must_have_one_noun+=("zsh")
-    noun_aliases=()
-}
-
-_kubectl_config_current-context()
-{
-    last_command="kubectl_config_current-context"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_delete-cluster()
-{
-    last_command="kubectl_config_delete-cluster"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_delete-context()
-{
-    last_command="kubectl_config_delete-context"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_get-clusters()
-{
-    last_command="kubectl_config_get-clusters"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_get-contexts()
-{
-    last_command="kubectl_config_get-contexts"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_rename-context()
-{
-    last_command="kubectl_config_rename-context"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_set()
-{
-    last_command="kubectl_config_set"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--set-raw-bytes")
-    local_nonpersistent_flags+=("--set-raw-bytes")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_set-cluster()
-{
-    last_command="kubectl_config_set-cluster"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--embed-certs")
-    local_nonpersistent_flags+=("--embed-certs")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_set-context()
-{
-    last_command="kubectl_config_set-context"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--current")
-    local_nonpersistent_flags+=("--current")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_set-credentials()
-{
-    last_command="kubectl_config_set-credentials"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--auth-provider=")
-    local_nonpersistent_flags+=("--auth-provider=")
-    flags+=("--auth-provider-arg=")
-    local_nonpersistent_flags+=("--auth-provider-arg=")
-    flags+=("--embed-certs")
-    local_nonpersistent_flags+=("--embed-certs")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_unset()
-{
-    last_command="kubectl_config_unset"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_use-context()
-{
-    last_command="kubectl_config_use-context"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config_view()
-{
-    last_command="kubectl_config_view"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--flatten")
-    local_nonpersistent_flags+=("--flatten")
-    flags+=("--merge")
-    local_nonpersistent_flags+=("--merge")
-    flags+=("--minify")
-    local_nonpersistent_flags+=("--minify")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--raw")
-    local_nonpersistent_flags+=("--raw")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_config()
-{
-    last_command="kubectl_config"
-    commands=()
-    commands+=("current-context")
-    commands+=("delete-cluster")
-    commands+=("delete-context")
-    commands+=("get-clusters")
-    commands+=("get-contexts")
-    commands+=("rename-context")
-    commands+=("set")
-    commands+=("set-cluster")
-    commands+=("set-context")
-    commands+=("set-credentials")
-    commands+=("unset")
-    commands+=("use-context")
-    commands+=("view")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_convert()
-{
-    last_command="kubectl_convert"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--output-version=")
-    local_nonpersistent_flags+=("--output-version=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_cordon()
-{
-    last_command="kubectl_cordon"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_cp()
-{
-    last_command="kubectl_cp"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--container=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--container=")
-    flags+=("--no-preserve")
-    local_nonpersistent_flags+=("--no-preserve")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_clusterrole()
-{
-    last_command="kubectl_create_clusterrole"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--aggregation-rule=")
-    local_nonpersistent_flags+=("--aggregation-rule=")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--non-resource-url=")
-    local_nonpersistent_flags+=("--non-resource-url=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--resource=")
-    local_nonpersistent_flags+=("--resource=")
-    flags+=("--resource-name=")
-    local_nonpersistent_flags+=("--resource-name=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--verb=")
-    local_nonpersistent_flags+=("--verb=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_clusterrolebinding()
-{
-    last_command="kubectl_create_clusterrolebinding"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--clusterrole=")
-    flags_with_completion+=("--clusterrole")
-    flags_completion+=("__kubectl_get_resource_clusterrole")
-    local_nonpersistent_flags+=("--clusterrole=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--group=")
-    local_nonpersistent_flags+=("--group=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--serviceaccount=")
-    local_nonpersistent_flags+=("--serviceaccount=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_configmap()
-{
-    last_command="kubectl_create_configmap"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--append-hash")
-    local_nonpersistent_flags+=("--append-hash")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--from-env-file=")
-    local_nonpersistent_flags+=("--from-env-file=")
-    flags+=("--from-file=")
-    local_nonpersistent_flags+=("--from-file=")
-    flags+=("--from-literal=")
-    local_nonpersistent_flags+=("--from-literal=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_cronjob()
-{
-    last_command="kubectl_create_cronjob"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--image=")
-    local_nonpersistent_flags+=("--image=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--restart=")
-    local_nonpersistent_flags+=("--restart=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--schedule=")
-    local_nonpersistent_flags+=("--schedule=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_deployment()
-{
-    last_command="kubectl_create_deployment"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--image=")
-    local_nonpersistent_flags+=("--image=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--image=")
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_job()
-{
-    last_command="kubectl_create_job"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--from=")
-    local_nonpersistent_flags+=("--from=")
-    flags+=("--image=")
-    local_nonpersistent_flags+=("--image=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_namespace()
-{
-    last_command="kubectl_create_namespace"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_poddisruptionbudget()
-{
-    last_command="kubectl_create_poddisruptionbudget"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--max-unavailable=")
-    local_nonpersistent_flags+=("--max-unavailable=")
-    flags+=("--min-available=")
-    local_nonpersistent_flags+=("--min-available=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--selector=")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_priorityclass()
-{
-    last_command="kubectl_create_priorityclass"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--description=")
-    local_nonpersistent_flags+=("--description=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--global-default")
-    local_nonpersistent_flags+=("--global-default")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--value=")
-    local_nonpersistent_flags+=("--value=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_quota()
-{
-    last_command="kubectl_create_quota"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--hard=")
-    local_nonpersistent_flags+=("--hard=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--scopes=")
-    local_nonpersistent_flags+=("--scopes=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_role()
-{
-    last_command="kubectl_create_role"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--resource=")
-    local_nonpersistent_flags+=("--resource=")
-    flags+=("--resource-name=")
-    local_nonpersistent_flags+=("--resource-name=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--verb=")
-    local_nonpersistent_flags+=("--verb=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_rolebinding()
-{
-    last_command="kubectl_create_rolebinding"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--clusterrole=")
-    local_nonpersistent_flags+=("--clusterrole=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--group=")
-    local_nonpersistent_flags+=("--group=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--role=")
-    local_nonpersistent_flags+=("--role=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--serviceaccount=")
-    local_nonpersistent_flags+=("--serviceaccount=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_secret_docker-registry()
-{
-    last_command="kubectl_create_secret_docker-registry"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--append-hash")
-    local_nonpersistent_flags+=("--append-hash")
-    flags+=("--docker-email=")
-    local_nonpersistent_flags+=("--docker-email=")
-    flags+=("--docker-password=")
-    local_nonpersistent_flags+=("--docker-password=")
-    flags+=("--docker-server=")
-    local_nonpersistent_flags+=("--docker-server=")
-    flags+=("--docker-username=")
-    local_nonpersistent_flags+=("--docker-username=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--from-file=")
-    local_nonpersistent_flags+=("--from-file=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--docker-password=")
-    must_have_one_flag+=("--docker-username=")
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_secret_generic()
-{
-    last_command="kubectl_create_secret_generic"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--append-hash")
-    local_nonpersistent_flags+=("--append-hash")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--from-env-file=")
-    local_nonpersistent_flags+=("--from-env-file=")
-    flags+=("--from-file=")
-    local_nonpersistent_flags+=("--from-file=")
-    flags+=("--from-literal=")
-    local_nonpersistent_flags+=("--from-literal=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--type=")
-    local_nonpersistent_flags+=("--type=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_secret_tls()
-{
-    last_command="kubectl_create_secret_tls"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--append-hash")
-    local_nonpersistent_flags+=("--append-hash")
-    flags+=("--cert=")
-    local_nonpersistent_flags+=("--cert=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--key=")
-    local_nonpersistent_flags+=("--key=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_secret()
-{
-    last_command="kubectl_create_secret"
-    commands=()
-    commands+=("docker-registry")
-    commands+=("generic")
-    commands+=("tls")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_service_clusterip()
-{
-    last_command="kubectl_create_service_clusterip"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--clusterip=")
-    local_nonpersistent_flags+=("--clusterip=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--tcp=")
-    local_nonpersistent_flags+=("--tcp=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_service_externalname()
-{
-    last_command="kubectl_create_service_externalname"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--external-name=")
-    local_nonpersistent_flags+=("--external-name=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--tcp=")
-    local_nonpersistent_flags+=("--tcp=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--external-name=")
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_service_loadbalancer()
-{
-    last_command="kubectl_create_service_loadbalancer"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--tcp=")
-    local_nonpersistent_flags+=("--tcp=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_service_nodeport()
-{
-    last_command="kubectl_create_service_nodeport"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--node-port=")
-    local_nonpersistent_flags+=("--node-port=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--tcp=")
-    local_nonpersistent_flags+=("--tcp=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_service()
-{
-    last_command="kubectl_create_service"
-    commands=()
-    commands+=("clusterip")
-    commands+=("externalname")
-    commands+=("loadbalancer")
-    commands+=("nodeport")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create_serviceaccount()
-{
-    last_command="kubectl_create_serviceaccount"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_create()
-{
-    last_command="kubectl_create"
-    commands=()
-    commands+=("clusterrole")
-    commands+=("clusterrolebinding")
-    commands+=("configmap")
-    commands+=("cronjob")
-    commands+=("deployment")
-    commands+=("job")
-    commands+=("namespace")
-    commands+=("poddisruptionbudget")
-    commands+=("priorityclass")
-    commands+=("quota")
-    commands+=("role")
-    commands+=("rolebinding")
-    commands+=("secret")
-    commands+=("service")
-    commands+=("serviceaccount")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--edit")
-    local_nonpersistent_flags+=("--edit")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--raw=")
-    local_nonpersistent_flags+=("--raw=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--windows-line-endings")
-    local_nonpersistent_flags+=("--windows-line-endings")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_delete()
-{
-    last_command="kubectl_delete"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--cascade")
-    local_nonpersistent_flags+=("--cascade")
-    flags+=("--field-selector=")
-    local_nonpersistent_flags+=("--field-selector=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--grace-period=")
-    local_nonpersistent_flags+=("--grace-period=")
-    flags+=("--ignore-not-found")
-    local_nonpersistent_flags+=("--ignore-not-found")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--now")
-    local_nonpersistent_flags+=("--now")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--wait")
-    local_nonpersistent_flags+=("--wait")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_describe()
-{
-    last_command="kubectl_describe"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--show-events")
-    local_nonpersistent_flags+=("--show-events")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_diff()
-{
-    last_command="kubectl_diff"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--experimental-field-manager=")
-    local_nonpersistent_flags+=("--experimental-field-manager=")
-    flags+=("--experimental-force-conflicts")
-    local_nonpersistent_flags+=("--experimental-force-conflicts")
-    flags+=("--experimental-server-side")
-    local_nonpersistent_flags+=("--experimental-server-side")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_drain()
-{
-    last_command="kubectl_drain"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--delete-local-data")
-    local_nonpersistent_flags+=("--delete-local-data")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--grace-period=")
-    local_nonpersistent_flags+=("--grace-period=")
-    flags+=("--ignore-daemonsets")
-    local_nonpersistent_flags+=("--ignore-daemonsets")
-    flags+=("--pod-selector=")
-    local_nonpersistent_flags+=("--pod-selector=")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_edit()
-{
-    last_command="kubectl_edit"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--output-patch")
-    local_nonpersistent_flags+=("--output-patch")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--windows-line-endings")
-    local_nonpersistent_flags+=("--windows-line-endings")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_exec()
-{
-    last_command="kubectl_exec"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--container=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--container=")
-    flags+=("--stdin")
-    flags+=("-i")
-    local_nonpersistent_flags+=("--stdin")
-    flags+=("--tty")
-    flags+=("-t")
-    local_nonpersistent_flags+=("--tty")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_explain()
-{
-    last_command="kubectl_explain"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--api-version=")
-    local_nonpersistent_flags+=("--api-version=")
-    flags+=("--recursive")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_expose()
-{
-    last_command="kubectl_expose"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--cluster-ip=")
-    local_nonpersistent_flags+=("--cluster-ip=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--external-ip=")
-    local_nonpersistent_flags+=("--external-ip=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--labels=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--labels=")
-    flags+=("--load-balancer-ip=")
-    local_nonpersistent_flags+=("--load-balancer-ip=")
-    flags+=("--name=")
-    local_nonpersistent_flags+=("--name=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overrides=")
-    local_nonpersistent_flags+=("--overrides=")
-    flags+=("--port=")
-    local_nonpersistent_flags+=("--port=")
-    flags+=("--protocol=")
-    local_nonpersistent_flags+=("--protocol=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--selector=")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--session-affinity=")
-    local_nonpersistent_flags+=("--session-affinity=")
-    flags+=("--target-port=")
-    local_nonpersistent_flags+=("--target-port=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--type=")
-    local_nonpersistent_flags+=("--type=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("pod")
-    must_have_one_noun+=("replicaset")
-    must_have_one_noun+=("replicationcontroller")
-    must_have_one_noun+=("service")
-    noun_aliases=()
-}
-
-_kubectl_get()
-{
-    last_command="kubectl_get"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--chunk-size=")
-    local_nonpersistent_flags+=("--chunk-size=")
-    flags+=("--field-selector=")
-    local_nonpersistent_flags+=("--field-selector=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--ignore-not-found")
-    local_nonpersistent_flags+=("--ignore-not-found")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--label-columns=")
-    two_word_flags+=("-L")
-    local_nonpersistent_flags+=("--label-columns=")
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--raw=")
-    local_nonpersistent_flags+=("--raw=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--server-print")
-    local_nonpersistent_flags+=("--server-print")
-    flags+=("--show-kind")
-    local_nonpersistent_flags+=("--show-kind")
-    flags+=("--show-labels")
-    local_nonpersistent_flags+=("--show-labels")
-    flags+=("--sort-by=")
-    local_nonpersistent_flags+=("--sort-by=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--watch")
-    flags+=("-w")
-    local_nonpersistent_flags+=("--watch")
-    flags+=("--watch-only")
-    local_nonpersistent_flags+=("--watch-only")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_kustomize()
-{
-    last_command="kubectl_kustomize"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_label()
-{
-    last_command="kubectl_label"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--field-selector=")
-    local_nonpersistent_flags+=("--field-selector=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--list")
-    local_nonpersistent_flags+=("--list")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overwrite")
-    local_nonpersistent_flags+=("--overwrite")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--resource-version=")
-    local_nonpersistent_flags+=("--resource-version=")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_logs()
-{
-    last_command="kubectl_logs"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-containers")
-    local_nonpersistent_flags+=("--all-containers")
-    flags+=("--container=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--container=")
-    flags+=("--follow")
-    flags+=("-f")
-    local_nonpersistent_flags+=("--follow")
-    flags+=("--limit-bytes=")
-    local_nonpersistent_flags+=("--limit-bytes=")
-    flags+=("--max-log-requests=")
-    local_nonpersistent_flags+=("--max-log-requests=")
-    flags+=("--pod-running-timeout=")
-    local_nonpersistent_flags+=("--pod-running-timeout=")
-    flags+=("--previous")
-    flags+=("-p")
-    local_nonpersistent_flags+=("--previous")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--since=")
-    local_nonpersistent_flags+=("--since=")
-    flags+=("--since-time=")
-    local_nonpersistent_flags+=("--since-time=")
-    flags+=("--tail=")
-    local_nonpersistent_flags+=("--tail=")
-    flags+=("--timestamps")
-    local_nonpersistent_flags+=("--timestamps")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_options()
-{
-    last_command="kubectl_options"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_patch()
-{
-    last_command="kubectl_patch"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--patch=")
-    two_word_flags+=("-p")
-    local_nonpersistent_flags+=("--patch=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--type=")
-    local_nonpersistent_flags+=("--type=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--patch=")
-    must_have_one_flag+=("-p")
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_plugin_list()
-{
-    last_command="kubectl_plugin_list"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--name-only")
-    local_nonpersistent_flags+=("--name-only")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_plugin()
-{
-    last_command="kubectl_plugin"
-    commands=()
-    commands+=("list")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_port-forward()
-{
-    last_command="kubectl_port-forward"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--address=")
-    local_nonpersistent_flags+=("--address=")
-    flags+=("--pod-running-timeout=")
-    local_nonpersistent_flags+=("--pod-running-timeout=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_proxy()
-{
-    last_command="kubectl_proxy"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--accept-hosts=")
-    local_nonpersistent_flags+=("--accept-hosts=")
-    flags+=("--accept-paths=")
-    local_nonpersistent_flags+=("--accept-paths=")
-    flags+=("--address=")
-    local_nonpersistent_flags+=("--address=")
-    flags+=("--api-prefix=")
-    local_nonpersistent_flags+=("--api-prefix=")
-    flags+=("--disable-filter")
-    local_nonpersistent_flags+=("--disable-filter")
-    flags+=("--keepalive=")
-    local_nonpersistent_flags+=("--keepalive=")
-    flags+=("--port=")
-    two_word_flags+=("-p")
-    local_nonpersistent_flags+=("--port=")
-    flags+=("--reject-methods=")
-    local_nonpersistent_flags+=("--reject-methods=")
-    flags+=("--reject-paths=")
-    local_nonpersistent_flags+=("--reject-paths=")
-    flags+=("--unix-socket=")
-    two_word_flags+=("-u")
-    local_nonpersistent_flags+=("--unix-socket=")
-    flags+=("--www=")
-    two_word_flags+=("-w")
-    local_nonpersistent_flags+=("--www=")
-    flags+=("--www-prefix=")
-    two_word_flags+=("-P")
-    local_nonpersistent_flags+=("--www-prefix=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_replace()
-{
-    last_command="kubectl_replace"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--cascade")
-    local_nonpersistent_flags+=("--cascade")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--grace-period=")
-    local_nonpersistent_flags+=("--grace-period=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--wait")
-    local_nonpersistent_flags+=("--wait")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_rollout_history()
-{
-    last_command="kubectl_rollout_history"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--revision=")
-    local_nonpersistent_flags+=("--revision=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("daemonset")
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("statefulset")
-    noun_aliases=()
-}
-
-_kubectl_rollout_pause()
-{
-    last_command="kubectl_rollout_pause"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("deployment")
-    noun_aliases=()
-}
-
-_kubectl_rollout_resume()
-{
-    last_command="kubectl_rollout_resume"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("deployment")
-    noun_aliases=()
-}
-
-_kubectl_rollout_status()
-{
-    last_command="kubectl_rollout_status"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--revision=")
-    local_nonpersistent_flags+=("--revision=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--watch")
-    flags+=("-w")
-    local_nonpersistent_flags+=("--watch")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("daemonset")
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("statefulset")
-    noun_aliases=()
-}
-
-_kubectl_rollout_undo()
-{
-    last_command="kubectl_rollout_undo"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--to-revision=")
-    local_nonpersistent_flags+=("--to-revision=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("daemonset")
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("statefulset")
-    noun_aliases=()
-}
-
-_kubectl_rollout()
-{
-    last_command="kubectl_rollout"
-    commands=()
-    commands+=("history")
-    commands+=("pause")
-    commands+=("resume")
-    commands+=("status")
-    commands+=("undo")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_run()
-{
-    last_command="kubectl_run"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--attach")
-    local_nonpersistent_flags+=("--attach")
-    flags+=("--cascade")
-    local_nonpersistent_flags+=("--cascade")
-    flags+=("--command")
-    local_nonpersistent_flags+=("--command")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--env=")
-    local_nonpersistent_flags+=("--env=")
-    flags+=("--expose")
-    local_nonpersistent_flags+=("--expose")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--force")
-    local_nonpersistent_flags+=("--force")
-    flags+=("--generator=")
-    local_nonpersistent_flags+=("--generator=")
-    flags+=("--grace-period=")
-    local_nonpersistent_flags+=("--grace-period=")
-    flags+=("--hostport=")
-    local_nonpersistent_flags+=("--hostport=")
-    flags+=("--image=")
-    local_nonpersistent_flags+=("--image=")
-    flags+=("--image-pull-policy=")
-    local_nonpersistent_flags+=("--image-pull-policy=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--labels=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--labels=")
-    flags+=("--leave-stdin-open")
-    local_nonpersistent_flags+=("--leave-stdin-open")
-    flags+=("--limits=")
-    local_nonpersistent_flags+=("--limits=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overrides=")
-    local_nonpersistent_flags+=("--overrides=")
-    flags+=("--pod-running-timeout=")
-    local_nonpersistent_flags+=("--pod-running-timeout=")
-    flags+=("--port=")
-    local_nonpersistent_flags+=("--port=")
-    flags+=("--quiet")
-    local_nonpersistent_flags+=("--quiet")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--replicas=")
-    two_word_flags+=("-r")
-    local_nonpersistent_flags+=("--replicas=")
-    flags+=("--requests=")
-    local_nonpersistent_flags+=("--requests=")
-    flags+=("--restart=")
-    local_nonpersistent_flags+=("--restart=")
-    flags+=("--rm")
-    local_nonpersistent_flags+=("--rm")
-    flags+=("--save-config")
-    local_nonpersistent_flags+=("--save-config")
-    flags+=("--schedule=")
-    local_nonpersistent_flags+=("--schedule=")
-    flags+=("--service-generator=")
-    local_nonpersistent_flags+=("--service-generator=")
-    flags+=("--service-overrides=")
-    local_nonpersistent_flags+=("--service-overrides=")
-    flags+=("--serviceaccount=")
-    local_nonpersistent_flags+=("--serviceaccount=")
-    flags+=("--stdin")
-    flags+=("-i")
-    local_nonpersistent_flags+=("--stdin")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--tty")
-    flags+=("-t")
-    local_nonpersistent_flags+=("--tty")
-    flags+=("--wait")
-    local_nonpersistent_flags+=("--wait")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--image=")
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_scale()
-{
-    last_command="kubectl_scale"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--current-replicas=")
-    local_nonpersistent_flags+=("--current-replicas=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--replicas=")
-    local_nonpersistent_flags+=("--replicas=")
-    flags+=("--resource-version=")
-    local_nonpersistent_flags+=("--resource-version=")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_flag+=("--replicas=")
-    must_have_one_noun=()
-    must_have_one_noun+=("deployment")
-    must_have_one_noun+=("replicaset")
-    must_have_one_noun+=("replicationcontroller")
-    must_have_one_noun+=("statefulset")
-    noun_aliases=()
-}
-
-_kubectl_set_env()
-{
-    last_command="kubectl_set_env"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--containers=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--containers=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--env=")
-    two_word_flags+=("-e")
-    local_nonpersistent_flags+=("--env=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--from=")
-    local_nonpersistent_flags+=("--from=")
-    flags+=("--keys=")
-    local_nonpersistent_flags+=("--keys=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--list")
-    local_nonpersistent_flags+=("--list")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overwrite")
-    local_nonpersistent_flags+=("--overwrite")
-    flags+=("--prefix=")
-    local_nonpersistent_flags+=("--prefix=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--resolve")
-    local_nonpersistent_flags+=("--resolve")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set_image()
-{
-    last_command="kubectl_set_image"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set_resources()
-{
-    last_command="kubectl_set_resources"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--containers=")
-    two_word_flags+=("-c")
-    local_nonpersistent_flags+=("--containers=")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--limits=")
-    local_nonpersistent_flags+=("--limits=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--requests=")
-    local_nonpersistent_flags+=("--requests=")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set_selector()
-{
-    last_command="kubectl_set_selector"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--resource-version=")
-    local_nonpersistent_flags+=("--resource-version=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set_serviceaccount()
-{
-    last_command="kubectl_set_serviceaccount"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--record")
-    local_nonpersistent_flags+=("--record")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set_subject()
-{
-    last_command="kubectl_set_subject"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--group=")
-    local_nonpersistent_flags+=("--group=")
-    flags+=("--kustomize=")
-    two_word_flags+=("-k")
-    local_nonpersistent_flags+=("--kustomize=")
-    flags+=("--local")
-    local_nonpersistent_flags+=("--local")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--serviceaccount=")
-    local_nonpersistent_flags+=("--serviceaccount=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_set()
-{
-    last_command="kubectl_set"
-    commands=()
-    commands+=("env")
-    commands+=("image")
-    commands+=("resources")
-    commands+=("selector")
-    commands+=("serviceaccount")
-    commands+=("subject")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_taint()
-{
-    last_command="kubectl_taint"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--overwrite")
-    local_nonpersistent_flags+=("--overwrite")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--validate")
-    local_nonpersistent_flags+=("--validate")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    must_have_one_noun+=("node")
-    noun_aliases=()
-}
-
-_kubectl_top_node()
-{
-    last_command="kubectl_top_node"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--heapster-namespace=")
-    local_nonpersistent_flags+=("--heapster-namespace=")
-    flags+=("--heapster-port=")
-    local_nonpersistent_flags+=("--heapster-port=")
-    flags+=("--heapster-scheme=")
-    local_nonpersistent_flags+=("--heapster-scheme=")
-    flags+=("--heapster-service=")
-    local_nonpersistent_flags+=("--heapster-service=")
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_top_pod()
-{
-    last_command="kubectl_top_pod"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--containers")
-    local_nonpersistent_flags+=("--containers")
-    flags+=("--heapster-namespace=")
-    local_nonpersistent_flags+=("--heapster-namespace=")
-    flags+=("--heapster-port=")
-    local_nonpersistent_flags+=("--heapster-port=")
-    flags+=("--heapster-scheme=")
-    local_nonpersistent_flags+=("--heapster-scheme=")
-    flags+=("--heapster-service=")
-    local_nonpersistent_flags+=("--heapster-service=")
-    flags+=("--no-headers")
-    local_nonpersistent_flags+=("--no-headers")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_top()
-{
-    last_command="kubectl_top"
-    commands=()
-    commands+=("node")
-    commands+=("pod")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_uncordon()
-{
-    last_command="kubectl_uncordon"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--dry-run")
-    local_nonpersistent_flags+=("--dry-run")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_version()
-{
-    last_command="kubectl_version"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--client")
-    local_nonpersistent_flags+=("--client")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--short")
-    local_nonpersistent_flags+=("--short")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_wait()
-{
-    last_command="kubectl_wait"
-    commands=()
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--all")
-    local_nonpersistent_flags+=("--all")
-    flags+=("--all-namespaces")
-    flags+=("-A")
-    local_nonpersistent_flags+=("--all-namespaces")
-    flags+=("--allow-missing-template-keys")
-    local_nonpersistent_flags+=("--allow-missing-template-keys")
-    flags+=("--field-selector=")
-    local_nonpersistent_flags+=("--field-selector=")
-    flags+=("--filename=")
-    flags_with_completion+=("--filename")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    two_word_flags+=("-f")
-    flags_with_completion+=("-f")
-    flags_completion+=("__kubectl_handle_filename_extension_flag json|yaml|yml")
-    local_nonpersistent_flags+=("--filename=")
-    flags+=("--for=")
-    local_nonpersistent_flags+=("--for=")
-    flags+=("--output=")
-    two_word_flags+=("-o")
-    local_nonpersistent_flags+=("--output=")
-    flags+=("--recursive")
-    flags+=("-R")
-    local_nonpersistent_flags+=("--recursive")
-    flags+=("--selector=")
-    two_word_flags+=("-l")
-    local_nonpersistent_flags+=("--selector=")
-    flags+=("--template=")
-    flags_with_completion+=("--template")
-    flags_completion+=("_filedir")
-    local_nonpersistent_flags+=("--template=")
-    flags+=("--timeout=")
-    local_nonpersistent_flags+=("--timeout=")
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-_kubectl_root_command()
-{
-    last_command="kubectl"
-    commands=()
-    commands+=("annotate")
-    commands+=("api-resources")
-    commands+=("api-versions")
-    commands+=("apply")
-    commands+=("attach")
-    commands+=("auth")
-    commands+=("autoscale")
-    commands+=("certificate")
-    commands+=("cluster-info")
-    commands+=("completion")
-    commands+=("config")
-    commands+=("convert")
-    commands+=("cordon")
-    commands+=("cp")
-    commands+=("create")
-    commands+=("delete")
-    commands+=("describe")
-    commands+=("diff")
-    commands+=("drain")
-    commands+=("edit")
-    commands+=("exec")
-    commands+=("explain")
-    commands+=("expose")
-    commands+=("get")
-    commands+=("kustomize")
-    commands+=("label")
-    commands+=("logs")
-    commands+=("options")
-    commands+=("patch")
-    commands+=("plugin")
-    commands+=("port-forward")
-    commands+=("proxy")
-    commands+=("replace")
-    commands+=("rollout")
-    commands+=("run")
-    commands+=("scale")
-    commands+=("set")
-    commands+=("taint")
-    commands+=("top")
-    commands+=("uncordon")
-    commands+=("version")
-    commands+=("wait")
-
-    flags=()
-    two_word_flags=()
-    local_nonpersistent_flags=()
-    flags_with_completion=()
-    flags_completion=()
-
-    flags+=("--alsologtostderr")
-    flags+=("--as=")
-    flags+=("--as-group=")
-    flags+=("--cache-dir=")
-    flags+=("--certificate-authority=")
-    flags+=("--client-certificate=")
-    flags+=("--client-key=")
-    flags+=("--cluster=")
-    flags_with_completion+=("--cluster")
-    flags_completion+=("__kubectl_config_get_clusters")
-    flags+=("--context=")
-    flags_with_completion+=("--context")
-    flags_completion+=("__kubectl_config_get_contexts")
-    flags+=("--insecure-skip-tls-verify")
-    flags+=("--kubeconfig=")
-    flags+=("--log-backtrace-at=")
-    flags+=("--log-dir=")
-    flags+=("--log-file=")
-    flags+=("--log-flush-frequency=")
-    flags+=("--logtostderr")
-    flags+=("--match-server-version")
-    flags+=("--namespace=")
-    flags_with_completion+=("--namespace")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    two_word_flags+=("-n")
-    flags_with_completion+=("-n")
-    flags_completion+=("__kubectl_get_resource_namespace")
-    flags+=("--password=")
-    flags+=("--profile=")
-    flags+=("--profile-output=")
-    flags+=("--request-timeout=")
-    flags+=("--server=")
-    two_word_flags+=("-s")
-    flags+=("--skip-headers")
-    flags+=("--stderrthreshold=")
-    flags+=("--token=")
-    flags+=("--user=")
-    flags_with_completion+=("--user")
-    flags_completion+=("__kubectl_config_get_users")
-    flags+=("--username=")
-    flags+=("--v=")
-    two_word_flags+=("-v")
-    flags+=("--vmodule=")
-
-    must_have_one_flag=()
-    must_have_one_noun=()
-    noun_aliases=()
-}
-
-__start_kubectl()
-{
-    local cur prev words cword
-    declare -A flaghash 2>/dev/null || :
-    if declare -F _init_completion >/dev/null 2>&1; then
-        _init_completion -s || return
-    else
-        __kubectl_init_completion -n "=" || return
-    fi
-
-    local c=0
-    local flags=()
-    local two_word_flags=()
-    local local_nonpersistent_flags=()
-    local flags_with_completion=()
-    local flags_completion=()
-    local commands=("kubectl")
-    local must_have_one_flag=()
-    local must_have_one_noun=()
-    local last_command
-    local nouns=()
-
-    __kubectl_handle_word
-}
-
-if [[ $(type -t compopt) = "builtin" ]]; then
-    complete -o default -F __start_kubectl kubectl
-else
-    complete -o default -o nospace -F __start_kubectl kubectl
-fi
-
-# ex: ts=4 sw=4 et filetype=sh
-
-BASH_COMPLETION_EOF
-}
-
-__kubectl_bash_source <(__kubectl_convert_bash_to_zsh)
-_complete kubectl 2>/dev/null
users/vincent/core/zsh/_rg
@@ -1,608 +0,0 @@
-#compdef rg
-
-##
-# zsh completion function for ripgrep
-#
-# Run ci/test_complete.sh after building to ensure that the options supported by
-# this function stay in synch with the `rg` binary.
-#
-# For convenience, a completion reference guide is included at the bottom of
-# this file.
-#
-# Originally based on code from the zsh-users project — see copyright notice
-# below.
-
-_rg() {
-  local curcontext=$curcontext no='!' descr ret=1
-  local -a context line state state_descr args tmp suf
-  local -A opt_args
-
-  # ripgrep has many options which negate the effect of a more common one — for
-  # example, `--no-column` to negate `--column`, and `--messages` to negate
-  # `--no-messages`. There are so many of these, and they're so infrequently
-  # used, that some users will probably find it irritating if they're completed
-  # indiscriminately, so let's not do that unless either the current prefix
-  # matches one of those negation options or the user has the `complete-all`
-  # style set. Note that this prefix check has to be updated manually to account
-  # for all of the potential negation options listed below!
-  if
-    # We also want to list all of these options during testing
-    [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] ||
-    # (--[imnp]* => --ignore*, --messages, --no-*, --pcre2-unicode)
-    [[ $PREFIX$SUFFIX == --[imnp]* ]] ||
-    zstyle -t ":complete:$curcontext:*" complete-all
-  then
-    no=
-  fi
-
-  # We make heavy use of argument groups here to prevent the option specs from
-  # growing unwieldy. These aren't supported in zsh <5.4, though, so we'll strip
-  # them out below if necessary. This makes the exclusions inaccurate on those
-  # older versions, but oh well — it's not that big a deal
-  args=(
-    + '(exclusive)' # Misc. fully exclusive options
-    '(: * -)'{-h,--help}'[display help information]'
-    '(: * -)'{-V,--version}'[display version information]'
-    '(: * -)'--pcre2-version'[print the version of PCRE2 used by ripgrep, if available]'
-
-    + '(buffered)' # buffering options
-    '--line-buffered[force line buffering]'
-    $no"--no-line-buffered[don't force line buffering]"
-    '--block-buffered[force block buffering]'
-    $no"--no-block-buffered[don't force block buffering]"
-
-    + '(case)' # Case-sensitivity options
-    {-i,--ignore-case}'[search case-insensitively]'
-    {-s,--case-sensitive}'[search case-sensitively]'
-    {-S,--smart-case}'[search case-insensitively if pattern is all lowercase]'
-
-    + '(context-a)' # Context (after) options
-    '(context-c)'{-A+,--after-context=}'[specify lines to show after each match]:number of lines'
-
-    + '(context-b)' # Context (before) options
-    '(context-c)'{-B+,--before-context=}'[specify lines to show before each match]:number of lines'
-
-    + '(context-c)' # Context (combined) options
-    '(context-a context-b)'{-C+,--context=}'[specify lines to show before and after each match]:number of lines'
-
-    + '(column)' # Column options
-    '--column[show column numbers for matches]'
-    $no"--no-column[don't show column numbers for matches]"
-
-    + '(count)' # Counting options
-    {-c,--count}'[only show count of matching lines for each file]'
-    '--count-matches[only show count of individual matches for each file]'
-
-    + '(encoding)' # Encoding options
-    {-E+,--encoding=}'[specify text encoding of files to search]: :_rg_encodings'
-    $no'--no-encoding[use default text encoding]'
-
-    + file # File-input options
-    '(1)*'{-f+,--file=}'[specify file containing patterns to search for]: :_files'
-
-    + '(file-match)' # Files with/without match options
-    '(stats)'{-l,--files-with-matches}'[only show names of files with matches]'
-    '(stats)--files-without-match[only show names of files without matches]'
-
-    + '(file-name)' # File-name options
-    {-H,--with-filename}'[show file name for matches]'
-    {-I,--no-filename}"[don't show file name for matches]"
-
-    + '(file-system)' # File system options
-    "--one-file-system[don't descend into directories on other file systems]"
-    $no'--no-one-file-system[descend into directories on other file systems]'
-
-    + '(fixed)' # Fixed-string options
-    {-F,--fixed-strings}'[treat pattern as literal string instead of regular expression]'
-    $no"--no-fixed-strings[don't treat pattern as literal string]"
-
-    + '(follow)' # Symlink-following options
-    {-L,--follow}'[follow symlinks]'
-    $no"--no-follow[don't follow symlinks]"
-
-    + glob # File-glob options
-    '*'{-g+,--glob=}'[include/exclude files matching specified glob]:glob'
-    '*--iglob=[include/exclude files matching specified case-insensitive glob]:glob'
-
-    + '(heading)' # Heading options
-    '(pretty-vimgrep)--heading[show matches grouped by file name]'
-    "(pretty-vimgrep)--no-heading[don't show matches grouped by file name]"
-
-    + '(hidden)' # Hidden-file options
-    '--hidden[search hidden files and directories]'
-    $no"--no-hidden[don't search hidden files and directories]"
-
-    + '(hybrid)' # hybrid regex options
-    '--auto-hybrid-regex[dynamically use PCRE2 if necessary]'
-    $no"--no-auto-hybrid-regex[don't dynamically use PCRE2 if necessary]"
-
-    + '(ignore)' # Ignore-file options
-    "(--no-ignore-global --no-ignore-parent --no-ignore-vcs --no-ignore-dot)--no-ignore[don't respect ignore files]"
-    $no'(--ignore-global --ignore-parent --ignore-vcs --ignore-dot)--ignore[respect ignore files]'
-
-    + '(ignore-file-case-insensitive)' # Ignore-file case sensitivity options
-    '--ignore-file-case-insensitive[process ignore files case insensitively]'
-    $no'--no-ignore-file-case-insensitive[process ignore files case sensitively]'
-
-    + '(ignore-global)' # Global ignore-file options
-    "--no-ignore-global[don't respect global ignore files]"
-    $no'--ignore-global[respect global ignore files]'
-
-    + '(ignore-parent)' # Parent ignore-file options
-    "--no-ignore-parent[don't respect ignore files in parent directories]"
-    $no'--ignore-parent[respect ignore files in parent directories]'
-
-    + '(ignore-vcs)' # VCS ignore-file options
-    "--no-ignore-vcs[don't respect version control ignore files]"
-    $no'--ignore-vcs[respect version control ignore files]'
-
-    + '(ignore-dot)' # .ignore-file options
-    "--no-ignore-dot[don't respect .ignore files]"
-    $no'--ignore-dot[respect .ignore files]'
-
-    + '(json)' # JSON options
-    '--json[output results in JSON Lines format]'
-    $no"--no-json[don't output results in JSON Lines format]"
-
-    + '(line-number)' # Line-number options
-    {-n,--line-number}'[show line numbers for matches]'
-    {-N,--no-line-number}"[don't show line numbers for matches]"
-
-    + '(line-terminator)' # Line-terminator options
-    '--crlf[use CRLF as line terminator]'
-    $no"--no-crlf[don't use CRLF as line terminator]"
-    '(text)--null-data[use NUL as line terminator]'
-
-    + '(max-columns-preview)' # max column preview options
-    '--max-columns-preview[show preview for long lines (with -M)]'
-    $no"--no-max-columns-preview[don't show preview for long lines (with -M)]"
-
-    + '(max-depth)' # Directory-depth options
-    '--max-depth=[specify max number of directories to descend]:number of directories'
-    '!--maxdepth=:number of directories'
-
-    + '(messages)' # Error-message options
-    '(--no-ignore-messages)--no-messages[suppress some error messages]'
-    $no"--messages[don't suppress error messages affected by --no-messages]"
-
-    + '(messages-ignore)' # Ignore-error message options
-    "--no-ignore-messages[don't show ignore-file parse error messages]"
-    $no'--ignore-messages[show ignore-file parse error messages]'
-
-    + '(mmap)' # mmap options
-    '--mmap[search using memory maps when possible]'
-    "--no-mmap[don't search using memory maps]"
-
-    + '(multiline)' # Multiline options
-    {-U,--multiline}'[permit matching across multiple lines]'
-    $no'(multiline-dotall)--no-multiline[restrict matches to at most one line each]'
-
-    + '(multiline-dotall)' # Multiline DOTALL options
-    '(--no-multiline)--multiline-dotall[allow "." to match newline (with -U)]'
-    $no"(--no-multiline)--no-multiline-dotall[don't allow \".\" to match newline (with -U)]"
-
-    + '(only)' # Only-match options
-    {-o,--only-matching}'[show only matching part of each line]'
-
-    + '(passthru)' # Pass-through options
-    '(--vimgrep)--passthru[show both matching and non-matching lines]'
-    '!(--vimgrep)--passthrough'
-
-    + '(pcre2)' # PCRE2 options
-    {-P,--pcre2}'[enable matching with PCRE2]'
-    $no'(pcre2-unicode)--no-pcre2[disable matching with PCRE2]'
-
-    + '(pcre2-unicode)' # PCRE2 Unicode options
-    $no'(--no-pcre2 --no-pcre2-unicode)--pcre2-unicode[enable PCRE2 Unicode mode (with -P)]'
-    '(--no-pcre2 --pcre2-unicode)--no-pcre2-unicode[disable PCRE2 Unicode mode (with -P)]'
-
-    + '(pre)' # Preprocessing options
-    '(-z --search-zip)--pre=[specify preprocessor utility]:preprocessor utility:_command_names -e'
-    $no'--no-pre[disable preprocessor utility]'
-
-    + pre-glob # Preprocessing glob options
-    '*--pre-glob[include/exclude files for preprocessing with --pre]'
-
-    + '(pretty-vimgrep)' # Pretty/vimgrep display options
-    '(heading)'{-p,--pretty}'[alias for --color=always --heading -n]'
-    '(heading passthru)--vimgrep[show results in vim-compatible format]'
-
-    + regexp # Explicit pattern options
-    '(1 file)*'{-e+,--regexp=}'[specify pattern]:pattern'
-
-    + '(replace)' # Replacement options
-    {-r+,--replace=}'[specify string used to replace matches]:replace string'
-
-    + '(sort)' # File-sorting options
-    '(threads)--sort=[sort results in ascending order (disables parallelism)]:sort method:((
-      none\:"no sorting"
-      path\:"sort by file path"
-      modified\:"sort by last modified time"
-      accessed\:"sort by last accessed time"
-      created\:"sort by creation time"
-    ))'
-    '(threads)--sortr=[sort results in descending order (disables parallelism)]:sort method:((
-      none\:"no sorting"
-      path\:"sort by file path"
-      modified\:"sort by last modified time"
-      accessed\:"sort by last accessed time"
-      created\:"sort by creation time"
-    ))'
-    '!(threads)--sort-files[sort results by file path (disables parallelism)]'
-
-    + '(stats)' # Statistics options
-    '(--files file-match)--stats[show search statistics]'
-    $no"--no-stats[don't show search statistics]"
-
-    + '(text)' # Binary-search options
-    {-a,--text}'[search binary files as if they were text]'
-    "--binary[search binary files, don't print binary data]"
-    $no"--no-binary[don't search binary files]"
-    $no"(--null-data)--no-text[don't search binary files as if they were text]"
-
-    + '(threads)' # Thread-count options
-    '(sort)'{-j+,--threads=}'[specify approximate number of threads to use]:number of threads'
-
-    + '(trim)' # Trim options
-    '--trim[trim any ASCII whitespace prefix from each line]'
-    $no"--no-trim[don't trim ASCII whitespace prefix from each line]"
-
-    + type # Type options
-    '*'{-t+,--type=}'[only search files matching specified type]: :_rg_types'
-    '*--type-add=[add new glob for specified file type]: :->typespec'
-    '*--type-clear=[clear globs previously defined for specified file type]: :_rg_types'
-    # This should actually be exclusive with everything but other type options
-    '(: *)--type-list[show all supported file types and their associated globs]'
-    '*'{-T+,--type-not=}"[don't search files matching specified file type]: :_rg_types"
-
-    + '(word-line)' # Whole-word/line match options
-    {-w,--word-regexp}'[only show matches surrounded by word boundaries]'
-    {-x,--line-regexp}'[only show matches surrounded by line boundaries]'
-
-    + '(zip)' # Compression options
-    '(--pre)'{-z,--search-zip}'[search in compressed files]'
-    $no"--no-search-zip[don't search in compressed files]"
-
-    + misc # Other options — no need to separate these at the moment
-    '(-b --byte-offset)'{-b,--byte-offset}'[show 0-based byte offset for each matching line]'
-    '--color=[specify when to use colors in output]:when:((
-      never\:"never use colors"
-      auto\:"use colors or not based on stdout, TERM, etc."
-      always\:"always use colors"
-      ansi\:"always use ANSI colors (even on Windows)"
-    ))'
-    '*--colors=[specify color and style settings]: :->colorspec'
-    '--context-separator=[specify string used to separate non-continuous context lines in output]:separator'
-    '--debug[show debug messages]'
-    '--dfa-size-limit=[specify upper size limit of generated DFA]:DFA size (bytes)'
-    "(1 stats)--files[show each file that would be searched (but don't search)]"
-    '*--ignore-file=[specify additional ignore file]:ignore file:_files'
-    '(-v --invert-match)'{-v,--invert-match}'[invert matching]'
-    '(-M --max-columns)'{-M+,--max-columns=}'[specify max length of lines to print]:number of bytes'
-    '(-m --max-count)'{-m+,--max-count=}'[specify max number of matches per file]:number of matches'
-    '--max-filesize=[specify size above which files should be ignored]:file size (bytes)'
-    "--no-config[don't load configuration files]"
-    '(-0 --null)'{-0,--null}'[print NUL byte after file names]'
-    '--path-separator=[specify path separator to use when printing file names]:separator'
-    '(-q --quiet)'{-q,--quiet}'[suppress normal output]'
-    '--regex-size-limit=[specify upper size limit of compiled regex]:regex size (bytes)'
-    '*'{-u,--unrestricted}'[reduce level of "smart" searching]'
-
-    + operand # Operands
-    '(--files --type-list file regexp)1: :_guard "^-*" pattern'
-    '(--type-list)*: :_files'
-  )
-
-  # This is used with test_complete.sh to verify that there are no options
-  # listed in the help output that aren't also defined here
-  [[ $_RG_COMPLETE_LIST_ARGS == (1|t*|y*) ]] && {
-    print -rl - $args
-    return 0
-  }
-
-  # Strip out argument groups where unsupported (see above)
-  [[ $ZSH_VERSION == (4|5.<0-3>)(.*)# ]] &&
-  args=( ${(@)args:#(#i)(+|[a-z0-9][a-z0-9_-]#|\([a-z0-9][a-z0-9_-]#\))} )
-
-  _arguments -C -s -S : $args && ret=0
-
-  case $state in
-    colorspec)
-      if [[ ${IPREFIX#--*=}$PREFIX == [^:]# ]]; then
-        suf=( -qS: )
-        tmp=(
-          'column:specify coloring for column numbers'
-          'line:specify coloring for line numbers'
-          'match:specify coloring for match text'
-          'path:specify coloring for file names'
-        )
-        descr='color/style type'
-      elif [[ ${IPREFIX#--*=}$PREFIX == (column|line|match|path):[^:]# ]]; then
-        suf=( -qS: )
-        tmp=(
-          'none:clear color/style for type'
-          'bg:specify background color'
-          'fg:specify foreground color'
-          'style:specify text style'
-        )
-        descr='color/style attribute'
-      elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:(bg|fg):[^:]# ]]; then
-        tmp=( black blue green red cyan magenta yellow white )
-        descr='color name or r,g,b'
-      elif [[ ${IPREFIX#--*=}$PREFIX == [^:]##:style:[^:]# ]]; then
-        tmp=( {,no}bold {,no}intense {,no}underline )
-        descr='style name'
-      else
-        _message -e colorspec 'no more arguments'
-      fi
-
-      (( $#tmp )) && {
-        compset -P '*:'
-        _describe -t colorspec $descr tmp $suf && ret=0
-      }
-      ;;
-
-    typespec)
-      if compset -P '[^:]##:include:'; then
-        _sequence -s , _rg_types && ret=0
-      # @todo This bit in particular could be better, but it's a little
-      # complex, and attempting to solve it seems to run us up against a crash
-      # bug — zsh # 40362
-      elif compset -P '[^:]##:'; then
-        _message 'glob or include directive' && ret=1
-      elif [[ ! -prefix *:* ]]; then
-        _rg_types -qS : && ret=0
-      fi
-      ;;
-  esac
-
-  return ret
-}
-
-# Complete encodings
-_rg_encodings() {
-  local -a expl
-  local -aU _encodings
-
-  # This is impossible to read, but these encodings rarely if ever change, so it
-  # probably doesn't matter. They are derived from the list given here:
-  # https://encoding.spec.whatwg.org/#concept-encoding-get
-  _encodings=(
-    {{,us-}ascii,arabic,chinese,cyrillic,greek{,8},hebrew,korean}
-    logical visual mac {,cs}macintosh x-mac-{cyrillic,roman,ukrainian}
-    866 ibm{819,866} csibm866
-    big5{,-hkscs} {cn-,cs}big5 x-x-big5
-    cp{819,866,125{0..8}} x-cp125{0..8}
-    csiso2022{jp,kr} csiso8859{6,8}{e,i}
-    csisolatin{{1..6},9} csisolatin{arabic,cyrillic,greek,hebrew}
-    ecma-{114,118} asmo-708 elot_928 sun_eu_greek
-    euc-{jp,kr} x-euc-jp cseuckr cseucpkdfmtjapanese
-    {,x-}gbk csiso58gb231280 gb18030 {,cs}gb2312 gb_2312{,-80} hz-gb-2312
-    iso-2022-{cn,cn-ext,jp,kr}
-    iso8859{,-}{{1..11},13,14,15}
-    iso-8859-{{1..11},{6,8}-{e,i},13,14,15,16} iso_8859-{{1..9},15}
-    iso_8859-{1,2,6,7}:1987 iso_8859-{3,4,5,8}:1988 iso_8859-9:1989
-    iso-ir-{58,100,101,109,110,126,127,138,144,148,149,157}
-    koi{,8,8-r,8-ru,8-u,8_r} cskoi8r
-    ks_c_5601-{1987,1989} ksc{,_}5691 csksc56011987
-    latin{1..6} l{{1..6},9}
-    shift{-,_}jis csshiftjis {,x-}sjis ms_kanji ms932
-    utf{,-}8 utf-16{,be,le} unicode-1-1-utf-8
-    windows-{31j,874,949,125{0..8}} dos-874 tis-620 ansi_x3.4-1968
-    x-user-defined auto none
-  )
-
-  _wanted encodings expl encoding compadd -a "$@" - _encodings
-}
-
-# Complete file types
-_rg_types() {
-  local -a expl
-  local -aU _types
-
-  _types=( ${(@)${(f)"$( _call_program types rg --type-list )"}%%:*} )
-
-  _wanted types expl 'file type' compadd -a "$@" - _types
-}
-
-_rg "$@"
-
-################################################################################
-# ZSH COMPLETION REFERENCE
-#
-# For the convenience of developers who aren't especially familiar with zsh
-# completion functions, a brief reference guide follows. This is in no way
-# comprehensive; it covers just enough of the basic structure, syntax, and
-# conventions to help someone make simple changes like adding new options. For
-# more complete documentation regarding zsh completion functions, please see the
-# following:
-#
-# * http://zsh.sourceforge.net/Doc/Release/Completion-System.html
-# * https://github.com/zsh-users/zsh/blob/master/Etc/completion-style-guide
-#
-# OVERVIEW
-#
-# Most zsh completion functions are defined in terms of `_arguments`, which is a
-# shell function that takes a series of argument specifications. The specs for
-# `rg` are stored in an array, which is common for more complex functions; the
-# elements of the array are passed to `_arguments` on invocation.
-#
-# ARGUMENT-SPECIFICATION SYNTAX
-#
-# The following is a contrived example of the argument specs for a simple tool:
-#
-#   '(: * -)'{-h,--help}'[display help information]'
-#   '(-q -v --quiet --verbose)'{-q,--quiet}'[decrease output verbosity]'
-#   '!(-q -v --quiet --verbose)--silent'
-#   '(-q -v --quiet --verbose)'{-v,--verbose}'[increase output verbosity]'
-#   '--color=[specify when to use colors]:when:(always never auto)'
-#   '*:example file:_files'
-#
-# Although there may appear to be six specs here, there are actually nine; we
-# use brace expansion to combine specs for options that go by multiple names,
-# like `-q` and `--quiet`. This is customary, and ties in with the fact that zsh
-# merges completion possibilities together when they have the same description.
-#
-# The first line defines the option `-h`/`--help`. With most tools, it isn't
-# useful to complete anything after `--help` because it effectively overrides
-# all others; the `(: * -)` at the beginning of the spec tells zsh not to
-# complete any other operands (`:` and `*`) or options (`-`) after this one has
-# been used. The `[...]` at the end associates a description with `-h`/`--help`;
-# as mentioned, zsh will see the identical descriptions and merge these options
-# together when offering completion possibilities.
-#
-# The next line defines `-q`/`--quiet`. Here we don't want to suppress further
-# completions entirely, but we don't want to offer `-q` if `--quiet` has been
-# given (since they do the same thing), nor do we want to offer `-v` (since it
-# doesn't make sense to be quiet and verbose at the same time). We don't need to
-# tell zsh not to offer `--quiet` a second time, since that's the default
-# behaviour, but since this line expands to two specs describing `-q` *and*
-# `--quiet` we do need to explicitly list all of them here.
-#
-# The next line defines a hidden option `--silent` — maybe it's a deprecated
-# synonym for `--quiet`. The leading `!` indicates that zsh shouldn't offer this
-# option during completion. The benefit of providing a spec for an option that
-# shouldn't be completed is that, if someone *does* use it, we can correctly
-# suppress completion of other options afterwards.
-#
-# The next line defines `-v`/`--verbose`; this works just like `-q`/`--quiet`.
-#
-# The next line defines `--color`. In this example, `--color` doesn't have a
-# corresponding short option, so we don't need to use brace expansion. Further,
-# there are no other options it's exclusive with (just itself), so we don't need
-# to define those at the beginning. However, it does take a mandatory argument.
-# The `=` at the end of `--color=` indicates that the argument may appear either
-# like `--color always` or like `--color=always`; this is how most GNU-style
-# command-line tools work. The corresponding short option would normally use `+`
-# — for example, `-c+` would allow either `-c always` or `-calways`. For this
-# option, the arguments are known ahead of time, so we can simply list them in
-# parentheses at the end (`when` is used as the description for the argument).
-#
-# The last line defines an operand (a non-option argument). In this example, the
-# operand can be used any number of times (the leading `*`), and it should be a
-# file path, so we tell zsh to call the `_files` function to complete it. The
-# `example file` in the middle is the description to use for this operand; we
-# could use a space instead to accept the default provided by `_files`.
-#
-# GROUPING ARGUMENT SPECIFICATIONS
-#
-# Newer versions of zsh support grouping argument specs together. All specs
-# following a `+` and then a group name are considered to be members of the
-# named group. Grouping is useful mostly for organisational purposes; it makes
-# the relationship between different options more obvious, and makes it easier
-# to specify exclusions.
-#
-# We could rewrite our example above using grouping as follows:
-#
-#   '(: * -)'{-h,--help}'[display help information]'
-#   '--color=[specify when to use colors]:when:(always never auto)'
-#   '*:example file:_files'
-#   + '(verbosity)'
-#   {-q,--quiet}'[decrease output verbosity]'
-#   '!--silent'
-#   {-v,--verbose}'[increase output verbosity]'
-#
-# Here we take advantage of a useful feature of spec grouping — when the group
-# name is surrounded by parentheses, as in `(verbosity)`, it tells zsh that all
-# of the options in that group are exclusive with each other. As a result, we
-# don't need to manually list out the exclusions at the beginning of each
-# option.
-#
-# Groups can also be referred to by name in other argument specs; for example:
-#
-#   '(xyz)--aaa' '*: :_files'
-#   + xyz --xxx --yyy --zzz
-#
-# Here we use the group name `xyz` to tell zsh that `--xxx`, `--yyy`, and
-# `--zzz` are not to be completed after `--aaa`. This makes the exclusion list
-# much more compact and reusable.
-#
-# CONVENTIONS
-#
-# zsh completion functions generally adhere to the following conventions:
-#
-# * Use two spaces for indentation
-# * Combine specs for options with different names using brace expansion
-# * In combined specs, list the short option first (as in `{-a,--text}`)
-# * Use `+` or `=` as described above for options that take arguments
-# * Provide a description for all options, option-arguments, and operands
-# * Capitalise/punctuate argument descriptions as phrases, not complete
-#   sentences — 'display help information', never 'Display help information.'
-#   (but still capitalise acronyms and proper names)
-# * Write argument descriptions as verb phrases — 'display x', 'enable y',
-#   'use z'
-# * Word descriptions to make it clear when an option expects an argument;
-#   usually this is done with the word 'specify', as in 'specify x' or
-#   'use specified x')
-# * Write argument descriptions as tersely as possible — for example, articles
-#   like 'a' and 'the' should be omitted unless it would be confusing
-#
-# Other conventions currently used by this function:
-#
-# * Order argument specs alphabetically by group name, then option name
-# * Group options that are directly related, mutually exclusive, or frequently
-#   referenced by other argument specs
-# * Use only characters in the set [a-z0-9_-] in group names
-# * Order exclusion lists as follows: short options, long options, groups
-# * Use American English in descriptions
-# * Use 'don't' in descriptions instead of 'do not'
-# * Word descriptions for related options as similarly as possible. For example,
-#   `--foo[enable foo]` and `--no-foo[disable foo]`, or `--foo[use foo]` and
-#   `--no-foo[don't use foo]`
-# * Word descriptions to make it clear when an option only makes sense with
-#   another option, usually by adding '(with -x)' to the end
-# * Don't quote strings or variables unnecessarily. When quotes are required,
-#   prefer single-quotes to double-quotes
-# * Prefix option specs with `$no` when the option serves only to negate the
-#   behaviour of another option that must be provided explicitly by the user.
-#   This prevents rarely used options from cluttering up the completion menu
-################################################################################
-
-# ------------------------------------------------------------------------------
-# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#     * Redistributions of source code must retain the above copyright
-#       notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above copyright
-#       notice, this list of conditions and the following disclaimer in the
-#       documentation and/or other materials provided with the distribution.
-#     * Neither the name of the zsh-users nor the
-#       names of its contributors may be used to endorse or promote products
-#       derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# ------------------------------------------------------------------------------
-# Description
-# -----------
-#
-#  Completion script for ripgrep
-#
-# ------------------------------------------------------------------------------
-# Authors
-# -------
-#
-#  * arcizan <ghostrevery@gmail.com>
-#  * MaskRay <i@maskray.me>
-#
-# ------------------------------------------------------------------------------
-
-# Local Variables:
-# mode: shell-script
-# coding: utf-8-unix
-# indent-tabs-mode: nil
-# sh-indentation: 2
-# sh-basic-offset: 2
-# End:
-# vim: ft=zsh sw=2 ts=2 et
users/vincent/core/zsh/_tkn
@@ -1,518 +0,0 @@
-#compdef _tkn tkn
-
-
-
-
-function _tkn {
-  local -a commands
-
-  _arguments -C \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "clustertask:Manage clustertasks"
-      "completion:Prints shell completion scripts"
-      "help:Help about any command"
-      "pipeline:Manage pipelines"
-      "pipelinerun:Manage pipelineruns"
-      "resource:Manage pipeline resources"
-      "task:Manage tasks"
-      "taskrun:Manage taskruns"
-      "version:Prints version information"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  clustertask)
-    _tkn_clustertask
-    ;;
-  completion)
-    _tkn_completion
-    ;;
-  help)
-    _tkn_help
-    ;;
-  pipeline)
-    _tkn_pipeline
-    ;;
-  pipelinerun)
-    _tkn_pipelinerun
-    ;;
-  resource)
-    _tkn_resource
-    ;;
-  task)
-    _tkn_task
-    ;;
-  taskrun)
-    _tkn_taskrun
-    ;;
-  version)
-    _tkn_version
-    ;;
-  esac
-}
-
-
-function _tkn_clustertask {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "delete:Delete a clustertask resource in a cluster"
-      "list:Lists clustertasks in a namespace"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  delete)
-    _tkn_clustertask_delete
-    ;;
-  list)
-    _tkn_clustertask_list
-    ;;
-  esac
-}
-
-function _tkn_clustertask_delete {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_clustertasks'
-}
-
-function _tkn_clustertask_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_completion {
-  _arguments \
-    '(-h --help)'{-h,--help}'[help for completion]' \
-    '1: :("bash" "zsh")'
-}
-
-function _tkn_help {
-  _arguments
-}
-
-
-function _tkn_pipeline {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "delete:Delete a pipeline in a namespace"
-      "describe:Describes a pipeline in a namespace"
-      "list:Lists pipelines in a namespace"
-      "logs:Show pipeline logs"
-      "start:Start pipelines"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  delete)
-    _tkn_pipeline_delete
-    ;;
-  describe)
-    _tkn_pipeline_describe
-    ;;
-  list)
-    _tkn_pipeline_list
-    ;;
-  logs)
-    _tkn_pipeline_logs
-    ;;
-  start)
-    _tkn_pipeline_start
-    ;;
-  esac
-}
-
-function _tkn_pipeline_delete {
-  _arguments \
-    '(-a --all)'{-a,--all}'[Whether to delete related resources (pipelineruns) (default: false)]' \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_describe {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_pipeline_logs {
-  _arguments \
-    '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
-    '(-f --follow)'{-f,--follow}'[stream live logs]' \
-    '(-l --last)'{-l,--last}'[show logs for last run]' \
-    '(-L --limit)'{-L,--limit}'[lists number of pipelineruns]:()' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipeline'
-}
-
-function _tkn_pipeline_start {
-  _arguments \
-    '(-l --last)'{-l,--last}'[re-run the pipeline using last pipelinerun values]' \
-    '(*-p *--param)'{\*-p,\*--param}'[pass the param as key=value]:()' \
-    '(*-r *--resource)'{\*-r,\*--resource}'[pass the resource name and ref as name=ref]:()' \
-    '(-s --serviceaccount)'{-s,--serviceaccount}'[pass the serviceaccount name]: :__kubectl_get_serviceaccount' \
-    '*--task-serviceaccount[pass the service account corresponding to the task]: :__kubectl_get_serviceaccount' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipeline'
-}
-
-
-function _tkn_pipelinerun {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "cancel:Cancel the PipelineRun"
-      "delete:Delete a pipelinerun in a namespace"
-      "describe:Describe a pipelinerun in a namespace"
-      "list:Lists pipelineruns in a namespace"
-      "logs:Show the logs of PipelineRun"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  cancel)
-    _tkn_pipelinerun_cancel
-    ;;
-  delete)
-    _tkn_pipelinerun_delete
-    ;;
-  describe)
-    _tkn_pipelinerun_describe
-    ;;
-  list)
-    _tkn_pipelinerun_list
-    ;;
-  logs)
-    _tkn_pipelinerun_logs
-    ;;
-  esac
-}
-
-function _tkn_pipelinerun_cancel {
-  _arguments \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_delete {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_describe {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelinerun'
-}
-
-function _tkn_pipelinerun_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-l --limit)'{-l,--limit}'[limit pipelineruns listed (default: return all pipelineruns)]:()' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_pipelinerun_logs {
-  _arguments \
-    '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
-    '(-f --follow)'{-f,--follow}'[stream live logs]' \
-    '(*-t *--only-tasks)'{\*-t,\*--only-tasks}'[show logs for mentioned tasks only]:()' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelinerun'
-}
-
-
-function _tkn_resource {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "delete:Delete a pipeline resource in a namespace"
-      "describe:Describes a pipeline resource in a namespace"
-      "list:Lists pipeline resources in a namespace"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  delete)
-    _tkn_resource_delete
-    ;;
-  describe)
-    _tkn_resource_describe
-    ;;
-  list)
-    _tkn_resource_list
-    ;;
-  esac
-}
-
-function _tkn_resource_delete {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelineresource'
-}
-
-function _tkn_resource_describe {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_pipelineresource'
-}
-
-function _tkn_resource_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-t --type)'{-t,--type}'[Pipeline resource type]:()' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-
-function _tkn_task {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "delete:Delete a task resource in a namespace"
-      "list:Lists tasks in a namespace"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  delete)
-    _tkn_task_delete
-    ;;
-  list)
-    _tkn_task_list
-    ;;
-  esac
-}
-
-function _tkn_task_delete {
-  _arguments \
-    '(-a --all)'{-a,--all}'[Whether to delete related resources (taskruns) (default: false)]' \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_task'
-}
-
-function _tkn_task_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-
-function _tkn_taskrun {
-  local -a commands
-
-  _arguments -C \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    "1: :->cmnds" \
-    "*::arg:->args"
-
-  case $state in
-  cmnds)
-    commands=(
-      "delete:Delete a taskrun in a namespace"
-      "list:Lists taskruns in a namespace"
-      "logs:Show taskruns logs"
-    )
-    _describe "command" commands
-    ;;
-  esac
-
-  case "$words[1]" in
-  delete)
-    _tkn_taskrun_delete
-    ;;
-  list)
-    _tkn_taskrun_list
-    ;;
-  logs)
-    _tkn_taskrun_logs
-    ;;
-  esac
-}
-
-function _tkn_taskrun_delete {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-f --force)'{-f,--force}'[Whether to force deletion (default: false)]' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_taskrun'
-}
-
-function _tkn_taskrun_list {
-  _arguments \
-    '--allow-missing-template-keys[If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.]' \
-    '(-l --limit)'{-l,--limit}'[limit taskruns listed (default: return all taskruns)]:()' \
-    '(-o --output)'{-o,--output}'[Output format. One of: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file.]:()' \
-    '--template[Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates \[http://golang.org/pkg/text/template/#pkg-overview\].]:filename:_files' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace'
-}
-
-function _tkn_taskrun_logs {
-  _arguments \
-    '(-a --all)'{-a,--all}'[show all logs including init steps injected by tekton]' \
-    '(-f --follow)'{-f,--follow}'[stream live logs]' \
-    '(-k --kubeconfig)'{-k,--kubeconfig}'[kubectl config file (default: $HOME/.kube/config)]: :_filedir' \
-    '(-n --namespace)'{-n,--namespace}'[namespace to use (default: from $KUBECONFIG)]: :__kubectl_get_namespace' \
-    '1: :__tkn_get_taskrun'
-}
-
-function _tkn_version {
-  _arguments \
-    '(-c --check)'{-c,--check}'[check if a newer version is available]'
-}
-
-
-# Custom function for Completions
-function __tkn_get_object() {
-    local type=$1
-    local util=$2
-    local template begin tkn_out
-    template="{{ range .items  }}{{ .metadata.name }} {{ end }}"
-
-    if [[ ${util} == "kubectl" ]];then
-        tkn_out=($(kubectl get ${type} -o template --template="${template}" 2>/dev/null))
-    elif [[ ${util} == "tkn" ]];then
-        tkn_out=($(tkn ${type} ls -o template --template="${template}" 2>/dev/null))
-    fi
-
-    if [[ -n ${tkn_out} ]]; then
-        [[ -n ${BASH_VERSION} ]] && COMPREPLY=( $( compgen -W "${tkn_out}" -- "$cur" ) )
-        [[ -n ${ZSH_VERSION} ]] && compadd ${tkn_out}
-    fi
-}
-
-function __kubectl_get_namespace() { __tkn_get_object namespace kubectl ;}
-function __kubectl_get_serviceaccount() { __tkn_get_object serviceaccount kubectl ;}
-function __tkn_get_pipeline() { __tkn_get_object pipeline tkn ;}
-function __tkn_get_pipelinerun() { __tkn_get_object pipelinerun tkn ;}
-function __tkn_get_taskrun() { __tkn_get_object taskrun tkn ;}
-function __tkn_get_pipelineresource() { __tkn_get_object resource tkn ;}
-function __tkn_get_clustertasks() { __tkn_get_object clustertasks tkn ;}
users/vincent/core/zsh/auto-expanding-aliases.zsh
@@ -1,127 +0,0 @@
-# Definition of abbrev-alias for auto-expanding aliases
-# Autoexpand some aliases
-typeset -ga _vbe_abbrevations
-abbrev-alias() {
-    alias $1
-    _vbe_abbrevations+=(${1%%\=*})
-}
-_vbe_zle-autoexpand() {
-    local -a words; words=(${(z)LBUFFER})
-    if (( ${#_vbe_abbrevations[(r)${words[-1]}]} )); then
-        zle _expand_alias
-    fi
-    zle magic-space
-}
-zle -N _vbe_zle-autoexpand
-bindkey -M emacs " " _vbe_zle-autoexpand
-bindkey -M emacs "^ " magic-space
-bindkey -M isearch " " magic-space
-
-# Correct common typos
-(( $+commands[git] )) && abbrev-alias gti=git
-(( $+commands[grep] )) && abbrev-alias grpe=grep
-(( $+commands[sudo] )) && abbrev-alias suod=sudo
-(( $+commands[ssh] )) && abbrev-alias shs=ssh
-
-# Save a few keystrokes
-(( $+commands[git] )) && abbrev-alias gls="git ls-files"
-(( $+commands[ip] )) && {
-  abbrev-alias ip6='ip -6'
-  abbrev-alias ipb='ip -brief'
-}
-
-abbrev-alias tailf="tail -F"
-
-(( $+commands[mpv] )) && abbrev-alias mpva="mpv --no-video"
-
-# System init-related aliases
-() {
-    local cmd
-    local -a cmds
-    cmds=(start stop reload restart status)
-
-    if [[ -d /run/systemd/system ]]; then
-        # systemd
-        for cmd ($cmds) {
-            abbrev-alias $cmd="${(%):-%(#..sudo )}systemctl $cmd"
-            abbrev-alias u$cmd="systemctl --user $cmd"
-        }
-            else
-                # generic service
-                for cmd ($cmds) {
-                    function $cmd() {
-                        name=$1 ; shift
-                        ${(%):-%(#..sudo)} service $name $0 "$@"
-                    }
-                    (( $+functions[compdef] )) && compdef _services $cmd
-                }
-                fi
-}
-
-# grep aliases
-() {
-    # If GNU grep is available, use it
-    local grep=grep
-    (( $+commands[ggrep] )) && grep=ggrep # GNU grep
-
-    # Check if grep supports colors
-    local colors="--color=auto"
-    $grep -q $colors . <<< yes 2> /dev/null || colors=""
-
-    # Declare aliases
-    alias grep="command ${grep} ${colors}"
-    abbrev-alias rgrep="grep -r"
-    abbrev-alias egrep="grep -E"
-    abbrev-alias fgrep="grep -F"
-    # --color=auto doesn't work. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=792135
-    (( $+commands[zgrep] )) && alias zgrep="GREP=${grep} command zgrep ${colors}"
-}
-
-# (( $+commands[emacsclient] * $+commands[git] )) && magit() {
-#         local root=$(git rev-parse --show-toplevel)
-#         [[ -n $root ]] || return
-#         emacsclient -e "(progn
-#                     (select-frame-set-input-focus
-#                       (window-frame
-#                         (get-buffer-window
-#                            (magit-status \"${root}\"))))
-#                     (delete-other-windows))"
-# }
-
-(( $+commands[nix] )) && nixpkgs() {
-    cmd=$1
-    shift
-    nix run nixpkgs\#${cmd} -- "$@"
-}
-
-v() {
-    case $(file --brief --mime-type $1 2> /dev/null) in
-        image/svg+xml) ;;
-        image/*)
-            (( $+commands[nsxiv] )) && ${I3SOCK+i3-tabbed} nsxiv $1
-            return
-            ;;
-        video/*)
-            (( $+commands[mpv] )) && ${I3SOCK+i3-tabbed} mpv --no-fs $1
-            return
-    esac
-    if (( $+commands[bat] )); then
-        if (( ! $# )); then
-            gzip -cdfq | bat
-        else
-            for f in "$@"; do
-                gzip -cdfq -- $f | bat --file-name ${f%.gz}
-            done
-        fi
-    elif (( $+commands[less] )); then
-        gzip -cdfq -- "$@" | less -FX
-    elif (( $+commands[zmore] )); then
-        zmore "$@"
-    elif (( $+commands[more] )); then
-        gzip -cdfq -- "$@" | more
-    else
-        gzip -cdfq -- "$@"
-    fi
-}
-
-function clean() {}
users/vincent/core/zsh/completion.zsh
@@ -1,85 +0,0 @@
-zstyle ':completion:*' menu select
-# Use caching to make completion for commands such as dpkg and apt usable.
-zstyle ':completion::complete:*' use-cache on
-zstyle ':completion::complete:*' cache-path "$ZSH_CACHE/zcompcache"
-
-# Case-insensitive (all), partial-word, and then substring completion.
-zstyle ':completion:*' matcher-list '' \
-       'm:{a-z\-}={A-Z\_}' \
-       'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
-       'r:[[:ascii:]]||[[:ascii:]]=** r:|=* m:{a-z\-}={A-Z\_}'
-
-# Group matches and describe.
-zstyle ':completion:*:*:*:*:*' menu select
-zstyle ':completion:*:matches' group 'yes'
-zstyle ':completion:*:options' description 'yes'
-zstyle ':completion:*:options' auto-description '%d'
-zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
-zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
-zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
-zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
-zstyle ':completion:*:default' list-prompt '%S%M matches%s'
-zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
-zstyle ':completion:*' group-name ''
-zstyle ':completion:*' verbose yes
-
-# Fuzzy match mistyped completions.
-zstyle ':completion:*' completer _complete _list _match _approximate
-zstyle ':completion:*:match:*' original only
-zstyle ':completion:*:approximate:*' max-errors 1 numeric
-
-# Increase the number of errors based on the length of the typed word.
-zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)'
-
-# Don't complete unavailable commands.
-zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))'
-
-# Array completion element sorting.
-zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters
-
-# Directories
-zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
-zstyle ':completion:*:*:cd:*' ignore-parents parent pwd
-zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories
-zstyle ':completion:*:*:cd:*:directory-stack' menu yes select
-zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand'
-zstyle ':completion:*' squeeze-slashes true
-zstyle ':completion:*' special-dirs true
-# Environmental Variables
-zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-}
-
-# Populate hostname completion.
-zstyle -e ':completion:*:hosts' hosts 'reply=(
-  ${=${=${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) 2>/dev/null)"}%%[#| ]*}//\]:[0-9]*/ }//,/ }//\[/ }
-  ${=${${${${(@M)${(f)"$(cat ~/.ssh/config 2>/dev/null)"}:#Host *}#Host }:#*\**}:#*\?*}}
-)'
-
-# Don't complete uninteresting users...
-zstyle ':completion:*:*:*:users' ignored-patterns \
-  adm amanda apache avahi beaglidx bin cacti canna clamav daemon \
-  dbus distcache dovecot fax ftp games gdm gkrellmd gopher \
-  hacluster haldaemon halt hsqldb ident junkbust ldap lp mail \
-  mailman mailnull mldonkey mysql nagios \
-  named netdump news nfsnobody nobody nscd ntp nut nx openvpn \
-  operator pcap postfix postgres privoxy pulse pvm quagga radvd \
-  rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs '_*'
-
-# ... unless we really want to.
-zstyle '*' single-ignored show
-
-# Ignore multiple entries.
-zstyle ':completion:*:(rm|kill|diff):*' ignore-line other
-zstyle ':completion:*:rm:*' file-patterns '*:all-files'
-
-# Man
-zstyle ':completion:*:manuals' separate-sections true
-zstyle ':completion:*:manuals.(^1*)' insert-sections true
-
-# SSH/SCP/RSYNC
-zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
-zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
-zstyle ':completion:*:ssh:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
-zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
-zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
users/vincent/core/zsh/j
@@ -1,30 +0,0 @@
-local root=~/src/
-local res results args
-
-while getopts "np" opt; do
-  if [[ $opt = "?" ]]; then
-    print -r -- "$myname: unrecognized option: -$OPTARG" >&2
-    return 1
-  fi
-  eval "opt_$opt=\${OPTARG:--\$opt}"
-done
-(( OPTIND > 1 )) && shift $(( OPTIND - 1 ))
-
-local fnd=$1
-type -f zshz 2>/dev/null >/dev/null || opt_n=true
-
-if [[ -n ${fnd} ]];then
-
-    [[ -z ${opt_n} ]] && {
-        local zz=$(zshz -e ${fnd})
-        [[ -n ${zz} ]] && { echo "ZSHZ: ${zz}"; [[ -z ${opt_p} ]] && cd ${zz}; return;}
-    }
-
-    local results=($(fd -d 3 -t d . ${root}|egrep -i "${fnd}"))
-    [[ ${#results} == 1 ]] && { echo ${results}; [[ -z ${opt_p} ]] && cd ${results} ; return;}
-    [[ ${#results} == 0 ]] && { echo "No results found for ${fnd}"; return 1;}
-    args="-q ${fnd}"
-fi
-
-res=$(fd -d 3 -t d . ${root}|sed "s,${root},,"|fzf --height 50% --border ${args})
-[[ -n ${res} ]] && {echo ${root}${res}; [[ -z ${opt_p} ]]  && cd ${root}${res} ; }
users/vincent/core/zsh/prompt.zsh
@@ -1,907 +0,0 @@
-# Config for Powerlevel10k with lean prompt style. Type `p10k configure` to generate
-# your own config based on it.
-#
-# Tip: Looking for a nice color? Here's a one-liner to print colormap.
-#
-#   for i in {0..255}; do print -Pn "%${i}F${(l:3::0:)i}%f " ${${(M)$((i%8)):#7}:+$'\n'}; done
-
-# Temporarily change options.
-'builtin' 'local' '-a' 'p10k_config_opts'
-[[ ! -o 'aliases'         ]] || p10k_config_opts+=('aliases')
-[[ ! -o 'sh_glob'         ]] || p10k_config_opts+=('sh_glob')
-[[ ! -o 'no_brace_expand' ]] || p10k_config_opts+=('no_brace_expand')
-'builtin' 'setopt' 'no_aliases' 'no_sh_glob' 'brace_expand'
-
-() {
-  emulate -L zsh
-  setopt no_unset extended_glob
-  zmodload zsh/langinfo
-  if [[ ${langinfo[CODESET]:-} != (utf|UTF)(-|)8 ]]; then
-    local LC_ALL=${${(@M)$(locale -a):#*.(utf|UTF)(-|)8}[1]:-en_US.UTF-8}
-  fi
-
-  # Unset all configuration options. This allows you to apply configiguration changes without
-  # restarting zsh. Edit ~/.p10k.zsh and type `source ~/.p10k.zsh`.
-  unset -m 'POWERLEVEL9K_*'
-
-  # The list of segments shown on the left. Fill it with the most important segments.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(
-      # =========================[ Line #1 ]=========================
-      # os_icon               # os identifier
-      status                  # exit code of the last command
-      context                 # user@hostname
-      dir                     # current directory
-      vcs                     # git status
-      go_version            # go version (https://golang.org)
-      rust_version          # rustc version (https://www.rust-lang.org)
-      background_jobs         # presence of background jobs
-      direnv                  # direnv status (https://direnv.net/)
-      virtualenv              # python virtual environment (https://docs.python.org/3/library/venv.html)
-      in_nix_shell
-      docker_host
-      kubecontext             # current kubernetes context (https://kubernetes.io/)
-      prompt_char             # prompt symbol
-  )
-
-  # The list of segments shown on the right. Fill it with less important segments.
-  # Right prompt on the last prompt line (where you are typing your commands) gets
-  # automatically hidden when the input line reaches it. Right prompt above the
-  # last prompt line gets hidden if it would overlap with left prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(
-      # =========================[ Line #1 ]=========================
-      # command_execution_time  # duration of the last command
-      #anaconda                # conda environment (https://conda.io/)
-      # pyenv                   # python environment (https://github.com/pyenv/pyenv)
-      #nodenv                  # node.js version from nodenv (https://github.com/nodenv/nodenv)
-      #nvm                     # node.js version from nvm (https://github.com/nvm-sh/nvm)
-      #nodeenv                 # node.js environment (https://github.com/ekalinin/nodeenv)
-      # node_version          # node.js version
-      # dotnet_version        # .NET version (https://dotnet.microsoft.com)
-      #rbenv                   # ruby version from rbenv (https://github.com/rbenv/rbenv)
-      #rvm                     # ruby version from rvm (https://rvm.io)
-      # terraform               # terraform workspace (https://www.terraform.io)
-      #aws                     # aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)
-      # aws_eb_env            # aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/)
-      # azure                 # azure account name (https://docs.microsoft.com/en-us/cli/azure)
-      #nordvpn                 # nordvpn connection status, linux only (https://nordvpn.com/)
-      #ranger                  # ranger shell (https://github.com/ranger/ranger)
-      # vpn_ip                # virtual private network indicator
-      # ram                   # free RAM
-      # load                  # CPU load
-      # time                    # current time
-      # =========================[ Line #2 ]=========================
-      #newline
-      # public_ip             # public IP address
-      # proxy                 # system-wide http/https/ftp proxy
-      #battery                # internal battery
-      # example               # example user-defined segment (see prompt_example function below)
-  )
-
-  # Basic style options that define the overall look of your prompt. You probably don't want to
-  # change them.
-  typeset -g POWERLEVEL9K_BACKGROUND=                            # transparent background
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_{LEFT,RIGHT}_WHITESPACE=  # no surrounding whitespace
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SUBSEGMENT_SEPARATOR=' '  # separate segments with a space
-  typeset -g POWERLEVEL9K_{LEFT,RIGHT}_SEGMENT_SEPARATOR=        # no end-of-line symbol
-
-  # To disable default icons for all segments, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=''.
-  #
-  # To enable default icons for all segments, don't define POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
-  # or set it to '${P9K_VISUAL_IDENTIFIER}'.
-  #
-  # To remove spaces from all default icons, set POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION
-  # to '${P9K_VISUAL_IDENTIFIER// }'. You'll know that you you need this option if you see extra
-  # spaces after icons.
-  #
-  # To enable default icons for one segment (e.g., dir), set
-  # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'.
-  #
-  # To assign a specific icon to one segment (e.g., dir), set
-  # POWERLEVEL9K_DIR_VISUAL_IDENTIFIER_EXPANSION='⭐'.
-  #
-  # To assign a specific icon to a segment in a given state (e.g., dir in state NOT_WRITABLE),
-  # set POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'.
-  #
-  # Note: You can use $'\u2B50' instead of '⭐'. It's especially convenient when specifying
-  # icons that your text editor cannot render. Don't forget to put $ and use single quotes when
-  # defining icons via Unicode codepoints.
-  #
-  # Note: Many default icons cannot be displayed with system fonts. You'll need to install a
-  # capable font to use them. See POWERLEVEL9K_MODE below.
-  typeset -g POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION=
-
-  # This option makes a difference only when default icons are enabled for all or some prompt
-  # segments (see POWERLEVEL9K_VISUAL_IDENTIFIER_EXPANSION above). LOCK_ICON can be printed as
-  # $'\uE0A2', $'\uE138' or $'\uF023' depending on POWERLEVEL9K_MODE. The correct value of this
-  # parameter depends on the provider of the font your terminal is using.
-  #
-  #   Font Provider                    | POWERLEVEL9K_MODE
-  #   ---------------------------------+-------------------
-  #   Powerline                        | powerline
-  #   Font Awesome                     | awesome-fontconfig
-  #   Adobe Source Code Pro            | awesome-fontconfig
-  #   Source Code Pro                  | awesome-fontconfig
-  #   Awesome-Terminal Fonts (regular) | awesome-fontconfig
-  #   Awesome-Terminal Fonts (patched) | awesome-patched
-  #   Nerd Fonts                       | nerdfont-complete
-  #   Other                            | compatible
-  #
-  # If this looks overwhelming, either stick with a preinstalled system font and set
-  # POWERLEVEL9K_MODE=compatible, or install the recommended Powerlevel10k font from
-  # https://github.com/romkatv/powerlevel10k/#recommended-meslo-nerd-font-patched-for-powerlevel10k
-  # and set POWERLEVEL9K_MODE=nerdfont-complete.
-  typeset -g POWERLEVEL9K_MODE=nerdfont-complete
-
-  # When set to true, icons appear before content on both sides of the prompt. When set
-  # to false, icons go after content. If empty or not set, icons go before content in the left
-  # prompt and after content in the right prompt.
-  #
-  # You can also override it for a specific segment:
-  #
-  #   POWERLEVEL9K_STATUS_ICON_BEFORE_CONTENT=false
-  #
-  # Or for a specific segment in specific state:
-  #
-  #   POWERLEVEL9K_DIR_NOT_WRITABLE_ICON_BEFORE_CONTENT=false
-  typeset -g POWERLEVEL9K_ICON_BEFORE_CONTENT=true
-
-  # Add an empty line before each prompt.
-  typeset -g POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
-
-  # Connect left prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_PREFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX=
-  # Connect right prompt lines with these symbols.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_SUFFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_NEWLINE_PROMPT_SUFFIX=
-  typeset -g POWERLEVEL9K_MULTILINE_LAST_PROMPT_SUFFIX=
-
-  # The left end of left prompt.
-  typeset -g POWERLEVEL9K_LEFT_PROMPT_FIRST_SEGMENT_START_SYMBOL=
-  # The right end of right prompt.
-  typeset -g POWERLEVEL9K_RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL=
-
-  # Ruler, a.k.a. the horizontal line before each prompt. If you set it to true, you'll
-  # probably want to set POWERLEVEL9K_PROMPT_ADD_NEWLINE=false above and
-  # POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' ' below.
-  typeset -g POWERLEVEL9K_SHOW_RULER=false
-  typeset -g POWERLEVEL9K_RULER_CHAR='─'        # reasonable alternative: '·'
-  typeset -g POWERLEVEL9K_RULER_FOREGROUND=240
-
-  # Filler between left and right prompt on the first prompt line. You can set it to '·' or '─'
-  # to make it easier to see the alignment between left and right prompt and to separate prompt
-  # from command output. It serves the same purpose as ruler (see above) without increasing
-  # the number of prompt lines. You'll probably want to set POWERLEVEL9K_SHOW_RULER=false
-  # if using this. You might also like POWERLEVEL9K_PROMPT_ADD_NEWLINE=false for more compact
-  # prompt.
-  typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR=' '
-  if [[ $POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_CHAR != ' ' ]]; then
-    # The color of the filler.
-    typeset -g POWERLEVEL9K_MULTILINE_FIRST_PROMPT_GAP_FOREGROUND=240
-    # Add a space between the end of left prompt and the filler.
-    typeset -g POWERLEVEL9K_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=' '
-    # Add a space between the filler and the start of right prompt.
-    typeset -g POWERLEVEL9K_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL=' '
-    # Start filler from the edge of the screen if there are no left segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_LEFT_PROMPT_FIRST_SEGMENT_END_SYMBOL='%{%}'
-    # End filler on the edge of the screen if there are no right segments on the first line.
-    typeset -g POWERLEVEL9K_EMPTY_LINE_RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL='%{%}'
-  fi
-
-  #################################[ os_icon: os identifier ]##################################
-  # OS identifier color.
-  typeset -g POWERLEVEL9K_OS_ICON_FOREGROUND=
-  # Make the icon bold.
-  typeset -g POWERLEVEL9K_OS_ICON_CONTENT_EXPANSION='%B${P9K_CONTENT}'
-
-  ################################[ prompt_char: prompt symbol ]################################
-  # Green prompt symbol if the last command succeeded.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OK_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=76
-  # Red prompt symbol if the last command failed.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_ERROR_{VIINS,VICMD,VIVIS,VIOWR}_FOREGROUND=196
-  # Default prompt symbol.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIINS_CONTENT_EXPANSION='$'
-  # Prompt symbol in command vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VICMD_CONTENT_EXPANSION='❮'
-  # Prompt symbol in visual vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIVIS_CONTENT_EXPANSION='Ⅴ'
-  # Prompt symbol in overwrite vi mode.
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_{OK,ERROR}_VIOWR_CONTENT_EXPANSION='▶'
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_OVERWRITE_STATE=true
-  typeset -g POWERLEVEL9K_PROMPT_CHAR_LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL=''
-
-  ##################################[ dir: current directory ]##################################
-  # Default current directory color.
-  typeset -g POWERLEVEL9K_DIR_FOREGROUND=31
-  # If directory is too long, shorten some of its segments to the shortest possible unique
-  # prefix. The shortened directory can be tab-completed to the original.
-  typeset -g POWERLEVEL9K_SHORTEN_STRATEGY=truncate_from_right # truncate_to_unique
-  # typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
-  # Replace removed segment suffixes with this symbol.
-  typeset -g POWERLEVEL9K_SHORTEN_DELIMITER=
-  # Color of the shortened directory segments.
-  typeset -g POWERLEVEL9K_DIR_SHORTENED_FOREGROUND=103
-  # Color of the anchor directory segments. Anchor segments are never shortened. The first
-  # segment is always an anchor.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_FOREGROUND=39
-  # Display anchor directory segments in bold.
-  typeset -g POWERLEVEL9K_DIR_ANCHOR_BOLD=true
-  # Don't shorten directories that contain any of these files. They are anchors.
-  local anchor_files=(
-    .bzr
-    .citc
-    .git
-    .hg
-    .node-version
-    .python-version
-    .ruby-version
-    .shorten_folder_marker
-    .svn
-    .terraform
-    CVS
-    Cargo.toml
-    composer.json
-    go.mod
-    package.json
-  )
-  typeset -g POWERLEVEL9K_SHORTEN_FOLDER_MARKER="(${(j:|:)anchor_files})"
-  # Don't shorten this many last directory segments. They are anchors.
-  typeset -g POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
-  # Shorten directory if it's longer than this even if there is space for it. The value can
-  # be either absolute (e.g., '80') or a percentage of terminal width (e.g, '50%'). If empty,
-  # directory will be shortened only when prompt doesn't fit or when other parameters demand it
-  # (see POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS and POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT below).
-  typeset -g POWERLEVEL9K_DIR_MAX_LENGTH=80
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least this
-  # many columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS=40
-  # When `dir` segment is on the last prompt line, try to shorten it enough to leave at least
-  # COLUMNS * POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT * 0.01 columns for typing commands.
-  typeset -g POWERLEVEL9K_DIR_MIN_COMMAND_COLUMNS_PCT=50
-  # If set to true, embed a hyperlink into the directory. Useful for quickly
-  # opening a directory in the file manager simply by clicking the link.
-  # Can also be handy when the directory is shortened, as it allows you to see
-  # the full directory that was used in previous commands.
-  typeset -g POWERLEVEL9K_DIR_HYPERLINK=false
-
-  # Enable special styling for non-writable directories.
-  typeset -g POWERLEVEL9K_DIR_SHOW_WRITABLE=true
-  # Show this icon when the current directory is not writable. POWERLEVEL9K_DIR_SHOW_WRITABLE
-  # above must be set to true for this parameter to have effect.
-  # typeset -g POWERLEVEL9K_DIR_NOT_WRITABLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_DIR_PREFIX='%fin '
-
-  # POWERLEVEL9K_DIR_CLASSES allows you to specify custom icons for different directories.
-  # It must be an array with 3 * N elements. Each triplet consists of:
-  #
-  #   1. A pattern against which the current directory is matched. Matching is done with
-  #      extended_glob option enabled.
-  #   2. Directory class for the purpose of styling.
-  #   3. Icon.
-  #
-  # Triplets are tried in order. The first triplet whose pattern matches $PWD wins. If there
-  # are no matches, the directory will have no icon.
-  #
-  # Example:
-  #
-  #   typeset -g POWERLEVEL9K_DIR_CLASSES=(
-  #       '~/work(/*)#'  WORK     '(╯°□°)╯︵ ┻━┻'
-  #       '~(/*)#'       HOME     '⌂'
-  #       '*'            DEFAULT  '')
-  #
-  # With these settings, the current directory in the prompt may look like this:
-  #
-  #   (╯°□°)╯︵ ┻━┻ ~/work/projects/important/urgent
-  #
-  # Or like this:
-  #
-  #   ⌂ ~/best/powerlevel10k
-  #
-  # You can also set different colors for directories of different classes. Remember to override
-  # FOREGROUND, SHORTENED_FOREGROUND and ANCHOR_FOREGROUND for every directory class that you wish
-  # to have its own color.
-  #
-  #   typeset -g POWERLEVEL9K_DIR_WORK_FOREGROUND=31
-  #   typeset -g POWERLEVEL9K_DIR_WORK_SHORTENED_FOREGROUND=103
-  #   typeset -g POWERLEVEL9K_DIR_WORK_ANCHOR_FOREGROUND=39
-  #
-  # typeset -g POWERLEVEL9K_DIR_CLASSES=()
-
-  #####################################[ vcs: git status ]######################################
-  # Branch icon. Set this parameter to '\uF126 ' for the popular Powerline branch icon.
-  typeset -g POWERLEVEL9K_VCS_BRANCH_ICON=
-  POWERLEVEL9K_VCS_BRANCH_ICON=${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}
-
-  # Untracked files icon. It's really a question mark, your font isn't broken.
-  # Change the value of this parameter to show a different icon.
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_ICON='?'
-  POWERLEVEL9K_VCS_UNTRACKED_ICON=${(g::)POWERLEVEL9K_VCS_UNTRACKED_ICON}
-
-  # Formatter for Git status.
-  #
-  # Example output: master ⇣42⇡42 *42 merge ~42 +42 !42 ?42.
-  #
-  # You can edit the function to customize how Git status looks.
-  #
-  # VCS_STATUS_* parameters are set by gitstatus plugin. See reference:
-  # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh.
-  function my_git_formatter() {
-    emulate -L zsh
-
-    if [[ -n $P9K_CONTENT ]]; then
-      # If P9K_CONTENT is not empty, use it. It's either "loading" or from vcs_info (not from
-      # gitstatus plugin). VCS_STATUS_* parameters are not available in this case.
-      typeset -g my_git_format=$P9K_CONTENT
-      return
-    fi
-
-    if (( $1 )); then
-      # Styling for up-to-date Git status.
-      local       meta='%f'     # default foreground
-      local      clean='%76F'   # green foreground
-      local   modified='%178F'  # yellow foreground
-      local  untracked='%39F'   # blue foreground
-      local conflicted='%196F'  # red foreground
-    else
-      # Styling for incomplete and stale Git status.
-      local       meta='%244F'  # grey foreground
-      local      clean='%244F'  # grey foreground
-      local   modified='%244F'  # grey foreground
-      local  untracked='%244F'  # grey foreground
-      local conflicted='%244F'  # grey foreground
-    fi
-
-    local res
-    local where  # branch name, tag or commit
-    if [[ -n $VCS_STATUS_LOCAL_BRANCH ]]; then
-      res+="${clean}${POWERLEVEL9K_VCS_BRANCH_ICON}"
-      where=${(V)VCS_STATUS_LOCAL_BRANCH}
-    elif [[ -n $VCS_STATUS_TAG ]]; then
-      res+="${meta}#"
-      where=${(V)VCS_STATUS_TAG}
-    else
-      res+="${meta}@"
-      where=${VCS_STATUS_COMMIT[1,8]}
-    fi
-
-    # If local branch name or tag is at most 32 characters long, show it in full.
-    # Otherwise show the first 12 … the last 12.
-    (( $#where > 32 )) && where[13,-13]="…"
-    res+="${clean}${where//\%/%%}"  # escape %
-
-    # Show tracking branch name if it differs from local branch.
-    if [[ -n ${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH} ]]; then
-      res+="${meta}:${clean}${(V)VCS_STATUS_REMOTE_BRANCH//\%/%%}"  # escape %
-    fi
-
-    # ⇣42 if behind the remote.
-    (( VCS_STATUS_COMMITS_BEHIND )) && res+=" ${clean}⇣${VCS_STATUS_COMMITS_BEHIND}"
-    # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42.
-    (( VCS_STATUS_COMMITS_AHEAD && !VCS_STATUS_COMMITS_BEHIND )) && res+=" "
-    (( VCS_STATUS_COMMITS_AHEAD  )) && res+="${clean}⇡${VCS_STATUS_COMMITS_AHEAD}"
-    # *42 if have stashes.
-    (( VCS_STATUS_STASHES        )) && res+=" ${clean}*${VCS_STATUS_STASHES}"
-    # 'merge' if the repo is in an unusual state.
-    [[ -n $VCS_STATUS_ACTION     ]] && res+=" ${conflicted}${VCS_STATUS_ACTION}"
-    # ~42 if have merge conflicts.
-    (( VCS_STATUS_NUM_CONFLICTED )) && res+=" ${conflicted}~${VCS_STATUS_NUM_CONFLICTED}"
-    # +42 if have staged changes.
-    (( VCS_STATUS_NUM_STAGED     )) && res+=" ${modified}+${VCS_STATUS_NUM_STAGED}"
-    # !42 if have unstaged changes.
-    (( VCS_STATUS_NUM_UNSTAGED   )) && res+=" ${modified}!${VCS_STATUS_NUM_UNSTAGED}"
-    # ?42 if have untracked files. It's really a question mark, your font isn't broken.
-    # See POWERLEVEL9K_VCS_UNTRACKED_ICON above if you want to use a different icon.
-    # Remove the next line if you don't want to see untracked files at all.
-    (( VCS_STATUS_NUM_UNTRACKED  )) && res+=" ${untracked}${POWERLEVEL9K_VCS_UNTRACKED_ICON}${VCS_STATUS_NUM_UNTRACKED}"
-
-    typeset -g my_git_format=$res
-  }
-  functions -M my_git_formatter 2>/dev/null
-
-  # Disable the default Git status formatting.
-  typeset -g POWERLEVEL9K_VCS_DISABLE_GITSTATUS_FORMATTING=true
-  # Install our own Git status formatter.
-  typeset -g POWERLEVEL9K_VCS_CONTENT_EXPANSION='${$((my_git_formatter(1)))+${my_git_format}}'
-  typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION='${$((my_git_formatter(0)))+${my_git_format}}'
-  # Enable counters for staged, unstaged, etc.
-  typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1
-
-  # Icon color.
-  typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_COLOR=76
-  typeset -g POWERLEVEL9K_VCS_LOADING_VISUAL_IDENTIFIER_COLOR=244
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VCS_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_VCS_PREFIX='%fon '
-
-  # Show status of repositories of these types. You can add svn and/or hg if you are
-  # using them. If you do, your prompt may become slow even when your current directory
-  # isn't in an svn or hg reposotiry.
-  typeset -g POWERLEVEL9K_VCS_BACKENDS=(git)
-
-  # These settings are used for respositories other than Git or when gitstatusd fails and
-  # Powerlevel10k has to fall back to using vcs_info.
-  typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76
-  typeset -g POWERLEVEL9K_VCS_UNTRACKED_FOREGROUND=76
-  typeset -g POWERLEVEL9K_VCS_MODIFIED_FOREGROUND=178
-
-  ##########################[ status: exit code of the last command ]###########################
-  # Enable OK_PIPE, ERROR_PIPE and ERROR_SIGNAL status states to allow us to enable, disable and
-  # style them independently from the regular OK and ERROR state.
-  typeset -g POWERLEVEL9K_STATUS_EXTENDED_STATES=true
-
-  # Status on success. No content, just an icon. No need to show it if prompt_char is enabled as
-  # it will signify success by turning green.
-  typeset -g POWERLEVEL9K_STATUS_OK=false
-  typeset -g POWERLEVEL9K_STATUS_OK_FOREGROUND=70
-  typeset -g POWERLEVEL9K_STATUS_OK_VISUAL_IDENTIFIER_EXPANSION='✔'
-
-  # Status when some part of a pipe command fails but the overall exit status is zero. It may look
-  # like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_FOREGROUND=70
-  typeset -g POWERLEVEL9K_STATUS_OK_PIPE_VISUAL_IDENTIFIER_EXPANSION='✔'
-
-  # Status when it's just an error code (e.g., '1'). No need to show it if prompt_char is enabled as
-  # it will signify error by turning red.
-  typeset -g POWERLEVEL9K_STATUS_ERROR=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_FOREGROUND=160
-  typeset -g POWERLEVEL9K_STATUS_ERROR_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  # Status when the last command was terminated by a signal.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_FOREGROUND=160
-  # Use terse signal names: "INT" instead of "SIGINT(2)".
-  typeset -g POWERLEVEL9K_STATUS_VERBOSE_SIGNAME=false
-  typeset -g POWERLEVEL9K_STATUS_ERROR_SIGNAL_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  # Status when some part of a pipe command fails and the overall exit status is also non-zero.
-  # It may look like this: 1|0.
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE=true
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_FOREGROUND=160
-  typeset -g POWERLEVEL9K_STATUS_ERROR_PIPE_VISUAL_IDENTIFIER_EXPANSION='✘'
-
-  ###################[ command_execution_time: duration of the last command ]###################
-  # Show duration of the last command if takes longer than this many seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_THRESHOLD=3
-  # Show this many fractional digits. Zero means round to seconds.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PRECISION=0
-  # Execution time color.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FOREGROUND=101
-  # Duration format: 1d 2h 3m 4s.
-  typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_FORMAT='d h m s'
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_COMMAND_EXECUTION_TIME_PREFIX='%ftook '
-
-  #######################[ background_jobs: presence of background jobs ]#######################
-  # Don't show the number of background jobs.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VERBOSE=false
-  # Background jobs color.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_FOREGROUND=70
-  # Icon to show when there are background jobs.
-  typeset -g POWERLEVEL9K_BACKGROUND_JOBS_VISUAL_IDENTIFIER_EXPANSION='⇶'
-
-  #######################[ direnv: direnv status (https://direnv.net/) ]########################
-  # Direnv color.
-  typeset -g POWERLEVEL9K_DIRENV_FOREGROUND=178
-  # Icon to show when direnv is active.
-  typeset -g POWERLEVEL9K_DIRENV_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'
-
-  ##########[ nordvpn: nordvpn connection status, linux only (https://nordvpn.com/) ]###########
-  # NordVPN connection indicator color.
-  typeset -g POWERLEVEL9K_NORDVPN_FOREGROUND=39
-  # Hide NordVPN connection indicator when not connected.
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_CONTENT_EXPANSION=
-  typeset -g POWERLEVEL9K_NORDVPN_{DISCONNECTED,CONNECTING,DISCONNECTING}_VISUAL_IDENTIFIER_EXPANSION=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NORDVPN_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ ranger: ranger shell (https://github.com/ranger/ranger) ]##################
-  # Ranger shell color.
-  typeset -g POWERLEVEL9K_RANGER_FOREGROUND=178
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RANGER_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ ram: free RAM ]#######################################
-  # RAM color.
-  typeset -g POWERLEVEL9K_RAM_FOREGROUND=66
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RAM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ######################################[ load: CPU load ]######################################
-  # Show average CPU load over this many last minutes. Valid values are 1, 5 and 15.
-  typeset -g POWERLEVEL9K_LOAD_WHICH=5
-  # Load color when load is under 50%.
-  typeset -g POWERLEVEL9K_LOAD_NORMAL_FOREGROUND=66
-  # Load color when load is between 50% and 70%.
-  typeset -g POWERLEVEL9K_LOAD_WARNING_FOREGROUND=178
-  # Load color when load is over 70%.
-  typeset -g POWERLEVEL9K_LOAD_CRITICAL_FOREGROUND=166
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_LOAD_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##################################[ context: user@hostname ]##################################
-  # Default context color.
-  typeset -g POWERLEVEL9K_CONTEXT_FOREGROUND=180
-  # Default context format: %n is username, %m is hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_TEMPLATE='%n@%m'
-
-  # Context color when running with privileges.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_FOREGROUND=178
-  # Context format when running with privileges: bold user@hostname.
-  typeset -g POWERLEVEL9K_CONTEXT_ROOT_TEMPLATE='%B%n@%m'
-
-  # Don't show context unless running with privileges or in SSH.
-  # Tip: Remove the next line to always show context.
-  typeset -g POWERLEVEL9K_CONTEXT_{DEFAULT,SUDO}_{CONTENT,VISUAL_IDENTIFIER}_EXPANSION=
-
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_CONTEXT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_CONTEXT_PREFIX='%fwith '
-
-  ###[ virtualenv: python virtual environment (https://docs.python.org/3/library/venv.html) ]###
-  # Python virtual environment color.
-  typeset -g POWERLEVEL9K_VIRTUALENV_FOREGROUND=37
-  # Don't show Python version next to the virtual environment name.
-  typeset -g POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION=false
-  # Separate environment name from Python version only with a space.
-  typeset -g POWERLEVEL9K_VIRTUALENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_VIRTUALENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #####################[ anaconda: conda environment (https://conda.io/) ]######################
-  # Anaconda environment color.
-  typeset -g POWERLEVEL9K_ANACONDA_FOREGROUND=37
-  # Don't show Python version next to the anaconda environment name.
-  typeset -g POWERLEVEL9K_ANACONDA_SHOW_PYTHON_VERSION=false
-  # Separate environment name from Python version only with a space.
-  typeset -g POWERLEVEL9K_ANACONDA_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_ANACONDA_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################[ pyenv: python environment (https://github.com/pyenv/pyenv) ]################
-  # Pyenv color.
-  typeset -g POWERLEVEL9K_PYENV_FOREGROUND=37
-  # Don't show the current Python version if it's the same as global.
-  typeset -g POWERLEVEL9K_PYENV_PROMPT_ALWAYS_SHOW=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PYENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ nodenv: node.js version from nodenv (https://github.com/nodenv/nodenv) ]##########
-  # Nodenv color.
-  typeset -g POWERLEVEL9K_NODENV_FOREGROUND=70
-  # Don't show node version if it's the same as global: $(nodenv version-name) == $(nodenv global).
-  typeset -g POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############[ nvm: node.js version from nvm (https://github.com/nvm-sh/nvm) ]###############
-  # Nvm color.
-  typeset -g POWERLEVEL9K_NVM_FOREGROUND=70
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ############[ nodeenv: node.js environment (https://github.com/ekalinin/nodeenv) ]############
-  # Nodeenv color.
-  typeset -g POWERLEVEL9K_NODEENV_FOREGROUND=70
-  # Don't show Node version next to the environment name.
-  typeset -g POWERLEVEL9K_NODEENV_SHOW_NODE_VERSION=false
-  # Separate environment name from Node version only with a space.
-  typeset -g POWERLEVEL9K_NODEENV_{LEFT,RIGHT}_DELIMITER=
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODEENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##############################[ node_version: node.js version ]###############################
-  # Node version color.
-  typeset -g POWERLEVEL9K_NODE_VERSION_FOREGROUND=70
-  # Show node version only when in a directory tree containing package.json.
-  typeset -g POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_NODE_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ go_version: go version (https://golang.org) ]########################
-  # Go version color.
-  typeset -g POWERLEVEL9K_GO_VERSION_FOREGROUND=37
-  # Show go version only when in a go project subdirectory.
-  typeset -g POWERLEVEL9K_GO_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_GO_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #################[ rust_version: rustc version (https://www.rust-lang.org) ]##################
-  # Rust version color.
-  typeset -g POWERLEVEL9K_RUST_VERSION_FOREGROUND=37
-  # Show rust version only when in a rust project subdirectory.
-  typeset -g POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################
-  # .NET version color.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134
-  # Show .NET version only when in a .NET project subdirectory.
-  typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]##############
-  # Rbenv color.
-  typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168
-  # Hide ruby version if it doesn't come from one of these sources.
-  typeset -g POWERLEVEL9K_RBENV_SOURCES=(shell local global)
-  # If set to false, hide ruby version if it's the same as global:
-  # $(rbenv version-name) == $(rbenv global).
-  typeset -g POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RBENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #######################[ rvm: ruby version from rvm (https://rvm.io) ]########################
-  # Rvm color.
-  typeset -g POWERLEVEL9K_RVM_FOREGROUND=168
-  # Don't show @gemset at the end.
-  typeset -g POWERLEVEL9K_RVM_SHOW_GEMSET=false
-  # Don't show ruby- at the front.
-  typeset -g POWERLEVEL9K_RVM_SHOW_PREFIX=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_RVM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #############[ kubecontext: current kubernetes context (https://kubernetes.io/) ]#############
-  # Kubernetes context classes for the purpose of using different colors, icons and expansions with
-  # different contexts.
-  #
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current kubernetes context gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_KUBECONTEXT_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_KUBECONTEXT_CLASSES defines the context class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current kubernetes context is "deathray-testing/default", its class is TEST
-  # because "deathray-testing/default" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_KUBECONTEXT_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_KUBECONTEXT_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_FOREGROUND=134
-
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Use POWERLEVEL9K_KUBECONTEXT_CONTENT_EXPANSION to specify the content displayed by kubecontext
-  # segment. Parameter expansions are very flexible and fast, too. See reference:
-  # http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion.
-  #
-  # Within the expansion the following parameters are always available:
-  #
-  # - P9K_CONTENT                The content that would've been displayed if there was no content
-  #                              expansion defined.
-  # - P9K_KUBECONTEXT_NAME       The current context's name. Corresponds to column NAME in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_CLUSTER    The current context's cluster. Corresponds to column CLUSTER in the
-  #                              output of `kubectl config get-contexts`.
-  # - P9K_KUBECONTEXT_NAMESPACE  The current context's namespace. Corresponds to column NAMESPACE
-  #                              in the output of `kubectl config get-contexts`. If there is no
-  #                              namespace, the parameter is set to "default".
-  #
-  # If the context points to Google Kubernetes Engine (GKE) or Elastic Kubernetes Service (EKS),
-  # the following extra parameters are available:
-  #
-  # - P9K_KUBECONTEXT_CLOUD_NAME     Either "gke" or "eks".
-  # - P9K_KUBECONTEXT_CLOUD_ACCOUNT  Account/project ID.
-  # - P9K_KUBECONTEXT_CLOUD_ZONE     Availability zone.
-  # - P9K_KUBECONTEXT_CLOUD_CLUSTER  Cluster.
-  #
-  # P9K_KUBECONTEXT_CLOUD_* parameters are derived from P9K_KUBECONTEXT_CLUSTER. For example,
-  # if P9K_KUBECONTEXT_CLUSTER is "gke_my-account_us-east1-a_my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=gke
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=my-account
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east1-a
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  #
-  # If P9K_KUBECONTEXT_CLUSTER is "arn:aws:eks:us-east-1:123456789012:cluster/my-cluster-01":
-  #
-  #   - P9K_KUBECONTEXT_CLOUD_NAME=eks
-  #   - P9K_KUBECONTEXT_CLOUD_ACCOUNT=123456789012
-  #   - P9K_KUBECONTEXT_CLOUD_ZONE=us-east-1
-  #   - P9K_KUBECONTEXT_CLOUD_CLUSTER=my-cluster-01
-  typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION='%F{13}${${${:-$KCS_PROFILE}:-$P9K_KUBECONTEXT_CLUSTER}}%f'
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION=
-  # Show P9K_KUBECONTEXT_CLOUD_CLUSTER if it's not empty and fall back to P9K_KUBECONTEXT_NAME.
-  # POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${P9K_KUBECONTEXT_CLOUD_CLUSTER:-${P9K_KUBECONTEXT_NAME}}'
-  POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='/%F{3}${${:-$P9K_KUBECONTEXT_NAMESPACE}:-default}%f'
-  # Append the current context's namespace if it's not "default".
-  # POWERLEVEL9K_KUBECONTEXT_DEFAULT_CONTENT_EXPANSION+='${${:-/$P9K_KUBECONTEXT_NAMESPACE}:#/default}'
-
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_KUBECONTEXT_PREFIX='%fat '
-
-  ################[ terraform: terraform workspace (https://www.terraform.io) ]#################
-  # Terraform color.
-  typeset -g POWERLEVEL9K_TERRAFORM_FOREGROUND=38
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TERRAFORM_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ aws: aws profile (https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html) ]#
-  # AWS profile color.
-  typeset -g POWERLEVEL9K_AWS_DEFAULT_FOREGROUND=208
-  # POWERLEVEL9K_AWS_CLASSES is an array with even number of elements. The first element
-  # in each pair defines a pattern against which the current AWS profile gets matched.
-  # More specifically, it's P9K_CONTENT prior to the application of context expansion (see below)
-  # that gets matched. If you unset all POWERLEVEL9K_AWS_*CONTENT_EXPANSION parameters,
-  # you'll see this value in your prompt. The second element of each pair in
-  # POWERLEVEL9K_AWS_CLASSES defines the context class. Patterns are tried in order. The
-  # first match wins.
-  #
-  # For example, given these settings:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_CLASSES=(
-  #     '*prod*'  PROD
-  #     '*test*'  TEST
-  #     '*'       DEFAULT)
-  #
-  # If your current AWS profile is "company_test", its class is TEST
-  # because "company_test" doesn't match the pattern '*prod*' but does match '*test*'.
-  #
-  # You can define different colors, icons and content expansions for different classes:
-  #
-  #   typeset -g POWERLEVEL9K_AWS_TEST_FOREGROUND=28
-  #   typeset -g POWERLEVEL9K_AWS_TEST_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  #   typeset -g POWERLEVEL9K_AWS_TEST_CONTENT_EXPANSION='> ${P9K_CONTENT} <'
-  typeset -g POWERLEVEL9K_AWS_CLASSES=(
-      # '*prod*'  PROD    # These values are examples that are unlikely
-      # '*test*'  TEST    # to match your needs. Customize them as needed.
-      '*'       DEFAULT)
-  # typeset -g POWERLEVEL9K_AWS_DEFAULT_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  #[ aws_eb_env: aws elastic beanstalk environment (https://aws.amazon.com/elasticbeanstalk/) ]#
-  # AWS Elastic Beanstalk environment color.
-  typeset -g POWERLEVEL9K_AWS_EB_ENV_FOREGROUND=70
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AWS_EB_ENV_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ##########[ azure: azure account name (https://docs.microsoft.com/en-us/cli/azure) ]##########
-  # Azure account name color.
-  typeset -g POWERLEVEL9K_AZURE_FOREGROUND=32
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_AZURE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ###############################[ public_ip: public IP address ]###############################
-  # Public IP color.
-  typeset -g POWERLEVEL9K_PUBLIC_IP_FOREGROUND=94
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PUBLIC_IP_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ########################[ vpn_ip: virtual private network indicator ]#########################
-  # VPN IP color.
-  typeset -g POWERLEVEL9K_VPN_IP_FOREGROUND=81
-  # When on VPN, show just an icon without the IP address.
-  typeset -g POWERLEVEL9K_VPN_IP_CONTENT_EXPANSION=
-  # Regular expression for the VPN network interface. Run ifconfig while on VPN to see the
-  # name of the interface.
-  typeset -g POWERLEVEL9K_VPN_IP_INTERFACE='(wg|(.*tun))[0-9]*'
-  # Icon to show when on VPN.
-  typeset -g POWERLEVEL9K_VPN_IP_VISUAL_IDENTIFIER_EXPANSION='${P9K_VISUAL_IDENTIFIER}'
-
-  #########################[ proxy: system-wide http/https/ftp proxy ]##########################
-  # Proxy color.
-  typeset -g POWERLEVEL9K_PROXY_FOREGROUND=68
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_PROXY_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  ################################[ battery: internal battery ]#################################
-  # Show battery in red when it's below this level and not connected to power supply.
-  typeset -g POWERLEVEL9K_BATTERY_LOW_THRESHOLD=20
-  typeset -g POWERLEVEL9K_BATTERY_LOW_FOREGROUND=160
-  # Show battery in green when it's charging or fully charged.
-  typeset -g POWERLEVEL9K_BATTERY_{CHARGING,CHARGED}_FOREGROUND=70
-  # Show battery in yellow when it's discharging.
-  typeset -g POWERLEVEL9K_BATTERY_DISCONNECTED_FOREGROUND=178
-  # Battery pictograms going from low to high level of charge.
-  typeset -g POWERLEVEL9K_BATTERY_STAGES=('%K{232}▁' '%K{232}▂' '%K{232}▃' '%K{232}▄' '%K{232}▅' '%K{232}▆' '%K{232}▇' '%K{232}█')
-  # Don't show the remaining time to charge/discharge.
-  typeset -g POWERLEVEL9K_BATTERY_VERBOSE=false
-
-  ####################################[ time: current time ]####################################
-  # Current time color.
-  typeset -g POWERLEVEL9K_TIME_FOREGROUND=66
-  # Format for the current time: 09:51:02. See `man 3 strftime`.
-  typeset -g POWERLEVEL9K_TIME_FORMAT='%D{%H:%M:%S}'
-  # If set to true, time will update when you hit enter. This way prompts for the past
-  # commands will contain the start times of their commands as opposed to the default
-  # behavior where they contain the end times of their preceding commands.
-  typeset -g POWERLEVEL9K_TIME_UPDATE_ON_COMMAND=false
-  # Custom icon.
-  # typeset -g POWERLEVEL9K_TIME_VISUAL_IDENTIFIER_EXPANSION='⭐'
-  # Custom prefix.
-  # typeset -g POWERLEVEL9K_TIME_PREFIX='%fat '
-
-  function prompt_in_nix_shell() {
-    if test -n "${IN_NIX_SHELL}"; then
-      if test -n "${NIX_SHELL_PACKAGES}"; then
-        p10k segment -f yellow -i '🛡' -t "{ ${NIX_SHELL_PACKAGES} }"
-      else
-        p10k segment -f yellow -t "🛡"
-      fi
-    fi
-  }
-
-  function prompt_docker_host() {
-      if test -n "${DOCKER_HOST}"; then
-          p10k segment -f blue -i '🐋' -t "${DOCKER_HOST}"
-      fi
-  }
-  # User-defined prompt segments may optionally provide an instant_prompt_* function. Its job
-  # is to generate the prompt segment for display in instant prompt. See
-  # https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
-  #
-  # Powerlevel10k will call instant_prompt_* at the same time as the regular prompt_* function
-  # and will record all `p10k segment` calls it makes. When displaying instant prompt, Powerlevel10k
-  # will replay these calls without actually calling instant_prompt_*. It is imperative that
-  # instant_prompt_* always makes the same `p10k segment` calls regardless of environment. If this
-  # rule is not observed, the content of instant prompt will be incorrect.
-
-  function instant_prompt_in_nix_shell() {
-    prompt_in_nix_shell
-  }
-
-  function instant_prompt_docker_host() {
-      prompt_docker_host
-  }
-
-  # User-defined prompt segments can be customized the same way as built-in segments.
-  # typeset -g POWERLEVEL9K_EXAMPLE_FOREGROUND=208
-  # typeset -g POWERLEVEL9K_EXAMPLE_VISUAL_IDENTIFIER_EXPANSION='⭐'
-
-  # Transient prompt works similarly to the builtin transient_rprompt option. It trims down prompt
-  # when accepting a command line. Supported values:
-  #
-  #   - off:      Don't change prompt when accepting a command line.
-  #   - always:   Trim down prompt when accepting a command line.
-  #   - same-dir: Trim down prompt when accepting a command line unless this is the first command
-  #               typed after changing current working directory.
-  typeset -g POWERLEVEL9K_TRANSIENT_PROMPT=off
-
-  # Instant prompt mode.
-  #
-  #   - off:     Disable instant prompt. Choose this if you've tried instant prompt and found
-  #              it incompatible with your zsh configuration files.
-  #   - quiet:   Enable instant prompt and don't print warnings when detecting console output
-  #              during zsh initialization. Choose this if you've read and understood
-  #              https://github.com/romkatv/powerlevel10k/blob/master/README.md#instant-prompt.
-  #   - verbose: Enable instant prompt and print a warning when detecting console output during
-  #              zsh initialization. Choose this if you've never tried instant prompt, haven't
-  #              seen the warning, or if you are unsure what this all means.
-  typeset -g POWERLEVEL9K_INSTANT_PROMPT=verbose
-
-  # Hot reload allows you to change POWERLEVEL9K options after Powerlevel10k has been initialized.
-  # For example, you can type POWERLEVEL9K_BACKGROUND=red and see your prompt turn red. Hot reload
-  # can slow down prompt by 1-2 milliseconds, so it's better to keep it turned off unless you
-  # really need it.
-  typeset -g POWERLEVEL9K_DISABLE_HOT_RELOAD=true
-
-  # If p10k is already loaded, reload configuration.
-  # This works even with POWERLEVEL9K_DISABLE_HOT_RELOAD=true.
-  #(( ! $+functions[p10k] )) || p10k reload
-}
-
-(( ${#p10k_config_opts} )) && setopt ${p10k_config_opts[@]}
-'builtin' 'unset' 'p10k_config_opts'
users/vincent/core/bash.nix
@@ -1,22 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-let
-  shellConfig = import ./shell.nix { inherit config lib pkgs; };
-in
-{
-  programs.bash = {
-    enable = true;
-    historyControl = [
-      "erasedups"
-      "ignorespace"
-    ];
-    historyFile = "${config.xdg.dataHome}/bash_history";
-    historyFileSize = shellConfig.historySize;
-    inherit (shellConfig) historySize;
-    shellAliases = shellConfig.aliases;
-  };
-}
users/vincent/core/default.nix
@@ -1,90 +0,0 @@
-{ pkgs, ... }:
-
-{
-  imports = [
-    ./bash.nix
-    ./direnv.nix
-    ./fzf.nix
-    ./git.nix
-    ./gpg.nix
-    ./htop.nix
-    ./ssh.nix
-    ./tmux.nix
-    ./xdg.nix
-    ./zsh.nix
-  ];
-
-  home = {
-    stateVersion = "22.05";
-    packages = with pkgs; [
-      enchive
-      entr
-      # exa # TODO: switch to eza in 2024
-      fd
-      htop
-      mosh
-      ncurses
-      pciutils
-      ripgrep
-      ugrep
-      scripts
-      tree
-      broot
-      lf
-      usbutils
-    ];
-  };
-
-  programs.atuin = {
-    enable = true;
-    flags = [ "--disable-up-arrow" ];
-    settings = {
-      auto_sync = true;
-      sync_frequency = "10m";
-      sync_address = "http://sakhalin.sbr.pm:8888";
-      search_mode = "skim";
-      filter_mode = "global";
-      enter_accept = false;
-      prefers_reduced_motion = true;
-      common_prefix = [ "sudo" ];
-      ignored_commands = [
-        "cd"
-        "fg"
-        "ls"
-        "rm"
-        "vi"
-        "vim"
-        "p"
-        "d"
-        "ll"
-        "j"
-        "g"
-        ":"
-        "mv"
-        "cat"
-        "echo"
-      ];
-      # history_filter = [
-      #   "^curl"
-      #   "^wget"
-      #   "^monolith"
-      #   "^sherlock"
-      #   "^yt-dlp"
-      #   "^yt-dl"
-      #   "^gallery-dl"
-      #   "^archivebox"
-      #   "^fanficfare"
-      # ];
-    };
-  };
-
-  # manpages are broken on 21.05 and home-manager (for some reason..)
-  # (versionOlder nixosConfig.system.nixos.release "21.11");
-  manual.manpages.enable = true;
-
-  xdg.configFile."nixpkgs/config.nix".text = ''
-    {
-      allowUnfree = true;
-    }
-  '';
-}
users/vincent/core/direnv.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
-  programs.direnv = {
-    enable = true;
-    stdlib = ''
-      mkdir -p $HOME/.cache/direnv/layouts
-      pwd_hash=$(echo -n $PWD | shasum | cut -d ' ' -f 1)
-      direnv_layout_dir=$HOME/.cache/direnv/layouts/$pwd_hash
-      source ${pkgs.nix-direnv}/share/nix-direnv/direnvrc
-    '';
-  };
-}
users/vincent/core/fzf.nix
@@ -1,7 +0,0 @@
-{
-  programs.fzf = {
-    enable = true;
-    enableZshIntegration = true;
-    defaultOptions = [ "--bind=ctrl-j:accept" ];
-  };
-}
users/vincent/core/git.nix
@@ -1,248 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  ca-bundle_crt = "/etc/ssl/certs/ca-bundle.crt";
-  redhat_folders = [
-    "src/github.com/containers"
-    "src/github.com/google"
-    "src/github.com/knative"
-    "src/github.com/kubernetes"
-    "src/github.com/openshift"
-    "src/github.com/openshift-knative"
-    "src/github.com/openshift-pipelines"
-    "src/github.com/operator-framework"
-    "src/github.com/redhat-developer"
-    "src/github.com/tektoncd"
-    "src/gitlab.cee.redhat.com"
-    "src/gitlab.corp.redhat.com"
-    "src/k8s.io"
-    "src/osp"
-    "src/pkg.devel.redhat.com"
-    "src/tektoncd"
-    "src/backstage"
-    "src/knative.dev"
-    "src/knative-sandbox"
-  ];
-in
-{
-  home.packages = with pkgs; [
-    gist
-    git-lfs
-    # git-review
-    # gitAndTools.hub
-    gitAndTools.gh
-    gitAndTools.git-appraise
-    codeberg-cli
-    mr
-    delta
-    difftastic
-  ];
-  programs.git = {
-    enable = true;
-    package = pkgs.git;
-
-    userName = "Vincent Demeester";
-    userEmail = "vincent@sbr.pm";
-
-    signing = {
-      # key = "6EB699A3";
-      # FIXME: This should change depending on the host (could be different yubikey, …)
-      key = "${pkgs.writeText "yubikey5-c1" "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGHMa4rHuBbQQYv+8jvlkFCD2VYRGA4+5fnZAhLx8iDirzfEPqHB60UJWcDeixnJCUlpJjzFbS4crNOXhfCTCTE="}";
-      signByDefault = false;
-    };
-
-    aliases = {
-      b = "branch - -color - v";
-      br = "branch";
-      ca = "commit --amend";
-      ci = "commit --signoff";
-      co = "checkout";
-      conflicts = "!git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR";
-      dft = "difftool";
-      lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative";
-      lga = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes";
-      lol = "log --pretty=oneline --abbrev-commit --graph --decorate";
-      ls-ignored = "ls-files --exclude-standard --ignored --others";
-      resolve = "!git ls-files --unmerged | cut -c51- | sort -u | xargs git add";
-      st = "status";
-      su = "submodule update --init --recursive";
-      unstage = "reset HEAD";
-      w = "status -sb";
-      wdiff = "diff --color-words";
-      kdiff = "difftool --tool=kitty --no-symlinks --dir-diff";
-    };
-    attributes = [
-      "*.org   diff=org"
-    ];
-    extraConfig = {
-      core = {
-        pager = "${pkgs.delta}/bin/delta";
-        abbrev = 12;
-        # pager = "${pkgs.delta}/bin/delta --syntax-theme GitHub";
-        # editor = "${pkgs.emacs}/bin/emacsclient -t";
-      };
-      gpg = {
-        format = "ssh";
-      };
-      commit = {
-        gpgSign = true;
-      };
-      tag = {
-        gpgSign = true;
-      };
-      init = {
-        defaultBranch = "main";
-      };
-      color = {
-        status = "auto";
-        diff = "auto";
-        branch = "auto";
-        interactive = "auto";
-        ui = "auto";
-        sh = "auto";
-      };
-      "color.branch" = {
-        current = "cyan reverse";
-        local = "cyan";
-        remote = "green";
-      };
-      "color.diff" = {
-        current = "white reverse";
-        frag = "magenta reverse";
-        old = "red";
-        new = "green";
-      };
-      "color.status" = {
-        added = "green";
-        changed = "yellow";
-        untracked = "red";
-      };
-      # Either use this *or* git maintenance
-      # fetch = {
-      #   writeCommitGraph = true;
-      # };
-      diff = {
-        algorithm = "histogram";
-        colormoved = "default";
-        colormovedws = "allow-indentation-change";
-        # external = "difft";
-        # tool = "difftastic";
-      };
-      "diff.org" = {
-        xfuncname = "\"^\\\\*+.*\"";
-      };
-      difftool = {
-        prompt = false;
-        trustExitCode = true;
-      };
-      "difftool.difftastic" = {
-        cmd = "difft \"$LOCAL\" \"$REMOTE\"";
-      };
-      "difftool.kitty" = {
-        cmd = "kitten diff $LOCAL $REMOTE";
-      };
-      pager = {
-        difftool = true;
-      };
-      pretty = {
-        fixes = "Fixes: %h (\"%s\")";
-      };
-      forge = {
-        remote = "upstream";
-      };
-      rerere = {
-        enabled = true;
-      };
-      hub = {
-        protocol = true;
-      };
-      pull = {
-        rebase = true;
-      };
-      push = {
-        default = "upstream";
-        recurseSubmodules = "check";
-      };
-      rebase = {
-        autosquash = true;
-      };
-      status = {
-        short = true;
-        branch = true;
-      };
-      branch = {
-        sort = "-committerdate";
-      };
-      advice = {
-        statusHints = false;
-        pushNonFastForward = false;
-      };
-      http = {
-        sslCAinfo = "${ca-bundle_crt}";
-        sslverify = true;
-      };
-      delta = {
-        syntax-theme = "GitHub";
-        features = "decorations";
-      };
-
-      "delta \"decorations\"" = {
-        commit-decoration-style = "blue ol";
-        commit-style = "raw";
-        file-style = "omit";
-        hunk-header-decoration-style = "blue box";
-        hunk-header-file-style = "red";
-        hunk-header-line-number-style = "#067a00";
-        hunk-header-style = "file line-number syntax";
-        navigate = true;
-      };
-
-      credential = {
-        "https://github.com" = {
-          helper = "!${pkgs.gh}/bin/gh auth git-credential";
-        };
-        "https://gist.github.com" = {
-          helper = "!${pkgs.gh}/bin/gh auth git-credential";
-        };
-      };
-      github.user = "vdemeester";
-      "filter \"lfs\"" = {
-        clean = "${pkgs.git-lfs}/bin/git-lfs clean -- %f";
-        smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f";
-        required = true;
-      };
-      "url \"git@github.com:\"".insteadOf = "git://github.com/";
-    };
-
-    includes = lists.forEach redhat_folders (x: {
-      path = "${config.xdg.configHome}/git/config.d/redhat.gitconfig";
-      condition = "gitdir:${config.home.homeDirectory}/${x}/**";
-    });
-    ignores = [
-      "*.elc"
-      "*.vo"
-      "*.aux"
-      "*.v.d"
-      "*.o"
-      "*.a"
-      "*.la"
-      "*.so"
-      "*.dylib"
-      "*.pyc"
-      "*.pyo"
-      ".idea"
-      "*.iml"
-      "*~"
-      "#*#"
-      ".makefile"
-      ".clean"
-    ];
-  };
-  xdg.configFile."git/config.d/redhat.gitconfig".source = ./git/redhat.gitconfig;
-}
users/vincent/core/gpg.nix
@@ -1,41 +0,0 @@
-{
-  pkgs,
-  lib,
-  nixosConfig,
-  ...
-}:
-
-let
-  stable = lib.versionOlder nixosConfig.system.nixos.release "24.05";
-in
-{
-  home.packages = with pkgs; [ gnupg ];
-  programs.gpg = {
-    enable = true;
-
-    # https://support.yubico.com/hc/en-us/articles/4819584884124-Resolving-GPG-s-CCID-conflicts
-    scdaemonSettings = {
-      disable-ccid = true;
-    };
-  };
-  services = {
-    gpg-agent =
-      {
-        enable = true;
-        # enableSshSupport = true;
-        enableExtraSocket = true;
-        # defaultCacheTtlSsh = 7200;
-      }
-      // (
-        if stable then
-          {
-            pinentryFlavor = if nixosConfig.modules.desktop.enable then "gnome3" else "tty";
-          }
-        else
-          {
-            pinentryPackage =
-              if nixosConfig.modules.desktop.enable then pkgs.pinentry-gnome3 else pkgs.pinentry-tty;
-          }
-      );
-  };
-}
users/vincent/core/htop.nix
@@ -1,31 +0,0 @@
-{ config, ... }:
-
-{
-  programs.htop = {
-    enable = true;
-    settings =
-      {
-        delay = 10;
-      }
-      // (
-        with config.lib.htop;
-        leftMeters [
-          (bar "AllCPUs2")
-          (bar "Memory")
-          (bar "Swap")
-        ]
-      )
-      // (
-        with config.lib.htop;
-        rightMeters [
-          (text "Clock")
-          (text "Hostname")
-          (text "Tasks")
-          (text "LoadAverage")
-          (text "Uptime")
-          (text "Battery")
-          (text "Systemd")
-        ]
-      );
-  };
-}
users/vincent/core/shell.nix
@@ -1,32 +0,0 @@
-{ config, ... }:
-{
-  aliases = {
-    mkdir = ''mkdir --parents --verbose'';
-    rm = ''rm --interactive'';
-    cp = ''cp --interactive'';
-    mv = ''mv --interactive'';
-    gcd = ''cd (git root)'';
-    # ls = ''exa'';
-    ll = ''ls -l'';
-    la = ''ls -a'';
-    l = ''ls -lah'';
-    # t = ''exa --tree --level=2'';
-    map = ''xargs -n1'';
-    k = ''kubectl'';
-    wget = ''wget -c --hsts-file=${config.xdg.dataHome}/wget-hsts'';
-  };
-
-  env = ''
-    export PATH=$HOME/bin:$PATH
-    export LESSHISTFILE="${config.xdg.dataHome}/less_history"
-    export WEBKIT_DISABLE_COMPOSITING_MODE=1;
-    export PATH=$HOME/bin:$PATH
-    if [ -d $HOME/.krew/bin ]; then
-      export PATH=$HOME/.krew/bin:$PATH
-    fi
-    # TODO Move somewhere else
-    export TLDR_CACHE_DIR="$XDG_CACHE_HOME"/tldr 
-  '';
-
-  historySize = 10000;
-}
users/vincent/core/ssh.nix
@@ -1,144 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  gpgRemoteForward = {
-    bind.address = "/run/user/1000/gnupg/S.gpg-agent";
-    host.address = "/run/user/1000/gnupg/S.gpg-agent.extra";
-  };
-  gpgSSHRemoteForward = {
-    bind.address = "/run/user/1000/gnupg/S.gpg-agent.ssh";
-    host.address = "/run/user/1000/gnupg/S.gpg-agent.ssh";
-  };
-
-  inherit (lib)
-    importTOML
-    hasAttr
-    attrsets
-    mkIf
-    ;
-  metadata = importTOML ../../../ops/hosts.toml;
-
-  hasWireguard = _name: value: hasAttr "wireguard" value;
-  hasAddrs = _name: value: hasAttr "addrs" value;
-  hasSShAndRemoteForward = v: (hasAttr "ssh" v) && (hasAttr "gpgRemoteForward" v.ssh);
-
-  hostWireguardIP = v: "${v.wireguard.addrs.v4}";
-  hostIP = v: "${v.addrs.v4}";
-
-  hostToSSHConfigItem = value: ipfn: {
-    hostname = ipfn value;
-    remoteForwards = mkIf (hasSShAndRemoteForward value) [
-      gpgRemoteForward
-      gpgSSHRemoteForward
-    ];
-    # FIXME: need support for RemoteCommand in home-manager
-    # RemoteCommand = mkIf (hasCommand value) hostRemoteCommand value;
-  };
-  hostToSSHConfig =
-    suffix: ipfn: name: value:
-    attrsets.nameValuePair (toString "${name}${suffix}") (hostToSSHConfigItem value ipfn);
-
-  vpnConfig = attrsets.mapAttrs' (hostToSSHConfig "\.vpn" hostWireguardIP) (
-    attrsets.filterAttrs hasWireguard metadata.hosts
-  );
-  homeConfig = attrsets.mapAttrs' (hostToSSHConfig "\.home" hostIP) (
-    attrsets.filterAttrs hasAddrs metadata.hosts
-  );
-in
-{
-  home.packages = [
-    pkgs.openssh
-    pkgs.sshfs
-  ];
-  home.file.".ssh/sockets/.placeholder".text = '''';
-  xdg.configFile."ssh/.placeholder".text = '''';
-  programs.ssh = {
-    enable = true;
-
-    serverAliveInterval = 60;
-    hashKnownHosts = true;
-    userKnownHostsFile = "${config.xdg.configHome}/ssh/known_hosts";
-    controlMaster = "auto";
-    controlPersist = "10m";
-    controlPath = "${config.home.homeDirectory}/.ssh/sockets/%u-%l-%r@%h:%p";
-    matchBlocks =
-      {
-        "github.com" = {
-          hostname = "github.com";
-          user = "git";
-          extraOptions = {
-            controlMaster = "auto";
-            controlPersist = "360";
-          };
-        };
-        "gitlab.com" = {
-          hostname = "gitlab.com";
-          user = "git";
-          extraOptions = {
-            controlMaster = "auto";
-            controlPersist = "360";
-          };
-        };
-        "git.sr.ht" = {
-          hostname = "git.sr.ht";
-          user = "git";
-          extraOptions = {
-            controlMaster = "auto";
-            controlPersist = "360";
-          };
-        };
-        "*.redhat.com" = {
-          user = "vdemeest";
-        };
-        "bootstrap.ospqa.com" = {
-          forwardAgent = true;
-        };
-        "192.168.1.*" = {
-          forwardAgent = true;
-          extraOptions = {
-            StrictHostKeyChecking = "no";
-            UserKnownHostsFile = "/dev/null";
-          };
-        };
-        "10.100.0.*" = {
-          forwardAgent = true;
-        };
-      }
-      // homeConfig
-      // vpnConfig;
-    extraConfig = ''
-      GlobalKnownHostsFile ~/.config/ssh/ssh_known_hosts ~/.config/ssh/ssh_known_hosts.redhat ~/.config/ssh/ssh_known_hosts.mutable
-      StrictHostKeyChecking yes
-      PreferredAuthentications gssapi-with-mic,publickey,password
-      GSSAPIAuthentication yes
-      GSSAPIDelegateCredentials yes
-      StreamLocalBindUnlink yes
-      IdentityFile ~/.ssh/keys/%h
-      IdentityFile ~/.ssh/id_ed25519
-      IdentityFile ~/.ssh/id_rsa
-    '';
-  };
-  # FIXME generate this file as well
-  xdg.configFile."ssh/ssh_known_hosts".text = ''
-    # Home ()
-    wakasu.home,wakasu.vpn,wakasu.sbr.pm,10.100.0.8,192.168.1.77 wakasu.vpn ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D
-    aomi.home,aomi.sbr.pm,aomi.vpn,10.100.0.17,192.168.1.23 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFQVlSrUKU0xlM9E+sJ8qgdgqCW6ePctEBD2Yf+OnyME
-    sakhalin.home,sakhalin.sbr.pm,sakhalin.vpn,10.100.0.16,192.168.1.70 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/PMBThi4DhgZR8VywbRDzzMVh2Qp3T6NJAcPubfXz6
-    shikoku.home,shikoku.sbr.pm,shikoku.vpn,10.100.0.2,192.168.1.24 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm
-    kerkouane.vpn,kerkouane.sbr.pm,10.100.0.1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJguVoQYObRLyNxELFc3ai2yDJ25+naiM3tKrBGuxwwA
-    synodine.home,synodine.sbr.pm,192.168.1.20 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDWdnPJg0Y4kd4lHPAGE4xgMAK2qvMg3oBxh0t+xO+7O
-    demeter.home,demeter.vpn,demeter.sbr.pm,192.168.1.182 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGqQfEyHyjIGglayB9FtCqL7bnYfNSQlBXks2IuyCPmd
-    athena.home,athena.vpn,athena.sbr.pm,192.168.1.183 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM/4KRP1rzOwyA2zP1Nf1WlLRHqAGutLtOHYWfH732xh
-    aion.home,aion.vpn,aion.sbr.pm,10.100.0.49,192.168.1.49 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMs2o62unBFN/LHRg3q2N4QyZW0+DC/gjw3yzRbWdzx5
-  '';
-  xdg.configFile."ssh/ssh_known_hosts.redhat".text = ''
-    # Red Hat
-    gitlab.cee.redhat.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICBgflBIyju1LV/29PmFDw0GLdB9h0JUXglNrvWjBQ2u
-    code.engineering.redhat.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYZZXmzm14TUL02Qe5SCMw48OfrphoIzi4qXSEK9Hiq
-  '';
-}
users/vincent/core/tmux.nix
@@ -1,20 +0,0 @@
-{ config, ... }:
-
-{
-  programs.tmux = {
-    enable = true;
-    #sensibleOnTop = true;
-    #aggressiveResize = true;
-    clock24 = true;
-    escapeTime = 0;
-    newSession = true;
-    #plugins = with pkgs.tmuxPlugins; [ prefix-highlight ];
-    #secureSocket = false;
-    terminal = "tmux-256color";
-    #historyLimit = 30000;
-    extraConfig = ''
-      source-file ${config.xdg.configHome}/tmux/tmux.conf
-    '';
-  };
-  xdg.configFile."tmux/tmux.conf".source = ./tmux/tmux.conf;
-}
users/vincent/core/xdg.nix
@@ -1,16 +0,0 @@
-{
-  xdg = {
-    enable = true;
-    userDirs = {
-      enable = true;
-      desktop = "$HOME/desktop";
-      documents = "$HOME/desktop/documents";
-      download = "$HOME/desktop/downloads";
-      music = "$HOME/desktop/music";
-      pictures = "$HOME/desktop/pictures";
-      publicShare = "$HOME/desktop/sites";
-      templates = "$HOME/desktop/documents/templates";
-      videos = "$HOME/desktop/videos";
-    };
-  };
-}
users/vincent/core/zsh.nix
@@ -1,200 +0,0 @@
-{
-  config,
-  lib,
-  nixosConfig,
-  pkgs,
-  ...
-}:
-let
-  shellConfig = import ./shell.nix { inherit config lib pkgs; };
-  stable = lib.versionOlder nixosConfig.system.nixos.release "24.05";
-in
-{
-  home.packages = with pkgs; [
-    zsh-syntax-highlighting
-    nix-zsh-completions
-  ];
-
-  home.file."${config.programs.zsh.dotDir}/completion.zsh".source = ./zsh/completion.zsh;
-  home.file."${config.programs.zsh.dotDir}/prompt.zsh".source = ./zsh/prompt.zsh;
-  home.file."${config.programs.zsh.dotDir}/functions/j".source = ./zsh/j;
-  home.file."${config.programs.zsh.dotDir}/auto-expanding-aliases.zsh".source =
-    ./zsh/auto-expanding-aliases.zsh;
-
-  programs = {
-    direnv.enableZshIntegration = true;
-  };
-
-  programs.zsh =
-    {
-      enable = true;
-      enableCompletion = true;
-      autocd = true;
-      dotDir = ".config/zsh";
-      defaultKeymap = "emacs";
-      history = {
-        expireDuplicatesFirst = true;
-        extended = true;
-        ignoreDups = true;
-        path = "${config.xdg.dataHome}/zsh_history";
-        save = shellConfig.historySize;
-        share = true;
-      };
-      envExtra = shellConfig.env;
-      # TODO Extract this to files.
-      initExtra = ''
-        # c.f. https://wiki.gnupg.org/AgentForwarding
-        # gpgconf --create-socketdir &!
-        path+="$HOME/${config.programs.zsh.dotDir}/functions"
-        fpath+="$HOME/.nix-profile/share/zsh/site-functions"
-        fpath+="$HOME/${config.programs.zsh.dotDir}/functions"
-        for func ($HOME/${config.programs.zsh.dotDir}/functions) autoload -U $func/*(x:t)
-        autoload -Uz select-word-style; select-word-style bash
-        if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
-        #if [ -n "$INSIDE_EMACS" ]; then
-        #  chpwd() { print -P "\033AnSiTc %d" }
-        #  print -P "\033AnSiTu %n"
-        #  print -P "\033AnSiTc %d"
-        #fi
-        if [[ "$TERM" == "dumb" || "$TERM" == "emacs" ]]
-        then
-          TERM=eterm-color
-          unsetopt zle
-          unsetopt prompt_cr
-          unsetopt prompt_subst
-          unfunction precmd
-          unfunction preexec
-          PS1='$ '
-          return
-        fi
-        # eval "$(${config.programs.atuin.package}/bin/atuin init zsh)"
-        # make sure navigation using emacs keybindings works on all non-alphanumerics
-        # syntax highlighting
-        source $HOME/${config.programs.zsh.dotDir}/plugins/zsh-nix-shell/nix-shell.plugin.zsh
-        source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
-        ZSH_HIGHLIGHT_PATTERNS+=('rm -rf *' 'fg=white,bold,bg=red')
-        ZSH_HIGHLIGHT_PATTERNS+=('rm -fR *' 'fg=white,bold,bg=red')
-        ZSH_HIGHLIGHT_PATTERNS+=('rm -fr *' 'fg=white,bold,bg=red')
-        source $HOME/${config.programs.zsh.dotDir}/completion.zsh
-        source $HOME/${config.programs.zsh.dotDir}/plugins/powerlevel10k/powerlevel10k.zsh-theme
-        source $HOME/${config.programs.zsh.dotDir}/prompt.zsh
-        source $HOME/${config.programs.zsh.dotDir}/plugins/kubectl-config-switcher/kubectl-config-switcher.plugin.zsh
-        source $HOME/${config.programs.zsh.dotDir}/auto-expanding-aliases.zsh
-        setopt HIST_IGNORE_SPACE
-        alias -g L="|less"
-        alias -g EEL=' 2>&1 | less'
-        alias -g GB='`git rev-parse --abbrev-ref HEAD`'
-        alias -g GR='`git rev-parse --show-toplevel`'
-        alias -s {ape,avi,flv,m4a,mkv,mov,mp3,mp4,mpeg,mpg,ogg,ogm,wav,webm}=mpv
-        alias -s org=emacs
-        (( $+commands[jq] )) && alias -g MJ="| jq -C '.'"  || alias -g MJ="| ${pkgs.python3}/bin/python -mjson.tool"
-        (( $+functions[zshz] )) && compdef _zshz j
-        [[ -n $INSIDE_EMACS ]] && \
-        function ff () {
-          print "\e]51;Efind-file $(readlink -f $1)\e\\"
-        }
-
-        export _Z_DATA="${config.xdg.dataHome}/z"
-
-
-        [ -n "$EAT_SHELL_INTEGRATION_DIR" ] && \
-          source "$EAT_SHELL_INTEGRATION_DIR/zsh"
-      '';
-      loginExtra = ''
-        if [[ -z $DISPLAY && $TTY = /dev/tty1 ]]; then
-          exec dbus-run-session sway
-        fi
-      '';
-      profileExtra = ''
-        if [ -e /home/vincent/.nix-profile/etc/profile.d/nix.sh ]; then . /home/vincent/.nix-profile/etc/profile.d/nix.sh; fi
-      '';
-      localVariables = {
-        EMOJI_CLI_KEYBIND = "^n";
-        EMOJI_CLI_USE_EMOJI = "yes";
-        ZSH_HIGHLIGHT_HIGHLIGHTERS = [
-          "main"
-          "brackets"
-          "pattern"
-        ];
-      };
-      sessionVariables = {
-        RPROMPT = "";
-      };
-      plugins = [
-        {
-          name = "kubectl-config-switcher";
-          src = pkgs.fetchFromGitHub {
-            owner = "chmouel";
-            repo = "kubectl-config-switcher";
-            rev = "faccc5d3c1f98170c38d3889f50fe74f3f6fe2cc";
-            sha256 = "sha256-BOMvC/r6uN9Hewp8OxPIp38+V9Usp6XbMvNoDim0qmc=";
-          };
-        }
-        {
-          name = "emoji-cli";
-          src = pkgs.fetchFromGitHub {
-            owner = "b4b4r07";
-            repo = "emoji-cli";
-            rev = "0fbb2e48e07218c5a2776100a4c708b21cb06688";
-            sha256 = "sha256-ii7RDTK/m+IqK7N+Xb6cEbziLPUQh7ZsbvQiX56F0sE=";
-          };
-        }
-        {
-          name = "zsh-z";
-          src = pkgs.fetchFromGitHub {
-            owner = "agkozak";
-            repo = "zsh-z";
-            rev = "aaafebcd97424c570ee247e2aeb3da30444299cd";
-            sha256 = "sha256-9Wr4uZLk2CvINJilg4o72x0NEAl043lP30D3YnHk+ZA=";
-          };
-        }
-        {
-          name = "async";
-          src = pkgs.fetchFromGitHub {
-            owner = "mafredri";
-            repo = "zsh-async";
-            rev = "v1.8.5";
-            sha256 = "sha256-mpXT3Hoz0ptVOgFMBCuJa0EPkqP4wZLvr81+1uHDlCc=";
-          };
-        }
-        {
-          name = "zsh-completions";
-          src = pkgs.fetchFromGitHub {
-            owner = "zsh-users";
-            repo = "zsh-completions";
-            rev = "0.34.0";
-            sha256 = "sha256-qSobM4PRXjfsvoXY6ENqJGI9NEAaFFzlij6MPeTfT0o=";
-          };
-        }
-        {
-          name = "powerlevel10k";
-          src = pkgs.fetchFromGitHub {
-            owner = "romkatv";
-            repo = "powerlevel10k";
-            rev = "v1.16.1";
-            sha256 = "sha256-DLiKH12oqaaVChRqY0Q5oxVjziZdW/PfnRW1fCSCbjo=";
-          };
-        }
-        {
-          name = "zsh-nix-shell";
-          src = pkgs.fetchFromGitHub {
-            owner = "chisui";
-            repo = "zsh-nix-shell";
-            rev = "v0.5.0";
-            sha256 = "sha256-IT3wpfw8zhiNQsrw59lbSWYh0NQ1CUdUtFzRzHlURH0=";
-          };
-        }
-      ];
-      shellAliases = shellConfig.aliases;
-    }
-    // (
-      if stable then
-        {
-          enableAutosuggestions = true;
-        }
-      else
-        {
-          autosuggestion.enable = true;
-        }
-    );
-}
users/vincent/desktop/xorg/capture.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/capture.desktop
\ No newline at end of file
users/vincent/desktop/xorg/ec.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/ec.desktop
\ No newline at end of file
users/vincent/desktop/xorg/emoji.compose
@@ -1,2459 +0,0 @@
-## Convention: capitalize first letter of longer element to avoid prefixing.
-## Or capitalize last letter of shorter element (or perhaps closing it with
-## another press of <Multi_key>) if that is not desired.
-## (like, trying not to alter the "main" dotXCompose file).
-## Use two #s for ordinary comments, #- for quotes from UnicodeData.txt,
-## and three #s to comment out XCompose lines.
-## How about using 4 #s to comment out things that are only commented out
-## to avoid duplicates with the main dotXCompose file?
-##
-## Anything whose full Unicode name fits inside 7 characters gets that for
-## its keys (usually).  Otherwise maybe get creative, and no need to stick
-## to just one per symbol.  There's much to be said for truncating in
-## mid-word: if you type the word, you'll still get your symbol, just with
-## some extra letters you can backspace over.  So that will often be an
-## option.
-#### <MM> {bogus}:  "X"  U00000  # BOGUS ENTRY TO ENSURE SORTING
-## Some characters from other blocks will need to be added by hand...
-## Many of these have entries elsewhere.
-#- 2700;BLACK SAFETY SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {black safety scissors} :  "✀"   U2700	# BLACK SAFETY SCISSORS
-#- 2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {upper blade scissors} :  "✁"   U2701	# UPPER BLADE SCISSORS
-#- 2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {black scissors} :  "✂"   U2702	# BLACK SCISSORS
-#- 2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {lower blade scissors} :  "✃"   U2703	# LOWER BLADE SCISSORS
-#- 2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-### <MM> {white scissors} :  "✄"   U2704	# WHITE SCISSORS
-#- 2705;WHITE HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {white heavy check mark} :  "✅"   U2705	# WHITE HEAVY CHECK MARK
-#- 2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {telephone location sign} :  "✆"   U2706	# TELEPHONE LOCATION SIGN
-#- 2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-### <MM> {tape drive} :  "✇"   U2707	# TAPE DRIVE
-#- 2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {airplane} :  "✈"   U2708	# AIRPLANE
-#- 2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {envelope} :  "✉"   U2709	# ENVELOPE
-#- 270A;RAISED FIST;So;0;ON;;;;;N;;;;;
-### <MM> {raised fist} :  "✊"   U270A	# RAISED FIST
-#- 270B;RAISED HAND;So;0;ON;;;;;N;;;;;
-### <MM> {raised hand} :  "✋"   U270B	# RAISED HAND
-#- 270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <i> <c> <t> <o> <r> <y> :  "✌"   U270C	# VICTORY HAND
-#- 270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-### <MM> {writing hand} :  "✍"   U270D	# WRITING HAND
-#- 270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {lower right pencil} :  "✎"   U270E	# LOWER RIGHT PENCIL
-#- 270F;PENCIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <e> <n> <c> <i> <l> :  "✏"   U270F	# PENCIL
-#- 2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {upper right pencil} :  "✐"   U2710	# UPPER RIGHT PENCIL
-#- 2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-### <MM> {white nib} :  "✑"   U2711	# WHITE NIB
-#- 2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-### <MM> {black nib} :  "✒"   U2712	# BLACK NIB
-#- 2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {check mark} :  "✓"   U2713	# CHECK MARK
-#- 2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy check mark} :  "✔"   U2714	# HEAVY CHECK MARK
-#- 2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-### <MM> {multiplication x} :  "✕"   U2715	# MULTIPLICATION X
-#- 2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-### <MM> {heavy multiplication x} :  "✖"   U2716	# HEAVY MULTIPLICATION X
-#- 2717;BALLOT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot x} :  "✗"   U2717	# BALLOT X
-#- 2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ballot x} :  "✘"   U2718	# HEAVY BALLOT X
-#- 2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {outlined greek cross} :  "✙"   U2719	# OUTLINED GREEK CROSS
-#- 271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {heavy greek cross} :  "✚"   U271A	# HEAVY GREEK CROSS
-#- 271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-### <MM> {open centre cross} :  "✛"   U271B	# OPEN CENTRE CROSS
-#- 271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-### <MM> {heavy open centre cross} :  "✜"   U271C	# HEAVY OPEN CENTRE CROSS
-#- 271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {latin cross} :  "✝"   U271D	# LATIN CROSS
-#- 271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white latin cross} :  "✞"   U271E	# SHADOWED WHITE LATIN CROSS
-#- 271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {outlined latin cross} :  "✟"   U271F	# OUTLINED LATIN CROSS
-#- 2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {maltese cross} :  "✠"   U2720	# MALTESE CROSS
-#- 2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <asterisk> <d> <a> <v> <i> <d> :  "✡"   U2721	# STAR OF DAVID
-#- 2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four teardrop-spoked asterisk} :  "✢"   U2722	# FOUR TEARDROP-SPOKED ASTERISK
-#- 2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four balloon-spoked asterisk} :  "✣"   U2723	# FOUR BALLOON-SPOKED ASTERISK
-#- 2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy four balloon-spoked asterisk} :  "✤"   U2724	# HEAVY FOUR BALLOON-SPOKED ASTERISK
-#- 2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {four club-spoked asterisk} :  "✥"   U2725	# FOUR CLUB-SPOKED ASTERISK
-#- 2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <asterisk> <4> <B> :  "✦"   U2726	# BLACK FOUR POINTED STAR
-#- 2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <asterisk> <4> <W> :  "✧"   U2727	# WHITE FOUR POINTED STAR
-#- 2728;SPARKLES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <a> <r> <k> <l> <y> :  "✨"   U2728	# SPARKLES
-#- 2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-### <MM> {stress outlined white star} :  "✩"   U2729	# STRESS OUTLINED WHITE STAR
-## Not to be confused with single-multi-key (*)
-#- 272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <asterisk> <parenright> :  "✪"   U272A	# CIRCLED WHITE STAR
-#- 272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-### <MM> {open centre black star} :  "✫"   U272B	# OPEN CENTRE BLACK STAR
-#- 272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-### <MM> {black centre white star} :  "✬"   U272C	# BLACK CENTRE WHITE STAR
-#- 272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {outlined black star} :  "✭"   U272D	# OUTLINED BLACK STAR
-#- 272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy outlined black star} :  "✮"   U272E	# HEAVY OUTLINED BLACK STAR
-#- 272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-### <MM> {pinwheel star} :  "✯"   U272F	# PINWHEEL STAR
-#- 2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white star} :  "✰"   U2730	# SHADOWED WHITE STAR
-#- 2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy asterisk} :  "✱"   U2731	# HEAVY ASTERISK
-#- 2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-### <MM> {open centre asterisk} :  "✲"   U2732	# OPEN CENTRE ASTERISK
-#- 2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {eight spoked asterisk} :  "✳"   U2733	# EIGHT SPOKED ASTERISK
-#- 2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed black star} :  "✴"   U2734	# EIGHT POINTED BLACK STAR
-#- 2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed pinwheel star} :  "✵"   U2735	# EIGHT POINTED PINWHEEL STAR
-#- 2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {six pointed black star} :  "✶"   U2736	# SIX POINTED BLACK STAR
-#- 2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {eight pointed rectilinear black star} :  "✷"   U2737	# EIGHT POINTED RECTILINEAR BLACK STAR
-#- 2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy eight pointed rectilinear black star} :  "✸"   U2738	# HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
-#- 2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-### <MM> {twelve pointed black star} :  "✹"   U2739	# TWELVE POINTED BLACK STAR
-#- 273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {sixteen pointed asterisk} :  "✺"   U273A	# SIXTEEN POINTED ASTERISK
-#- 273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {teardrop-spoked asterisk} :  "✻"   U273B	# TEARDROP-SPOKED ASTERISK
-#- 273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-### <MM> {open centre teardrop-spoked asterisk} :  "✼"   U273C	# OPEN CENTRE TEARDROP-SPOKED ASTERISK
-#- 273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy teardrop-spoked asterisk} :  "✽"   U273D	# HEAVY TEARDROP-SPOKED ASTERISK
-#- 273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {six petalled black and white florette} :  "✾"   U273E	# SIX PETALLED BLACK AND WHITE FLORETTE
-#- 273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {black florette} :  "✿"   U273F	# BLACK FLORETTE
-#- 2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {white florette} :  "❀"   U2740	# WHITE FLORETTE
-#- 2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-### <MM> {eight petalled outlined black florette} :  "❁"   U2741	# EIGHT PETALLED OUTLINED BLACK FLORETTE
-#- 2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-### <MM> {circled open centre eight pointed star} :  "❂"   U2742	# CIRCLED OPEN CENTRE EIGHT POINTED STAR
-#- 2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy teardrop-spoked pinwheel asterisk} :  "❃"   U2743	# HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
-#- 2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <n> <o> <w> <f> <l> <a> :  "❄"   U2744	# SNOWFLAKE
-#- 2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-### <MM> {tight trifoliate snowflake} :  "❅"   U2745	# TIGHT TRIFOLIATE SNOWFLAKE
-#- 2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-### <MM> {heavy chevron snowflake} :  "❆"   U2746	# HEAVY CHEVRON SNOWFLAKE
-#- 2747;SPARKLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <1> <s> <p> <a> <r> <k> <l> :  "❇"   U2747	# SPARKLE
-#- 2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <s> <p> <a> <r> <k> <l> :  "❈"   U2748	# HEAVY SPARKLE
-#- 2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {balloon-spoked asterisk} :  "❉"   U2749	# BALLOON-SPOKED ASTERISK
-#- 274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {eight teardrop-spoked propeller asterisk} :  "❊"   U274A	# EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-#- 274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-### <MM> {heavy eight teardrop-spoked propeller asterisk} :  "❋"   U274B	# HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-#- 274C;CROSS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {cross mark} :  "❌"   U274C	# CROSS MARK
-#- 274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {shadowed white circle} :  "❍"   U274D	# SHADOWED WHITE CIRCLE
-#- 274E;NEGATIVE SQUARED CROSS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {negative squared cross mark} :  "❎"   U274E	# NEGATIVE SQUARED CROSS MARK
-#- 274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right drop-shadowed white square} :  "❏"   U274F	# LOWER RIGHT DROP-SHADOWED WHITE SQUARE
-#- 2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right drop-shadowed white square} :  "❐"   U2750	# UPPER RIGHT DROP-SHADOWED WHITE SQUARE
-#- 2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right shadowed white square} :  "❑"   U2751	# LOWER RIGHT SHADOWED WHITE SQUARE
-#- 2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right shadowed white square} :  "❒"   U2752	# UPPER RIGHT SHADOWED WHITE SQUARE
-#- 2753;BLACK QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {black question mark ornament} :  "❓"   U2753	# BLACK QUESTION MARK ORNAMENT
-#- 2754;WHITE QUESTION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {white question mark ornament} :  "❔"   U2754	# WHITE QUESTION MARK ORNAMENT
-#- 2755;WHITE EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {white exclamation mark ornament} :  "❕"   U2755	# WHITE EXCLAMATION MARK ORNAMENT
-#- 2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-### <MM> {black diamond minus white x} :  "❖"   U2756	# BLACK DIAMOND MINUS WHITE X
-#- 2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {heavy exclamation mark symbol} :  "❗"   U2757	# HEAVY EXCLAMATION MARK SYMBOL
-#- 2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {light vertical bar} :  "❘"   U2758	# LIGHT VERTICAL BAR
-#- 2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {medium vertical bar} :  "❙"   U2759	# MEDIUM VERTICAL BAR
-#- 275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-### <MM> {heavy vertical bar} :  "❚"   U275A	# HEAVY VERTICAL BAR
-#- 275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy single turned comma quotation mark ornament} :  "❛"   U275B	# HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy single comma quotation mark ornament} :  "❜"   U275C	# HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
-#- 275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy double turned comma quotation mark ornament} :  "❝"   U275D	# HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy double comma quotation mark ornament} :  "❞"   U275E	# HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 275F;HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy low single comma quotation mark ornament} :  "❟"   U275F	# HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT
-#- 2760;HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy low double comma quotation mark ornament} :  "❠"   U2760	# HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {curved stem paragraph sign ornament} :  "❡"   U2761	# CURVED STEM PARAGRAPH SIGN ORNAMENT
-#- 2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy exclamation mark ornament} :  "❢"   U2762	# HEAVY EXCLAMATION MARK ORNAMENT
-#- 2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy heart exclamation mark ornament} :  "❣"   U2763	# HEAVY HEART EXCLAMATION MARK ORNAMENT
-#- 2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-### <MM> {heavy black heart} :  "❤"   U2764	# HEAVY BLACK HEART
-#- 2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-### <MM> {rotated heavy black heart bullet} :  "❥"   U2765	# ROTATED HEAVY BLACK HEART BULLET
-#- 2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-### <MM> {floral heart} :  "❦"   U2766	# FLORAL HEART
-#- 2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-### <MM> {rotated floral heart bullet} :  "❧"   U2767	# ROTATED FLORAL HEART BULLET
-#- 2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left parenthesis ornament} :  "❨"   U2768	# MEDIUM LEFT PARENTHESIS ORNAMENT
-#- 2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right parenthesis ornament} :  "❩"   U2769	# MEDIUM RIGHT PARENTHESIS ORNAMENT
-#- 276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium flattened left parenthesis ornament} :  "❪"   U276A	# MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-#- 276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium flattened right parenthesis ornament} :  "❫"   U276B	# MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-#- 276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left-pointing angle bracket ornament} :  "❬"   U276C	# MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-#- 276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right-pointing angle bracket ornament} :  "❭"   U276D	# MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-#- 276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {heavy left-pointing angle quotation mark ornament} :  "❮"   U276E	# HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
-#- 276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {heavy right-pointing angle quotation mark ornament} :  "❯"   U276F	# HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
-#- 2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {heavy left-pointing angle bracket ornament} :  "❰"   U2770	# HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-#- 2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {heavy right-pointing angle bracket ornament} :  "❱"   U2771	# HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-#- 2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {light left tortoise shell bracket ornament} :  "❲"   U2772	# LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-#- 2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {light right tortoise shell bracket ornament} :  "❳"   U2773	# LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-#- 2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-### <MM> {medium left curly bracket ornament} :  "❴"   U2774	# MEDIUM LEFT CURLY BRACKET ORNAMENT
-#- 2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-### <MM> {medium right curly bracket ornament} :  "❵"   U2775	# MEDIUM RIGHT CURLY BRACKET ORNAMENT
-#- 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-#- 1F300;CYCLONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <y> <c> <l> <o> <n> <e> :  "🌀"   U1F300	# CYCLONE
-#- 1F301;FOGGY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <F> <o> <g> <g> <y> :  "🌁"   U1F301	# FOGGY
-#- 1F302;CLOSED UMBRELLA;So;0;ON;;;;;N;;;;;
-### <MM> {closed umbrella} :  "🌂"   U1F302	# CLOSED UMBRELLA
-#- 1F303;NIGHT WITH STARS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <i> <g> <h> <t> :  "🌃"   U1F303	# NIGHT WITH STARS
-#- 1F304;SUNRISE OVER MOUNTAINS;So;0;ON;;;;;N;;;;;
-### <MM> {sunrise over mountains} :  "🌄"   U1F304	# SUNRISE OVER MOUNTAINS
-#- 1F305;SUNRISE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <S> <u> <n> <r> <i> <s> <e> :  "🌅"   U1F305	# SUNRISE
-#- 1F306;CITYSCAPE AT DUSK;So;0;ON;;;;;N;;;;;
-### <MM> {cityscape at dusk} :  "🌆"   U1F306	# CITYSCAPE AT DUSK
-#- 1F307;SUNSET OVER BUILDINGS;So;0;ON;;;;;N;;;;;
-### <MM> {sunset over buildings} :  "🌇"   U1F307	# SUNSET OVER BUILDINGS
-#- 1F308;RAINBOW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <a> <i> <n> <b> <o> <w> :  "🌈"   U1F308	# RAINBOW
-#- 1F309;BRIDGE AT NIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {bridge at night} :  "🌉"   U1F309	# BRIDGE AT NIGHT
-#- 1F30A;WATER WAVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <a> <v> <e> :  "🌊"   U1F30A	# WATER WAVE
-#- 1F30B;VOLCANO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <o> <l> <c> <a> <n> <o> :  "🌋"   U1F30B	# VOLCANO
-#- 1F30C;MILKY WAY;So;0;ON;;;;;N;;;;;
-### <MM> {milky way} :  "🌌"   U1F30C	# MILKY WAY
-#- 1F30D;EARTH GLOBE EUROPE-AFRICA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <E> <a> <r> <t> <h> <E> <U> :  "🌍"   U1F30D	# EARTH GLOBE EUROPE-AFRICA
-#- 1F30E;EARTH GLOBE AMERICAS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <E> <a> <r> <t> <h> <A> <M> :  "🌎"   U1F30E	# EARTH GLOBE AMERICAS
-#- 1F30F;EARTH GLOBE ASIA-AUSTRALIA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <E> <a> <r> <t> <h> <A> <S> :  "🌏"   U1F30F	# EARTH GLOBE ASIA-AUSTRALIA
-#- 1F310;GLOBE WITH MERIDIANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <l> <o> <b> <e> :  "🌐"   U1F310	# GLOBE WITH MERIDIANS
-<Multi_key> <Multi_key>  <E> <a> <r> <t> <h> <bar> <minus> :  "🌐"   U1F310	# GLOBE WITH MERIDIANS
-#- 1F311;NEW MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {new moon symbol} :  "🌑"   U1F311	# NEW MOON SYMBOL
-#- 1F312;WAXING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waxing crescent moon symbol} :  "🌒"   U1F312	# WAXING CRESCENT MOON SYMBOL
-#- 1F313;FIRST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {first quarter moon symbol} :  "🌓"   U1F313	# FIRST QUARTER MOON SYMBOL
-#- 1F314;WAXING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waxing gibbous moon symbol} :  "🌔"   U1F314	# WAXING GIBBOUS MOON SYMBOL
-#- 1F315;FULL MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {full moon symbol} :  "🌕"   U1F315	# FULL MOON SYMBOL
-#- 1F316;WANING GIBBOUS MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waning gibbous moon symbol} :  "🌖"   U1F316	# WANING GIBBOUS MOON SYMBOL
-#- 1F317;LAST QUARTER MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {last quarter moon symbol} :  "🌗"   U1F317	# LAST QUARTER MOON SYMBOL
-#- 1F318;WANING CRESCENT MOON SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {waning crescent moon symbol} :  "🌘"   U1F318	# WANING CRESCENT MOON SYMBOL
-#- 1F319;CRESCENT MOON;So;0;ON;;;;;N;;;;;
-### <MM> {crescent moon} :  "🌙"   U1F319	# CRESCENT MOON
-#- 1F31A;NEW MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {new moon with face} :  "🌚"   U1F31A	# NEW MOON WITH FACE
-#- 1F31B;FIRST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {first quarter moon with face} :  "🌛"   U1F31B	# FIRST QUARTER MOON WITH FACE
-#- 1F31C;LAST QUARTER MOON WITH FACE;So;0;ON;;;;;N;;;;;
-### <MM> {last quarter moon with face} :  "🌜"   U1F31C	# LAST QUARTER MOON WITH FACE
-#- 1F31D;FULL MOON WITH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <m> <o> <o> <n> :  "🌝"   U1F31D	# FULL MOON WITH FACE
-#- 1F31E;SUN WITH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <s> <u> <n> :  "🌞"   U1F31E	# SUN WITH FACE
-<Multi_key> <Multi_key>  <S> <u> <n> <f> <a> <c> <e> :  "🌞"   U1F31E	# SUN WITH FACE
-#- 1F31F;GLOWING STAR;So;0;ON;;;;;N;;;;;
-### <MM> {glowing star} :  "🌟"   U1F31F	# GLOWING STAR
-#- 1F320;SHOOTING STAR;So;0;ON;;;;;N;;;;;
-### <MM> {shooting star} :  "🌠"   U1F320	# SHOOTING STAR
-#- 1F321;THERMOMETER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <h> <e> <r> <m> <o> <m> :  "🌡"   U1F321	# THERMOMETER
-#- 1F322;BLACK DROPLET;So;0;ON;;;;;N;;;;;
-### <MM> {black droplet} :  "🌢"   U1F322	# BLACK DROPLET
-#- 1F323;WHITE SUN;So;0;ON;;;;;N;;;;;
-### <MM> {white sun} :  "🌣"   U1F323	# WHITE SUN
-#- 1F324;WHITE SUN WITH SMALL CLOUD;So;0;ON;;;;;N;;;;;
-### <MM> {white sun with small cloud} :  "🌤"   U1F324	# WHITE SUN WITH SMALL CLOUD
-#- 1F325;WHITE SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;
-### <MM> {white sun behind cloud} :  "🌥"   U1F325	# WHITE SUN BEHIND CLOUD
-#- 1F326;WHITE SUN BEHIND CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;
-### <MM> {white sun behind cloud with rain} :  "🌦"   U1F326	# WHITE SUN BEHIND CLOUD WITH RAIN
-#- 1F327;CLOUD WITH RAIN;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with rain} :  "🌧"   U1F327	# CLOUD WITH RAIN
-#- 1F328;CLOUD WITH SNOW;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with snow} :  "🌨"   U1F328	# CLOUD WITH SNOW
-#- 1F329;CLOUD WITH LIGHTNING;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with lightning} :  "🌩"   U1F329	# CLOUD WITH LIGHTNING
-#- 1F32A;CLOUD WITH TORNADO;So;0;ON;;;;;N;;;;;
-### <MM> {cloud with tornado} :  "🌪"   U1F32A	# CLOUD WITH TORNADO
-#- 1F32B;FOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <o> <g> :  "🌫"   U1F32B	# FOG
-#- 1F32C;WIND BLOWING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <W> <i> <n> <d> :  "🌬"   U1F32C	# WIND BLOWING FACE
-<Multi_key> <Multi_key>  <b> <l> <o> <w> <e> <r> :  "🌬"   U1F32C	# WIND BLOWING FACE
-#- 1F32D;HOT DOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <t> <d> <o> <g> :  "🌭"   U1F32D	# HOT DOG
-<Multi_key> <Multi_key>  <h> <o> <t> <space> <d> <o> <g> :  "🌭"   U1F32D	# HOT DOG
-#- 1F32E;TACO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <c> <o> :  "🌮"   U1F32E	# TACO
-#- 1F32F;BURRITO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <r> <r> <i> <t> <o> :  "🌯"   U1F32F	# BURRITO
-#- 1F330;CHESTNUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <s> <t> <n> <u> :  "🌰"   U1F330	# CHESTNUT
-<Multi_key> <Multi_key>  <c> <h> <s> <t> <n> <u> <t> :  "🌰"   U1F330	# CHESTNUT
-#- 1F331;SEEDLING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <e> <e> <d> <l> <n> <g> :  "🌱"   U1F331	# SEEDLING
-#- 1F332;EVERGREEN TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <n> <e> <t> <r> <e> :  "🌲"   U1F332	# EVERGREEN TREE
-#- 1F333;DECIDUOUS TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <e> <e> :  "🌳"   U1F333	# DECIDUOUS TREE
-#- 1F334;PALM TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <a> <l> <m> <t> <r> <e> :  "🌴"   U1F334	# PALM TREE
-<Multi_key> <Multi_key>  <p> <a> <l> <m> :  "🌴"   U1F334	# PALM TREE
-#- 1F335;CACTUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <c> <t> <u> <s> :  "🌵"   U1F335	# CACTUS
-#- 1F336;HOT PEPPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <i> <l> <e> :  "🌶"   U1F336	# HOT PEPPER
-#- 1F337;TULIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <l> <i> <p> :  "🌷"   U1F337	# TULIP
-#- 1F338;CHERRY BLOSSOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <r> <r> <y> <f> :  "🌸"   U1F338	# CHERRY BLOSSOM
-#- 1F339;ROSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <s> <e> :  "🌹"   U1F339	# ROSE
-#- 1F33A;HIBISCUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <i> <b> <i> <s> <c> :  "🌺"   U1F33A	# HIBISCUS
-#- 1F33B;SUNFLOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <S> <u> <n> <f> <l> <w> <r> :  "🌻"   U1F33B	# SUNFLOWER
-#- 1F33C;BLOSSOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <l> <o> <s> <s> <o> <m> :  "🌼"   U1F33C	# BLOSSOM
-#- 1F33D;EAR OF MAIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <a> <i> <z> <e> :  "🌽"   U1F33D	# EAR OF MAIZE
-#- 1F33E;EAR OF RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <i> <c> <e> <e> <a> <r> :  "🌾"   U1F33E	# EAR OF RICE
-#- 1F33F;HERB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <e> <r> <b> :  "🌿"   U1F33F	# HERB
-#- 1F340;FOUR LEAF CLOVER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <l> <o> <v> <e> <r> :  "🍀"   U1F340	# FOUR LEAF CLOVER
-#- 1F341;MAPLE LEAF;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <a> <p> <l> <e> :  "🍁"   U1F341	# MAPLE LEAF
-#- 1F342;FALLEN LEAF;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <a> <l> <l> <e> <a> <f> :  "🍂"   U1F342	# FALLEN LEAF
-#- 1F343;LEAF FLUTTERING IN WIND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <n> <d> <l> <e> <a> <f> :  "🍃"   U1F343	# LEAF FLUTTERING IN WIND
-#- 1F344;MUSHROOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <s> <h> <r> <m> :  "🍄"   U1F344	# MUSHROOM
-#- 1F345;TOMATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <m> <a> <t> <o> :  "🍅"   U1F345	# TOMATO
-#- 1F346;AUBERGINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <u> <b> <e> <r> <g> <i> :  "🍆"   U1F346	# AUBERGINE
-<Multi_key> <Multi_key>  <a> <u> <b> <r> <g> <i> <n> :  "🍆"   U1F346	# AUBERGINE
-#- 1F347;GRAPES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <a> <p> <e> <s> :  "🍇"   U1F347	# GRAPES
-#- 1F348;MELON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <l> <o> <n> :  "🍈"   U1F348	# MELON
-#- 1F349;WATERMELON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <t> <r> <m> <l> <n> :  "🍉"   U1F349	# WATERMELON
-#- 1F34A;TANGERINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <n> <g> <e> <r> <i> :  "🍊"   U1F34A	# TANGERINE
-<Multi_key> <Multi_key>  <t> <a> <n> <g> <e> <r> <n> :  "🍊"   U1F34A	# TANGERINE
-#- 1F34B;LEMON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <e> <m> <o> <n> :  "🍋"   U1F34B	# LEMON
-#- 1F34C;BANANA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <n> <a> <n> <a> :  "🍌"   U1F34C	# BANANA
-#- 1F34D;PINEAPPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <n> <e> <a> <p> <p> :  "🍍"   U1F34D	# PINEAPPLE
-<Multi_key> <Multi_key>  <p> <n> <a> <p> <p> <l> <e> :  "🍍"   U1F34D	# PINEAPPLE
-#- 1F34E;RED APPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <e> <d> <a> <p> <p> <l> :  "🍎"   U1F34E	# RED APPLE
-<Multi_key> <Multi_key>  <r> <d> <a> <p> <p> <l> <e> :  "🍎"   U1F34E	# RED APPLE
-#- 1F34F;GREEN APPLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <e> <e> <n> <a> <p> :  "🍏"   U1F34F	# GREEN APPLE
-<Multi_key> <Multi_key>  <g> <n> <a> <p> <p> <l> <e> :  "🍏"   U1F34F	# GREEN APPLE
-#- 1F350;PEAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <e> <a> <r> :  "🍐"   U1F350	# PEAR
-#- 1F351;PEACH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <e> <a> <c> <h> :  "🍑"   U1F351	# PEACH
-#- 1F352;CHERRIES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <r> <r> <y> <s> :  "🍒"   U1F352	# CHERRIES
-<Multi_key> <Multi_key>  <c> <h> <e> <r> <r> <i> <e> :  "🍒"   U1F352	# CHERRIES
-<Multi_key> <Multi_key>  <c> <h> <e> <r> <r> <i> <s> :  "🍒"   U1F352	# CHERRIES
-#- 1F353;STRAWBERRY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <t> <r> <a> <w> <b> <e> :  "🍓"   U1F353	# STRAWBERRY
-<Multi_key> <Multi_key>  <s> <t> <r> <w> <b> <r> <y> :  "🍓"   U1F353	# STRAWBERRY
-#- 1F354;HAMBURGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <m> <b> <u> <r> <g> :  "🍔"   U1F354	# HAMBURGER
-<Multi_key> <Multi_key>  <h> <a> <m> <b> <r> <g> <r> :  "🍔"   U1F354	# HAMBURGER
-#- 1F355;SLICE OF PIZZA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <z> <z> <a> :  "🍕"   U1F355	# SLICE OF PIZZA
-#- 1F356;MEAT ON BONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <a> <t> :  "🍖"   U1F356	# MEAT ON BONE
-<Multi_key> <Multi_key>  <b> <o> <n> <e> :  "🍖"   U1F356	# MEAT ON BONE
-#- 1F357;POULTRY LEG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <C> <h> <k> <n> <l> <e> <g> :  "🍗"   U1F357	# POULTRY LEG
-#- 1F358;RICE CRACKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <r> <a> <c> <k> <e> <r> :  "🍘"   U1F358	# RICE CRACKER
-#- 1F359;RICE BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <i> <c> <e> <b> <l> <l> :  "🍙"   U1F359	# RICE BALL
-#- 1F35A;COOKED RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <i> <c> <e> :  "🍚"   U1F35A	# COOKED RICE
-#- 1F35B;CURRY AND RICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <u> <r> <r> <y> :  "🍛"   U1F35B	# CURRY AND RICE
-#- 1F35C;STEAMING BOWL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <w> <l> :  "🍜"   U1F35C	# STEAMING BOWL
-#- 1F35D;SPAGHETTI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <s> <t> <a> :  "🍝"   U1F35D	# SPAGHETTI
-#- 1F35E;BREAD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <r> <e> <a> <d> :  "🍞"   U1F35E	# BREAD
-#- 1F35F;FRENCH FRIES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <i> <p> <s> :  "🍟"   U1F35F	# FRENCH FRIES
-<Multi_key> <Multi_key>  <f> <r> <i> <e> <s> :  "🍟"   U1F35F	# FRENCH FRIES
-#- 1F360;ROASTED SWEET POTATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <y> <a> <m> :  "🍠"   U1F360	# ROASTED SWEET POTATO
-#- 1F361;DANGO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <a> <n> <g> <o> :  "🍡"   U1F361	# DANGO
-#- 1F362;ODEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <d> <e> <n> :  "🍢"   U1F362	# ODEN
-#- 1F363;SUSHI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <u> <s> <h> <i> :  "🍣"   U1F363	# SUSHI
-#- 1F364;FRIED SHRIMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <F> <s> <h> <r> <i> <m> <p> :  "🍤"   U1F364	# FRIED SHRIMP
-#- 1F365;FISH CAKE WITH SWIRL DESIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <w> <i> <r> <l> :  "🍥"   U1F365	# FISH CAKE WITH SWIRL DESIGN
-#- 1F366;SOFT ICE CREAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <o> <f> <t> <i> <c> <e> :  "🍦"   U1F366	# SOFT ICE CREAM
-#- 1F367;SHAVED ICE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <a> <v> <i> <c> <e> :  "🍧"   U1F367	# SHAVED ICE
-#- 1F368;ICE CREAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <i> <c> <e> <c> <r> <e> <a> :  "🍨"   U1F368	# ICE CREAM
-<Multi_key> <Multi_key>  <i> <c> <e> <c> <r> <m> :  "🍨"   U1F368	# ICE CREAM
-#- 1F369;DOUGHNUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <o> <n> <u> <t> :  "🍩"   U1F369	# DOUGHNUT
-#- 1F36A;COOKIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <o> <k> <i> <e> :  "🍪"   U1F36A	# COOKIE
-#- 1F36B;CHOCOLATE BAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <o> <c> <b> <a> <r> :  "🍫"   U1F36B	# CHOCOLATE BAR
-#- 1F36C;CANDY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <n> <d> <y> :  "🍬"   U1F36C	# CANDY
-#- 1F36D;LOLLIPOP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <o> <l> <l> <y> :  "🍭"   U1F36D	# LOLLIPOP
-<Multi_key> <Multi_key>  <l> <o> <l> <p> <o> <p> :  "🍭"   U1F36D	# LOLLIPOP
-#- 1F36E;CUSTARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <u> <s> <t> <a> <r> <d> :  "🍮"   U1F36E	# CUSTARD
-#- 1F36F;HONEY POT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <n> <e> <y> :  "🍯"   U1F36F	# HONEY POT
-#- 1F370;SHORTCAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <r> <t> <c> <k> <e> :  "🍰"   U1F370	# SHORTCAKE
-#- 1F371;BENTO BOX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <n> <t> <o> :  "🍱"   U1F371	# BENTO BOX
-#- 1F372;POT OF FOOD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <t> :  "🍲"   U1F372	# POT OF FOOD
-#- 1F373;COOKING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <o> <k> <i> <n> <g> :  "🍳"   U1F373	# COOKING
-#- 1F374;FORK AND KNIFE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <r> <k> <k> <n> <f> <e> :  "🍴"   U1F374	# FORK AND KNIFE
-#- 1F375;TEACUP WITHOUT HANDLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <c> <u> <p> :  "🍵"   U1F375	# TEACUP WITHOUT HANDLE
-#- 1F376;SAKE BOTTLE AND CUP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <a> <k> <e> :  "🍶"   U1F376	# SAKE BOTTLE AND CUP
-#- 1F377;WINE GLASS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <i> <n> <e> :  "🍷"   U1F377	# WINE GLASS
-#- 1F378;COCKTAIL GLASS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <c> <k> <t> <a> <i> :  "🍸"   U1F378	# COCKTAIL GLASS
-#- 1F379;TROPICAL DRINK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <o> <p> <i> <c> :  "🍹"   U1F379	# TROPICAL DRINK
-#- 1F37A;BEER MUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <e> <r> :  "🍺"   U1F37A	# BEER MUG
-#- 1F37B;CLINKING BEER MUGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <l> <i> <n> <k> :  "🍻"   U1F37B	# CLINKING BEER MUGS
-#- 1F37C;BABY BOTTLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <t> <t> <l> <e> :  "🍼"   U1F37C	# BABY BOTTLE
-#- 1F37D;FORK AND KNIFE WITH PLATE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <e> <t> <t> <i> <n> <g> :  "🍽"   U1F37D	# FORK AND KNIFE WITH PLATE
-#- 1F37E;BOTTLE WITH POPPING CORK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <p> <c> <o> <r> <k> :  "🍾"   U1F37E	# BOTTLE WITH POPPING CORK
-#- 1F37F;POPCORN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <p> <c> <o> <r> <n> :  "🍿"   U1F37F	# POPCORN
-#- 1F380;RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <i> <b> <b> <o> <n> :  "🎀"   U1F380	# RIBBON
-#- 1F381;WRAPPED PRESENT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <r> <e> <s> <e> <n> <t> :  "🎁"   U1F381	# WRAPPED PRESENT
-#- 1F382;BIRTHDAY CAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <r> <t> <h> <d> <a> :  "🎂"   U1F382	# BIRTHDAY CAKE
-#- 1F383;JACK-O-LANTERN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <u> <m> <p> <k> <i> <n> :  "🎃"   U1F383	# JACK-O-LANTERN
-#- 1F384;CHRISTMAS TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <x> <m> <s> <t> <r> <e> <e> :  "🎄"   U1F384	# CHRISTMAS TREE
-#- 1F385;FATHER CHRISTMAS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <a> <n> <t> <a> :  "🎅"   U1F385	# FATHER CHRISTMAS
-#- 1F386;FIREWORKS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <F> <i> <r> <e> <w> <r> <k> :  "🎆"   U1F386	# FIREWORKS
-#- 1F387;FIREWORK SPARKLER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <a> <r> <k> <e> <r> :  "🎇"   U1F387	# FIREWORK SPARKLER
-#- 1F388;BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <l> <l> <o> <o> <n> :  "🎈"   U1F388	# BALLOON
-#- 1F389;PARTY POPPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <p> <p> <e> <r> :  "🎉"   U1F389	# PARTY POPPER
-#- 1F38A;CONFETTI BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <n> <f> <e> <t> <i> :  "🎊"   U1F38A	# CONFETTI BALL
-#- 1F38B;TANABATA TREE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <n> <a> <b> <a> <t> :  "🎋"   U1F38B	# TANABATA TREE
-#- 1F38C;CROSSED FLAGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <X> <f> <l> <a> <g> <s> :  "🎌"   U1F38C	# CROSSED FLAGS
-#- 1F38D;PINE DECORATION;So;0;ON;;;;;N;;;;;
-### <MM> {pine decoration} :  "🎍"   U1F38D	# PINE DECORATION
-#- 1F38E;JAPANESE DOLLS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <j> <a> <p> <d> <o> <l> <l> :  "🎎"   U1F38E	# JAPANESE DOLLS
-#- 1F38F;CARP STREAMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <r> <p> :  "🎏"   U1F38F	# CARP STREAMER
-#- 1F390;WIND CHIME;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <i> <m> <e> :  "🎐"   U1F390	# WIND CHIME
-#- 1F391;MOON VIEWING CEREMONY;So;0;ON;;;;;N;;;;;
-### <MM> {moon viewing ceremony} :  "🎑"   U1F391	# MOON VIEWING CEREMONY
-#- 1F392;SCHOOL SATCHEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <o> <o> <k> <b> <a> <g> :  "🎒"   U1F392	# SCHOOL SATCHEL
-#- 1F393;GRADUATION CAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <a> <d> :  "🎓"   U1F393	# GRADUATION CAP
-#- 1F394;HEART WITH TIP ON THE LEFT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <less> <less> <3> :  "🎔"   U1F394	# HEART WITH TIP ON THE LEFT
-#- 1F395;BOUQUET OF FLOWERS;So;0;ON;;;;;N;;;;;
-### <MM> {bouquet of flowers} :  "🎕"   U1F395	# BOUQUET OF FLOWERS
-#- 1F396;MILITARY MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <M> <e> <d> <a> <l> :  "🎖"   U1F396	# MILITARY MEDAL
-#- 1F397;REMINDER RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <e> <m> <i> <n> <d> :  "🎗"   U1F397	# REMINDER RIBBON
-<Multi_key> <Multi_key>  <r> <e> <m> <e> <m> <b> <e> :  "🎗"   U1F397	# REMINDER RIBBON
-<Multi_key> <Multi_key>  <r> <e> <m> <e> <m> <b> <r> :  "🎗"   U1F397	# REMINDER RIBBON
-#- 1F398;MUSICAL KEYBOARD WITH JACKS;So;0;ON;;;;;N;;;;;
-### <MM> {musical keyboard with jacks} :  "🎘"   U1F398	# MUSICAL KEYBOARD WITH JACKS
-#- 1F399;STUDIO MICROPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {mic} :  "🎙"   U1F399	# STUDIO MICROPHONE
-#- 1F39A;LEVEL SLIDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <l> <i> <d> <e> <r> :  "🎚"   U1F39A	# LEVEL SLIDER
-#- 1F39B;CONTROL KNOBS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <n> <o> <b> <s> :  "🎛"   U1F39B	# CONTROL KNOBS
-#- 1F39C;BEAMED ASCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {beamed ascending musical notes} :  "🎜"   U1F39C	# BEAMED ASCENDING MUSICAL NOTES
-#- 1F39D;BEAMED DESCENDING MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {beamed descending musical notes} :  "🎝"   U1F39D	# BEAMED DESCENDING MUSICAL NOTES
-#- 1F39E;FILM FRAMES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <r> <a> <m> <e> <s> :  "🎞"   U1F39E	# FILM FRAMES
-#- 1F39F;ADMISSION TICKETS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <T> <i> <c> <k> <e> <t> <s> :  "🎟"   U1F39F	# ADMISSION TICKETS
-#- 1F3A0;CAROUSEL HORSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <r> <o> <s> <e> <l> :  "🎠"   U1F3A0	# CAROUSEL HORSE
-#- 1F3A1;FERRIS WHEEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <e> <r> <r> <i> <s> :  "🎡"   U1F3A1	# FERRIS WHEEL
-#- 1F3A2;ROLLER COASTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <a> <s> <t> <e> <r> :  "🎢"   U1F3A2	# ROLLER COASTER
-#- 1F3A3;FISHING POLE AND FISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <s> <h> <p> <o> <l> <e> :  "🎣"   U1F3A3	# FISHING POLE AND FISH
-#- 1F3A4;MICROPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <i> <c> :  "🎤"   U1F3A4	# MICROPHONE
-#- 1F3A5;MOVIE CAMERA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <v> <i> <c> <a> <m> :  "🎥"   U1F3A5	# MOVIE CAMERA
-#- 1F3A6;CINEMA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <i> <n> <e> <m> <a> :  "🎦"   U1F3A6	# CINEMA
-#- 1F3A7;HEADPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <e> <a> <d> <p> <h> <o> :  "🎧"   U1F3A7	# HEADPHONE
-<Multi_key> <Multi_key>  <h> <e> <d> <p> <h> <o> <n> :  "🎧"   U1F3A7	# HEADPHONE
-#- 1F3A8;ARTIST PALETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <l> <e> <t> <t> <e> :  "🎨"   U1F3A8	# ARTIST PALETTE
-#- 1F3A9;TOP HAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <p> <h> <a> <t> :  "🎩"   U1F3A9	# TOP HAT
-#- 1F3AA;CIRCUS TENT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <i> <r> <c> <u> <s> :  "🎪"   U1F3AA	# CIRCUS TENT
-#- 1F3AB;TICKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <i> <c> <k> <e> <t> :  "🎫"   U1F3AB	# TICKET
-#- 1F3AC;CLAPPER BOARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <l> <a> <p> <p> <e> <r> :  "🎬"   U1F3AC	# CLAPPER BOARD
-#- 1F3AD;PERFORMING ARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <parenright> <colon> <parenleft> :  "🎭"   U1F3AD	# PERFORMING ARTS
-#- 1F3AE;VIDEO GAME;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <i> <d> <g> <a> <m> <e> :  "🎮"   U1F3AE	# VIDEO GAME
-#- 1F3AF;DIRECT HIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <i> <t> :  "🎯"   U1F3AF	# DIRECT HIT
-#- 1F3B0;SLOT MACHINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <l> <o> <t> <s> :  "🎰"   U1F3B0	# SLOT MACHINE
-#- 1F3B1;BILLIARDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <l> <l> <i> <a> <r> :  "🎱"   U1F3B1	# BILLIARDS
-<Multi_key> <Multi_key>  <b> <i> <l> <l> <r> <d> <s> :  "🎱"   U1F3B1	# BILLIARDS
-#- 1F3B2;GAME DIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <a> <m> <e> <d> <i> <e> :  "🎲"   U1F3B2	# GAME DIE
-## Careful not to conflict with "bowl"
-#- 1F3B3;BOWLING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <o> <w> <l> <i> <n> <g> :  "🎳"   U1F3B3	# BOWLING
-## These were called "hanafuda"
-#- 1F3B4;FLOWER PLAYING CARDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <n> <a> <f> <d> <a> :  "🎴"   U1F3B4	# FLOWER PLAYING CARDS
-#- 1F3B5;MUSICAL NOTE;So;0;ON;;;;;N;;;;;
-### <MM> {musical note} :  "🎵"   U1F3B5	# MUSICAL NOTE
-#- 1F3B6;MULTIPLE MUSICAL NOTES;So;0;ON;;;;;N;;;;;
-### <MM> {multiple musical notes} :  "🎶"   U1F3B6	# MULTIPLE MUSICAL NOTES
-#- 1F3B7;SAXOPHONE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <a> <x> :  "🎷"   U1F3B7	# SAXOPHONE
-#- 1F3B8;GUITAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <u> <i> <t> <a> <r> :  "🎸"   U1F3B8	# GUITAR
-#- 1F3B9;MUSICAL KEYBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {musical keyboard} :  "🎹"   U1F3B9	# MUSICAL KEYBOARD
-#- 1F3BA;TRUMPET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <u> <m> <p> <e> <t> :  "🎺"   U1F3BA	# TRUMPET
-#- 1F3BB;VIOLIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <i> <o> <l> <i> <n> :  "🎻"   U1F3BB	# VIOLIN
-#- 1F3BC;MUSICAL SCORE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <c> <o> <r> <e> :  "🎼"   U1F3BC	# MUSICAL SCORE
-#- 1F3BD;RUNNING SHIRT WITH SASH;So;0;ON;;;;;N;;;;;
-### <MM> {running shirt with sash} :  "🎽"   U1F3BD	# RUNNING SHIRT WITH SASH
-#- 1F3BE;TENNIS RACQUET AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <e> <n> <n> <i> <s> :  "🎾"   U1F3BE	# TENNIS RACQUET AND BALL
-#- 1F3BF;SKI AND SKI BOOT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <b> <o> <o> <t> :  "🎿"   U1F3BF	# SKI AND SKI BOOT
-#- 1F3C0;BASKETBALL AND HOOP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <o> <p> <s> :  "🏀"   U1F3C0	# BASKETBALL AND HOOP
-#- 1F3C1;CHEQUERED FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <k> <f> <l> <g> :  "🏁"   U1F3C1	# CHEQUERED FLAG
-#- 1F3C2;SNOWBOARDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <n> <o> <w> <b> <r> <d> :  "🏂"   U1F3C2	# SNOWBOARDER
-#- 1F3C3;RUNNER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <u> <n> <n> <e> <r> :  "🏃"   U1F3C3	# RUNNER
-#- 1F3C4;SURFER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <u> <r> <f> <e> <r> :  "🏄"   U1F3C4	# SURFER
-#- 1F3C5;SPORTS MEDAL;So;0;ON;;;;;N;;;;;
-### <MM> {sports medal} :  "🏅"   U1F3C5	# SPORTS MEDAL
-#- 1F3C6;TROPHY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <o> <p> <h> <y> :  "🏆"   U1F3C6	# TROPHY
-#- 1F3C7;HORSE RACING;So;0;ON;;;;;N;;;;;
-### <MM> {horse racing} :  "🏇"   U1F3C7	# HORSE RACING
-#- 1F3C8;AMERICAN FOOTBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <n> <d> <e> <g> <g> :  "🏈"   U1F3C8	# AMERICAN FOOTBALL
-#- 1F3C9;RUGBY FOOTBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <u> <g> <b> <y> :  "🏉"   U1F3C9	# RUGBY FOOTBALL
-#- 1F3CA;SWIMMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <w> <i> <m> <m> <e> <r> :  "🏊"   U1F3CA	# SWIMMER
-#- 1F3CB;WEIGHT LIFTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <i> <f> <t> <e> <r> :  "🏋"   U1F3CB	# WEIGHT LIFTER
-#- 1F3CC;GOLFER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <o> <l> <f> <e> <r> :  "🏌"   U1F3CC	# GOLFER
-#- 1F3CD;RACING MOTORCYCLE;So;0;ON;;;;;N;;;;;
-### <MM> {racing motorcycle} :  "🏍"   U1F3CD	# RACING MOTORCYCLE
-#- 1F3CE;RACING CAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <a> <c> <e> <c> <a> <r> :  "🏎"   U1F3CE	# RACING CAR
-#- 1F3CF;CRICKET BAT AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <r> <i> <c> <k> <e> <t> :  "🏏"   U1F3CF	# CRICKET BAT AND BALL
-#- 1F3D0;VOLLEYBALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <o> <l> <l> <e> <y> :  "🏐"   U1F3D0	# VOLLEYBALL
-#- 1F3D1;FIELD HOCKEY STICK AND BALL;So;0;ON;;;;;N;;;;;
-### <MM> {field hockey stick and ball} :  "🏑"   U1F3D1	# FIELD HOCKEY STICK AND BALL
-#- 1F3D2;ICE HOCKEY STICK AND PUCK;So;0;ON;;;;;N;;;;;
-### <MM> {ice hockey stick and puck} :  "🏒"   U1F3D2	# ICE HOCKEY STICK AND PUCK
-#- 1F3D3;TABLE TENNIS PADDLE AND BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <n> <g> <p> <o> <n> :  "🏓"   U1F3D3	# TABLE TENNIS PADDLE AND BALL
-#- 1F3D4;SNOW CAPPED MOUNTAIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <u> <n> <t> <a> <i> :  "🏔"   U1F3D4	# SNOW CAPPED MOUNTAIN
-#- 1F3D5;CAMPING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <m> <p> <i> <n> <g> :  "🏕"   U1F3D5	# CAMPING
-#- 1F3D6;BEACH WITH UMBRELLA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <a> <c> <h> :  "🏖"   U1F3D6	# BEACH WITH UMBRELLA
-#- 1F3D7;BUILDING CONSTRUCTION;So;0;ON;;;;;N;;;;;
-### <MM> {building construction} :  "🏗"   U1F3D7	# BUILDING CONSTRUCTION
-#- 1F3D8;HOUSE BUILDINGS;So;0;ON;;;;;N;;;;;
-### <MM> {house buildings} :  "🏘"   U1F3D8	# HOUSE BUILDINGS
-#- 1F3D9;CITYSCAPE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <i> <t> <y> :  "🏙"   U1F3D9	# CITYSCAPE
-#- 1F3DA;DERELICT HOUSE BUILDING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <l> <u> <m> :  "🏚"   U1F3DA	# DERELICT HOUSE BUILDING
-#- 1F3DB;CLASSICAL BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {classical building} :  "🏛"   U1F3DB	# CLASSICAL BUILDING
-#- 1F3DC;DESERT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <e> <s> <e> <r> <t> :  "🏜"   U1F3DC	# DESERT
-#- 1F3DD;DESERT ISLAND;So;0;ON;;;;;N;;;;;
-### <MM> {desert island} :  "🏝"   U1F3DD	# DESERT ISLAND
-#- 1F3DE;NATIONAL PARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <a> <t> <p> <a> <r> <k> :  "🏞"   U1F3DE	# NATIONAL PARK
-#- 1F3DF;STADIUM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <t> <a> <d> <i> <u> <m> :  "🏟"   U1F3DF	# STADIUM
-#- 1F3E0;HOUSE BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {house building} :  "🏠"   U1F3E0	# HOUSE BUILDING
-#- 1F3E1;HOUSE WITH GARDEN;So;0;ON;;;;;N;;;;;
-### <MM> {house with garden} :  "🏡"   U1F3E1	# HOUSE WITH GARDEN
-#- 1F3E2;OFFICE BUILDING;So;0;ON;;;;;N;;;;;
-### <MM> {office building} :  "🏢"   U1F3E2	# OFFICE BUILDING
-#- 1F3E3;JAPANESE POST OFFICE;So;0;ON;;;;;N;;;;;
-### <MM> {japanese post office} :  "🏣"   U1F3E3	# JAPANESE POST OFFICE
-#- 1F3E4;EUROPEAN POST OFFICE;So;0;ON;;;;;N;;;;;
-### <MM> {european post office} :  "🏤"   U1F3E4	# EUROPEAN POST OFFICE
-#- 1F3E5;HOSPITAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <s> <p> <t> <a> <l> :  "🏥"   U1F3E5	# HOSPITAL
-#- 1F3E6;BANK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <n> <k> :  "🏦"   U1F3E6	# BANK
-#- 1F3E7;AUTOMATED TELLER MACHINE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <A> <T> <M> :  "🏧"   U1F3E7	# AUTOMATED TELLER MACHINE
-#- 1F3E8;HOTEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <t> <e> <l> :  "🏨"   U1F3E8	# HOTEL
-#- 1F3E9;LOVE HOTEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <x> <h> <o> <t> <e> <l> :  "🏩"   U1F3E9	# LOVE HOTEL
-#- 1F3EA;CONVENIENCE STORE;So;0;ON;;;;;N;;;;;
-## Obvious culturally biased keyword below...
-### <MM> {convenience store} :  "🏪"   U1F3EA	# CONVENIENCE STORE
-<Multi_key> <Multi_key>  <7> <minus> <1> <1> :  "🏪"   U1F3EA	# CONVENIENCE STORE
-#- 1F3EB;SCHOOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <c> <h> <o> <o> <l> :  "🏫"   U1F3EB	# SCHOOL
-#- 1F3EC;DEPARTMENT STORE;So;0;ON;;;;;N;;;;;
-### <MM> {department store} :  "🏬"   U1F3EC	# DEPARTMENT STORE
-#- 1F3ED;FACTORY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <a> <c> <t> <r> <y> :  "🏭"   U1F3ED	# FACTORY
-#- 1F3EE;IZAKAYA LANTERN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <i> <z> <a> <k> <a> <y> :  "🏮"   U1F3EE	# IZAKAYA LANTERN
-#- 1F3EF;JAPANESE CASTLE;So;0;ON;;;;;N;;;;;
-### <MM> {japanese castle} :  "🏯"   U1F3EF	# JAPANESE CASTLE
-#- 1F3F0;EUROPEAN CASTLE;So;0;ON;;;;;N;;;;;
-### <MM> {european castle} :  "🏰"   U1F3F0	# EUROPEAN CASTLE
-#- 1F3F1;WHITE PENNANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <W> <p> <e> <n> <n> <a> <n> :  "🏱"   U1F3F1	# WHITE PENNANT
-#- 1F3F2;BLACK PENNANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <p> <e> <n> <n> <a> <n> :  "🏲"   U1F3F2	# BLACK PENNANT
-#- 1F3F3;WAVING WHITE FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <W> <f> <l> <a> <g> <asciitilde> :  "🏳"   U1F3F3	# WAVING WHITE FLAG
-#- 1F3F4;WAVING BLACK FLAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <f> <l> <a> <g> <asciitilde> :  "🏴"   U1F3F4	# WAVING BLACK FLAG
-#- 1F3F5;ROSETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <o> <s> <e> <t> <t> <e> :  "🏵"   U1F3F5	# ROSETTE
-#- 1F3F6;BLACK ROSETTE;So;0;ON;;;;;N;;;;;
-### <MM> {black rosette} :  "🏶"   U1F3F6	# BLACK ROSETTE
-#- 1F3F7;LABEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <a> <b> <e> <l> :  "🏷"   U1F3F7	# LABEL
-#- 1F3F8;BADMINTON RACQUET AND SHUTTLECOCK;So;0;ON;;;;;N;;;;;
-### <MM> {badminton racquet and shuttlecock} :  "🏸"   U1F3F8	# BADMINTON RACQUET AND SHUTTLECOCK
-#- 1F3F9;BOW AND ARROW;So;0;ON;;;;;N;;;;;
-### <MM> {bow and arrow} :  "🏹"   U1F3F9	# BOW AND ARROW
-#- 1F3FA;AMPHORA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <m> <p> <h> <o> <r> <a> :  "🏺"   U1F3FA	# AMPHORA
-#- 1F3FB;EMOJI MODIFIER FITZPATRICK TYPE-1-2;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <1> :  "🏻"   U1F3FB	# EMOJI MODIFIER FITZPATRICK TYPE-1-2
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <2> :  "🏻"   U1F3FB	# EMOJI MODIFIER FITZPATRICK TYPE-1-2
-#- 1F3FC;EMOJI MODIFIER FITZPATRICK TYPE-3;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <3> :  "🏼"   U1F3FC	# EMOJI MODIFIER FITZPATRICK TYPE-3
-#- 1F3FD;EMOJI MODIFIER FITZPATRICK TYPE-4;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <4> :  "🏽"   U1F3FD	# EMOJI MODIFIER FITZPATRICK TYPE-4
-#- 1F3FE;EMOJI MODIFIER FITZPATRICK TYPE-5;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <5> :  "🏾"   U1F3FE	# EMOJI MODIFIER FITZPATRICK TYPE-5
-#- 1F3FF;EMOJI MODIFIER FITZPATRICK TYPE-6;Sk;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <k> <i> <n> <6> :  "🏿"   U1F3FF	# EMOJI MODIFIER FITZPATRICK TYPE-6
-#- 1F400;RAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <a> <t> :  "🐀"   U1F400	# RAT
-#- 1F401;MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <u> <s> <e> :  "🐁"   U1F401	# MOUSE
-#- 1F402;OX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <x> :  "🐂"   U1F402	# OX
-#- 1F403;WATER BUFFALO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <f> <f> <a> <l> <o> :  "🐃"   U1F403	# WATER BUFFALO
-#- 1F404;COW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <w> :  "🐄"   U1F404	# COW
-#- 1F405;TIGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <i> <g> <e> <r> :  "🐅"   U1F405	# TIGER
-## Avoid conflict with LEO
-#- 1F406;LEOPARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <e> <p> <a> <r> <d> :  "🐆"   U1F406	# LEOPARD
-#- 1F407;RABBIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <a> <b> <b> <i> <t> :  "🐇"   U1F407	# RABBIT
-#- 1F408;CAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <t> :  "🐈"   U1F408	# CAT
-#- 1F409;DRAGON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <r> <a> <g> <o> <n> :  "🐉"   U1F409	# DRAGON
-#- 1F40A;CROCODILE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <r> <o> <c> :  "🐊"   U1F40A	# CROCODILE
-#- 1F40B;WHALE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <h> <a> <l> <e> :  "🐋"   U1F40B	# WHALE
-#- 1F40C;SNAIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <n> <a> <i> <l> :  "🐌"   U1F40C	# SNAIL
-#- 1F40D;SNAKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <n> <a> <k> <e> :  "🐍"   U1F40D	# SNAKE
-#- 1F40E;HORSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <r> <s> <e> :  "🐎"   U1F40E	# HORSE
-#- 1F40F;RAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <a> <m> :  "🐏"   U1F40F	# RAM
-#- 1F410;GOAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <o> <a> <t> :  "🐐"   U1F410	# GOAT
-#- 1F411;SHEEP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <e> <e> <p> :  "🐑"   U1F411	# SHEEP
-#- 1F412;MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <n> <k> <e> <y> :  "🐒"   U1F412	# MONKEY
-#- 1F413;ROOSTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <o> <s> <t> <e> <r> :  "🐓"   U1F413	# ROOSTER
-#- 1F414;CHICKEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <C> <h> <i> <c> <k> <e> <n> :  "🐔"   U1F414	# CHICKEN
-#- 1F415;DOG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <o> <g> :  "🐕"   U1F415	# DOG
-#- 1F416;PIG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <g> :  "🐖"   U1F416	# PIG
-#- 1F417;BOAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <a> <r> :  "🐗"   U1F417	# BOAR
-#- 1F418;ELEPHANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <l> <e> <p> <h> <a> <n> :  "🐘"   U1F418	# ELEPHANT
-<Multi_key> <Multi_key>  <e> <l> <e> <p> <h> <n> <t> :  "🐘"   U1F418	# ELEPHANT
-#- 1F419;OCTOPUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <c> <t> <o> <p> <u> <s> :  "🐙"   U1F419	# OCTOPUS
-#- 1F41A;SPIRAL SHELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <e> <l> <l> :  "🐚"   U1F41A	# SPIRAL SHELL
-#- 1F41B;BUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <g> :  "🐛"   U1F41B	# BUG
-#- 1F41C;ANT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <n> <t> :  "🐜"   U1F41C	# ANT
-#- 1F41D;HONEYBEE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <n> <y> <b> <e> <e> :  "🐝"   U1F41D	# HONEYBEE
-#- 1F41E;LADY BEETLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <a> <d> <y> <b> <u> <g> :  "🐞"   U1F41E	# LADY BEETLE
-#- 1F41F;FISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <i> <s> <h> :  "🐟"   U1F41F	# FISH
-#- 1F420;TROPICAL FISH;So;0;ON;;;;;N;;;;;
-### <MM> {tropical fish} :  "🐠"   U1F420	# TROPICAL FISH
-#- 1F421;BLOWFISH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <u> <f> <f> <e> <r> :  "🐡"   U1F421	# BLOWFISH
-<Multi_key> <Multi_key>  <b> <l> <o> <w> <f> <i> <s> :  "🐡"   U1F421	# BLOWFISH
-<Multi_key> <Multi_key>  <b> <l> <o> <w> <f> <s> <h> :  "🐡"   U1F421	# BLOWFISH
-#- 1F422;TURTLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <r> <t> <l> <e> :  "🐢"   U1F422	# TURTLE
-#- 1F423;HATCHING CHICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <t> <c> <h> :  "🐣"   U1F423	# HATCHING CHICK
-#- 1F424;BABY CHICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <i> <c> <k> :  "🐤"   U1F424	# BABY CHICK
-#- 1F425;FRONT-FACING BABY CHICK;So;0;ON;;;;;N;;;;;
-### <MM> {front-facing baby chick} :  "🐥"   U1F425	# FRONT-FACING BABY CHICK
-#- 1F426;BIRD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <r> <d> :  "🐦"   U1F426	# BIRD
-#- 1F427;PENGUIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <e> <n> <g> <u> <i> <n> :  "🐧"   U1F427	# PENGUIN
-#- 1F428;KOALA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <o> <a> <l> <a> :  "🐨"   U1F428	# KOALA
-#- 1F429;POODLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <o> <o> <d> <l> <e> :  "🐩"   U1F429	# POODLE
-#- 1F42A;DROMEDARY CAMEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <m> <e> <l> :  "🐪"   U1F42A	# DROMEDARY CAMEL
-#- 1F42B;BACTRIAN CAMEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <c> <a> <m> <e> <l> :  "🐫"   U1F42B	# BACTRIAN CAMEL
-#- 1F42C;DOLPHIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <o> <l> <p> <h> <i> <n> :  "🐬"   U1F42C	# DOLPHIN
-#- 1F42D;MOUSE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <m> <o> <u> <s> <e> :  "🐭"   U1F42D	# MOUSE FACE
-#- 1F42E;COW FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <c> <o> <w> :  "🐮"   U1F42E	# COW FACE
-#- 1F42F;TIGER FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <t> <i> <g> <e> <r> :  "🐯"   U1F42F	# TIGER FACE
-#- 1F430;RABBIT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <r> <a> <b> <b> <i> :  "🐰"   U1F430	# RABBIT FACE
-#- 1F431;CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <3> :  "🐱"   U1F431	# CAT FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <c> <a> <t> :  "🐱"   U1F431	# CAT FACE
-#- 1F432;DRAGON FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <d> <r> <a> <g> <o> :  "🐲"   U1F432	# DRAGON FACE
-#- 1F433;SPOUTING WHALE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <o> <u> <t> <e> <r> :  "🐳"   U1F433	# SPOUTING WHALE
-#- 1F434;HORSE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <h> <o> <r> <s> <e> :  "🐴"   U1F434	# HORSE FACE
-#- 1F435;MONKEY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <m> <o> <n> <k> <e> :  "🐵"   U1F435	# MONKEY FACE
-#- 1F436;DOG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <d> <o> <g> :  "🐶"   U1F436	# DOG FACE
-#- 1F437;PIG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <i> <g> :  "🐷"   U1F437	# PIG FACE
-#- 1F438;FROG FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <f> <r> <o> <g> :  "🐸"   U1F438	# FROG FACE
-#- 1F439;HAMSTER FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <h> <a> <m> <s> <t> :  "🐹"   U1F439	# HAMSTER FACE
-#- 1F43A;WOLF FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <o> <l> <f> :  "🐺"   U1F43A	# WOLF FACE
-#- 1F43B;BEAR FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <b> <e> <a> <r> :  "🐻"   U1F43B	# BEAR FACE
-#- 1F43C;PANDA FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <a> <n> <d> <a> :  "🐼"   U1F43C	# PANDA FACE
-#- 1F43D;PIG NOSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <i> <g> <n> <o> <s> <e> :  "🐽"   U1F43D	# PIG NOSE
-#- 1F43E;PAW PRINTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <w> <s> :  "🐾"   U1F43E	# PAW PRINTS
-#- 1F43F;CHIPMUNK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <i> <p> <m> <u> <n> :  "🐿"   U1F43F	# CHIPMUNK
-<Multi_key> <Multi_key>  <c> <h> <p> <m> <u> <n> <k> :  "🐿"   U1F43F	# CHIPMUNK
-#- 1F440;EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <e> <y> <e> <s> :  "👀"   U1F440	# EYES
-#- 1F441;EYE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <y> <e> :  "👁"   U1F441	# EYE
-#- 1F442;EAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <a> <r> :  "👂"   U1F442	# EAR
-#- 1F443;NOSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <o> <s> <e> :  "👃"   U1F443	# NOSE
-#- 1F444;MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <u> <t> <h> :  "👄"   U1F444	# MOUTH
-#- 1F445;TONGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <n> <g> <u> <e> :  "👅"   U1F445	# TONGUE
-#- 1F446;WHITE UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white up pointing backhand index} :  "👆"   U1F446	# WHITE UP POINTING BACKHAND INDEX
-#- 1F447;WHITE DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white down pointing backhand index} :  "👇"   U1F447	# WHITE DOWN POINTING BACKHAND INDEX
-#- 1F448;WHITE LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white left pointing backhand index} :  "👈"   U1F448	# WHITE LEFT POINTING BACKHAND INDEX
-#- 1F449;WHITE RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white right pointing backhand index} :  "👉"   U1F449	# WHITE RIGHT POINTING BACKHAND INDEX
-#- 1F44A;FISTED HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <i> <s> <t> :  "👊"   U1F44A	# FISTED HAND SIGN
-#- 1F44B;WAVING HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <a> <v> <i> <n> <g> :  "👋"   U1F44B	# WAVING HAND SIGN
-#- 1F44C;OK HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <O> <K> :  "👌"   U1F44C	# OK HAND SIGN
-#- 1F44D;THUMBS UP SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <h> <u> <m> <b> <u> <p> :  "👍"   U1F44D	# THUMBS UP SIGN
-#- 1F44E;THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <h> <u> <m> <b> <d> <n> :  "👎"   U1F44E	# THUMBS DOWN SIGN
-#- 1F44F;CLAPPING HANDS SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <p> <p> <l> <a> <u> <d> :  "👏"   U1F44F	# CLAPPING HANDS SIGN
-#- 1F450;OPEN HANDS SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {open hands sign} :  "👐"   U1F450	# OPEN HANDS SIGN
-#- 1F451;CROWN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <r> <o> <w> <n> :  "👑"   U1F451	# CROWN
-#- 1F452;WOMANS HAT;So;0;ON;;;;;N;;;;;
-### <MM> {womans hat} :  "👒"   U1F452	# WOMANS HAT
-#- 1F453;EYEGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <l> <a> <s> <s> <e> <s> :  "👓"   U1F453	# EYEGLASSES
-#- 1F454;NECKTIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <e> <c> <k> <t> <i> <e> :  "👔"   U1F454	# NECKTIE
-#- 1F455;T-SHIRT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <minus> <s> <h> <i> <r> <t> :  "👕"   U1F455	# T-SHIRT
-#- 1F456;JEANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <j> <e> <a> <n> <s> :  "👖"   U1F456	# JEANS
-#- 1F457;DRESS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <r> <e> <s> <s> :  "👗"   U1F457	# DRESS
-#- 1F458;KIMONO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <i> <m> <o> <n> <o> :  "👘"   U1F458	# KIMONO
-#- 1F459;BIKINI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <k> <i> <n> <i> :  "👙"   U1F459	# BIKINI
-#- 1F45A;WOMANS CLOTHES;So;0;ON;;;;;N;;;;;
-### <MM> {womans clothes} :  "👚"   U1F45A	# WOMANS CLOTHES
-#- 1F45B;PURSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <u> <r> <s> <e> :  "👛"   U1F45B	# PURSE
-#- 1F45C;HANDBAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <n> <d> <b> <a> <g> :  "👜"   U1F45C	# HANDBAG
-#- 1F45D;POUCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <u> <c> <h> :  "👝"   U1F45D	# POUCH
-#- 1F45E;MANS SHOE;So;0;ON;;;;;N;;;;;
-### <MM> {mans shoe} :  "👞"   U1F45E	# MANS SHOE
-#- 1F45F;ATHLETIC SHOE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <n> <e> <a> <k> <e> <r> :  "👟"   U1F45F	# ATHLETIC SHOE
-#- 1F460;HIGH-HEELED SHOE;So;0;ON;;;;;N;;;;;
-### <MM> {high-heeled shoe} :  "👠"   U1F460	# HIGH-HEELED SHOE
-#- 1F461;WOMANS SANDAL;So;0;ON;;;;;N;;;;;
-### <MM> {womans sandal} :  "👡"   U1F461	# WOMANS SANDAL
-#- 1F462;WOMANS BOOTS;So;0;ON;;;;;N;;;;;
-### <MM> {womans boots} :  "👢"   U1F462	# WOMANS BOOTS
-#- 1F463;FOOTPRINTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <r> <i> <n> <t> <s> :  "👣"   U1F463	# FOOTPRINTS
-#- 1F464;BUST IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <o> <m> <e> <1> :  "👤"   U1F464	# BUST IN SILHOUETTE
-<Multi_key> <Multi_key>  <s> <o> <m> <e> <o> <n> <e> :  "👤"   U1F464	# BUST IN SILHOUETTE
-#- 1F465;BUSTS IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <o> <m> <e> <2> :  "👥"   U1F465	# BUSTS IN SILHOUETTE
-<Multi_key> <Multi_key>  <s> <o> <m> <e> <p> <p> <l> :  "👥"   U1F465	# BUSTS IN SILHOUETTE
-#- 1F466;BOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <y> :  "👦"   U1F466	# BOY
-#- 1F467;GIRL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <i> <r> <l> :  "👧"   U1F467	# GIRL
-#- 1F468;MAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <a> <n> :  "👨"   U1F468	# MAN
-#- 1F469;WOMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <o> <m> <a> <n> :  "👩"   U1F469	# WOMAN
-#- 1F46A;FAMILY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <a> <m> <i> <l> <y> :  "👪"   U1F46A	# FAMILY
-#- 1F46B;MAN AND WOMAN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <M> <W> <h> <a> <n> <d> <s> :  "👫"   U1F46B	# MAN AND WOMAN HOLDING HANDS
-#- 1F46C;TWO MEN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <M> <M> <h> <a> <n> <d> <s> :  "👬"   U1F46C	# TWO MEN HOLDING HANDS
-#- 1F46D;TWO WOMEN HOLDING HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <W> <W> <h> <a> <n> <d> <s> :  "👭"   U1F46D	# TWO WOMEN HOLDING HANDS
-#- 1F46E;POLICE OFFICER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <l> <i> <c> <e> :  "👮"   U1F46E	# POLICE OFFICER
-#- 1F46F;WOMAN WITH BUNNY EARS;So;0;ON;;;;;N;;;;;
-### <MM> {woman with bunny ears} :  "👯"   U1F46F	# WOMAN WITH BUNNY EARS
-#- 1F470;BRIDE WITH VEIL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <r> <i> <d> <e> :  "👰"   U1F470	# BRIDE WITH VEIL
-#- 1F471;PERSON WITH BLOND HAIR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <l> <o> <n> <d> :  "👱"   U1F471	# PERSON WITH BLOND HAIR
-#- 1F472;MAN WITH GUA PI MAO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <u> <a> <p> <m> <a> <o> :  "👲"   U1F472	# MAN WITH GUA PI MAO
-#- 1F473;MAN WITH TURBAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <r> <b> <a> <n> :  "👳"   U1F473	# MAN WITH TURBAN
-#- 1F474;OLDER MAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <l> <d> <m> <a> <n> :  "👴"   U1F474	# OLDER MAN
-#- 1F475;OLDER WOMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <l> <d> <w> <o> <m> :  "👵"   U1F475	# OLDER WOMAN
-#- 1F476;BABY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <b> <y> :  "👶"   U1F476	# BABY
-#- 1F477;CONSTRUCTION WORKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <i> <l> <d> <e> <r> :  "👷"   U1F477	# CONSTRUCTION WORKER
-#- 1F478;PRINCESS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <r> <i> <n> <c> <s> <s> :  "👸"   U1F478	# PRINCESS
-#- 1F479;JAPANESE OGRE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <j> <a> <p> <o> <g> <r> <e> :  "👹"   U1F479	# JAPANESE OGRE
-#- 1F47A;JAPANESE GOBLIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <j> <a> <p> <g> <o> <b> <l> :  "👺"   U1F47A	# JAPANESE GOBLIN
-#- 1F47B;GHOST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <h> <o> <s> <t> :  "👻"   U1F47B	# GHOST
-#- 1F47C;BABY ANGEL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <r> <u> <b> :  "👼"   U1F47C	# BABY ANGEL
-#- 1F47D;EXTRATERRESTRIAL ALIEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <a> <y> :  "👽"   U1F47D	# EXTRATERRESTRIAL ALIEN
-<Multi_key> <Multi_key>  <E> <period> <T> <period> :  "👽"   U1F47D	# EXTRATERRESTRIAL ALIEN
-#- 1F47E;ALIEN MONSTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <l> <i> <e> <n> :  "👾"   U1F47E	# ALIEN MONSTER
-#- 1F47F;IMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <i> <m> <p> :  "👿"   U1F47F	# IMP
-#- 1F480;SKULL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <S> <k> <u> <l> <l> :  "💀"   U1F480	# SKULL
-<Multi_key> <Multi_key>  <s> <k> <u> <l> <l> :  "💀"   U1F480	# SKULL
-#- 1F481;INFORMATION DESK PERSON;So;0;ON;;;;;N;;;;;
-### <MM> {information desk person} :  "💁"   U1F481	# INFORMATION DESK PERSON
-#- 1F482;GUARDSMAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <u> <a> <r> <d> :  "💂"   U1F482	# GUARDSMAN
-#- 1F483;DANCER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <a> <n> <c> <e> <r> :  "💃"   U1F483	# DANCER
-#- 1F484;LIPSTICK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <L> <i> <p> <s> <t> <i> <c> :  "💄"   U1F484	# LIPSTICK
-<Multi_key> <Multi_key>  <L> <i> <p> <s> <t> <c> <k> :  "💄"   U1F484	# LIPSTICK
-#- 1F485;NAIL POLISH;So;0;ON;;;;;N;;;;;
-### <MM> {nail polish} :  "💅"   U1F485	# NAIL POLISH
-#- 1F486;FACE MASSAGE;So;0;ON;;;;;N;;;;;
-### <MM> {face massage} :  "💆"   U1F486	# FACE MASSAGE
-#- 1F487;HAIRCUT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <i> <r> <c> <u> <t> :  "💇"   U1F487	# HAIRCUT
-#- 1F488;BARBER POLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <r> <b> <e> <r> :  "💈"   U1F488	# BARBER POLE
-#- 1F489;SYRINGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <y> <r> <i> <n> <g> <e> :  "💉"   U1F489	# SYRINGE
-#- 1F48A;PILL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <l> <l> :  "💊"   U1F48A	# PILL
-#- 1F48B;KISS MARK;So;0;ON;;;;;N;;;;;
-### <MM> {kiss mark} :  "💋"   U1F48B	# KISS MARK
-#- 1F48C;LOVE LETTER;So;0;ON;;;;;N;;;;;
-### <MM> {love letter} :  "💌"   U1F48C	# LOVE LETTER
-#- 1F48D;RING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <i> <n> <g> :  "💍"   U1F48D	# RING
-#- 1F48E;GEM STONE;So;0;ON;;;;;N;;;;;
-### <MM> {gem stone} :  "💎"   U1F48E	# GEM STONE
-#- 1F48F;KISS;So;0;ON;;;;;N;;;;;
-### <MM> {kiss} :  "💏"   U1F48F	# KISS
-#- 1F490;BOUQUET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <u> <q> <u> <e> <t> :  "💐"   U1F490	# BOUQUET
-#- 1F491;COUPLE WITH HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <p> <p> <l> <less> <3> :  "💑"   U1F491	# COUPLE WITH HEART
-#- 1F492;WEDDING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <e> <d> <d> <i> <n> <g> :  "💒"   U1F492	# WEDDING
-#- 1F493;BEATING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <a> <t> <less> <3> :  "💓"   U1F493	# BEATING HEART
-#- 1F494;BROKEN HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <r> <o> <k> <e> <less> <3> :  "💔"   U1F494	# BROKEN HEART
-## The inequality is even correct
-#- 1F495;TWO HEARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <h> <e> <a> <r> <t> :  "💕"   U1F495	# TWO HEARTS
-<Multi_key> <Multi_key>  <2> <less> <3> :  "💕"   U1F495	# TWO HEARTS
-#- 1F496;SPARKLING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <a> <r> <k> <less> <3> :  "💖"   U1F496	# SPARKLING HEART
-#- 1F497;GROWING HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <o> <w> <less> <3> :  "💗"   U1F497	# GROWING HEART
-#- 1F498;HEART WITH ARROW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <minus> <greater> <less> <3> :  "💘"   U1F498	# HEART WITH ARROW
-<Multi_key> <Multi_key>  <minus> <greater> <h> <e> <a> <r> <t> :  "💘"   U1F498	# HEART WITH ARROW
-#- 1F499;BLUE HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <l> <u> <e> <less> <3> :  "💙"   U1F499	# BLUE HEART
-#- 1F49A;GREEN HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <r> <e> <e> <n> <less> <3> :  "💚"   U1F49A	# GREEN HEART
-#- 1F49B;YELLOW HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <y> <e> <l> <l> <o> <less> <3> :  "💛"   U1F49B	# YELLOW HEART
-#- 1F49C;PURPLE HEART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <u> <r> <p> <l> <less> <3> :  "💜"   U1F49C	# PURPLE HEART
-#- 1F49D;HEART WITH RIBBON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <i> <b> <o> <n> <less> <3> :  "💝"   U1F49D	# HEART WITH RIBBON
-#- 1F49E;REVOLVING HEARTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <r> <n> <less> <3> :  "💞"   U1F49E	# REVOLVING HEARTS
-#- 1F49F;HEART DECORATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <at> <less> <3> :  "💟"   U1F49F	# HEART DECORATION
-#- 1F4A0;DIAMOND SHAPE WITH A DOT INSIDE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <less> <period> <greater> :  "💠"   U1F4A0	# DIAMOND SHAPE WITH A DOT INSIDE
-#- 1F4A1;ELECTRIC LIGHT BULB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <i> <d> <e> <a> :  "💡"   U1F4A1	# ELECTRIC LIGHT BULB
-<Multi_key> <Multi_key>  <b> <u> <l> <b> :  "💡"   U1F4A1	# ELECTRIC LIGHT BULB
-#- 1F4A2;ANGER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <n> <g> <e> <r> :  "💢"   U1F4A2	# ANGER SYMBOL
-#- 1F4A3;BOMB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <m> <b> :  "💣"   U1F4A3	# BOMB
-#- 1F4A4;SLEEPING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <Z> <z> <z> <z> :  "💤"   U1F4A4	# SLEEPING SYMBOL
-#- 1F4A5;COLLISION SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <n> <g> :  "💥"   U1F4A5	# COLLISION SYMBOL
-#- 1F4A6;SPLASHING SWEAT SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <l> <a> <s> <h> :  "💦"   U1F4A6	# SPLASHING SWEAT SYMBOL
-#- 1F4A7;DROPLET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <r> <o> <p> :  "💧"   U1F4A7	# DROPLET
-#- 1F4A8;DASH SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <a> <s> <h> :  "💨"   U1F4A8	# DASH SYMBOL
-#- 1F4A9;PILE OF POO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <i> <t> :  "💩"   U1F4A9	# PILE OF POO
-<Multi_key> <Multi_key>  <p> <o> <o> :  "💩"   U1F4A9	# PILE OF POO
-#- 1F4AA;FLEXED BICEPS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <c> <e> <p> <s> :  "💪"   U1F4AA	# FLEXED BICEPS
-#- 1F4AB;DIZZY SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <i> <z> <z> <y> :  "💫"   U1F4AB	# DIZZY SYMBOL
-#- 1F4AC;SPEECH BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <e> <e> <c> <h> :  "💬"   U1F4AC	# SPEECH BALLOON
-#- 1F4AD;THOUGHT BALLOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <h> <o> <u> <g> <h> <t> :  "💭"   U1F4AD	# THOUGHT BALLOON
-#- 1F4AE;WHITE FLOWER;So;0;ON;;;;;N;;;;;
-### <MM> {white flower} :  "💮"   U1F4AE	# WHITE FLOWER
-#- 1F4AF;HUNDRED POINTS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <1> <0> <0> <percent> :  "💯"   U1F4AF	# HUNDRED POINTS SYMBOL
-#- 1F4B0;MONEY BAG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <dollar> <b> <a> <g> :  "💰"   U1F4B0	# MONEY BAG
-#- 1F4B1;CURRENCY EXCHANGE;So;0;ON;;;;;N;;;;;
-### <MM> {currency exchange} :  "💱"   U1F4B1	# CURRENCY EXCHANGE
-#- 1F4B2;HEAVY DOLLAR SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <dollar> <exclam> :  "💲"   U1F4B2	# HEAVY DOLLAR SIGN
-#- 1F4B3;CREDIT CARD;So;0;ON;;;;;N;;;;;
-### <MM> {credit card} :  "💳"   U1F4B3	# CREDIT CARD
-#- 1F4B4;BANKNOTE WITH YEN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {banknote with yen sign} :  "💴"   U1F4B4	# BANKNOTE WITH YEN SIGN
-#- 1F4B5;BANKNOTE WITH DOLLAR SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <dollar> <b> <i> <l> <l> :  "💵"   U1F4B5	# BANKNOTE WITH DOLLAR SIGN
-#- 1F4B6;BANKNOTE WITH EURO SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <u> <r> <o> <b> <i> <l> :  "💶"   U1F4B6	# BANKNOTE WITH EURO SIGN
-<Multi_key> <Multi_key>  <e> <u> <r> <b> <i> <l> <l> :  "💶"   U1F4B6	# BANKNOTE WITH EURO SIGN
-#- 1F4B7;BANKNOTE WITH POUND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <L> <b> <i> <l> <l> :  "💷"   U1F4B7	# BANKNOTE WITH POUND SIGN
-<Multi_key> <Multi_key>  <G> <B> <b> <i> <l> <l> :  "💷"   U1F4B7	# BANKNOTE WITH POUND SIGN
-#- 1F4B8;MONEY WITH WINGS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <l> <y> <i> <n> <g> <dollar> :  "💸"   U1F4B8	# MONEY WITH WINGS
-#- 1F4B9;CHART WITH UPWARDS TREND AND YEN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {chart with upwards trend and yen sign} :  "💹"   U1F4B9	# CHART WITH UPWARDS TREND AND YEN SIGN
-#- 1F4BA;SEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <e> <a> <t> :  "💺"   U1F4BA	# SEAT
-#- 1F4BB;PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {personal computer} :  "💻"   U1F4BB	# PERSONAL COMPUTER
-#- 1F4BC;BRIEFCASE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <t> <t> <a> <c> <h> <e> :  "💼"   U1F4BC	# BRIEFCASE
-#- 1F4BD;MINIDISC;So;0;ON;;;;;N;;;;;
-### <MM> {minidisc} :  "💽"   U1F4BD	# MINIDISC
-#- 1F4BE;FLOPPY DISK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <l> <o> <p> <p> <y> :  "💾"   U1F4BE	# FLOPPY DISK
-#- 1F4BF;OPTICAL DISC;So;0;ON;;;;;N;;;;;
-### <MM> {optical disc} :  "💿"   U1F4BF	# OPTICAL DISC
-#- 1F4C0;DVD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <D> <V> <D> :  "📀"   U1F4C0	# DVD
-#- 1F4C1;FILE FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {file folder} :  "📁"   U1F4C1	# FILE FOLDER
-#- 1F4C2;OPEN FILE FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {open file folder} :  "📂"   U1F4C2	# OPEN FILE FOLDER
-#- 1F4C3;PAGE WITH CURL;So;0;ON;;;;;N;;;;;
-### <MM> {page with curl} :  "📃"   U1F4C3	# PAGE WITH CURL
-#- 1F4C4;PAGE FACING UP;So;0;ON;;;;;N;;;;;
-### <MM> {page facing up} :  "📄"   U1F4C4	# PAGE FACING UP
-#- 1F4C5;CALENDAR;So;0;ON;;;;;N;;;;;
-### <MM> {calendar} :  "📅"   U1F4C5	# CALENDAR
-#- 1F4C6;TEAR-OFF CALENDAR;So;0;ON;;;;;N;;;;;
-### <MM> {tear-off calendar} :  "📆"   U1F4C6	# TEAR-OFF CALENDAR
-#- 1F4C7;CARD INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {card index} :  "📇"   U1F4C7	# CARD INDEX
-#- 1F4C8;CHART WITH UPWARDS TREND;So;0;ON;;;;;N;;;;;
-### <MM> {chart with upwards trend} :  "📈"   U1F4C8	# CHART WITH UPWARDS TREND
-#- 1F4C9;CHART WITH DOWNWARDS TREND;So;0;ON;;;;;N;;;;;
-### <MM> {chart with downwards trend} :  "📉"   U1F4C9	# CHART WITH DOWNWARDS TREND
-#- 1F4CA;BAR CHART;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <r> <c> <h> <a> <r> :  "📊"   U1F4CA	# BAR CHART
-#- 1F4CB;CLIPBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {clipboard} :  "📋"   U1F4CB	# CLIPBOARD
-#- 1F4CC;PUSHPIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <u> <s> <h> <p> <i> <n> :  "📌"   U1F4CC	# PUSHPIN
-#- 1F4CD;ROUND PUSHPIN;So;0;ON;;;;;N;;;;;
-### <MM> {round pushpin} :  "📍"   U1F4CD	# ROUND PUSHPIN
-#- 1F4CE;PAPERCLIP;So;0;ON;;;;;N;;;;;
-### <MM> {paperclip} :  "📎"   U1F4CE	# PAPERCLIP
-#- 1F4CF;STRAIGHT RULER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <u> <l> <e> <r> :  "📏"   U1F4CF	# STRAIGHT RULER
-#- 1F4D0;TRIANGULAR RULER;So;0;ON;;;;;N;;;;;
-### <MM> {triangular ruler} :  "📐"   U1F4D0	# TRIANGULAR RULER
-#- 1F4D1;BOOKMARK TABS;So;0;ON;;;;;N;;;;;
-### <MM> {bookmark tabs} :  "📑"   U1F4D1	# BOOKMARK TABS
-#- 1F4D2;LEDGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <e> <d> <g> <e> <r> :  "📒"   U1F4D2	# LEDGER
-#- 1F4D3;NOTEBOOK;So;0;ON;;;;;N;;;;;
-### <MM> {notebook} :  "📓"   U1F4D3	# NOTEBOOK
-#- 1F4D4;NOTEBOOK WITH DECORATIVE COVER;So;0;ON;;;;;N;;;;;
-### <MM> {notebook with decorative cover} :  "📔"   U1F4D4	# NOTEBOOK WITH DECORATIVE COVER
-#- 1F4D5;CLOSED BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {closed book} :  "📕"   U1F4D5	# CLOSED BOOK
-#- 1F4D6;OPEN BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {open book} :  "📖"   U1F4D6	# OPEN BOOK
-#- 1F4D7;GREEN BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {green book} :  "📗"   U1F4D7	# GREEN BOOK
-#- 1F4D8;BLUE BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {blue book} :  "📘"   U1F4D8	# BLUE BOOK
-#- 1F4D9;ORANGE BOOK;So;0;ON;;;;;N;;;;;
-### <MM> {orange book} :  "📙"   U1F4D9	# ORANGE BOOK
-#- 1F4DA;BOOKS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <o> <o> <k> <s> :  "📚"   U1F4DA	# BOOKS
-#- 1F4DB;NAME BADGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <I> <D> <b> <a> <d> <g> <e> :  "📛"   U1F4DB	# NAME BADGE
-#- 1F4DC;SCROLL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <c> <r> <o> <l> <l> :  "📜"   U1F4DC	# SCROLL
-#- 1F4DD;MEMO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <m> <o> :  "📝"   U1F4DD	# MEMO
-#- 1F4DE;TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {telephone receiver} :  "📞"   U1F4DE	# TELEPHONE RECEIVER
-#- 1F4DF;PAGER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <a> <g> <e> <r> :  "📟"   U1F4DF	# PAGER
-#- 1F4E0;FAX MACHINE;So;0;ON;;;;;N;;;;;
-### <MM> {fax machine} :  "📠"   U1F4E0	# FAX MACHINE
-#- 1F4E1;SATELLITE ANTENNA;So;0;ON;;;;;N;;;;;
-### <MM> {satellite antenna} :  "📡"   U1F4E1	# SATELLITE ANTENNA
-#- 1F4E2;PUBLIC ADDRESS LOUDSPEAKER;So;0;ON;;;;;N;;;;;
-### <MM> {public address loudspeaker} :  "📢"   U1F4E2	# PUBLIC ADDRESS LOUDSPEAKER
-#- 1F4E3;CHEERING MEGAPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {cheering megaphone} :  "📣"   U1F4E3	# CHEERING MEGAPHONE
-#- 1F4E4;OUTBOX TRAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <u> <t> <b> <o> <x> :  "📤"   U1F4E4	# OUTBOX TRAY
-#- 1F4E5;INBOX TRAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <i> <n> <b> <o> <x> :  "📥"   U1F4E5	# INBOX TRAY
-#- 1F4E6;PACKAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <c> <k> <a> <g> <e> :  "📦"   U1F4E6	# PACKAGE
-#- 1F4E7;E-MAIL SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <minus> <m> <a> <i> <l> :  "📧"   U1F4E7	# E-MAIL SYMBOL
-<Multi_key> <Multi_key>  <e> <m> <a> <i> <l> :  "📧"   U1F4E7	# E-MAIL SYMBOL
-#- 1F4E8;INCOMING ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {incoming envelope} :  "📨"   U1F4E8	# INCOMING ENVELOPE
-#- 1F4E9;ENVELOPE WITH DOWNWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-### <MM> {envelope with downwards arrow above} :  "📩"   U1F4E9	# ENVELOPE WITH DOWNWARDS ARROW ABOVE
-#- 1F4EA;CLOSED MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {closed mailbox with lowered flag} :  "📪"   U1F4EA	# CLOSED MAILBOX WITH LOWERED FLAG
-#- 1F4EB;CLOSED MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {closed mailbox with raised flag} :  "📫"   U1F4EB	# CLOSED MAILBOX WITH RAISED FLAG
-#- 1F4EC;OPEN MAILBOX WITH RAISED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {open mailbox with raised flag} :  "📬"   U1F4EC	# OPEN MAILBOX WITH RAISED FLAG
-#- 1F4ED;OPEN MAILBOX WITH LOWERED FLAG;So;0;ON;;;;;N;;;;;
-### <MM> {open mailbox with lowered flag} :  "📭"   U1F4ED	# OPEN MAILBOX WITH LOWERED FLAG
-#- 1F4EE;POSTBOX;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <s> <t> <b> <o> <x> :  "📮"   U1F4EE	# POSTBOX
-#- 1F4EF;POSTAL HORN;So;0;ON;;;;;N;;;;;
-### <MM> {postal horn} :  "📯"   U1F4EF	# POSTAL HORN
-#- 1F4F0;NEWSPAPER;So;0;ON;;;;;N;;;;;
-### <MM> {newspaper} :  "📰"   U1F4F0	# NEWSPAPER
-#- 1F4F1;MOBILE PHONE;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone} :  "📱"   U1F4F1	# MOBILE PHONE
-#- 1F4F2;MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone with rightwards arrow at left} :  "📲"   U1F4F2	# MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
-#- 1F4F3;VIBRATION MODE;So;0;ON;;;;;N;;;;;
-### <MM> {vibration mode} :  "📳"   U1F4F3	# VIBRATION MODE
-#- 1F4F4;MOBILE PHONE OFF;So;0;ON;;;;;N;;;;;
-### <MM> {mobile phone off} :  "📴"   U1F4F4	# MOBILE PHONE OFF
-#- 1F4F5;NO MOBILE PHONES;So;0;ON;;;;;N;;;;;
-### <MM> {no mobile phones} :  "📵"   U1F4F5	# NO MOBILE PHONES
-#- 1F4F6;ANTENNA WITH BARS;So;0;ON;;;;;N;;;;;
-### <MM> {antenna with bars} :  "📶"   U1F4F6	# ANTENNA WITH BARS
-#- 1F4F7;CAMERA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <m> <e> <r> <a> :  "📷"   U1F4F7	# CAMERA
-#- 1F4F8;CAMERA WITH FLASH;So;0;ON;;;;;N;;;;;
-### <MM> {camera with flash} :  "📸"   U1F4F8	# CAMERA WITH FLASH
-#- 1F4F9;VIDEO CAMERA;So;0;ON;;;;;N;;;;;
-### <MM> {video camera} :  "📹"   U1F4F9	# VIDEO CAMERA
-#- 1F4FA;TELEVISION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <T> <V> :  "📺"   U1F4FA	# TELEVISION
-#- 1F4FB;RADIO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <a> <d> <i> <o> :  "📻"   U1F4FB	# RADIO
-#- 1F4FC;VIDEOCASSETTE;So;0;ON;;;;;N;;;;;
-### <MM> {videocassette} :  "📼"   U1F4FC	# VIDEOCASSETTE
-#- 1F4FD;FILM PROJECTOR;So;0;ON;;;;;N;;;;;
-### <MM> {film projector} :  "📽"   U1F4FD	# FILM PROJECTOR
-#- 1F4FE;PORTABLE STEREO;So;0;ON;;;;;N;;;;;
-### <MM> {portable stereo} :  "📾"   U1F4FE	# PORTABLE STEREO
-#- 1F4FF;PRAYER BEADS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <s> <a> <r> <y> :  "📿"   U1F4FF	# PRAYER BEADS
-#- 1F500;TWISTED RIGHTWARDS ARROWS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <u> <f> <f> <l> <e> :  "🔀"   U1F500	# TWISTED RIGHTWARDS ARROWS
-#- 1F501;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <e> <p> <e> <a> <t> :  "🔁"   U1F501	# CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
-#- 1F502;CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <1> <r> <e> <p> <e> <a> <t> :  "🔂"   U1F502	# CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
-#- 1F503;CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {clockwise downwards and upwards open circle arrows} :  "🔃"   U1F503	# CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-#- 1F504;ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {anticlockwise downwards and upwards open circle arrows} :  "🔄"   U1F504	# ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
-#- 1F505;LOW BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <i> <m> :  "🔅"   U1F505	# LOW BRIGHTNESS SYMBOL
-#- 1F506;HIGH BRIGHTNESS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <r> <i> <g> <h> <t> :  "🔆"   U1F506	# HIGH BRIGHTNESS SYMBOL
-#- 1F507;SPEAKER WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <u> <t> <e> :  "🔇"   U1F507	# SPEAKER WITH CANCELLATION STROKE
-#- 1F508;SPEAKER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <e> <a> <k> <e> <r> :  "🔈"   U1F508	# SPEAKER
-#- 1F509;SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <o> <f> <t> <e> <r> :  "🔉"   U1F509	# SPEAKER WITH ONE SOUND WAVE
-#- 1F50A;SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <o> <u> <d> <e> <r> :  "🔊"   U1F50A	# SPEAKER WITH THREE SOUND WAVES
-#- 1F50B;BATTERY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <t> <t> <e> <r> <y> :  "🔋"   U1F50B	# BATTERY
-#- 1F50C;ELECTRIC PLUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <l> <u> <g> :  "🔌"   U1F50C	# ELECTRIC PLUG
-#- 1F50D;LEFT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {left-pointing magnifying glass} :  "🔍"   U1F50D	# LEFT-POINTING MAGNIFYING GLASS
-#- 1F50E;RIGHT-POINTING MAGNIFYING GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {right-pointing magnifying glass} :  "🔎"   U1F50E	# RIGHT-POINTING MAGNIFYING GLASS
-#- 1F50F;LOCK WITH INK PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lock with ink pen} :  "🔏"   U1F50F	# LOCK WITH INK PEN
-#- 1F510;CLOSED LOCK WITH KEY;So;0;ON;;;;;N;;;;;
-### <MM> {closed lock with key} :  "🔐"   U1F510	# CLOSED LOCK WITH KEY
-#- 1F511;KEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <e> <y> :  "🔑"   U1F511	# KEY
-#- 1F512;LOCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <o> <c> <k> :  "🔒"   U1F512	# LOCK
-#- 1F513;OPEN LOCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <u> <n> <l> <o> <c> <k> :  "🔓"   U1F513	# OPEN LOCK
-#- 1F514;BELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <l> <l> :  "🔔"   U1F514	# BELL
-#- 1F515;BELL WITH CANCELLATION STROKE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <b> <e> <l> <l> :  "🔕"   U1F515	# BELL WITH CANCELLATION STROKE
-<Multi_key> <Multi_key>  <n> <o> <b> <e> <l> <l> :  "🔕"   U1F515	# BELL WITH CANCELLATION STROKE
-#- 1F516;BOOKMARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <o> <o> <k> <m> <a> <r> :  "🔖"   U1F516	# BOOKMARK
-#- 1F517;LINK SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <i> <n> <k> :  "🔗"   U1F517	# LINK SYMBOL
-#- 1F518;RADIO BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {radio button} :  "🔘"   U1F518	# RADIO BUTTON
-#- 1F519;BACK WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <A> <C> <K> :  "🔙"   U1F519	# BACK WITH LEFTWARDS ARROW ABOVE
-#- 1F51A;END WITH LEFTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <E> <N> <D> :  "🔚"   U1F51A	# END WITH LEFTWARDS ARROW ABOVE
-#- 1F51B;ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <O> <N> :  "🔛"   U1F51B	# ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
-#- 1F51C;SOON WITH RIGHTWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <S> <O> <O> <N> :  "🔜"   U1F51C	# SOON WITH RIGHTWARDS ARROW ABOVE
-#- 1F51D;TOP WITH UPWARDS ARROW ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <T> <O> <P> :  "🔝"   U1F51D	# TOP WITH UPWARDS ARROW ABOVE
-#- 1F51E;NO ONE UNDER EIGHTEEN SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <1> <8> :  "🔞"   U1F51E	# NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key>  <exclam> <less> <1> <8> :  "🔞"   U1F51E	# NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key>  <n> <o> <less> <1> <8> :  "🔞"   U1F51E	# NO ONE UNDER EIGHTEEN SYMBOL
-<Multi_key> <Multi_key>  <n> <o> <1> <8> :  "🔞"   U1F51E	# NO ONE UNDER EIGHTEEN SYMBOL
-#- 1F51F;KEYCAP TEN;So;0;ON;;;;;N;;;;;
-### <MM> {keycap ten} :  "🔟"   U1F51F	# KEYCAP TEN
-#- 1F520;INPUT SYMBOL FOR LATIN CAPITAL LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin capital letters} :  "🔠"   U1F520	# INPUT SYMBOL FOR LATIN CAPITAL LETTERS
-#- 1F521;INPUT SYMBOL FOR LATIN SMALL LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin small letters} :  "🔡"   U1F521	# INPUT SYMBOL FOR LATIN SMALL LETTERS
-#- 1F522;INPUT SYMBOL FOR NUMBERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for numbers} :  "🔢"   U1F522	# INPUT SYMBOL FOR NUMBERS
-#- 1F523;INPUT SYMBOL FOR SYMBOLS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for symbols} :  "🔣"   U1F523	# INPUT SYMBOL FOR SYMBOLS
-#- 1F524;INPUT SYMBOL FOR LATIN LETTERS;So;0;ON;;;;;N;;;;;
-### <MM> {input symbol for latin letters} :  "🔤"   U1F524	# INPUT SYMBOL FOR LATIN LETTERS
-#- 1F525;FIRE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <i> <r> <e> :  "🔥"   U1F525	# FIRE
-#- 1F526;ELECTRIC TORCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <r> <c> <h> :  "🔦"   U1F526	# ELECTRIC TORCH
-#- 1F527;WRENCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <r> <e> <n> <c> <h> :  "🔧"   U1F527	# WRENCH
-#- 1F528;HAMMER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <a> <m> <m> <e> <r> :  "🔨"   U1F528	# HAMMER
-#- 1F529;NUT AND BOLT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <l> <t> :  "🔩"   U1F529	# NUT AND BOLT
-#- 1F52A;HOCHO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <c> <h> <o> :  "🔪"   U1F52A	# HOCHO
-#- 1F52B;PISTOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <i> <s> <t> <o> <l> :  "🔫"   U1F52B	# PISTOL
-#- 1F52C;MICROSCOPE;So;0;ON;;;;;N;;;;;
-### <MM> {microscope} :  "🔬"   U1F52C	# MICROSCOPE
-#- 1F52D;TELESCOPE;So;0;ON;;;;;N;;;;;
-### <MM> {telescope} :  "🔭"   U1F52D	# TELESCOPE
-#- 1F52E;CRYSTAL BALL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <o> <r> <t> <u> <n> <e> :  "🔮"   U1F52E	# CRYSTAL BALL
-#- 1F52F;SIX POINTED STAR WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-### <MM> {six pointed star with middle dot} :  "🔯"   U1F52F	# SIX POINTED STAR WITH MIDDLE DOT
-#- 1F530;JAPANESE SYMBOL FOR BEGINNER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <g> <i> <n> <n> <r> :  "🔰"   U1F530	# JAPANESE SYMBOL FOR BEGINNER
-#- 1F531;TRIDENT EMBLEM;So;0;ON;;;;;N;;;;;
-### <MM> {trident emblem} :  "🔱"   U1F531	# TRIDENT EMBLEM
-#- 1F532;BLACK SQUARE BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {black square button} :  "🔲"   U1F532	# BLACK SQUARE BUTTON
-#- 1F533;WHITE SQUARE BUTTON;So;0;ON;;;;;N;;;;;
-### <MM> {white square button} :  "🔳"   U1F533	# WHITE SQUARE BUTTON
-#- 1F534;LARGE RED CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {large red circle} :  "🔴"   U1F534	# LARGE RED CIRCLE
-#- 1F535;LARGE BLUE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {large blue circle} :  "🔵"   U1F535	# LARGE BLUE CIRCLE
-#- 1F536;LARGE ORANGE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {large orange diamond} :  "🔶"   U1F536	# LARGE ORANGE DIAMOND
-#- 1F537;LARGE BLUE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {large blue diamond} :  "🔷"   U1F537	# LARGE BLUE DIAMOND
-#- 1F538;SMALL ORANGE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {small orange diamond} :  "🔸"   U1F538	# SMALL ORANGE DIAMOND
-#- 1F539;SMALL BLUE DIAMOND;So;0;ON;;;;;N;;;;;
-### <MM> {small blue diamond} :  "🔹"   U1F539	# SMALL BLUE DIAMOND
-#- 1F53A;UP-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing red triangle} :  "🔺"   U1F53A	# UP-POINTING RED TRIANGLE
-#- 1F53B;DOWN-POINTING RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {down-pointing red triangle} :  "🔻"   U1F53B	# DOWN-POINTING RED TRIANGLE
-#- 1F53C;UP-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing small red triangle} :  "🔼"   U1F53C	# UP-POINTING SMALL RED TRIANGLE
-#- 1F53D;DOWN-POINTING SMALL RED TRIANGLE;So;0;ON;;;;;N;;;;;
-### <MM> {down-pointing small red triangle} :  "🔽"   U1F53D	# DOWN-POINTING SMALL RED TRIANGLE
-#- 1F53E;LOWER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {lower right shadowed white circle} :  "🔾"   U1F53E	# LOWER RIGHT SHADOWED WHITE CIRCLE
-#- 1F53F;UPPER RIGHT SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-### <MM> {upper right shadowed white circle} :  "🔿"   U1F53F	# UPPER RIGHT SHADOWED WHITE CIRCLE
-#- 1F540;CIRCLED CROSS POMMEE;So;0;ON;;;;;N;;;;;
-### <MM> {circled cross pommee} :  "🕀"   U1F540	# CIRCLED CROSS POMMEE
-#- 1F541;CROSS POMMEE WITH HALF-CIRCLE BELOW;So;0;ON;;;;;N;;;;;
-### <MM> {cross pommee with half-circle below} :  "🕁"   U1F541	# CROSS POMMEE WITH HALF-CIRCLE BELOW
-#- 1F542;CROSS POMMEE;So;0;ON;;;;;N;;;;;
-### <MM> {cross pommee} :  "🕂"   U1F542	# CROSS POMMEE
-#- 1F543;NOTCHED LEFT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;
-### <MM> {notched left semicircle with three dots} :  "🕃"   U1F543	# NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-#- 1F544;NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS;So;0;ON;;;;;N;;;;;
-### <MM> {notched right semicircle with three dots} :  "🕄"   U1F544	# NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS
-#- 1F545;SYMBOL FOR MARKS CHAPTER;So;0;ON;;;;;N;;;;;
-### <MM> {symbol for marks chapter} :  "🕅"   U1F545	# SYMBOL FOR MARKS CHAPTER
-#- 1F546;WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {white latin cross} :  "🕆"   U1F546	# WHITE LATIN CROSS
-#- 1F547;HEAVY LATIN CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {heavy latin cross} :  "🕇"   U1F547	# HEAVY LATIN CROSS
-#- 1F548;CELTIC CROSS;So;0;ON;;;;;N;;;;;
-### <MM> {celtic cross} :  "🕈"   U1F548	# CELTIC CROSS
-#- 1F549;OM SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <O> <M> :  "🕉"   U1F549	# OM SYMBOL
-#- 1F54A;DOVE OF PEACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <o> <v> <e> :  "🕊"   U1F54A	# DOVE OF PEACE
-#- 1F54B;KAABA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <a> <a> <b> <a> :  "🕋"   U1F54B	# KAABA
-#- 1F54C;MOSQUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <s> <q> <u> <e> :  "🕌"   U1F54C	# MOSQUE
-#- 1F54D;SYNAGOGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <u> <l> :  "🕍"   U1F54D	# SYNAGOGUE
-## Worry about MENORAH WITH SEVEN BRANCHES when it comes along.
-#- 1F54E;MENORAH WITH NINE BRANCHES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <n> <o> <r> <a> <h> :  "🕎"   U1F54E	# MENORAH WITH NINE BRANCHES
-#- 1F54F;BOWL OF HYGIEIA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <y> <g> <i> <e> <i> <a> :  "🕏"   U1F54F	# BOWL OF HYGIEIA
-#- 1F568;RIGHT SPEAKER;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker} :  "🕨"   U1F568	# RIGHT SPEAKER
-#- 1F569;RIGHT SPEAKER WITH ONE SOUND WAVE;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker with one sound wave} :  "🕩"   U1F569	# RIGHT SPEAKER WITH ONE SOUND WAVE
-#- 1F56A;RIGHT SPEAKER WITH THREE SOUND WAVES;So;0;ON;;;;;N;;;;;
-### <MM> {right speaker with three sound waves} :  "🕪"   U1F56A	# RIGHT SPEAKER WITH THREE SOUND WAVES
-#- 1F56B;BULLHORN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <l> <l> <h> <o> <r> :  "🕫"   U1F56B	# BULLHORN
-#- 1F56C;BULLHORN WITH SOUND WAVES;So;0;ON;;;;;N;;;;;
-### <MM> {bullhorn with sound waves} :  "🕬"   U1F56C	# BULLHORN WITH SOUND WAVES
-## You KNOW these next three were put together in this order on purpose.
-#- 1F56D;RINGING BELL;So;0;ON;;;;;N;;;;;
-### <MM> {ringing bell} :  "🕭"   U1F56D	# RINGING BELL
-#- 1F56E;BOOK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <o> <k> :  "🕮"   U1F56E	# BOOK
-#- 1F56F;CANDLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <n> <d> <l> <e> :  "🕯"   U1F56F	# CANDLE
-#- 1F570;MANTELPIECE CLOCK;So;0;ON;;;;;N;;;;;
-### <MM> {mantelpiece clock} :  "🕰"   U1F570	# MANTELPIECE CLOCK
-#- 1F571;BLACK SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-### <MM> {black skull and crossbones} :  "🕱"   U1F571	# BLACK SKULL AND CROSSBONES
-#- 1F572;NO PIRACY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <p> <i> <r> <a> <t> <e> :  "🕲"   U1F572	# NO PIRACY
-<Multi_key> <Multi_key>  <exclam> <p> <i> <r> <a> <c> <y> :  "🕲"   U1F572	# NO PIRACY
-<Multi_key> <Multi_key>  <n> <o> <p> <i> <r> <a> <t> :  "🕲"   U1F572	# NO PIRACY
-#- 1F573;HOLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <h> <o> <l> <e> :  "🕳"   U1F573	# HOLE
-#- 1F574;MAN IN BUSINESS SUIT LEVITATING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <e> <v> <i> <t> <a> <t> :  "🕴"   U1F574	# MAN IN BUSINESS SUIT LEVITATING
-#- 1F575;SLEUTH OR SPY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <y> :  "🕵"   U1F575	# SLEUTH OR SPY
-#- 1F576;DARK SUNGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <a> <d> <e> <s> :  "🕶"   U1F576	# DARK SUNGLASSES
-#- 1F577;SPIDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <i> <d> <e> <r> :  "🕷"   U1F577	# SPIDER
-#- 1F578;SPIDER WEB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <e> <b> :  "🕸"   U1F578	# SPIDER WEB
-#- 1F579;JOYSTICK;So;0;ON;;;;;N;;;;;
-### <MM> {joystick} :  "🕹"   U1F579	# JOYSTICK
-#- 1F57B;LEFT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {left hand telephone receiver} :  "🕻"   U1F57B	# LEFT HAND TELEPHONE RECEIVER
-#- 1F57C;TELEPHONE RECEIVER WITH PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {telephone receiver with page} :  "🕼"   U1F57C	# TELEPHONE RECEIVER WITH PAGE
-#- 1F57D;RIGHT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
-### <MM> {right hand telephone receiver} :  "🕽"   U1F57D	# RIGHT HAND TELEPHONE RECEIVER
-#- 1F57E;WHITE TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {white touchtone telephone} :  "🕾"   U1F57E	# WHITE TOUCHTONE TELEPHONE
-#- 1F57F;BLACK TOUCHTONE TELEPHONE;So;0;ON;;;;;N;;;;;
-### <MM> {black touchtone telephone} :  "🕿"   U1F57F	# BLACK TOUCHTONE TELEPHONE
-#- 1F580;TELEPHONE ON TOP OF MODEM;So;0;ON;;;;;N;;;;;
-### <MM> {telephone on top of modem} :  "🖀"   U1F580	# TELEPHONE ON TOP OF MODEM
-#- 1F581;CLAMSHELL MOBILE PHONE;So;0;ON;;;;;N;;;;;
-### <MM> {clamshell mobile phone} :  "🖁"   U1F581	# CLAMSHELL MOBILE PHONE
-#- 1F582;BACK OF ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {back of envelope} :  "🖂"   U1F582	# BACK OF ENVELOPE
-#- 1F583;STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {stamped envelope} :  "🖃"   U1F583	# STAMPED ENVELOPE
-#- 1F584;ENVELOPE WITH LIGHTNING;So;0;ON;;;;;N;;;;;
-### <MM> {envelope with lightning} :  "🖄"   U1F584	# ENVELOPE WITH LIGHTNING
-#- 1F585;FLYING ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {flying envelope} :  "🖅"   U1F585	# FLYING ENVELOPE
-#- 1F586;PEN OVER STAMPED ENVELOPE;So;0;ON;;;;;N;;;;;
-### <MM> {pen over stamped envelope} :  "🖆"   U1F586	# PEN OVER STAMPED ENVELOPE
-#- 1F587;LINKED PAPERCLIPS;So;0;ON;;;;;N;;;;;
-### <MM> {linked paperclips} :  "🖇"   U1F587	# LINKED PAPERCLIPS
-#- 1F588;BLACK PUSHPIN;So;0;ON;;;;;N;;;;;
-### <MM> {black pushpin} :  "🖈"   U1F588	# BLACK PUSHPIN
-#- 1F589;LOWER LEFT PENCIL;So;0;ON;;;;;N;;;;;
-### <MM> {lower left pencil} :  "🖉"   U1F589	# LOWER LEFT PENCIL
-#- 1F58A;LOWER LEFT BALLPOINT PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lower left ballpoint pen} :  "🖊"   U1F58A	# LOWER LEFT BALLPOINT PEN
-#- 1F58B;LOWER LEFT FOUNTAIN PEN;So;0;ON;;;;;N;;;;;
-### <MM> {lower left fountain pen} :  "🖋"   U1F58B	# LOWER LEFT FOUNTAIN PEN
-#- 1F58C;LOWER LEFT PAINTBRUSH;So;0;ON;;;;;N;;;;;
-### <MM> {lower left paintbrush} :  "🖌"   U1F58C	# LOWER LEFT PAINTBRUSH
-#- 1F58D;LOWER LEFT CRAYON;So;0;ON;;;;;N;;;;;
-### <MM> {lower left crayon} :  "🖍"   U1F58D	# LOWER LEFT CRAYON
-#- 1F58E;LEFT WRITING HAND;So;0;ON;;;;;N;;;;;
-### <MM> {left writing hand} :  "🖎"   U1F58E	# LEFT WRITING HAND
-#- 1F58F;TURNED OK HAND SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <at> <O> <K> :  "🖏"   U1F58F	# TURNED OK HAND SIGN
-#- 1F590;RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <5> <h> <a> <n> <d> :  "🖐"   U1F590	# RAISED HAND WITH FINGERS SPLAYED
-#- 1F591;REVERSED RAISED HAND WITH FINGERS SPLAYED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <at> <5> <h> <a> <n> <d> :  "🖑"   U1F591	# REVERSED RAISED HAND WITH FINGERS SPLAYED
-#- 1F592;REVERSED THUMBS UP SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {reversed thumbs up sign} :  "🖒"   U1F592	# REVERSED THUMBS UP SIGN
-#- 1F593;REVERSED THUMBS DOWN SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {reversed thumbs down sign} :  "🖓"   U1F593	# REVERSED THUMBS DOWN SIGN
-## Might as well insert this one for better mnemonic; it'll screw up the sort though.
-#- 270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <v> <i> <c> <t> <o> <r> <y> : "✌"  U270C  # VICTORY HAND
-#- 1F594;REVERSED VICTORY HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <f> <u> <c> <k> <u> :  "🖔"   U1F594	# REVERSED VICTORY HAND
-<Multi_key> <Multi_key>  <2> <F> <U> :  "🖔"   U1F594	# REVERSED VICTORY HAND
-#- 1F595;REVERSED HAND WITH MIDDLE FINGER EXTENDED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <u> <c> <k> <u> :  "🖕"   U1F595	# REVERSED HAND WITH MIDDLE FINGER EXTENDED
-## Live Long and Prosper...
-#- 1F596;RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <L> <L> <A> <P> :  "🖖"   U1F596	# RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
-<Multi_key> <Multi_key>  <s> <p> <o> <c> <k> :  "🖖"   U1F596	# RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
-#- 1F597;WHITE DOWN POINTING LEFT HAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {white down pointing left hand index} :  "🖗"   U1F597	# WHITE DOWN POINTING LEFT HAND INDEX
-#- 1F598;SIDEWAYS WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white left pointing index} :  "🖘"   U1F598	# SIDEWAYS WHITE LEFT POINTING INDEX
-#- 1F599;SIDEWAYS WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white right pointing index} :  "🖙"   U1F599	# SIDEWAYS WHITE RIGHT POINTING INDEX
-#- 1F59A;SIDEWAYS BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black left pointing index} :  "🖚"   U1F59A	# SIDEWAYS BLACK LEFT POINTING INDEX
-#- 1F59B;SIDEWAYS BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black right pointing index} :  "🖛"   U1F59B	# SIDEWAYS BLACK RIGHT POINTING INDEX
-#- 1F59C;BLACK LEFT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black left pointing backhand index} :  "🖜"   U1F59C	# BLACK LEFT POINTING BACKHAND INDEX
-#- 1F59D;BLACK RIGHT POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black right pointing backhand index} :  "🖝"   U1F59D	# BLACK RIGHT POINTING BACKHAND INDEX
-#- 1F59E;SIDEWAYS WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white up pointing index} :  "🖞"   U1F59E	# SIDEWAYS WHITE UP POINTING INDEX
-#- 1F59F;SIDEWAYS WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways white down pointing index} :  "🖟"   U1F59F	# SIDEWAYS WHITE DOWN POINTING INDEX
-#- 1F5A0;SIDEWAYS BLACK UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black up pointing index} :  "🖠"   U1F5A0	# SIDEWAYS BLACK UP POINTING INDEX
-#- 1F5A1;SIDEWAYS BLACK DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {sideways black down pointing index} :  "🖡"   U1F5A1	# SIDEWAYS BLACK DOWN POINTING INDEX
-#- 1F5A2;BLACK UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black up pointing backhand index} :  "🖢"   U1F5A2	# BLACK UP POINTING BACKHAND INDEX
-#- 1F5A3;BLACK DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
-### <MM> {black down pointing backhand index} :  "🖣"   U1F5A3	# BLACK DOWN POINTING BACKHAND INDEX
-#- 1F5A5;DESKTOP COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {desktop computer} :  "🖥"   U1F5A5	# DESKTOP COMPUTER
-#- 1F5A6;KEYBOARD AND MOUSE;So;0;ON;;;;;N;;;;;
-### <MM> {keyboard and mouse} :  "🖦"   U1F5A6	# KEYBOARD AND MOUSE
-#- 1F5A7;THREE NETWORKED COMPUTERS;So;0;ON;;;;;N;;;;;
-### <MM> {three networked computers} :  "🖧"   U1F5A7	# THREE NETWORKED COMPUTERS
-#- 1F5A8;PRINTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <r> <i> <n> <t> <e> <r> :  "🖨"   U1F5A8	# PRINTER
-#- 1F5A9;POCKET CALCULATOR;So;0;ON;;;;;N;;;;;
-### <MM> {pocket calculator} :  "🖩"   U1F5A9	# POCKET CALCULATOR
-#- 1F5AA;BLACK HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {black hard shell floppy disk} :  "🖪"   U1F5AA	# BLACK HARD SHELL FLOPPY DISK
-#- 1F5AB;WHITE HARD SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {white hard shell floppy disk} :  "🖫"   U1F5AB	# WHITE HARD SHELL FLOPPY DISK
-#- 1F5AC;SOFT SHELL FLOPPY DISK;So;0;ON;;;;;N;;;;;
-### <MM> {soft shell floppy disk} :  "🖬"   U1F5AC	# SOFT SHELL FLOPPY DISK
-#- 1F5AD;TAPE CARTRIDGE;So;0;ON;;;;;N;;;;;
-### <MM> {tape cartridge} :  "🖭"   U1F5AD	# TAPE CARTRIDGE
-#- 1F5AE;WIRED KEYBOARD;So;0;ON;;;;;N;;;;;
-### <MM> {wired keyboard} :  "🖮"   U1F5AE	# WIRED KEYBOARD
-#- 1F5AF;ONE BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <1> <m> <o> <u> <s> <e> :  "🖯"   U1F5AF	# ONE BUTTON MOUSE
-#- 1F5B0;TWO BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <m> <o> <u> <s> <e> :  "🖰"   U1F5B0	# TWO BUTTON MOUSE
-#- 1F5B1;THREE BUTTON MOUSE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <3> <m> <o> <u> <s> <e> :  "🖱"   U1F5B1	# THREE BUTTON MOUSE
-#- 1F5B2;TRACKBALL;So;0;ON;;;;;N;;;;;
-### <MM> {trackbal} :  "🖲"   U1F5B2	# TRACKBALL
-#- 1F5B3;OLD PERSONAL COMPUTER;So;0;ON;;;;;N;;;;;
-### <MM> {old personal computer} :  "🖳"   U1F5B3	# OLD PERSONAL COMPUTER
-#- 1F5B4;HARD DISK;So;0;ON;;;;;N;;;;;
-### <MM> {hard disk} :  "🖴"   U1F5B4	# HARD DISK
-#- 1F5B5;SCREEN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <c> <r> <e> <e> <n> :  "🖵"   U1F5B5	# SCREEN
-#- 1F5B6;PRINTER ICON;So;0;ON;;;;;N;;;;;
-### <MM> {printer icon} :  "🖶"   U1F5B6	# PRINTER ICON
-#- 1F5B7;FAX ICON;So;0;ON;;;;;N;;;;;
-### <MM> {fax icon} :  "🖷"   U1F5B7	# FAX ICON
-#- 1F5B8;OPTICAL DISC ICON;So;0;ON;;;;;N;;;;;
-### <MM> {optical disc icon} :  "🖸"   U1F5B8	# OPTICAL DISC ICON
-#- 1F5B9;DOCUMENT WITH TEXT;So;0;ON;;;;;N;;;;;
-### <MM> {document with text} :  "🖹"   U1F5B9	# DOCUMENT WITH TEXT
-#- 1F5BA;DOCUMENT WITH TEXT AND PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {document with text and picture} :  "🖺"   U1F5BA	# DOCUMENT WITH TEXT AND PICTURE
-#- 1F5BB;DOCUMENT WITH PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {document with picture} :  "🖻"   U1F5BB	# DOCUMENT WITH PICTURE
-#- 1F5BC;FRAME WITH PICTURE;So;0;ON;;;;;N;;;;;
-### <MM> {frame with picture} :  "🖼"   U1F5BC	# FRAME WITH PICTURE
-#- 1F5BD;FRAME WITH TILES;So;0;ON;;;;;N;;;;;
-### <MM> {frame with tiles} :  "🖽"   U1F5BD	# FRAME WITH TILES
-#- 1F5BE;FRAME WITH AN X;So;0;ON;;;;;N;;;;;
-### <MM> {frame with an x} :  "🖾"   U1F5BE	# FRAME WITH AN X
-#- 1F5BF;BLACK FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {black folder} :  "🖿"   U1F5BF	# BLACK FOLDER
-#- 1F5C0;FOLDER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <o> <l> <d> <e> <r> :  "🗀"   U1F5C0	# FOLDER
-#- 1F5C1;OPEN FOLDER;So;0;ON;;;;;N;;;;;
-### <MM> {open folder} :  "🗁"   U1F5C1	# OPEN FOLDER
-#- 1F5C2;CARD INDEX DIVIDERS;So;0;ON;;;;;N;;;;;
-### <MM> {card index dividers} :  "🗂"   U1F5C2	# CARD INDEX DIVIDERS
-#- 1F5C3;CARD FILE BOX;So;0;ON;;;;;N;;;;;
-### <MM> {card file box} :  "🗃"   U1F5C3	# CARD FILE BOX
-#- 1F5C4;FILE CABINET;So;0;ON;;;;;N;;;;;
-### <MM> {file cabinet} :  "🗄"   U1F5C4	# FILE CABINET
-#- 1F5C5;EMPTY NOTE;So;0;ON;;;;;N;;;;;
-### <MM> {empty note} :  "🗅"   U1F5C5	# EMPTY NOTE
-#- 1F5C6;EMPTY NOTE PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {empty note page} :  "🗆"   U1F5C6	# EMPTY NOTE PAGE
-#- 1F5C7;EMPTY NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {empty note pad} :  "🗇"   U1F5C7	# EMPTY NOTE PAD
-#- 1F5C8;NOTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <o> <t> <e> :  "🗈"   U1F5C8	# NOTE
-#- 1F5C9;NOTE PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {note page} :  "🗉"   U1F5C9	# NOTE PAGE
-#- 1F5CA;NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {note pad} :  "🗊"   U1F5CA	# NOTE PAD
-#- 1F5CB;EMPTY DOCUMENT;So;0;ON;;;;;N;;;;;
-### <MM> {empty document} :  "🗋"   U1F5CB	# EMPTY DOCUMENT
-#- 1F5CC;EMPTY PAGE;So;0;ON;;;;;N;;;;;
-### <MM> {empty page} :  "🗌"   U1F5CC	# EMPTY PAGE
-#- 1F5CD;EMPTY PAGES;So;0;ON;;;;;N;;;;;
-### <MM> {empty pages} :  "🗍"   U1F5CD	# EMPTY PAGES
-#- 1F5CE;DOCUMENT;So;0;ON;;;;;N;;;;;
-### <MM> {document} :  "🗎"   U1F5CE	# DOCUMENT
-#- 1F5CF;PAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <g> <e> :  "🗏"   U1F5CF	# PAGE
-#- 1F5D0;PAGES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <a> <g> <e> <s> :  "🗐"   U1F5D0	# PAGES
-#- 1F5D1;WASTEBASKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <a> <s> <h> :  "🗑"   U1F5D1	# WASTEBASKET
-#- 1F5D2;SPIRAL NOTE PAD;So;0;ON;;;;;N;;;;;
-### <MM> {spiral note pad} :  "🗒"   U1F5D2	# SPIRAL NOTE PAD
-#- 1F5D3;SPIRAL CALENDAR PAD;So;0;ON;;;;;N;;;;;
-### <MM> {spiral calendar pad} :  "🗓"   U1F5D3	# SPIRAL CALENDAR PAD
-#- 1F5D4;DESKTOP WINDOW;So;0;ON;;;;;N;;;;;
-### <MM> {desktop window} :  "🗔"   U1F5D4	# DESKTOP WINDOW
-#- 1F5D5;MINIMIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <i> <n> <i> <m> <i> <z> :  "🗕"   U1F5D5	# MINIMIZE
-#- 1F5D6;MAXIMIZE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <a> <x> <i> <m> <i> <z> :  "🗖"   U1F5D6	# MAXIMIZE
-#- 1F5D7;OVERLAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <v> <e> <r> <l> <a> <p> :  "🗗"   U1F5D7	# OVERLAP
-#- 1F5D8;CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS;So;0;ON;;;;;N;;;;;
-### <MM> {clockwise right and left semicircle arrows} :  "🗘"   U1F5D8	# CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS
-#- 1F5D9;CANCELLATION X;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <X> <o> <u> <t> :  "🗙"   U1F5D9	# CANCELLATION X
-#- 1F5DA;INCREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {increase font size symbol} :  "🗚"   U1F5DA	# INCREASE FONT SIZE SYMBOL
-#- 1F5DB;DECREASE FONT SIZE SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {decrease font size symbol} :  "🗛"   U1F5DB	# DECREASE FONT SIZE SYMBOL
-#- 1F5DC;COMPRESSION;So;0;ON;;;;;N;;;;;
-### <MM> {compression} :  "🗜"   U1F5DC	# COMPRESSION
-#- 1F5DD;OLD KEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <l> <d> <k> <e> <y> :  "🗝"   U1F5DD	# OLD KEY
-#- 1F5DE;ROLLED-UP NEWSPAPER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <d> <d> <o> <g> :  "🗞"   U1F5DE	# ROLLED-UP NEWSPAPER
-### <MM> {rolled-up newspaper} :  "🗞"   U1F5DE	# ROLLED-UP NEWSPAPER
-#- 1F5DF;PAGE WITH CIRCLED TEXT;So;0;ON;;;;;N;;;;;
-### <MM> {page with circled text} :  "🗟"   U1F5DF	# PAGE WITH CIRCLED TEXT
-#- 1F5E0;STOCK CHART;So;0;ON;;;;;N;;;;;
-### <MM> {stock chart} :  "🗠"   U1F5E0	# STOCK CHART
-#- 1F5E1;DAGGER KNIFE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <a> <g> <g> <e> <r> :  "🗡"   U1F5E1	# DAGGER KNIFE
-#- 1F5E2;LIPS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <i> <p> <s> :  "🗢"   U1F5E2	# LIPS
-#- 1F5E3;SPEAKING HEAD IN SILHOUETTE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <l> <k> <e> <r> :  "🗣"   U1F5E3	# SPEAKING HEAD IN SILHOUETTE
-## Arguably the wrong way around.
-#- 1F5E4;THREE RAYS ABOVE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <l> <k> <d> <w> <n> :  "🗤"   U1F5E4	# THREE RAYS ABOVE
-#- 1F5E5;THREE RAYS BELOW;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <l> <k> <u> <p> :  "🗥"   U1F5E5	# THREE RAYS BELOW
-#- 1F5E6;THREE RAYS LEFT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <l> <k> <r> <t> :  "🗦"   U1F5E6	# THREE RAYS LEFT
-#- 1F5E7;THREE RAYS RIGHT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <l> <k> <l> <f> <t> :  "🗧"   U1F5E7	# THREE RAYS RIGHT
-#- 1F5E8;LEFT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left speech bubble} :  "🗨"   U1F5E8	# LEFT SPEECH BUBBLE
-#- 1F5E9;RIGHT SPEECH BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right speech bubble} :  "🗩"   U1F5E9	# RIGHT SPEECH BUBBLE
-#- 1F5EA;TWO SPEECH BUBBLES;So;0;ON;;;;;N;;;;;
-### <MM> {two speech bubbles} :  "🗪"   U1F5EA	# TWO SPEECH BUBBLES
-#- 1F5EB;THREE SPEECH BUBBLES;So;0;ON;;;;;N;;;;;
-### <MM> {three speech bubbles} :  "🗫"   U1F5EB	# THREE SPEECH BUBBLES
-#- 1F5EC;LEFT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left thought bubble} :  "🗬"   U1F5EC	# LEFT THOUGHT BUBBLE
-#- 1F5ED;RIGHT THOUGHT BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right thought bubble} :  "🗭"   U1F5ED	# RIGHT THOUGHT BUBBLE
-#- 1F5EE;LEFT ANGER BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {left anger bubble} :  "🗮"   U1F5EE	# LEFT ANGER BUBBLE
-#- 1F5EF;RIGHT ANGER BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {right anger bubble} :  "🗯"   U1F5EF	# RIGHT ANGER BUBBLE
-#- 1F5F0;MOOD BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {mood bubble} :  "🗰"   U1F5F0	# MOOD BUBBLE
-#- 1F5F1;LIGHTNING MOOD BUBBLE;So;0;ON;;;;;N;;;;;
-### <MM> {lightning mood bubble} :  "🗱"   U1F5F1	# LIGHTNING MOOD BUBBLE
-#- 1F5F2;LIGHTNING MOOD;So;0;ON;;;;;N;;;;;
-### <MM> {lightning mood} :  "🗲"   U1F5F2	# LIGHTNING MOOD
-#- 1F5F3;BALLOT BOX WITH BALLOT;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with ballot} :  "🗳"   U1F5F3	# BALLOT BOX WITH BALLOT
-#- 1F5F4;BALLOT SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot script x} :  "🗴"   U1F5F4	# BALLOT SCRIPT X
-#- 1F5F5;BALLOT BOX WITH SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with script x} :  "🗵"   U1F5F5	# BALLOT BOX WITH SCRIPT X
-#- 1F5F6;BALLOT BOLD SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot bold script x} :  "🗶"   U1F5F6	# BALLOT BOLD SCRIPT X
-#- 1F5F7;BALLOT BOX WITH BOLD SCRIPT X;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with bold script x} :  "🗷"   U1F5F7	# BALLOT BOX WITH BOLD SCRIPT X
-#- 1F5F8;LIGHT CHECK MARK;So;0;ON;;;;;N;;;;;
-### <MM> {light check mark} :  "🗸"   U1F5F8	# LIGHT CHECK MARK
-#- 1F5F9;BALLOT BOX WITH BOLD CHECK;So;0;ON;;;;;N;;;;;
-### <MM> {ballot box with bold check} :  "🗹"   U1F5F9	# BALLOT BOX WITH BOLD CHECK
-#- 1F5FA;WORLD MAP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <o> <r> <l> <d> :  "🗺"   U1F5FA	# WORLD MAP
-#- 1F5FB;MOUNT FUJI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <u> <j> <i> :  "🗻"   U1F5FB	# MOUNT FUJI
-#- 1F5FC;TOKYO TOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <k> <y> <o> :  "🗼"   U1F5FC	# TOKYO TOWER
-#- 1F5FD;STATUE OF LIBERTY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <i> <b> <e> <r> <t> <y> :  "🗽"   U1F5FD	# STATUE OF LIBERTY
-#- 1F5FE;SILHOUETTE OF JAPAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <j> <a> <p> <a> <n> :  "🗾"   U1F5FE	# SILHOUETTE OF JAPAN
-#- 1F5FF;MOYAI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <o> <y> <a> <i> :  "🗿"   U1F5FF	# MOYAI
-#- 1F600;GRINNING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <g> <r> <i> <n> :  "😀"   U1F600	# GRINNING FACE
-## Extra right paren for smiling eyes?  Keys for all these faces will be
-## tough.
-#- 1F601;GRINNING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <parenright> <g> <r> <i> <n> :  "😁"   U1F601	# GRINNING FACE WITH SMILING EYES
-#- 1F602;FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <j> <o> <y> :  "😂"   U1F602	# FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key>  <colon> <apostrophe> <minus> <D> :  "😂"   U1F602	# FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key>  <colon> <comma> <minus> <D> :  "😂"   U1F602	# FACE WITH TEARS OF JOY
-#- 1F603;SMILING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <D> :  "😃"   U1F603	# SMILING FACE WITH OPEN MOUTH
-<Multi_key> <Multi_key>  <parenleft> <parenright> <D> <s> <m> <i> <l> :  "😃"   U1F603	# SMILING FACE WITH OPEN MOUTH
-#- 1F604;SMILING FACE WITH OPEN MOUTH AND SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <semicolon> <minus> <D> :  "😄"   U1F604	# SMILING FACE WITH OPEN MOUTH AND SMILING EYES
-## Cold sweat is above eyes, tears below?
-#- 1F605;SMILING FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <apostrophe> <colon> <minus> <D> :  "😅"   U1F605	# SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-<Multi_key> <Multi_key>  <comma> <colon> <minus> <D> :  "😅"   U1F605	# SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
-#- 1F606;SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <bar> <minus> <D> :  "😆"   U1F606	# SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
-#- 1F607;SMILING FACE WITH HALO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <O> <colon> <minus> <parenright> :  "😇"   U1F607	# SMILING FACE WITH HALO
-<Multi_key> <Multi_key>  <O> <colon> <parenright> :  "😇"   U1F607	# SMILING FACE WITH HALO
-#- 1F608;SMILING FACE WITH HORNS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <greater> <colon> <minus> <parenright> :  "😈"   U1F608	# SMILING FACE WITH HORNS
-#- 1F609;WINKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <semicolon> <minus> <parenright> :  "😉"   U1F609	# WINKING FACE
-#- 1F60A;SMILING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <parenright> <s> <m> <i> <l> :  "😊"   U1F60A	# SMILING FACE WITH SMILING EYES
-<Multi_key> <Multi_key>  <parenright> <colon> <minus> <parenright> :  "😊"   U1F60A	# SMILING FACE WITH SMILING EYES
-#- 1F60B;FACE SAVOURING DELICIOUS FOOD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <9> :  "😋"   U1F60B	# FACE SAVOURING DELICIOUS FOOD
-<Multi_key> <Multi_key>  <colon> <9> :  "😋"   U1F60B	# FACE SAVOURING DELICIOUS FOOD
-#- 1F60C;RELIEVED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <h> <e> <w> :  "😌"   U1F60C	# RELIEVED FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <r> <e> <l> <i> <e> :  "😌"   U1F60C	# RELIEVED FACE
-#- 1F60D;SMILING FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <less> <3> <colon> <minus> <parenright> :  "😍"   U1F60D	# SMILING FACE WITH HEART-SHAPED EYES
-#- 1F60E;SMILING FACE WITH SUNGLASSES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <minus> <parenright> :  "😎"   U1F60E	# SMILING FACE WITH SUNGLASSES
-<Multi_key> <Multi_key>  <B> <parenright> :  "😎"   U1F60E	# SMILING FACE WITH SUNGLASSES
-#- 1F60F;SMIRKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <s> <m> <i> <r> <k> :  "😏"   U1F60F	# SMIRKING FACE
-#- 1F610;NEUTRAL FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <bar> :  "😐"   U1F610	# NEUTRAL FACE
-#- 1F611;EXPRESSIONLESS FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <bar> <minus> <bar> :  "😑"   U1F611	# EXPRESSIONLESS FACE
-#- 1F612;UNAMUSED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <exclam> <a> <m> <u> <s> :  "😒"   U1F612	# UNAMUSED FACE
-#- 1F613;FACE WITH COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <apostrophe> <colon> <minus> <parenright> :  "😓"   U1F613	# FACE WITH COLD SWEAT
-<Multi_key> <Multi_key>  <comma> <colon> <minus> <parenright> :  "😓"   U1F613	# FACE WITH COLD SWEAT
-#- 1F614;PENSIVE FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <e> <n> <s> <i> :  "😔"   U1F614	# PENSIVE FACE
-#- 1F615;CONFUSED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <h> <u> <h> <question> :  "😕"   U1F615	# CONFUSED FACE
-#- 1F616;CONFOUNDED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {confounded face} :  "😖"   U1F616	# CONFOUNDED FACE
-#- 1F617;KISSING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <k> <i> <s> <s> :  "😗"   U1F617	# KISSING FACE
-#- 1F618;FACE THROWING A KISS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <minus> <k> <i> <s> <s> :  "😘"   U1F618	# FACE THROWING A KISS
-#- 1F619;KISSING FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <parenright> <k> <i> <s> <s> :  "😙"   U1F619	# KISSING FACE WITH SMILING EYES
-#- 1F61A;KISSING FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <bar> <k> <i> <s> <s> :  "😚"   U1F61A	# KISSING FACE WITH CLOSED EYES
-#- 1F61B;FACE WITH STUCK-OUT TONGUE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <P> :  "😛"   U1F61B	# FACE WITH STUCK-OUT TONGUE
-#- 1F61C;FACE WITH STUCK-OUT TONGUE AND WINKING EYE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <semicolon> <minus> <P> :  "😜"   U1F61C	# FACE WITH STUCK-OUT TONGUE AND WINKING EYE
-#- 1F61D;FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <bar> <minus> <P> :  "😝"   U1F61D	# FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
-#- 1F61E;DISAPPOINTED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {()disap} :  "😞"   U1F61E	# DISAPPOINTED FACE
-#- 1F61F;WORRIED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <o> <r> <r> <i> :  "😟"   U1F61F	# WORRIED FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <o> <r> <r> <y> :  "😟"   U1F61F	# WORRIED FACE
-#- 1F620;ANGRY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <a> <n> <g> <r> <y> :  "😠"   U1F620	# ANGRY FACE
-#- 1F621;POUTING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <o> <u> <t> :  "😡"   U1F621	# POUTING FACE
-#- 1F622;CRYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <c> <r> <y> :  "😢"   U1F622	# CRYING FACE
-#- 1F623;PERSEVERING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <e> <r> <s> <e> :  "😣"   U1F623	# PERSEVERING FACE
-#- 1F624;FACE WITH LOOK OF TRIUMPH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <t> <r> <i> <u> <m> :  "😤"   U1F624	# FACE WITH LOOK OF TRIUMPH
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <i> <n> :  "😤"   U1F624	# FACE WITH LOOK OF TRIUMPH
-#- 1F625;DISAPPOINTED BUT RELIEVED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <o> <w> <e> <l> <l> :  "😥"   U1F625	# DISAPPOINTED BUT RELIEVED FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <o> <h> <w> <e> <l> :  "😥"   U1F625	# DISAPPOINTED BUT RELIEVED FACE
-#- 1F626;FROWNING FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <D> <minus> <colon> :  "😦"   U1F626	# FROWNING FACE WITH OPEN MOUTH
-#- 1F627;ANGUISHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <a> <n> <g> <u> <i> :  "😧"   U1F627	# ANGUISHED FACE
-#- 1F628;FEARFUL FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <f> <e> <a> <r> <f> :  "😨"   U1F628	# FEARFUL FACE
-#- 1F629;WEARY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <w> <e> <a> <r> <y> :  "😩"   U1F629	# WEARY FACE
-#- 1F62A;SLEEPY FACE;So;0;ON;;;;;N;;;;;
-### <MM> {sleepy face} :  "😪"   U1F62A	# SLEEPY FACE
-#- 1F62B;TIRED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <t> <i> <r> <e> <d> :  "😫"   U1F62B	# TIRED FACE
-#- 1F62C;GRIMACING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <g> <r> <i> <m> <a> :  "😬"   U1F62C	# GRIMACING FACE
-#- 1F62D;LOUDLY CRYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <l> <o> <u> <d> :  "😭"   U1F62D	# LOUDLY CRYING FACE
-#- 1F62E;FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <O> :  "😮"   U1F62E	# FACE WITH OPEN MOUTH
-#- 1F62F;HUSHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <h> <u> <s> <h> :  "😯"   U1F62F	# HUSHED FACE
-#- 1F630;FACE WITH OPEN MOUTH AND COLD SWEAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <comma> <colon> <minus> <O> :  "😰"   U1F630	# FACE WITH OPEN MOUTH AND COLD SWEAT
-<Multi_key> <Multi_key>  <apostrophe> <colon> <minus> <O> :  "😰"   U1F630	# FACE WITH OPEN MOUTH AND COLD SWEAT
-#- 1F631;FACE SCREAMING IN FEAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <s> <c> <r> <e> <a> :  "😱"   U1F631	# FACE SCREAMING IN FEAR
-#- 1F632;ASTONISHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <a> <s> <t> <o> <n> :  "😲"   U1F632	# ASTONISHED FACE
-#- 1F633;FLUSHED FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <b> <l> <u> <s> <h> :  "😳"   U1F633	# FLUSHED FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <f> <l> <u> <s> <h> :  "😳"   U1F633	# FLUSHED FACE
-#- 1F634;SLEEPING FACE;So;0;ON;;;;;N;;;;;
-### <MM> {sleeping face} :  "😴"   U1F634	# SLEEPING FACE
-#- 1F635;DIZZY FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <d> <i> <z> <z> <y> :  "😵"   U1F635	# DIZZY FACE
-#- 1F636;FACE WITHOUT MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <space> :  "😶"   U1F636	# FACE WITHOUT MOUTH
-#- 1F637;FACE WITH MEDICAL MASK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <m> <a> <s> <k> :  "😷"   U1F637	# FACE WITH MEDICAL MASK
-<Multi_key> <Multi_key>  <colon> <minus> <bracketleft> <bracketright> :  "😷"   U1F637	# FACE WITH MEDICAL MASK
-## Cat faces now?? Um. ] for ears?
-#- 1F638;GRINNING CAT FACE WITH SMILING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <parenright> <bracketright> <g> <r> <i> :  "😸"   U1F638	# GRINNING CAT FACE WITH SMILING EYES
-#- 1F639;CAT FACE WITH TEARS OF JOY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <bracketright> <j> <o> <y> :  "😹"   U1F639	# CAT FACE WITH TEARS OF JOY
-<Multi_key> <Multi_key>  <bracketright> <colon> <comma> <minus> <parenright> :  "😹"   U1F639	# CAT FACE WITH TEARS OF JOY
-#- 1F63A;SMILING CAT FACE WITH OPEN MOUTH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <bracketright> <colon> <minus> <D> :  "😺"   U1F63A	# SMILING CAT FACE WITH OPEN MOUTH
-#- 1F63B;SMILING CAT FACE WITH HEART-SHAPED EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <less> <3> <bracketright> <colon> <minus> <parenright> :  "😻"   U1F63B	# SMILING CAT FACE WITH HEART-SHAPED EYES
-#- 1F63C;CAT FACE WITH WRY SMILE;So;0;ON;;;;;N;;;;;
-### <MM> {cat face with wry smile} :  "😼"   U1F63C	# CAT FACE WITH WRY SMILE
-#- 1F63D;KISSING CAT FACE WITH CLOSED EYES;So;0;ON;;;;;N;;;;;
-### <MM> {kissing cat face with closed eyes} :  "😽"   U1F63D	# KISSING CAT FACE WITH CLOSED EYES
-#- 1F63E;POUTING CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <bracketright> <p> <o> <u> <t> :  "😾"   U1F63E	# POUTING CAT FACE
-#- 1F63F;CRYING CAT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <bracketright> <c> <r> <y> :  "😿"   U1F63F	# CRYING CAT FACE
-#- 1F640;WEARY CAT FACE;So;0;ON;;;;;N;;;;;
-### <MM> {weary cat face} :  "🙀"   U1F640	# WEARY CAT FACE
-## Doing /2 at the end would have led to prefix problems.
-#- 1F641;SLIGHTLY FROWNING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <period> <5> <colon> <minus> <parenleft> :  "🙁"   U1F641	# SLIGHTLY FROWNING FACE
-#- 1F642;SLIGHTLY SMILING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <period> <5> <colon> <minus> <parenright> :  "🙂"   U1F642	# SLIGHTLY SMILING FACE
-#- 1F643;UPSIDE-DOWN FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <minus> <colon> :  "🙃"   U1F643	# UPSIDE-DOWN FACE
-#- 1F644;FACE WITH ROLLING EYES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <8> <minus> <parenright> :  "🙄"   U1F644	# FACE WITH ROLLING EYES
-#- 1F645;FACE WITH NO GOOD GESTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <N> <G> :  "🙅"   U1F645	# FACE WITH NO GOOD GESTURE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <exclam> <g> <o> <o> <d> :  "🙅"   U1F645	# FACE WITH NO GOOD GESTURE
-#- 1F646;FACE WITH OK GESTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <O> <K> :  "🙆"   U1F646	# FACE WITH OK GESTURE
-#- 1F647;PERSON BOWING DEEPLY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <o> <w> <i> <n> <g> :  "🙇"   U1F647	# PERSON BOWING DEEPLY
-<Multi_key> <Multi_key>  <b> <o> <w> <e> <r> :  "🙇"   U1F647	# PERSON BOWING DEEPLY
-#- 1F648;SEE-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <s> <e> <e> :  "🙈"   U1F648	# SEE-NO-EVIL MONKEY
-#- 1F649;HEAR-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <h> <e> <a> <r> :  "🙉"   U1F649	# HEAR-NO-EVIL MONKEY
-#- 1F64A;SPEAK-NO-EVIL MONKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <s> <p> <e> <a> <k> :  "🙊"   U1F64A	# SPEAK-NO-EVIL MONKEY
-#- 1F64B;HAPPY PERSON RAISING ONE HAND;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <slash> :  "🙋"   U1F64B	# HAPPY PERSON RAISING ONE HAND
-#- 1F64C;PERSON RAISING BOTH HANDS IN CELEBRATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <backslash> <o> <slash> :  "🙌"   U1F64C	# PERSON RAISING BOTH HANDS IN CELEBRATION
-#- 1F64D;PERSON FROWNING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <r> <o> <w> <n> <e> <r> :  "🙍"   U1F64D	# PERSON FROWNING
-#- 1F64E;PERSON WITH POUTING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <o> <u> <t> <e> <r> :  "🙎"   U1F64E	# PERSON WITH POUTING FACE
-#- 1F64F;PERSON WITH FOLDED HANDS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <l> <e> <a> <d> :  "🙏"   U1F64F	# PERSON WITH FOLDED HANDS
-<Multi_key> <Multi_key>  <p> <l> <e> <a> <s> <e> :  "🙏"   U1F64F	# PERSON WITH FOLDED HANDS
-#- 1F650;NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing leaf} :  "🙐"   U1F650	# NORTH WEST POINTING LEAF
-#- 1F651;SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing leaf} :  "🙑"   U1F651	# SOUTH WEST POINTING LEAF
-#- 1F652;NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing leaf} :  "🙒"   U1F652	# NORTH EAST POINTING LEAF
-#- 1F653;SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing leaf} :  "🙓"   U1F653	# SOUTH EAST POINTING LEAF
-#- 1F654;TURNED NORTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned north west pointing leaf} :  "🙔"   U1F654	# TURNED NORTH WEST POINTING LEAF
-#- 1F655;TURNED SOUTH WEST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned south west pointing leaf} :  "🙕"   U1F655	# TURNED SOUTH WEST POINTING LEAF
-#- 1F656;TURNED NORTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned north east pointing leaf} :  "🙖"   U1F656	# TURNED NORTH EAST POINTING LEAF
-#- 1F657;TURNED SOUTH EAST POINTING LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {turned south east pointing leaf} :  "🙗"   U1F657	# TURNED SOUTH EAST POINTING LEAF
-#- 1F658;NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing vine leaf} :  "🙘"   U1F658	# NORTH WEST POINTING VINE LEAF
-#- 1F659;SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing vine leaf} :  "🙙"   U1F659	# SOUTH WEST POINTING VINE LEAF
-#- 1F65A;NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing vine leaf} :  "🙚"   U1F65A	# NORTH EAST POINTING VINE LEAF
-#- 1F65B;SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing vine leaf} :  "🙛"   U1F65B	# SOUTH EAST POINTING VINE LEAF
-#- 1F65C;HEAVY NORTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north west pointing vine leaf} :  "🙜"   U1F65C	# HEAVY NORTH WEST POINTING VINE LEAF
-#- 1F65D;HEAVY SOUTH WEST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south west pointing vine leaf} :  "🙝"   U1F65D	# HEAVY SOUTH WEST POINTING VINE LEAF
-#- 1F65E;HEAVY NORTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north east pointing vine leaf} :  "🙞"   U1F65E	# HEAVY NORTH EAST POINTING VINE LEAF
-#- 1F65F;HEAVY SOUTH EAST POINTING VINE LEAF;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south east pointing vine leaf} :  "🙟"   U1F65F	# HEAVY SOUTH EAST POINTING VINE LEAF
-#- 1F660;NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {north west pointing bud} :  "🙠"   U1F660	# NORTH WEST POINTING BUD
-#- 1F661;SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {south west pointing bud} :  "🙡"   U1F661	# SOUTH WEST POINTING BUD
-#- 1F662;NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {north east pointing bud} :  "🙢"   U1F662	# NORTH EAST POINTING BUD
-#- 1F663;SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {south east pointing bud} :  "🙣"   U1F663	# SOUTH EAST POINTING BUD
-#- 1F664;HEAVY NORTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north west pointing bud} :  "🙤"   U1F664	# HEAVY NORTH WEST POINTING BUD
-#- 1F665;HEAVY SOUTH WEST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south west pointing bud} :  "🙥"   U1F665	# HEAVY SOUTH WEST POINTING BUD
-#- 1F666;HEAVY NORTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy north east pointing bud} :  "🙦"   U1F666	# HEAVY NORTH EAST POINTING BUD
-#- 1F667;HEAVY SOUTH EAST POINTING BUD;So;0;ON;;;;;N;;;;;
-### <MM> {heavy south east pointing bud} :  "🙧"   U1F667	# HEAVY SOUTH EAST POINTING BUD
-#- 1F668;HOLLOW QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {hollow quilt square ornament} :  "🙨"   U1F668	# HOLLOW QUILT SQUARE ORNAMENT
-#- 1F669;HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {hollow quilt square ornament in black square} :  "🙩"   U1F669	# HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE
-#- 1F66A;SOLID QUILT SQUARE ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {solid quilt square ornament} :  "🙪"   U1F66A	# SOLID QUILT SQUARE ORNAMENT
-#- 1F66B;SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
-### <MM> {solid quilt square ornament in black square} :  "🙫"   U1F66B	# SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE
-#- 1F66C;LEFTWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <o> <c> <k> <e> <t> <less> :  "🙬"   U1F66C	# LEFTWARDS ROCKET
-#- 1F66D;UPWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <o> <c> <k> <e> <t> <asciicircum> :  "🙭"   U1F66D	# UPWARDS ROCKET
-#- 1F66E;RIGHTWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <o> <c> <k> <e> <t> <greater> :  "🙮"   U1F66E	# RIGHTWARDS ROCKET
-#- 1F66F;DOWNWARDS ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <o> <c> <k> <e> <t> <v> :  "🙯"   U1F66F	# DOWNWARDS ROCKET
-#- 1F670;SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {script ligature et ornament} :  "🙰"   U1F670	# SCRIPT LIGATURE ET ORNAMENT
-#- 1F671;HEAVY SCRIPT LIGATURE ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy script ligature et ornament} :  "🙱"   U1F671	# HEAVY SCRIPT LIGATURE ET ORNAMENT
-#- 1F672;LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {ligature open et ornament} :  "🙲"   U1F672	# LIGATURE OPEN ET ORNAMENT
-#- 1F673;HEAVY LIGATURE OPEN ET ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ligature open et ornament} :  "🙳"   U1F673	# HEAVY LIGATURE OPEN ET ORNAMENT
-#- 1F674;HEAVY AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy ampersand ornament} :  "🙴"   U1F674	# HEAVY AMPERSAND ORNAMENT
-#- 1F675;SWASH AMPERSAND ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {swash ampersand ornament} :  "🙵"   U1F675	# SWASH AMPERSAND ORNAMENT
-#- 1F676;SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy double turned comma quotation mark ornament} :  "🙶"   U1F676	# SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
-#- 1F677;SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy double comma quotation mark ornament} :  "🙷"   U1F677	# SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 1F678;SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif heavy low double comma quotation mark ornament} :  "🙸"   U1F678	# SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-#- 1F679;HEAVY INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy interrobang ornament} :  "🙹"   U1F679	# HEAVY INTERROBANG ORNAMENT
-#- 1F67A;SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {sans-serif interrobang ornament} :  "🙺"   U1F67A	# SANS-SERIF INTERROBANG ORNAMENT
-#- 1F67B;HEAVY SANS-SERIF INTERROBANG ORNAMENT;So;0;ON;;;;;N;;;;;
-### <MM> {heavy sans-serif interrobang ornament} :  "🙻"   U1F67B	# HEAVY SANS-SERIF INTERROBANG ORNAMENT
-#- 1F67C;VERY HEAVY SOLIDUS;So;0;ON;;;;;N;;;;;
-### <MM> {very heavy solidus} :  "🙼"   U1F67C	# VERY HEAVY SOLIDUS
-#- 1F67D;VERY HEAVY REVERSE SOLIDUS;So;0;ON;;;;;N;;;;;
-### <MM> {very heavy reverse solidus} :  "🙽"   U1F67D	# VERY HEAVY REVERSE SOLIDUS
-#- 1F67E;CHECKER BOARD;So;0;ON;;;;;N;;;;;
-### <MM> {checker board} :  "🙾"   U1F67E	# CHECKER BOARD
-#- 1F67F;REVERSE CHECKER BOARD;So;0;ON;;;;;N;;;;;
-### <MM> {reverse checker board} :  "🙿"   U1F67F	# REVERSE CHECKER BOARD
-#- 1F680;ROCKET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <c> <k> <e> <t> :  "🚀"   U1F680	# ROCKET
-#- 1F681;HELICOPTER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <p> <t> <e> <r> :  "🚁"   U1F681	# HELICOPTER
-#- 1F682;STEAM LOCOMOTIVE;So;0;ON;;;;;N;;;;;
-### <MM> {steam locomotive} :  "🚂"   U1F682	# STEAM LOCOMOTIVE
-#- 1F683;RAILWAY CAR;So;0;ON;;;;;N;;;;;
-### <MM> {railway car} :  "🚃"   U1F683	# RAILWAY CAR
-#- 1F684;HIGH-SPEED TRAIN;So;0;ON;;;;;N;;;;;
-### <MM> {high-speed train} :  "🚄"   U1F684	# HIGH-SPEED TRAIN
-#- 1F685;HIGH-SPEED TRAIN WITH BULLET NOSE;So;0;ON;;;;;N;;;;;
-### <MM> {high-speed train with bullet nose} :  "🚅"   U1F685	# HIGH-SPEED TRAIN WITH BULLET NOSE
-#- 1F686;TRAIN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <a> <i> <n> :  "🚆"   U1F686	# TRAIN
-#- 1F687;METRO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <t> <r> <o> :  "🚇"   U1F687	# METRO
-#- 1F688;LIGHT RAIL;So;0;ON;;;;;N;;;;;
-### <MM> {light rail} :  "🚈"   U1F688	# LIGHT RAIL
-#- 1F689;STATION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <t> <a> <t> <i> <o> <n> :  "🚉"   U1F689	# STATION
-#- 1F68A;TRAM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <a> <m> :  "🚊"   U1F68A	# TRAM
-#- 1F68B;TRAM CAR;So;0;ON;;;;;N;;;;;
-### <MM> {tram car} :  "🚋"   U1F68B	# TRAM CAR
-#- 1F68C;BUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <u> <s> :  "🚌"   U1F68C	# BUS
-#- 1F68D;ONCOMING BUS;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming bus} :  "🚍"   U1F68D	# ONCOMING BUS
-#- 1F68E;TROLLEYBUS;So;0;ON;;;;;N;;;;;
-### <MM> {trolleybus} :  "🚎"   U1F68E	# TROLLEYBUS
-#- 1F68F;BUS STOP;So;0;ON;;;;;N;;;;;
-### <MM> {bus stop} :  "🚏"   U1F68F	# BUS STOP
-#- 1F690;MINIBUS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <i> <n> <i> <b> <u> <s> :  "🚐"   U1F690	# MINIBUS
-#- 1F691;AMBULANCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <m> <b> <u> <l> <a> <n> :  "🚑"   U1F691	# AMBULANCE
-#- 1F692;FIRE ENGINE;So;0;ON;;;;;N;;;;;
-### <MM> {fire engine} :  "🚒"   U1F692	# FIRE ENGINE
-#- 1F693;POLICE CAR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <p> <c> <a> <r> :  "🚓"   U1F693	# POLICE CAR
-#- 1F694;ONCOMING POLICE CAR;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming police car} :  "🚔"   U1F694	# ONCOMING POLICE CAR
-#- 1F695;TAXI;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <x> <i> :  "🚕"   U1F695	# TAXI
-#- 1F696;ONCOMING TAXI;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming taxi} :  "🚖"   U1F696	# ONCOMING TAXI
-#- 1F697;AUTOMOBILE;So;0;ON;;;;;N;;;;;
-### <MM> {automobile} :  "🚗"   U1F697	# AUTOMOBILE
-#- 1F698;ONCOMING AUTOMOBILE;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming automobile} :  "🚘"   U1F698	# ONCOMING AUTOMOBILE
-#- 1F699;RECREATIONAL VEHICLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <V> :  "🚙"   U1F699	# RECREATIONAL VEHICLE
-#- 1F69A;DELIVERY TRUCK;So;0;ON;;;;;N;;;;;
-### <MM> {delivery truck} :  "🚚"   U1F69A	# DELIVERY TRUCK
-#- 1F69B;ARTICULATED LORRY;So;0;ON;;;;;N;;;;;
-### <MM> {articulated lorry} :  "🚛"   U1F69B	# ARTICULATED LORRY
-#- 1F69C;TRACTOR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <r> <a> <c> <t> <o> <r> :  "🚜"   U1F69C	# TRACTOR
-#- 1F69D;MONORAIL;So;0;ON;;;;;N;;;;;
-### <MM> {monorail} :  "🚝"   U1F69D	# MONORAIL
-#- 1F69E;MOUNTAIN RAILWAY;So;0;ON;;;;;N;;;;;
-### <MM> {mountain railway} :  "🚞"   U1F69E	# MOUNTAIN RAILWAY
-#- 1F69F;SUSPENSION RAILWAY;So;0;ON;;;;;N;;;;;
-### <MM> {suspension railway} :  "🚟"   U1F69F	# SUSPENSION RAILWAY
-#- 1F6A0;MOUNTAIN CABLEWAY;So;0;ON;;;;;N;;;;;
-### <MM> {mountain cableway} :  "🚠"   U1F6A0	# MOUNTAIN CABLEWAY
-#- 1F6A1;AERIAL TRAMWAY;So;0;ON;;;;;N;;;;;
-### <MM> {aerial tramway} :  "🚡"   U1F6A1	# AERIAL TRAMWAY
-#- 1F6A2;SHIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <i> <p> :  "🚢"   U1F6A2	# SHIP
-#- 1F6A3;ROWBOAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <w> <b> <o> <a> <t> :  "🚣"   U1F6A3	# ROWBOAT
-#- 1F6A4;SPEEDBOAT;So;0;ON;;;;;N;;;;;
-### <MM> {speedboat} :  "🚤"   U1F6A4	# SPEEDBOAT
-#- 1F6A5;HORIZONTAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {horizontal traffic light} :  "🚥"   U1F6A5	# HORIZONTAL TRAFFIC LIGHT
-#- 1F6A6;VERTICAL TRAFFIC LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {vertical traffic light} :  "🚦"   U1F6A6	# VERTICAL TRAFFIC LIGHT
-#- 1F6A7;CONSTRUCTION SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {construction sign} :  "🚧"   U1F6A7	# CONSTRUCTION SIGN
-#- 1F6A8;POLICE CARS REVOLVING LIGHT;So;0;ON;;;;;N;;;;;
-### <MM> {police cars revolving light} :  "🚨"   U1F6A8	# POLICE CARS REVOLVING LIGHT
-#- 1F6A9;TRIANGULAR FLAG ON POST;So;0;ON;;;;;N;;;;;
-### <MM> {triangular flag on post} :  "🚩"   U1F6A9	# TRIANGULAR FLAG ON POST
-#- 1F6AA;DOOR;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <o> <o> <r> :  "🚪"   U1F6AA	# DOOR
-#- 1F6AB;NO ENTRY SIGN;So;0;ON;;;;;N;;;;;
-### <MM> {no entry sign} :  "🚫"   U1F6AB	# NO ENTRY SIGN
-#- 1F6AC;SMOKING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <m> <o> <k> <e> :  "🚬"   U1F6AC	# SMOKING SYMBOL
-#- 1F6AD;NO SMOKING SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <o> <s> <m> <o> <k> <e> :  "🚭"   U1F6AD	# NO SMOKING SYMBOL
-<Multi_key> <Multi_key>  <exclam> <s> <m> <o> <k> <e> :  "🚭"   U1F6AD	# NO SMOKING SYMBOL
-## Capitalize to avoid conflicts
-#- 1F6AE;PUT LITTER IN ITS PLACE SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <I> <n> <T> <r> <a> <s> <h> :  "🚮"   U1F6AE	# PUT LITTER IN ITS PLACE SYMBOL
-#- 1F6AF;DO NOT LITTER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <l> <i> <t> <t> <e> <r> :  "🚯"   U1F6AF	# DO NOT LITTER SYMBOL
-#- 1F6B0;POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <r> <i> <n> <k> :  "🚰"   U1F6B0	# POTABLE WATER SYMBOL
-#- 1F6B1;NON-POTABLE WATER SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <o> <d> <r> <i> <n> <k> :  "🚱"   U1F6B1	# NON-POTABLE WATER SYMBOL
-<Multi_key> <Multi_key>  <exclam> <d> <r> <i> <n> <k> :  "🚱"   U1F6B1	# NON-POTABLE WATER SYMBOL
-#- 1F6B2;BICYCLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <i> <c> <y> <c> <l> <e> :  "🚲"   U1F6B2	# BICYCLE
-#- 1F6B3;NO BICYCLES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <b> <i> <c> <y> <c> <l> :  "🚳"   U1F6B3	# NO BICYCLES
-#- 1F6B4;BICYCLIST;So;0;ON;;;;;N;;;;;
-### <MM> {bicyclist} :  "🚴"   U1F6B4	# BICYCLIST
-#- 1F6B5;MOUNTAIN BICYCLIST;So;0;ON;;;;;N;;;;;
-### <MM> {mountain bicyclist} :  "🚵"   U1F6B5	# MOUNTAIN BICYCLIST
-#- 1F6B6;PEDESTRIAN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <a> <l> <k> <e> <r> :  "🚶"   U1F6B6	# PEDESTRIAN
-#- 1F6B7;NO PEDESTRIANS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <exclam> <w> <a> <l> <k> <e> <r> :  "🚷"   U1F6B7	# NO PEDESTRIANS
-#- 1F6B8;CHILDREN CROSSING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <i> <d> <s> <X> :  "🚸"   U1F6B8	# CHILDREN CROSSING
-<Multi_key> <Multi_key>  <k> <i> <d> <x> <i> <n> <g> :  "🚸"   U1F6B8	# CHILDREN CROSSING
-#- 1F6B9;MENS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <m> <e> <n> <s> :  "🚹"   U1F6B9	# MENS SYMBOL
-#- 1F6BA;WOMENS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <w> <o> <m> <e> <n> <s> :  "🚺"   U1F6BA	# WOMENS SYMBOL
-<Multi_key> <Multi_key>  <l> <a> <d> <i> <e> <s> :  "🚺"   U1F6BA	# WOMENS SYMBOL
-#- 1F6BB;RESTROOM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <e> <s> <t> <r> <m> :  "🚻"   U1F6BB	# RESTROOM
-<Multi_key> <Multi_key>  <l> <o> <o> :  "🚻"   U1F6BB	# RESTROOM
-#- 1F6BC;BABY SYMBOL;So;0;ON;;;;;N;;;;;
-### <MM> {baby symbol} :  "🚼"   U1F6BC	# BABY SYMBOL
-#- 1F6BD;TOILET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <i> <l> <e> <t> :  "🚽"   U1F6BD	# TOILET
-#- 1F6BE;WATER CLOSET;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <W> <C> :  "🚾"   U1F6BE	# WATER CLOSET
-#- 1F6BF;SHOWER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <o> <w> <e> <r> :  "🚿"   U1F6BF	# SHOWER
-#- 1F6C0;BATH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <t> <h> :  "🛀"   U1F6C0	# BATH
-#- 1F6C1;BATHTUB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <a> <t> <h> <t> <u> <b> :  "🛁"   U1F6C1	# BATHTUB
-#- 1F6C2;PASSPORT CONTROL;So;0;ON;;;;;N;;;;;
-### <MM> {passport control} :  "🛂"   U1F6C2	# PASSPORT CONTROL
-#- 1F6C3;CUSTOMS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <u> <s> <t> <o> <m> <s> :  "🛃"   U1F6C3	# CUSTOMS
-#- 1F6C4;BAGGAGE CLAIM;So;0;ON;;;;;N;;;;;
-### <MM> {baggage claim} :  "🛄"   U1F6C4	# BAGGAGE CLAIM
-#- 1F6C5;LEFT LUGGAGE;So;0;ON;;;;;N;;;;;
-### <MM> {left luggage} :  "🛅"   U1F6C5	# LEFT LUGGAGE
-#- 1F6C6;TRIANGLE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-### <MM> {triangle with rounded corners} :  "🛆"   U1F6C6	# TRIANGLE WITH ROUNDED CORNERS
-#- 1F6C7;PROHIBITED SIGN;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <n> <o> <w> <a> <y> :  "🛇"   U1F6C7	# PROHIBITED SIGN
-#- 1F6C8;CIRCLED INFORMATION SOURCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <i> <n> <f> <o> <parenright> :  "🛈"   U1F6C8	# CIRCLED INFORMATION SOURCE
-## careful for conflicts with {boy} and {girl}
-#- 1F6C9;BOYS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <O> <Y> <S> :  "🛉"   U1F6C9	# BOYS SYMBOL
-#- 1F6CA;GIRLS SYMBOL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <G> <I> <R> <L> <S> :  "🛊"   U1F6CA	# GIRLS SYMBOL
-#- 1F6CB;COUCH AND LAMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <o> <u> <c> <h> :  "🛋"   U1F6CB	# COUCH AND LAMP
-#- 1F6CC;SLEEPING ACCOMMODATION;So;0;ON;;;;;N;;;;;
-### <MM> {sleeping accommodation} :  "🛌"   U1F6CC	# SLEEPING ACCOMMODATION
-#- 1F6CD;SHOPPING BAGS;So;0;ON;;;;;N;;;;;
-### <MM> {shopping bags} :  "🛍"   U1F6CD	# SHOPPING BAGS
-#- 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <B> <e> <l> <l> <b> <o> <y> :  "🛎"   U1F6CE	# BELLHOP BELL
-<Multi_key> <Multi_key>  <B> <e> <l> <l> <h> <o> <p> :  "🛎"   U1F6CE	# BELLHOP BELL
-#- 1F6CF;BED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <e> <d> :  "🛏"   U1F6CF	# BED
-#- 1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <r> <i> <n> <e> :  "🛐"   U1F6D0	# PLACE OF WORSHIP
-#- 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <o> <o> <l> <s> :  "🛠"   U1F6E0	# HAMMER AND WRENCH
-#- 1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <i> <e> <l> <d> :  "🛡"   U1F6E1	# SHIELD
-#- 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <i> <l> <d> <r> <u> <m> :  "🛢"   U1F6E2	# OIL DRUM
-#- 1F6E3;MOTORWAY;So;0;ON;;;;;N;;;;;
-### <MM> {motorway} :  "🛣"   U1F6E3	# MOTORWAY
-#- 1F6E4;RAILWAY TRACK;So;0;ON;;;;;N;;;;;
-### <MM> {railway track} :  "🛤"   U1F6E4	# RAILWAY TRACK
-#- 1F6E5;MOTOR BOAT;So;0;ON;;;;;N;;;;;
-### <MM> {motor boat} :  "🛥"   U1F6E5	# MOTOR BOAT
-#- 1F6E6;UP-POINTING MILITARY AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing military airplane} :  "🛦"   U1F6E6	# UP-POINTING MILITARY AIRPLANE
-#- 1F6E7;UP-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing airplane} :  "🛧"   U1F6E7	# UP-POINTING AIRPLANE
-#- 1F6E8;UP-POINTING SMALL AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {up-pointing small airplane} :  "🛨"   U1F6E8	# UP-POINTING SMALL AIRPLANE
-#- 1F6E9;SMALL AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {small airplane} :  "🛩"   U1F6E9	# SMALL AIRPLANE
-#- 1F6EA;NORTHEAST-POINTING AIRPLANE;So;0;ON;;;;;N;;;;;
-### <MM> {northeast-pointing airplane} :  "🛪"   U1F6EA	# NORTHEAST-POINTING AIRPLANE
-#- 1F6EB;AIRPLANE DEPARTURE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <a> <k> <e> <o> <f> <f> :  "🛫"   U1F6EB	# AIRPLANE DEPARTURE
-#- 1F6EC;AIRPLANE ARRIVING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <a> <n> <d> <i> <n> <g> :  "🛬"   U1F6EC	# AIRPLANE ARRIVING
-#- 1F6F0;SATELLITE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <u> <t> <n> <i> <k> :  "🛰"   U1F6F0	# SATELLITE
-#- 1F6F1;ONCOMING FIRE ENGINE;So;0;ON;;;;;N;;;;;
-### <MM> {oncoming fire engine} :  "🛱"   U1F6F1	# ONCOMING FIRE ENGINE
-#- 1F6F2;DIESEL LOCOMOTIVE;So;0;ON;;;;;N;;;;;
-### <MM> {diesel locomotive} :  "🛲"   U1F6F2	# DIESEL LOCOMOTIVE
-#- 1F6F3;PASSENGER SHIP;So;0;ON;;;;;N;;;;;
-### <MM> {passenger ship} :  "🛳"   U1F6F3	# PASSENGER SHIP
-#- 1F910;ZIPPER-MOUTH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <numbersign> :  "🤐"   U1F910	# ZIPPER-MOUTH FACE
-<Multi_key> <Multi_key>  <colon> <minus> <plus> :  "🤐"   U1F910	# ZIPPER-MOUTH FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <z> <i> <p> :  "🤐"   U1F910	# ZIPPER-MOUTH FACE
-#- 1F911;MONEY-MOUTH FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <colon> <minus> <dollar> :  "🤑"   U1F911	# MONEY-MOUTH FACE
-#- 1F912;FACE WITH THERMOMETER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <t> <h> <e> <r> <m> :  "🤒"   U1F912	# FACE WITH THERMOMETER
-#- 1F913;NERD FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <n> <e> <r> <d> :  "🤓"   U1F913	# NERD FACE
-#- 1F914;THINKING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <t> <h> <i> <n> <k> :  "🤔"   U1F914	# THINKING FACE
-#- 1F915;FACE WITH HEAD-BANDAGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <b> <a> <n> <d> :  "🤕"   U1F915	# FACE WITH HEAD-BANDAGE
-<Multi_key> <Multi_key>  <at> <colon> <minus> <parenright> :  "🤕"   U1F915	# FACE WITH HEAD-BANDAGE
-#- 1F916;ROBOT FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <r> <o> <b> <o> <t> :  "🤖"   U1F916	# ROBOT FACE
-<Multi_key> <Multi_key>  <colon> <minus> <bracketright> :  "🤖"   U1F916	# ROBOT FACE
-#- 1F917;HUGGING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <h> <u> <g> :  "🤗"   U1F917	# HUGGING FACE
-#- 1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <o> <c> <k> <o> <n> :  "🤘"   U1F918	# SIGN OF THE HORNS
-#- 1F980;CRAB;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <r> <a> <b> :  "🦀"   U1F980	# CRAB
-#- 1F981;LION FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <l> <i> <o> <n> :  "🦁"   U1F981	# LION FACE
-#- 1F982;SCORPION;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <S> <c> <o> <r> <p> <i> <o> :  "🦂"   U1F982	# SCORPION
-#- 1F983;TURKEY;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <r> <k> <e> <y> :  "🦃"   U1F983	# TURKEY
-#- 1F984;UNICORN FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <1> <h> <o> <r> <n> :  "🦄"   U1F984	# UNICORN FACE
-<Multi_key> <Multi_key>  <parenleft> <parenright> <u> <n> <i> <c> <o> :  "🦄"   U1F984	# UNICORN FACE
-#- 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <h> <e> <e> <s> <e> :  "🧀"   U1F9C0	# CHEESE WEDGE
-#- 1F919;CALL ME HAND;So;0;ON;;;;;N;;;;;
-## Unicode 9.0 additions
-<Multi_key> <Multi_key>  <c> <a> <l> <l> <m> <e> :  "🤙"   U1F919	# CALL ME HAND
-#- 1F91A;RAISED BACK OF HAND;So;0;ON;;;;;N;;;;;
-### <MM> {raised back of hand} :  "🤚"   U1F91A	# RAISED BACK OF HAND
-#- 1F91B;LEFT-FACING FIST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <L> <f> <i> <s> <t> :  "🤛"   U1F91B	# LEFT-FACING FIST
-#- 1F91C;RIGHT-FACING FIST;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <f> <i> <s> <t> :  "🤜"   U1F91C	# RIGHT-FACING FIST
-#- 1F91D;HANDSHAKE;So;0;ON;;;;;N;;;;;
-### <MM> {handshak} :  "🤝"   U1F91D	# HANDSHAKE
-#- 1F91E;HAND WITH INDEX AND MIDDLE FINGERS CROSSED;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <i> <n> <g> <e> <r> <X> :  "🤞"   U1F91E	# HAND WITH INDEX AND MIDDLE FINGERS CROSSED
-#- 1F920;FACE WITH COWBOY HAT;So;0;ON;;;;;N;;;;;
-### <MM> {face with cowboy hat} :  "🤠"   U1F920	# FACE WITH COWBOY HAT
-#- 1F921;CLOWN FACE;So;0;ON;;;;;N;;;;;
-### <MM> {clown face} :  "🤡"   U1F921	# CLOWN FACE
-#- 1F922;NAUSEATED FACE;So;0;ON;;;;;N;;;;;
-### <MM> {nauseated face} :  "🤢"   U1F922	# NAUSEATED FACE
-#- 1F923;ROLLING ON THE FLOOR LAUGHING;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <R> <O> <F> <L> :  "🤣"   U1F923	# ROLLING ON THE FLOOR LAUGHING
-#- 1F924;DROOLING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <d> <r> <o> <o> <l> :  "🤤"   U1F924	# DROOLING FACE
-#- 1F925;LYING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <l> <y> <i> <n> <g> :  "🤥"   U1F925	# LYING FACE
-#- 1F926;FACE PALM;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <p> <a> <l> <m> :  "🤦"   U1F926	# FACE PALM
-<Multi_key> <Multi_key>  <D> <apostrophe> <o> <h> :  "🤦"   U1F926	# FACE PALM
-#- 1F927;SNEEZING FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <parenleft> <parenright> <s> <n> <e> <e> <z> :  "🤧"   U1F927	# SNEEZING FACE
-#- 1F930;PREGNANT WOMAN;So;0;ON;;;;;N;;;;;
-### <MM> {pregnant woman} :  "🤰"   U1F930	# PREGNANT WOMAN
-#- 1F933;SELFIE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <e> <l> <f> <i> <e> :  "🤳"   U1F933	# SELFIE
-#- 1F934;PRINCE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <r> <i> <n> <c> <e> :  "🤴"   U1F934	# PRINCE
-#- 1F935;MAN IN TUXEDO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <t> <u> <x> <e> <d> <o> :  "🤵"   U1F935	# MAN IN TUXEDO
-#- 1F936;MOTHER CHRISTMAS;So;0;ON;;;;;N;;;;;
-### <MM> {mother christmas} :  "🤶"   U1F936	# MOTHER CHRISTMAS
-#- 1F937;SHRUG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <r> <u> <g> :  "🤷"   U1F937	# SHRUG
-#- 1F938;PERSON DOING CARTWHEEL;So;0;ON;;;;;N;;;;;
-### <MM> {person doing cartwheel} :  "🤸"   U1F938	# PERSON DOING CARTWHEEL
-#- 1F939;JUGGLING;So;0;ON;;;;;N;;;;;
-### <MM> {juggling} :  "🤹"   U1F939	# JUGGLING
-#- 1F93A;FENCER;So;0;ON;;;;;N;;;;;
-### <MM> {fencer} :  "🤺"   U1F93A	# FENCER
-#- 1F93B;MODERN PENTATHLON;So;0;ON;;;;;N;;;;;
-### <MM> {modern pentathlon} :  "🤻"   U1F93B	# MODERN PENTATHLON
-#- 1F93C;WRESTLERS;So;0;ON;;;;;N;;;;;
-### <MM> {wrestlers} :  "🤼"   U1F93C	# WRESTLERS
-#- 1F93D;WATER POLO;So;0;ON;;;;;N;;;;;
-### <MM> {water polo} :  "🤽"   U1F93D	# WATER POLO
-#- 1F93E;HANDBALL;So;0;ON;;;;;N;;;;;
-### <MM> {handball} :  "🤾"   U1F93E	# HANDBALL
-#- 1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;;
-### <MM> {wilted flower} :  "🥀"   U1F940	# WILTED FLOWER
-#- 1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;;
-### <MM> {drum with drumsticks} :  "🥁"   U1F941	# DRUM WITH DRUMSTICKS
-#- 1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;;
-### <MM> {clinking glasses} :  "🥂"   U1F942	# CLINKING GLASSES
-#- 1F943;TUMBLER GLASS;So;0;ON;;;;;N;;;;;
-### <MM> {tumbler glass} :  "🥃"   U1F943	# TUMBLER GLASS
-#- 1F944;SPOON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <p> <o> <o> <n> :  "🥄"   U1F944	# SPOON
-#- 1F945;GOAL NET;So;0;ON;;;;;N;;;;;
-### <MM> {goal net} :  "🥅"   U1F945	# GOAL NET
-#- 1F946;RIFLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <i> <f> <l> <e> :  "🥆"   U1F946	# RIFLE
-#- 1F947;FIRST PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <1> <p> <l> <a> <c> <e> :  "🥇"   U1F947	# FIRST PLACE MEDAL
-#- 1F948;SECOND PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <2> <p> <l> <a> <c> <e> :  "🥈"   U1F948	# SECOND PLACE MEDAL
-#- 1F949;THIRD PLACE MEDAL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <3> <p> <l> <a> <c> <e> :  "🥉"   U1F949	# THIRD PLACE MEDAL
-#- 1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;
-### <MM> {boxing glove} :  "🥊"   U1F94A	# BOXING GLOVE
-#- 1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;
-### <MM> {martial arts uniform} :  "🥋"   U1F94B	# MARTIAL ARTS UNIFORM
-#- 1F950;CROISSANT;So;0;ON;;;;;N;;;;;
-### <MM> {croissant} :  "🥐"   U1F950	# CROISSANT
-#- 1F951;AVOCADO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <a> <v> <o> <c> <a> <d> <o> :  "🥑"   U1F951	# AVOCADO
-#- 1F952;CUCUMBER;So;0;ON;;;;;N;;;;;
-### <MM> {cucumber} :  "🥒"   U1F952	# CUCUMBER
-#- 1F953;BACON;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <c> <o> <n> :  "🥓"   U1F953	# BACON
-#- 1F954;POTATO;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <P> <o> <t> <a> <t> <o> :  "🥔"   U1F954	# POTATO
-#- 1F955;CARROT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <c> <a> <r> <r> <o> <t> :  "🥕"   U1F955	# CARROT
-#- 1F956;BAGUETTE BREAD;So;0;ON;;;;;N;;;;;
-### <MM> {baguette bread} :  "🥖"   U1F956	# BAGUETTE BREAD
-#- 1F957;GREEN SALAD;So;0;ON;;;;;N;;;;;
-### <MM> {green salad} :  "🥗"   U1F957	# GREEN SALAD
-#- 1F958;SHALLOW PAN OF FOOD;So;0;ON;;;;;N;;;;;
-### <MM> {shallow pan of food} :  "🥘"   U1F958	# SHALLOW PAN OF FOOD
-#- 1F959;STUFFED FLATBREAD;So;0;ON;;;;;N;;;;;
-### <MM> {stuffed flatbread} :  "🥙"   U1F959	# STUFFED FLATBREAD
-#- 1F95A;EGG;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <g> <g> :  "🥚"   U1F95A	# EGG
-#- 1F95B;GLASS OF MILK;So;0;ON;;;;;N;;;;;
-### <MM> {glass of milk} :  "🥛"   U1F95B	# GLASS OF MILK
-#- 1F95C;PEANUTS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <e> <a> <n> <u> <t> <s> :  "🥜"   U1F95C	# PEANUTS
-#- 1F95D;KIWIFRUIT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <k> <i> <w> <i> :  "🥝"   U1F95D	# KIWIFRUIT
-#- 1F95E;PANCAKES;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <p> <a> <n> <c> <a> <k> <e> :  "🥞"   U1F95E	# PANCAKES
-#- 1F985;EAGLE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <e> <a> <g> <l> <e> :  "🦅"   U1F985	# EAGLE
-#- 1F986;DUCK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <u> <c> <k> :  "🦆"   U1F986	# DUCK
-#- 1F987;BAT;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <b> <a> <t> <Multi_key> :  "🦇"   U1F987	# BAT
-#- 1F988;SHARK;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <a> <r> <k> :  "🦈"   U1F988	# SHARK
-#- 1F989;OWL;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <o> <w> <l> :  "🦉"   U1F989	# OWL
-#- 1F98A;FOX FACE;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <f> <o> <x> <f> <a> <c> <e> :  "🦊"   U1F98A	# FOX FACE
-#- 1F98B;BUTTERFLY;So;0;ON;;;;;N;;;;;
-### <MM> {butterfly} :  "🦋"   U1F98B	# BUTTERFLY
-#- 1F98C;DEER;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <d> <e> <e> <r> :  "🦌"   U1F98C	# DEER
-#- 1F98D;GORILLA;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <g> <o> <r> <i> <l> <l> <a> :  "🦍"   U1F98D	# GORILLA
-#- 1F98E;LIZARD;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <l> <i> <z> <a> <r> <d> :  "🦎"   U1F98E	# LIZARD
-#- 1F98F;RHINOCEROS;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <r> <h> <i> <n> <o> :  "🦏"   U1F98F	# RHINOCEROS
-#- 1F990;SHRIMP;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <h> <r> <i> <m> <p> :  "🦐"   U1F990	# SHRIMP
-#- 1F991;SQUID;So;0;ON;;;;;N;;;;;
-<Multi_key> <Multi_key>  <s> <q> <u> <i> <d> :  "🦑"   U1F991	# SQUID
users/vincent/desktop/xorg/modletters.compose
@@ -1,469 +0,0 @@
-### For davka *letters*, not punctuation that looks like it.
-### Mnemonic/signal: <♫>!#, because they are not numbers.
-### Maybe #!^ for ones that are just raised letters?  Those not as critical.
-#- 02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
-### <M_> {modifier letter small h} :  "ʰ"   U02B0	# MODIFIER LETTER SMALL H
-#- 02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
-### <M_> {modifier letter small h with hook} :  "ʱ"   U02B1	# MODIFIER LETTER SMALL H WITH HOOK
-#- 02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
-### <M_> {modifier letter small j} :  "ʲ"   U02B2	# MODIFIER LETTER SMALL J
-#- 02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
-### <M_> {modifier letter small r} :  "ʳ"   U02B3	# MODIFIER LETTER SMALL R
-#- 02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
-### <M_> {modifier letter small turned r} :  "ʴ"   U02B4	# MODIFIER LETTER SMALL TURNED R
-#- 02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
-### <M_> {modifier letter small turned r with hook} :  "ʵ"   U02B5	# MODIFIER LETTER SMALL TURNED R WITH HOOK
-#- 02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
-### <M_> {modifier letter small capital inverted r} :  "ʶ"   U02B6	# MODIFIER LETTER SMALL CAPITAL INVERTED R
-#- 02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
-### <M_> {modifier letter small w} :  "ʷ"   U02B7	# MODIFIER LETTER SMALL W
-#- 02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
-### <M_> {modifier letter small y} :  "ʸ"   U02B8	# MODIFIER LETTER SMALL Y
-## 7 is prime, and it looks similar, doesn't it?
-#- 02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <7> :  "ʹ"   U02B9	# MODIFIER LETTER PRIME
-#- 02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <2> <7> :  "ʺ"   U02BA	# MODIFIER LETTER DOUBLE PRIME
-## I'm going to need this more than MODIFIER LETTER GRAVE
-#- 02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <grave> :  "ʻ"   U02BB	# MODIFIER LETTER TURNED COMMA
-#- 02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <apostrophe> :  "ʼ"   U02BC	# MODIFIER LETTER APOSTROPHE
-#- 02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <at> <apostrophe> :  "ʽ"   U02BD	# MODIFIER LETTER REVERSED COMMA
-#- 02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <parenright> :  "ʾ"   U02BE	# MODIFIER LETTER RIGHT HALF RING
-#- 02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <parenleft> :  "ʿ"   U02BF	# MODIFIER LETTER LEFT HALF RING
-#- 02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <question> <period> :  "ˀ"   U02C0	# MODIFIER LETTER GLOTTAL STOP
-#- 02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <question> <parenleft> :  "ˁ"   U02C1	# MODIFIER LETTER REVERSED GLOTTAL STOP
-#- 02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <less> :  "˂"   U02C2	# MODIFIER LETTER LEFT ARROWHEAD
-#- 02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <greater> <greater> :  "˃"   U02C3	# MODIFIER LETTER RIGHT ARROWHEAD
-#- 02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <asciicircum> <asciicircum> :  "˄"   U02C4	# MODIFIER LETTER UP ARROWHEAD
-#- 02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <v> <v> :  "˅"   U02C5	# MODIFIER LETTER DOWN ARROWHEAD
-#- 02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <asciicircum> :  "ˆ"   U02C6	# MODIFIER LETTER CIRCUMFLEX ACCENT
-#- 02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <v> :  "ˇ"   U02C7	# CARON
-#- 02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <bar> :  "ˈ"   U02C8	# MODIFIER LETTER VERTICAL LINE
-#- 02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <equal> :  "ˉ"   U02C9	# MODIFIER LETTER MACRON
-#- 02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <apostrophe> :  "ˊ"   U02CA	# MODIFIER LETTER ACUTE ACCENT
-#- 02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <grave> :  "ˋ"   U02CB	# MODIFIER LETTER GRAVE ACCENT
-#- 02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <bar> :  "ˌ"   U02CC	# MODIFIER LETTER LOW VERTICAL LINE
-#- 02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <equal> :  "ˍ"   U02CD	# MODIFIER LETTER LOW MACRON
-#- 02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <grave> :  "ˎ"   U02CE	# MODIFIER LETTER LOW GRAVE ACCENT
-#- 02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <apostrophe> :  "ˏ"   U02CF	# MODIFIER LETTER LOW ACUTE ACCENT
-#- 02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <greater> <colon> :  "ː"   U02D0	# MODIFIER LETTER TRIANGULAR COLON
-#- 02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <greater> <period> :  "ˑ"   U02D1	# MODIFIER LETTER HALF TRIANGULAR COLON
-#- 02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <parenright> :  "˒"   U02D2	# MODIFIER LETTER CENTRED RIGHT HALF RING
-#- 02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <parenleft> :  "˓"   U02D3	# MODIFIER LETTER CENTRED LEFT HALF RING
-#- 02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <plus> <asciicircum> :  "˔"   U02D4	# MODIFIER LETTER UP TACK
-#- 02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <plus> <v> :  "˕"   U02D5	# MODIFIER LETTER DOWN TACK
-#- 02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <plus> <plus> :  "˖"   U02D6	# MODIFIER LETTER PLUS SIGN
-#- 02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <minus> :  "˗"   U02D7	# MODIFIER LETTER MINUS SIGN
-#- 02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <r> :  "˞"   U02DE	# MODIFIER LETTER RHOTIC HOOK
-#- 02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <x> :  "˟"   U02DF	# MODIFIER LETTER CROSS ACCENT
-#- 02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <g> <h> :  "ˠ"   U02E0	# MODIFIER LETTER SMALL GAMMA
-#- 02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
-### <M_> {modifier letter small l} :  "ˡ"   U02E1	# MODIFIER LETTER SMALL L
-#- 02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
-### <M_> {modifier letter small s} :  "ˢ"   U02E2	# MODIFIER LETTER SMALL S
-#- 02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
-### <M_> {modifier letter small x} :  "ˣ"   U02E3	# MODIFIER LETTER SMALL X
-#- 02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
-### <M_> {modifier letter small reversed glottal stop} :  "ˤ"   U02E4	# MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-#- 02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <5> :  "˥"   U02E5	# MODIFIER LETTER EXTRA-HIGH TONE BAR
-#- 02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <4> :  "˦"   U02E6	# MODIFIER LETTER HIGH TONE BAR
-#- 02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <3> :  "˧"   U02E7	# MODIFIER LETTER MID TONE BAR
-#- 02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <2> :  "˨"   U02E8	# MODIFIER LETTER LOW TONE BAR
-#- 02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <1> :  "˩"   U02E9	# MODIFIER LETTER EXTRA-LOW TONE BAR
-#- 02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter yin departing tone mark} :  "˪"   U02EA	# MODIFIER LETTER YIN DEPARTING TONE MARK
-#- 02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <plus> <greater> :  "˫"   U02EB	# MODIFIER LETTER YANG DEPARTING TONE MARK
-#- 02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <v> <o> :  "ˬ"   U02EC	# MODIFIER LETTER VOICING
-#- 02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <h> :  "˭"   U02ED	# MODIFIER LETTER UNASPIRATED
-#- 02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <2> <apostrophe> :  "ˮ"   U02EE	# MODIFIER LETTER DOUBLE APOSTROPHE
-#- 02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <v> :  "˯"   U02EF	# MODIFIER LETTER LOW DOWN ARROWHEAD
-#- 02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <asciicircum> :  "˰"   U02F0	# MODIFIER LETTER LOW UP ARROWHEAD
-#- 02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <less> :  "˱"   U02F1	# MODIFIER LETTER LOW LEFT ARROWHEAD
-#- 02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <greater> :  "˲"   U02F2	# MODIFIER LETTER LOW RIGHT ARROWHEAD
-#- 02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <o> :  "˳"   U02F3	# MODIFIER LETTER LOW RING
-#- 02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <grave> :  "˴"   U02F4	# MODIFIER LETTER MIDDLE GRAVE ACCENT
-#- 02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <2> <grave> :  "˵"   U02F5	# MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
-#- 02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <minus> <2> <apostrophe> :  "˶"   U02F6	# MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
-#- 02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <asciitilde> :  "˷"   U02F7	# MODIFIER LETTER LOW TILDE
-#- 02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <backslash> <colon> :  "˸"   U02F8	# MODIFIER LETTER RAISED COLON
-#- 02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <parenleft> <H> :  "˹"   U02F9	# MODIFIER LETTER BEGIN HIGH TONE
-#- 02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <parenright> <H> :  "˺"   U02FA	# MODIFIER LETTER END HIGH TONE
-#- 02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <parenleft> <L> :  "˻"   U02FB	# MODIFIER LETTER BEGIN LOW TONE
-#- 02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <T> <parenright> <L> :  "˼"   U02FC	# MODIFIER LETTER END LOW TONE
-#- 02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <bracketright> :  "˽"   U02FD	# MODIFIER LETTER SHELF
-#- 02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <L> :  "˾"   U02FE	# MODIFIER LETTER OPEN SHELF
-#- 02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <underscore> <minus> <less> :  "˿"   U02FF	# MODIFIER LETTER LOW LEFT ARROW
-#- 0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-### <M_> {armenian modifier letter left half ring} :  "ՙ"   U0559	# ARMENIAN MODIFIER LETTER LEFT HALF RING
-#- 055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-### <M_> {armenian apostrophe} :  "՚"   U055A	# ARMENIAN APOSTROPHE
-#- 081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter epenthetic yut} :  "ࠚ"   U081A	# SAMARITAN MODIFIER LETTER EPENTHETIC YUT
-#- 0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter short a} :  "ࠤ"   U0824	# SAMARITAN MODIFIER LETTER SHORT A
-#- 0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;
-### <M_> {samaritan modifier letter i} :  "ࠨ"   U0828	# SAMARITAN MODIFIER LETTER I
-#- 10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
-### <M_> {modifier letter georgian nar} :  "ჼ"   U10FC	# MODIFIER LETTER GEORGIAN NAR
-#- 1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
-### <M_> {modifier letter capital a} :  "ᴬ"   U1D2C	# MODIFIER LETTER CAPITAL A
-#- 1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
-### <M_> {modifier letter capital ae} :  "ᴭ"   U1D2D	# MODIFIER LETTER CAPITAL AE
-#- 1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
-### <M_> {modifier letter capital b} :  "ᴮ"   U1D2E	# MODIFIER LETTER CAPITAL B
-#- 1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter capital barred b} :  "ᴯ"   U1D2F	# MODIFIER LETTER CAPITAL BARRED B
-#- 1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
-### <M_> {modifier letter capital d} :  "ᴰ"   U1D30	# MODIFIER LETTER CAPITAL D
-#- 1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
-### <M_> {modifier letter capital e} :  "ᴱ"   U1D31	# MODIFIER LETTER CAPITAL E
-#- 1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
-### <M_> {modifier letter capital reversed e} :  "ᴲ"   U1D32	# MODIFIER LETTER CAPITAL REVERSED E
-#- 1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
-### <M_> {modifier letter capital g} :  "ᴳ"   U1D33	# MODIFIER LETTER CAPITAL G
-#- 1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
-### <M_> {modifier letter capital h} :  "ᴴ"   U1D34	# MODIFIER LETTER CAPITAL H
-#- 1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
-### <M_> {modifier letter capital i} :  "ᴵ"   U1D35	# MODIFIER LETTER CAPITAL I
-#- 1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
-### <M_> {modifier letter capital j} :  "ᴶ"   U1D36	# MODIFIER LETTER CAPITAL J
-#- 1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
-### <M_> {modifier letter capital k} :  "ᴷ"   U1D37	# MODIFIER LETTER CAPITAL K
-#- 1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
-### <M_> {modifier letter capital l} :  "ᴸ"   U1D38	# MODIFIER LETTER CAPITAL L
-#- 1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
-### <M_> {modifier letter capital m} :  "ᴹ"   U1D39	# MODIFIER LETTER CAPITAL M
-#- 1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
-### <M_> {modifier letter capital n} :  "ᴺ"   U1D3A	# MODIFIER LETTER CAPITAL N
-#- 1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter capital reversed n} :  "ᴻ"   U1D3B	# MODIFIER LETTER CAPITAL REVERSED N
-#- 1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
-### <M_> {modifier letter capital o} :  "ᴼ"   U1D3C	# MODIFIER LETTER CAPITAL O
-#- 1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
-### <M_> {modifier letter capital ou} :  "ᴽ"   U1D3D	# MODIFIER LETTER CAPITAL OU
-#- 1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
-### <M_> {modifier letter capital p} :  "ᴾ"   U1D3E	# MODIFIER LETTER CAPITAL P
-#- 1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
-### <M_> {modifier letter capital r} :  "ᴿ"   U1D3F	# MODIFIER LETTER CAPITAL R
-#- 1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
-### <M_> {modifier letter capital t} :  "ᵀ"   U1D40	# MODIFIER LETTER CAPITAL T
-#- 1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
-### <M_> {modifier letter capital u} :  "ᵁ"   U1D41	# MODIFIER LETTER CAPITAL U
-#- 1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
-### <M_> {modifier letter capital w} :  "ᵂ"   U1D42	# MODIFIER LETTER CAPITAL W
-#- 1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
-### <M_> {modifier letter small a} :  "ᵃ"   U1D43	# MODIFIER LETTER SMALL A
-#- 1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
-### <M_> {modifier letter small turned a} :  "ᵄ"   U1D44	# MODIFIER LETTER SMALL TURNED A
-#- 1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
-### <M_> {modifier letter small alpha} :  "ᵅ"   U1D45	# MODIFIER LETTER SMALL ALPHA
-#- 1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
-### <M_> {modifier letter small turned ae} :  "ᵆ"   U1D46	# MODIFIER LETTER SMALL TURNED AE
-#- 1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
-### <M_> {modifier letter small b} :  "ᵇ"   U1D47	# MODIFIER LETTER SMALL B
-#- 1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
-### <M_> {modifier letter small d} :  "ᵈ"   U1D48	# MODIFIER LETTER SMALL D
-#- 1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
-### <M_> {modifier letter small e} :  "ᵉ"   U1D49	# MODIFIER LETTER SMALL E
-#- 1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
-### <M_> {modifier letter small schwa} :  "ᵊ"   U1D4A	# MODIFIER LETTER SMALL SCHWA
-#- 1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
-### <M_> {modifier letter small open e} :  "ᵋ"   U1D4B	# MODIFIER LETTER SMALL OPEN E
-#- 1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-### <M_> {modifier letter small turned open e} :  "ᵌ"   U1D4C	# MODIFIER LETTER SMALL TURNED OPEN E
-#- 1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
-### <M_> {modifier letter small g} :  "ᵍ"   U1D4D	# MODIFIER LETTER SMALL G
-#- 1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
-### <M_> {modifier letter small turned i} :  "ᵎ"   U1D4E	# MODIFIER LETTER SMALL TURNED I
-#- 1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
-### <M_> {modifier letter small k} :  "ᵏ"   U1D4F	# MODIFIER LETTER SMALL K
-#- 1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
-### <M_> {modifier letter small m} :  "ᵐ"   U1D50	# MODIFIER LETTER SMALL M
-#- 1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
-### <M_> {modifier letter small eng} :  "ᵑ"   U1D51	# MODIFIER LETTER SMALL ENG
-#- 1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
-### <M_> {modifier letter small o} :  "ᵒ"   U1D52	# MODIFIER LETTER SMALL O
-#- 1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
-### <M_> {modifier letter small open o} :  "ᵓ"   U1D53	# MODIFIER LETTER SMALL OPEN O
-#- 1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
-### <M_> {modifier letter small top half o} :  "ᵔ"   U1D54	# MODIFIER LETTER SMALL TOP HALF O
-#- 1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
-### <M_> {modifier letter small bottom half o} :  "ᵕ"   U1D55	# MODIFIER LETTER SMALL BOTTOM HALF O
-#- 1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
-### <M_> {modifier letter small p} :  "ᵖ"   U1D56	# MODIFIER LETTER SMALL P
-#- 1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
-### <M_> {modifier letter small t} :  "ᵗ"   U1D57	# MODIFIER LETTER SMALL T
-#- 1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
-### <M_> {modifier letter small u} :  "ᵘ"   U1D58	# MODIFIER LETTER SMALL U
-#- 1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
-### <M_> {modifier letter small sideways u} :  "ᵙ"   U1D59	# MODIFIER LETTER SMALL SIDEWAYS U
-#- 1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
-### <M_> {modifier letter small turned m} :  "ᵚ"   U1D5A	# MODIFIER LETTER SMALL TURNED M
-#- 1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
-### <M_> {modifier letter small v} :  "ᵛ"   U1D5B	# MODIFIER LETTER SMALL V
-#- 1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
-### <M_> {modifier letter small ain} :  "ᵜ"   U1D5C	# MODIFIER LETTER SMALL AIN
-#- 1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
-### <M_> {modifier letter small beta} :  "ᵝ"   U1D5D	# MODIFIER LETTER SMALL BETA
-#- 1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
-### <M_> {modifier letter small greek gamma} :  "ᵞ"   U1D5E	# MODIFIER LETTER SMALL GREEK GAMMA
-#- 1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
-### <M_> {modifier letter small delta} :  "ᵟ"   U1D5F	# MODIFIER LETTER SMALL DELTA
-#- 1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
-### <M_> {modifier letter small greek phi} :  "ᵠ"   U1D60	# MODIFIER LETTER SMALL GREEK PHI
-#- 1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
-### <M_> {modifier letter small chi} :  "ᵡ"   U1D61	# MODIFIER LETTER SMALL CHI
-#- 1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
-### <M_> {modifier letter cyrillic en} :  "ᵸ"   U1D78	# MODIFIER LETTER CYRILLIC EN
-#- 1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
-### <M_> {modifier letter small turned alpha} :  "ᶛ"   U1D9B	# MODIFIER LETTER SMALL TURNED ALPHA
-#- 1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
-### <M_> {modifier letter small c} :  "ᶜ"   U1D9C	# MODIFIER LETTER SMALL C
-#- 1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
-### <M_> {modifier letter small c with curl} :  "ᶝ"   U1D9D	# MODIFIER LETTER SMALL C WITH CURL
-#- 1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
-### <M_> {modifier letter small eth} :  "ᶞ"   U1D9E	# MODIFIER LETTER SMALL ETH
-#- 1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-### <M_> {modifier letter small reversed open e} :  "ᶟ"   U1D9F	# MODIFIER LETTER SMALL REVERSED OPEN E
-#- 1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
-### <M_> {modifier letter small f} :  "ᶠ"   U1DA0	# MODIFIER LETTER SMALL F
-#- 1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
-### <M_> {modifier letter small dotless j with stroke} :  "ᶡ"   U1DA1	# MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-#- 1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
-### <M_> {modifier letter small script g} :  "ᶢ"   U1DA2	# MODIFIER LETTER SMALL SCRIPT G
-#- 1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
-### <M_> {modifier letter small turned h} :  "ᶣ"   U1DA3	# MODIFIER LETTER SMALL TURNED H
-#- 1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
-### <M_> {modifier letter small i with stroke} :  "ᶤ"   U1DA4	# MODIFIER LETTER SMALL I WITH STROKE
-#- 1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
-### <M_> {modifier letter small iota} :  "ᶥ"   U1DA5	# MODIFIER LETTER SMALL IOTA
-#- 1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
-### <M_> {modifier letter small capital i} :  "ᶦ"   U1DA6	# MODIFIER LETTER SMALL CAPITAL I
-#- 1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
-### <M_> {modifier letter small capital i with stroke} :  "ᶧ"   U1DA7	# MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-#- 1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
-### <M_> {modifier letter small j with crossed-tail} :  "ᶨ"   U1DA8	# MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-#- 1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
-### <M_> {modifier letter small l with retroflex hook} :  "ᶩ"   U1DA9	# MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-#- 1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
-### <M_> {modifier letter small l with palatal hook} :  "ᶪ"   U1DAA	# MODIFIER LETTER SMALL L WITH PALATAL HOOK
-#- 1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
-### <M_> {modifier letter small capital l} :  "ᶫ"   U1DAB	# MODIFIER LETTER SMALL CAPITAL L
-#- 1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
-### <M_> {modifier letter small m with hook} :  "ᶬ"   U1DAC	# MODIFIER LETTER SMALL M WITH HOOK
-#- 1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
-### <M_> {modifier letter small turned m with long leg} :  "ᶭ"   U1DAD	# MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-#- 1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
-### <M_> {modifier letter small n with left hook} :  "ᶮ"   U1DAE	# MODIFIER LETTER SMALL N WITH LEFT HOOK
-#- 1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
-### <M_> {modifier letter small n with retroflex hook} :  "ᶯ"   U1DAF	# MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-#- 1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
-### <M_> {modifier letter small capital n} :  "ᶰ"   U1DB0	# MODIFIER LETTER SMALL CAPITAL N
-#- 1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
-### <M_> {modifier letter small barred o} :  "ᶱ"   U1DB1	# MODIFIER LETTER SMALL BARRED O
-#- 1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
-### <M_> {modifier letter small phi} :  "ᶲ"   U1DB2	# MODIFIER LETTER SMALL PHI
-#- 1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
-### <M_> {modifier letter small s with hook} :  "ᶳ"   U1DB3	# MODIFIER LETTER SMALL S WITH HOOK
-#- 1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
-### <M_> {modifier letter small esh} :  "ᶴ"   U1DB4	# MODIFIER LETTER SMALL ESH
-#- 1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
-### <M_> {modifier letter small t with palatal hook} :  "ᶵ"   U1DB5	# MODIFIER LETTER SMALL T WITH PALATAL HOOK
-#- 1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
-### <M_> {modifier letter small u bar} :  "ᶶ"   U1DB6	# MODIFIER LETTER SMALL U BAR
-#- 1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
-### <M_> {modifier letter small upsilon} :  "ᶷ"   U1DB7	# MODIFIER LETTER SMALL UPSILON
-#- 1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
-### <M_> {modifier letter small capital u} :  "ᶸ"   U1DB8	# MODIFIER LETTER SMALL CAPITAL U
-#- 1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
-### <M_> {modifier letter small v with hook} :  "ᶹ"   U1DB9	# MODIFIER LETTER SMALL V WITH HOOK
-#- 1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
-### <M_> {modifier letter small turned v} :  "ᶺ"   U1DBA	# MODIFIER LETTER SMALL TURNED V
-#- 1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
-### <M_> {modifier letter small z} :  "ᶻ"   U1DBB	# MODIFIER LETTER SMALL Z
-#- 1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
-### <M_> {modifier letter small z with retroflex hook} :  "ᶼ"   U1DBC	# MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-#- 1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
-### <M_> {modifier letter small z with curl} :  "ᶽ"   U1DBD	# MODIFIER LETTER SMALL Z WITH CURL
-#- 1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
-### <M_> {modifier letter small ezh} :  "ᶾ"   U1DBE	# MODIFIER LETTER SMALL EZH
-#- 1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
-### <M_> {modifier letter small theta} :  "ᶿ"   U1DBF	# MODIFIER LETTER SMALL THETA
-## You're an idiot to want this; you deserve to have hard keystrokes.
-#- 212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-<Multi_key>  <exclam> <numbersign> <K> <E> <L> <V> :  "K"   U212A  # KELVIN SIGN
-#- 2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
-### <M_> {modifier letter capital v} :  "ⱽ"   U2C7D	# MODIFIER LETTER CAPITAL V
-#- 2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;
-### <M_> {tifinagh modifier letter labialization mark} :  "ⵯ"   U2D6F	# TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-#- A69C;MODIFIER LETTER CYRILLIC HARD SIGN;Lm;0;L;<super> 044A;;;;N;;;;;
-### <M_> {modifier letter cyrillic hard sign} :  "ꚜ"   UA69C	# MODIFIER LETTER CYRILLIC HARD SIGN
-#- A69D;MODIFIER LETTER CYRILLIC SOFT SIGN;Lm;0;L;<super> 044C;;;;N;;;;;
-### <M_> {modifier letter cyrillic soft sign} :  "ꚝ"   UA69D	# MODIFIER LETTER CYRILLIC SOFT SIGN
-#- A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin ping} :  "꜀"   UA700	# MODIFIER LETTER CHINESE TONE YIN PING
-#- A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang ping} :  "꜁"   UA701	# MODIFIER LETTER CHINESE TONE YANG PING
-#- A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin shang} :  "꜂"   UA702	# MODIFIER LETTER CHINESE TONE YIN SHANG
-#- A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang shang} :  "꜃"   UA703	# MODIFIER LETTER CHINESE TONE YANG SHANG
-#- A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin qu} :  "꜄"   UA704	# MODIFIER LETTER CHINESE TONE YIN QU
-#- A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang qu} :  "꜅"   UA705	# MODIFIER LETTER CHINESE TONE YANG QU
-#- A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yin ru} :  "꜆"   UA706	# MODIFIER LETTER CHINESE TONE YIN RU
-#- A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter chinese tone yang ru} :  "꜇"   UA707	# MODIFIER LETTER CHINESE TONE YANG RU
-#- A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high dotted tone bar} :  "꜈"   UA708	# MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
-#- A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high dotted tone bar} :  "꜉"   UA709	# MODIFIER LETTER HIGH DOTTED TONE BAR
-#- A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid dotted tone bar} :  "꜊"   UA70A	# MODIFIER LETTER MID DOTTED TONE BAR
-#- A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low dotted tone bar} :  "꜋"   UA70B	# MODIFIER LETTER LOW DOTTED TONE BAR
-#- A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low dotted tone bar} :  "꜌"   UA70C	# MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
-#- A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high dotted left-stem tone bar} :  "꜍"   UA70D	# MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
-#- A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high dotted left-stem tone bar} :  "꜎"   UA70E	# MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
-#- A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid dotted left-stem tone bar} :  "꜏"   UA70F	# MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
-#- A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low dotted left-stem tone bar} :  "꜐"   UA710	# MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
-#- A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low dotted left-stem tone bar} :  "꜑"   UA711	# MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
-#- A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-high left-stem tone bar} :  "꜒"   UA712	# MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
-#- A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter high left-stem tone bar} :  "꜓"   UA713	# MODIFIER LETTER HIGH LEFT-STEM TONE BAR
-#- A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter mid left-stem tone bar} :  "꜔"   UA714	# MODIFIER LETTER MID LEFT-STEM TONE BAR
-#- A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low left-stem tone bar} :  "꜕"   UA715	# MODIFIER LETTER LOW LEFT-STEM TONE BAR
-#- A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter extra-low left-stem tone bar} :  "꜖"   UA716	# MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-#- A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot vertical bar} :  "ꜗ"   UA717	# MODIFIER LETTER DOT VERTICAL BAR
-#- A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot slash} :  "ꜘ"   UA718	# MODIFIER LETTER DOT SLASH
-#- A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter dot horizontal bar} :  "ꜙ"   UA719	# MODIFIER LETTER DOT HORIZONTAL BAR
-#- A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter lower right corner angle} :  "ꜚ"   UA71A	# MODIFIER LETTER LOWER RIGHT CORNER ANGLE
-#- A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <asciicircum> <minus> <asciicircum> :  "ꜛ"   UA71B	# MODIFIER LETTER RAISED UP ARROW
-#- A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <asciicircum> <minus> <v> :  "ꜜ"   UA71C	# MODIFIER LETTER RAISED DOWN ARROW
-#- A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <asciicircum> <exclam> :  "ꜝ"   UA71D	# MODIFIER LETTER RAISED EXCLAMATION MARK
-#- A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter raised inverted exclamation mark} :  "ꜞ"   UA71E	# MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK
-#- A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low inverted exclamation mark} :  "ꜟ"   UA71F	# MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
-#- A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter stress and high tone} :  "꜠"   UA720	# MODIFIER LETTER STRESS AND HIGH TONE
-#- A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
-### <M_> {modifier letter stress and low tone} :  "꜡"   UA721	# MODIFIER LETTER STRESS AND LOW TONE
-#- A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
-### <M_> {modifier letter us} :  "ꝰ"   UA770	# MODIFIER LETTER US
-#- A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
-### <M_> {modifier letter low circumflex accent} :  "ꞈ"   UA788	# MODIFIER LETTER LOW CIRCUMFLEX ACCENT
-#- A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
-<Multi_key>  <exclam> <numbersign> <colon> :  "꞉"   UA789	# MODIFIER LETTER COLON
-#- A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
-### <M_> {modifier letter short equals sign} :  "꞊"   UA78A	# MODIFIER LETTER SHORT EQUALS SIGN
-#- A7F8;MODIFIER LETTER CAPITAL H WITH STROKE;Lm;0;L;<super> 0126;;;;N;;;;;
-### <M_> {modifier letter capital h with stroke} :  "ꟸ"   UA7F8	# MODIFIER LETTER CAPITAL H WITH STROKE
-#- A7F9;MODIFIER LETTER SMALL LIGATURE OE;Lm;0;L;<super> 0153;;;;N;;;;;
-### <M_> {modifier letter small ligature oe} :  "ꟹ"   UA7F9	# MODIFIER LETTER SMALL LIGATURE OE
-#- A9E6;MYANMAR MODIFIER LETTER SHAN REDUPLICATION;Lm;0;L;;;;;N;;;;;
-### <M_> {myanmar modifier letter shan reduplication} :  "ꧦ"   UA9E6	# MYANMAR MODIFIER LETTER SHAN REDUPLICATION
-#- AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;
-### <M_> {myanmar modifier letter khamti reduplication} :  "ꩰ"   UAA70	# MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
-#- AB5C;MODIFIER LETTER SMALL HENG;Lm;0;L;<super> A727;;;;N;;;;;
-### <M_> {modifier letter small heng} :  "ꭜ"   UAB5C	# MODIFIER LETTER SMALL HENG
-#- AB5D;MODIFIER LETTER SMALL L WITH INVERTED LAZY S;Lm;0;L;<super> AB37;;;;N;;;;;
-### <M_> {modifier letter small l with inverted lazy s} :  "ꭝ"   UAB5D	# MODIFIER LETTER SMALL L WITH INVERTED LAZY S
-#- AB5E;MODIFIER LETTER SMALL L WITH MIDDLE TILDE;Lm;0;L;<super> 026B;;;;N;;;;;
-### <M_> {modifier letter small l with middle tilde} :  "ꭞ"   UAB5E	# MODIFIER LETTER SMALL L WITH MIDDLE TILDE
-#- AB5F;MODIFIER LETTER SMALL U WITH LEFT HOOK;Lm;0;L;<super> AB52;;;;N;;;;;
-### <M_> {modifier letter small u with left hook} :  "ꭟ"   UAB5F	# MODIFIER LETTER SMALL U WITH LEFT HOOK
-#- 01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-<Multi_key>  <exclam> <numbersign> <bar> :  "ǀ"   U01C0	# LATIN LETTER DENTAL CLICK
-#- 01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-<Multi_key>  <exclam> <numbersign> <2> <bar> :  "ǁ"   U01C1	# LATIN LETTER LATERAL CLICK
-#- 01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-<Multi_key>  <exclam> <numbersign> <slash> <equal> :  "ǂ"   U01C2	# LATIN LETTER ALVEOLAR CLICK
-#- 01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-<Multi_key>  <exclam> <numbersign> <exclam> :  "ǃ"   U01C3	# LATIN LETTER RETROFLEX CLICK
-#- 0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
-### <M_> {latin letter bilabial click} :  "ʘ"   U0298	# LATIN LETTER BILABIAL CLICK
-<Multi_key>  <exclam> <numbersign> <L> <L> :  "Ỻ"   U1EFA	# LATIN CAPITAL LETTER MIDDLE-WELSH LL
-#- 1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
-<Multi_key>  <exclam> <numbersign> <l> <l> :  "ỻ"   U1EFB	# LATIN SMALL LETTER MIDDLE-WELSH LL
-#- 1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
-<Multi_key>  <exclam> <numbersign> <W> <W> :  "Ỽ"   U1EFC	# LATIN CAPITAL LETTER MIDDLE-WELSH V
-#- 1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
-<Multi_key>  <exclam> <numbersign> <w> <w> :  "ỽ"   U1EFD	# LATIN SMALL LETTER MIDDLE-WELSH V
users/vincent/desktop/xorg/org-protocol.desktop
@@ -1,1 +0,0 @@
-/home/vincent/src/home/users/vincent/dev/emacs/org-protocol.desktop
\ No newline at end of file
users/vincent/desktop/xorg/parens.compose
@@ -1,179 +0,0 @@
-<Multi_key>  <parenleft> <period> <1> <parenright> :  "⑴"   U2474	# PARENTHESIZED DIGIT ONE
-<Multi_key>  <parenleft> <period> <2> <parenright> :  "⑵"   U2475	# PARENTHESIZED DIGIT TWO
-<Multi_key>  <parenleft> <period> <3> <parenright> :  "⑶"   U2476	# PARENTHESIZED DIGIT THREE
-<Multi_key>  <parenleft> <period> <4> <parenright> :  "⑷"   U2477	# PARENTHESIZED DIGIT FOUR
-<Multi_key>  <parenleft> <period> <5> <parenright> :  "⑸"   U2478	# PARENTHESIZED DIGIT FIVE
-<Multi_key>  <parenleft> <period> <6> <parenright> :  "⑹"   U2479	# PARENTHESIZED DIGIT SIX
-<Multi_key>  <parenleft> <period> <7> <parenright> :  "⑺"   U247A	# PARENTHESIZED DIGIT SEVEN
-<Multi_key>  <parenleft> <period> <8> <parenright> :  "⑻"   U247B	# PARENTHESIZED DIGIT EIGHT
-<Multi_key>  <parenleft> <period> <9> <parenright> :  "⑼"   U247C	# PARENTHESIZED DIGIT NINE
-<Multi_key>  <parenleft> <period> <1> <0> <parenright> :  "⑽"   U247D	# PARENTHESIZED NUMBER TEN
-<Multi_key>  <parenleft> <period> <1> <1> <parenright> :  "⑾"   U247E	# PARENTHESIZED NUMBER ELEVEN
-<Multi_key>  <parenleft> <period> <1> <2> <parenright> :  "⑿"   U247F	# PARENTHESIZED NUMBER TWELVE
-<Multi_key>  <parenleft> <period> <1> <3> <parenright> :  "⒀"   U2480	# PARENTHESIZED NUMBER THIRTEEN
-<Multi_key>  <parenleft> <period> <1> <4> <parenright> :  "⒁"   U2481	# PARENTHESIZED NUMBER FOURTEEN
-<Multi_key>  <parenleft> <period> <1> <5> <parenright> :  "⒂"   U2482	# PARENTHESIZED NUMBER FIFTEEN
-<Multi_key>  <parenleft> <period> <1> <6> <parenright> :  "⒃"   U2483	# PARENTHESIZED NUMBER SIXTEEN
-<Multi_key>  <parenleft> <period> <1> <7> <parenright> :  "⒄"   U2484	# PARENTHESIZED NUMBER SEVENTEEN
-<Multi_key>  <parenleft> <period> <1> <8> <parenright> :  "⒅"   U2485	# PARENTHESIZED NUMBER EIGHTEEN
-<Multi_key>  <parenleft> <period> <1> <9> <parenright> :  "⒆"   U2486	# PARENTHESIZED NUMBER NINETEEN
-<Multi_key>  <parenleft> <period> <2> <0> <parenright> :  "⒇"   U2487	# PARENTHESIZED NUMBER TWENTY
-<Multi_key>  <parenleft> <period> <a> <parenright> :  "⒜"   U249C	# PARENTHESIZED LATIN SMALL LETTER A
-<Multi_key>  <parenleft> <period> <b> <parenright> :  "⒝"   U249D	# PARENTHESIZED LATIN SMALL LETTER B
-<Multi_key>  <parenleft> <period> <c> <parenright> :  "⒞"   U249E	# PARENTHESIZED LATIN SMALL LETTER C
-<Multi_key>  <parenleft> <period> <d> <parenright> :  "⒟"   U249F	# PARENTHESIZED LATIN SMALL LETTER D
-<Multi_key>  <parenleft> <period> <e> <parenright> :  "⒠"   U24A0	# PARENTHESIZED LATIN SMALL LETTER E
-<Multi_key>  <parenleft> <period> <f> <parenright> :  "⒡"   U24A1	# PARENTHESIZED LATIN SMALL LETTER F
-<Multi_key>  <parenleft> <period> <g> <parenright> :  "⒢"   U24A2	# PARENTHESIZED LATIN SMALL LETTER G
-<Multi_key>  <parenleft> <period> <h> <parenright> :  "⒣"   U24A3	# PARENTHESIZED LATIN SMALL LETTER H
-<Multi_key>  <parenleft> <period> <i> <parenright> :  "⒤"   U24A4	# PARENTHESIZED LATIN SMALL LETTER I
-<Multi_key>  <parenleft> <period> <j> <parenright> :  "⒥"   U24A5	# PARENTHESIZED LATIN SMALL LETTER J
-<Multi_key>  <parenleft> <period> <k> <parenright> :  "⒦"   U24A6	# PARENTHESIZED LATIN SMALL LETTER K
-<Multi_key>  <parenleft> <period> <l> <parenright> :  "⒧"   U24A7	# PARENTHESIZED LATIN SMALL LETTER L
-<Multi_key>  <parenleft> <period> <m> <parenright> :  "⒨"   U24A8	# PARENTHESIZED LATIN SMALL LETTER M
-<Multi_key>  <parenleft> <period> <n> <parenright> :  "⒩"   U24A9	# PARENTHESIZED LATIN SMALL LETTER N
-<Multi_key>  <parenleft> <period> <o> <parenright> :  "⒪"   U24AA	# PARENTHESIZED LATIN SMALL LETTER O
-<Multi_key>  <parenleft> <period> <p> <parenright> :  "⒫"   U24AB	# PARENTHESIZED LATIN SMALL LETTER P
-<Multi_key>  <parenleft> <period> <q> <parenright> :  "⒬"   U24AC	# PARENTHESIZED LATIN SMALL LETTER Q
-<Multi_key>  <parenleft> <period> <r> <parenright> :  "⒭"   U24AD	# PARENTHESIZED LATIN SMALL LETTER R
-<Multi_key>  <parenleft> <period> <s> <parenright> :  "⒮"   U24AE	# PARENTHESIZED LATIN SMALL LETTER S
-<Multi_key>  <parenleft> <period> <t> <parenright> :  "⒯"   U24AF	# PARENTHESIZED LATIN SMALL LETTER T
-<Multi_key>  <parenleft> <period> <u> <parenright> :  "⒰"   U24B0	# PARENTHESIZED LATIN SMALL LETTER U
-<Multi_key>  <parenleft> <period> <v> <parenright> :  "⒱"   U24B1	# PARENTHESIZED LATIN SMALL LETTER V
-<Multi_key>  <parenleft> <period> <w> <parenright> :  "⒲"   U24B2	# PARENTHESIZED LATIN SMALL LETTER W
-<Multi_key>  <parenleft> <period> <x> <parenright> :  "⒳"   U24B3	# PARENTHESIZED LATIN SMALL LETTER X
-<Multi_key>  <parenleft> <period> <y> <parenright> :  "⒴"   U24B4	# PARENTHESIZED LATIN SMALL LETTER Y
-<Multi_key>  <parenleft> <period> <z> <parenright> :  "⒵"   U24B5	# PARENTHESIZED LATIN SMALL LETTER Z
-<Multi_key>  <parenleft> <period> <A> <parenright> :  "🄐"   U1F110	# PARENTHESIZED LATIN CAPITAL LETTER A
-<Multi_key>  <parenleft> <period> <B> <parenright> :  "🄑"   U1F111	# PARENTHESIZED LATIN CAPITAL LETTER B
-<Multi_key>  <parenleft> <period> <C> <parenright> :  "🄒"   U1F112	# PARENTHESIZED LATIN CAPITAL LETTER C
-<Multi_key>  <parenleft> <period> <D> <parenright> :  "🄓"   U1F113	# PARENTHESIZED LATIN CAPITAL LETTER D
-<Multi_key>  <parenleft> <period> <E> <parenright> :  "🄔"   U1F114	# PARENTHESIZED LATIN CAPITAL LETTER E
-<Multi_key>  <parenleft> <period> <F> <parenright> :  "🄕"   U1F115	# PARENTHESIZED LATIN CAPITAL LETTER F
-<Multi_key>  <parenleft> <period> <G> <parenright> :  "🄖"   U1F116	# PARENTHESIZED LATIN CAPITAL LETTER G
-<Multi_key>  <parenleft> <period> <H> <parenright> :  "🄗"   U1F117	# PARENTHESIZED LATIN CAPITAL LETTER H
-<Multi_key>  <parenleft> <period> <I> <parenright> :  "🄘"   U1F118	# PARENTHESIZED LATIN CAPITAL LETTER I
-<Multi_key>  <parenleft> <period> <J> <parenright> :  "🄙"   U1F119	# PARENTHESIZED LATIN CAPITAL LETTER J
-<Multi_key>  <parenleft> <period> <K> <parenright> :  "🄚"   U1F11A	# PARENTHESIZED LATIN CAPITAL LETTER K
-<Multi_key>  <parenleft> <period> <L> <parenright> :  "🄛"   U1F11B	# PARENTHESIZED LATIN CAPITAL LETTER L
-<Multi_key>  <parenleft> <period> <M> <parenright> :  "🄜"   U1F11C	# PARENTHESIZED LATIN CAPITAL LETTER M
-<Multi_key>  <parenleft> <period> <N> <parenright> :  "🄝"   U1F11D	# PARENTHESIZED LATIN CAPITAL LETTER N
-<Multi_key>  <parenleft> <period> <O> <parenright> :  "🄞"   U1F11E	# PARENTHESIZED LATIN CAPITAL LETTER O
-<Multi_key>  <parenleft> <period> <P> <parenright> :  "🄟"   U1F11F	# PARENTHESIZED LATIN CAPITAL LETTER P
-<Multi_key>  <parenleft> <period> <Q> <parenright> :  "🄠"   U1F120	# PARENTHESIZED LATIN CAPITAL LETTER Q
-<Multi_key>  <parenleft> <period> <R> <parenright> :  "🄡"   U1F121	# PARENTHESIZED LATIN CAPITAL LETTER R
-<Multi_key>  <parenleft> <period> <S> <parenright> :  "🄢"   U1F122	# PARENTHESIZED LATIN CAPITAL LETTER S
-<Multi_key>  <parenleft> <period> <T> <parenright> :  "🄣"   U1F123	# PARENTHESIZED LATIN CAPITAL LETTER T
-<Multi_key>  <parenleft> <period> <U> <parenright> :  "🄤"   U1F124	# PARENTHESIZED LATIN CAPITAL LETTER U
-<Multi_key>  <parenleft> <period> <V> <parenright> :  "🄥"   U1F125	# PARENTHESIZED LATIN CAPITAL LETTER V
-<Multi_key>  <parenleft> <period> <W> <parenright> :  "🄦"   U1F126	# PARENTHESIZED LATIN CAPITAL LETTER W
-<Multi_key>  <parenleft> <period> <X> <parenright> :  "🄧"   U1F127	# PARENTHESIZED LATIN CAPITAL LETTER X
-<Multi_key>  <parenleft> <period> <Y> <parenright> :  "🄨"   U1F128	# PARENTHESIZED LATIN CAPITAL LETTER Y
-<Multi_key>  <parenleft> <period> <Z> <parenright> :  "🄩"   U1F129	# PARENTHESIZED LATIN CAPITAL LETTER Z
-<Multi_key>  <period> <1> <period> :  "⒈"   U2488	# DIGIT ONE FULL STOP
-<Multi_key>  <period> <2> <period> :  "⒉"   U2489	# DIGIT TWO FULL STOP
-<Multi_key>  <period> <3> <period> :  "⒊"   U248A	# DIGIT THREE FULL STOP
-<Multi_key>  <period> <4> <period> :  "⒋"   U248B	# DIGIT FOUR FULL STOP
-<Multi_key>  <period> <5> <period> :  "⒌"   U248C	# DIGIT FIVE FULL STOP
-<Multi_key>  <period> <6> <period> :  "⒍"   U248D	# DIGIT SIX FULL STOP
-<Multi_key>  <period> <7> <period> :  "⒎"   U248E	# DIGIT SEVEN FULL STOP
-<Multi_key>  <period> <8> <period> :  "⒏"   U248F	# DIGIT EIGHT FULL STOP
-<Multi_key>  <period> <9> <period> :  "⒐"   U2490	# DIGIT NINE FULL STOP
-<Multi_key>  <period> <1> <0> <period> :  "⒑"   U2491	# NUMBER TEN FULL STOP
-<Multi_key>  <period> <1> <1> <period> :  "⒒"   U2492	# NUMBER ELEVEN FULL STOP
-<Multi_key>  <period> <1> <2> <period> :  "⒓"   U2493	# NUMBER TWELVE FULL STOP
-<Multi_key>  <period> <1> <3> <period> :  "⒔"   U2494	# NUMBER THIRTEEN FULL STOP
-<Multi_key>  <period> <1> <4> <period> :  "⒕"   U2495	# NUMBER FOURTEEN FULL STOP
-<Multi_key>  <period> <1> <5> <period> :  "⒖"   U2496	# NUMBER FIFTEEN FULL STOP
-<Multi_key>  <period> <1> <6> <period> :  "⒗"   U2497	# NUMBER SIXTEEN FULL STOP
-<Multi_key>  <period> <1> <7> <period> :  "⒘"   U2498	# NUMBER SEVENTEEN FULL STOP
-<Multi_key>  <period> <1> <8> <period> :  "⒙"   U2499	# NUMBER EIGHTEEN FULL STOP
-<Multi_key>  <period> <1> <9> <period> :  "⒚"   U249A	# NUMBER NINETEEN FULL STOP
-<Multi_key>  <period> <2> <0> <period> :  "⒛"   U249B	# NUMBER TWENTY FULL STOP
-<Multi_key>  <period> <0> <period> :  "🄀"   U1F100	# DIGIT ZERO FULL STOP
-<Multi_key>  <parenleft> <B> <1> <1> <parenright> :  "⓫"   U24EB	# NEGATIVE CIRCLED NUMBER ELEVEN
-<Multi_key>  <parenleft> <B> <1> <2> <parenright> :  "⓬"   U24EC	# NEGATIVE CIRCLED NUMBER TWELVE
-<Multi_key>  <parenleft> <B> <1> <3> <parenright> :  "⓭"   U24ED	# NEGATIVE CIRCLED NUMBER THIRTEEN
-<Multi_key>  <parenleft> <B> <1> <4> <parenright> :  "⓮"   U24EE	# NEGATIVE CIRCLED NUMBER FOURTEEN
-<Multi_key>  <parenleft> <B> <1> <5> <parenright> :  "⓯"   U24EF	# NEGATIVE CIRCLED NUMBER FIFTEEN
-<Multi_key>  <parenleft> <B> <1> <6> <parenright> :  "⓰"   U24F0	# NEGATIVE CIRCLED NUMBER SIXTEEN
-<Multi_key>  <parenleft> <B> <1> <7> <parenright> :  "⓱"   U24F1	# NEGATIVE CIRCLED NUMBER SEVENTEEN
-<Multi_key>  <parenleft> <B> <1> <8> <parenright> :  "⓲"   U24F2	# NEGATIVE CIRCLED NUMBER EIGHTEEN
-<Multi_key>  <parenleft> <B> <1> <9> <parenright> :  "⓳"   U24F3	# NEGATIVE CIRCLED NUMBER NINETEEN
-<Multi_key>  <parenleft> <B> <2> <0> <parenright> :  "⓴"   U24F4	# NEGATIVE CIRCLED NUMBER TWENTY
-<Multi_key>  <parenleft> <B> <0> <parenright> :  "⓿"   U24FF	# NEGATIVE CIRCLED DIGIT ZERO
-<Multi_key>  <parenleft> <B> <1> <parenright> :  "❶"   U2776	# DINGBAT NEGATIVE CIRCLED DIGIT ONE
-<Multi_key>  <parenleft> <B> <2> <parenright> :  "❷"   U2777	# DINGBAT NEGATIVE CIRCLED DIGIT TWO
-<Multi_key>  <parenleft> <B> <3> <parenright> :  "❸"   U2778	# DINGBAT NEGATIVE CIRCLED DIGIT THREE
-<Multi_key>  <parenleft> <B> <4> <parenright> :  "❹"   U2779	# DINGBAT NEGATIVE CIRCLED DIGIT FOUR
-<Multi_key>  <parenleft> <B> <5> <parenright> :  "❺"   U277A	# DINGBAT NEGATIVE CIRCLED DIGIT FIVE
-<Multi_key>  <parenleft> <B> <6> <parenright> :  "❻"   U277B	# DINGBAT NEGATIVE CIRCLED DIGIT SIX
-<Multi_key>  <parenleft> <B> <7> <parenright> :  "❼"   U277C	# DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
-<Multi_key>  <parenleft> <B> <8> <parenright> :  "❽"   U277D	# DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
-<Multi_key>  <parenleft> <B> <9> <parenright> :  "❾"   U277E	# DINGBAT NEGATIVE CIRCLED DIGIT NINE
-<Multi_key>  <parenleft> <B> <1> <0> <parenright> :  "❿"   U277F	# DINGBAT NEGATIVE CIRCLED NUMBER TEN
-<Multi_key>  <parenleft> <B> <A> <parenright> :  "🅐"   U1F150	# NEGATIVE CIRCLED LATIN CAPITAL LETTER A
-<Multi_key>  <parenleft> <B> <B> <parenright> :  "🅑"   U1F151	# NEGATIVE CIRCLED LATIN CAPITAL LETTER B
-<Multi_key>  <parenleft> <B> <C> <parenright> :  "🅒"   U1F152	# NEGATIVE CIRCLED LATIN CAPITAL LETTER C
-<Multi_key>  <parenleft> <B> <D> <parenright> :  "🅓"   U1F153	# NEGATIVE CIRCLED LATIN CAPITAL LETTER D
-<Multi_key>  <parenleft> <B> <E> <parenright> :  "🅔"   U1F154	# NEGATIVE CIRCLED LATIN CAPITAL LETTER E
-<Multi_key>  <parenleft> <B> <F> <parenright> :  "🅕"   U1F155	# NEGATIVE CIRCLED LATIN CAPITAL LETTER F
-<Multi_key>  <parenleft> <B> <G> <parenright> :  "🅖"   U1F156	# NEGATIVE CIRCLED LATIN CAPITAL LETTER G
-<Multi_key>  <parenleft> <B> <H> <parenright> :  "🅗"   U1F157	# NEGATIVE CIRCLED LATIN CAPITAL LETTER H
-<Multi_key>  <parenleft> <B> <I> <parenright> :  "🅘"   U1F158	# NEGATIVE CIRCLED LATIN CAPITAL LETTER I
-<Multi_key>  <parenleft> <B> <J> <parenright> :  "🅙"   U1F159	# NEGATIVE CIRCLED LATIN CAPITAL LETTER J
-<Multi_key>  <parenleft> <B> <K> <parenright> :  "🅚"   U1F15A	# NEGATIVE CIRCLED LATIN CAPITAL LETTER K
-<Multi_key>  <parenleft> <B> <L> <parenright> :  "🅛"   U1F15B	# NEGATIVE CIRCLED LATIN CAPITAL LETTER L
-<Multi_key>  <parenleft> <B> <M> <parenright> :  "🅜"   U1F15C	# NEGATIVE CIRCLED LATIN CAPITAL LETTER M
-<Multi_key>  <parenleft> <B> <N> <parenright> :  "🅝"   U1F15D	# NEGATIVE CIRCLED LATIN CAPITAL LETTER N
-<Multi_key>  <parenleft> <B> <O> <parenright> :  "🅞"   U1F15E	# NEGATIVE CIRCLED LATIN CAPITAL LETTER O
-<Multi_key>  <parenleft> <B> <P> <parenright> :  "🅟"   U1F15F	# NEGATIVE CIRCLED LATIN CAPITAL LETTER P
-<Multi_key>  <parenleft> <B> <Q> <parenright> :  "🅠"   U1F160	# NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
-<Multi_key>  <parenleft> <B> <R> <parenright> :  "🅡"   U1F161	# NEGATIVE CIRCLED LATIN CAPITAL LETTER R
-<Multi_key>  <parenleft> <B> <S> <parenright> :  "🅢"   U1F162	# NEGATIVE CIRCLED LATIN CAPITAL LETTER S
-<Multi_key>  <parenleft> <B> <T> <parenright> :  "🅣"   U1F163	# NEGATIVE CIRCLED LATIN CAPITAL LETTER T
-<Multi_key>  <parenleft> <B> <U> <parenright> :  "🅤"   U1F164	# NEGATIVE CIRCLED LATIN CAPITAL LETTER U
-<Multi_key>  <parenleft> <B> <V> <parenright> :  "🅥"   U1F165	# NEGATIVE CIRCLED LATIN CAPITAL LETTER V
-<Multi_key>  <parenleft> <B> <W> <parenright> :  "🅦"   U1F166	# NEGATIVE CIRCLED LATIN CAPITAL LETTER W
-<Multi_key>  <parenleft> <B> <X> <parenright> :  "🅧"   U1F167	# NEGATIVE CIRCLED LATIN CAPITAL LETTER X
-<Multi_key>  <parenleft> <B> <Y> <parenright> :  "🅨"   U1F168	# NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
-<Multi_key>  <parenleft> <B> <Z> <parenright> :  "🅩"   U1F169	# NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-<Multi_key>  <bracketleft> <B> <a> <bracketright> :  "🅰"   U1F170	# NEGATIVE SQUARED LATIN CAPITAL LETTER A
-<Multi_key>  <bracketleft> <B> <b> <bracketright> :  "🅱"   U1F171	# NEGATIVE SQUARED LATIN CAPITAL LETTER B
-<Multi_key>  <bracketleft> <B> <c> <bracketright> :  "🅲"   U1F172	# NEGATIVE SQUARED LATIN CAPITAL LETTER C
-<Multi_key>  <bracketleft> <B> <d> <bracketright> :  "🅳"   U1F173	# NEGATIVE SQUARED LATIN CAPITAL LETTER D
-<Multi_key>  <bracketleft> <B> <e> <bracketright> :  "🅴"   U1F174	# NEGATIVE SQUARED LATIN CAPITAL LETTER E
-<Multi_key>  <bracketleft> <B> <f> <bracketright> :  "🅵"   U1F175	# NEGATIVE SQUARED LATIN CAPITAL LETTER F
-<Multi_key>  <bracketleft> <B> <g> <bracketright> :  "🅶"   U1F176	# NEGATIVE SQUARED LATIN CAPITAL LETTER G
-<Multi_key>  <bracketleft> <B> <h> <bracketright> :  "🅷"   U1F177	# NEGATIVE SQUARED LATIN CAPITAL LETTER H
-<Multi_key>  <bracketleft> <B> <i> <bracketright> :  "🅸"   U1F178	# NEGATIVE SQUARED LATIN CAPITAL LETTER I
-<Multi_key>  <bracketleft> <B> <j> <bracketright> :  "🅹"   U1F179	# NEGATIVE SQUARED LATIN CAPITAL LETTER J
-<Multi_key>  <bracketleft> <B> <k> <bracketright> :  "🅺"   U1F17A	# NEGATIVE SQUARED LATIN CAPITAL LETTER K
-<Multi_key>  <bracketleft> <B> <l> <bracketright> :  "🅻"   U1F17B	# NEGATIVE SQUARED LATIN CAPITAL LETTER L
-<Multi_key>  <bracketleft> <B> <m> <bracketright> :  "🅼"   U1F17C	# NEGATIVE SQUARED LATIN CAPITAL LETTER M
-<Multi_key>  <bracketleft> <B> <n> <bracketright> :  "🅽"   U1F17D	# NEGATIVE SQUARED LATIN CAPITAL LETTER N
-<Multi_key>  <bracketleft> <B> <o> <bracketright> :  "🅾"   U1F17E	# NEGATIVE SQUARED LATIN CAPITAL LETTER O
-<Multi_key>  <bracketleft> <B> <p> <bracketright> :  "🅿"   U1F17F	# NEGATIVE SQUARED LATIN CAPITAL LETTER P
-<Multi_key>  <bracketleft> <B> <q> <bracketright> :  "🆀"   U1F180	# NEGATIVE SQUARED LATIN CAPITAL LETTER Q
-<Multi_key>  <bracketleft> <B> <r> <bracketright> :  "🆁"   U1F181	# NEGATIVE SQUARED LATIN CAPITAL LETTER R
-<Multi_key>  <bracketleft> <B> <s> <bracketright> :  "🆂"   U1F182	# NEGATIVE SQUARED LATIN CAPITAL LETTER S
-<Multi_key>  <bracketleft> <B> <t> <bracketright> :  "🆃"   U1F183	# NEGATIVE SQUARED LATIN CAPITAL LETTER T
-<Multi_key>  <bracketleft> <B> <u> <bracketright> :  "🆄"   U1F184	# NEGATIVE SQUARED LATIN CAPITAL LETTER U
-<Multi_key>  <bracketleft> <B> <v> <bracketright> :  "🆅"   U1F185	# NEGATIVE SQUARED LATIN CAPITAL LETTER V
-<Multi_key>  <bracketleft> <B> <w> <bracketright> :  "🆆"   U1F186	# NEGATIVE SQUARED LATIN CAPITAL LETTER W
-<Multi_key>  <bracketleft> <B> <x> <bracketright> :  "🆇"   U1F187	# NEGATIVE SQUARED LATIN CAPITAL LETTER X
-<Multi_key>  <bracketleft> <B> <y> <bracketright> :  "🆈"   U1F188	# NEGATIVE SQUARED LATIN CAPITAL LETTER Y
-<Multi_key>  <bracketleft> <B> <z> <bracketright> :  "🆉"   U1F189	# NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-<Multi_key>  <bracketleft> <B> <W> <C> <bracketright> :  "🆏"   U1F18F	# NEGATIVE SQUARED WC
-### Using <parenleft> <parenleft> ... <parenright> <parenright> conflicts
-### with system entries.  Using the *letter* O.
-<Multi_key> <parenleft> <O> <1> <parenright> :  "⓵"   U24F5	# DOUBLE CIRCLED DIGIT ONE
-<Multi_key> <parenleft> <O> <2> <parenright> :  "⓶"   U24F6	# DOUBLE CIRCLED DIGIT TWO
-<Multi_key> <parenleft> <O> <3> <parenright> :  "⓷"   U24F7	# DOUBLE CIRCLED DIGIT THREE
-<Multi_key> <parenleft> <O> <4> <parenright> :  "⓸"   U24F8	# DOUBLE CIRCLED DIGIT FOUR
-<Multi_key> <parenleft> <O> <5> <parenright> :  "⓹"   U24F9	# DOUBLE CIRCLED DIGIT FIVE
-<Multi_key> <parenleft> <O> <6> <parenright> :  "⓺"   U24FA	# DOUBLE CIRCLED DIGIT SIX
-<Multi_key> <parenleft> <O> <7> <parenright> :  "⓻"   U24FB	# DOUBLE CIRCLED DIGIT SEVEN
-<Multi_key> <parenleft> <O> <8> <parenright> :  "⓼"   U24FC	# DOUBLE CIRCLED DIGIT EIGHT
-<Multi_key> <parenleft> <O> <9> <parenright> :  "⓽"   U24FD	# DOUBLE CIRCLED DIGIT NINE
-<Multi_key> <parenleft> <O> <1> <0> <parenright> :  "⓾"   U24FE	# DOUBLE CIRCLED NUMBER TEN
users/vincent/desktop/xorg/user-dirs.dirs
@@ -1,8 +0,0 @@
-XDG_DESKTOP_DIR="$HOME/desktop"
-XDG_DOCUMENTS_DIR="$HOME/desktop/documents"
-XDG_DOWNLOAD_DIR="$HOME/desktop/downloads"
-XDG_MUSIC_DIR="$HOME/desktop/music"
-XDG_PICTURES_DIR="$HOME/desktop/pictures"
-XDG_PUBLICSHARE_DIR="$HOME/"
-XDG_TEMPLATES_DIR="$HOME/"
-XDG_VIDEOS_DIR="$HOME/desktop/videos"
users/vincent/desktop/xorg/XCompose
@@ -1,1331 +0,0 @@
-# for Emacs: -*- coding: utf-8 -*-
-include "%L"
-include ".config/xorg/emoji.compose"
-include ".config/xorg/parens.compose"
-include ".config/xorg/modletters.compose"
-
-# def emit(keys, codepoint, word):
-#     print ('<Multi_key> %s <period>\t: "%s"\tU%04X\t\t# CIRCLED DIGIT %s' % 
-#            (keys, unichr(codepoint), codepoint, word)).encode('utf8')
-# numbers = 'one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty'
-# words = numbers.upper().split()
-# emit('<0>', 0x24EA, "ZERO")
-# for num, word in zip(range(1, 21), words):
-#     emit(' '.join("<%s>" % char for char in str(num)), 0x245f + num, word)
-
-# Custom additions: Typography
-<Multi_key> <period> <period>		: "…"	U2026		# HORIZONTAL ELLIPSIS
-<Multi_key> <v> <period> <period>	: "⋮"	U22EE		# VERTICAL ELLIPSIS
-<Multi_key> <c> <period> <period>	: "⋯"	U22EF		# MIDLINE HORIZONTAL ELLIPSIS
-<Multi_key> <slash> <period> <period>	: "⋰"	U22F0		# UP RIGHT DIAGONAL ELLIPSIS
-# To avoid conflict with \. for combining dot above.
-#<Multi_key> <backslash> <period> <period> : "⋱" U22F1		# DOWN RIGHT DIAGONAL ELLIPSIS
-<Multi_key> <period> <backslash> <period> : "⋱" U22F1		# DOWN RIGHT DIAGONAL ELLIPSIS
-# Will we someday regret this, wanting 2. for ⒉ ?
-<Multi_key> <2> <period>	 	  : "‥"	U2025		# TWO DOT LEADER
-# This should not be needed.
-#<Multi_key> <1> <period>		  : "․"	U2024		# ONE DOT LEADER
-<Multi_key> <c> <1> <period>		  : "·"	U00B7		# MIDDLE DOT (maybe I can remember the keystroke better?
-<Multi_key> <period> <slash> <period>	: "⁒"	U2052		# COMMERCIAL MINUS SIGN
-### or && ?
-<Multi_key> <ampersand> <at>    :   "⅋" U214B   # TURNED AMPERSAND
-# Printable sign for space.  But is \<space> too useful a key combo to use
-# for this?
-<Multi_key> <backslash> <space>		: "␣"	U2423		# OPEN BOX
-# These two are already present for me:
-# <Multi_key> <minus> <minus> <minus>	: "—"	U2014		# EM DASH
-# <Multi_key> <minus> <minus> <period>	: "–"	U2013		# EN DASH
-<Multi_key> <minus> <minus> <space>	: "– "			# EN DASH (followed by space)
-<Multi_key> <minus> <asciitilde> <minus> : "―" U2015 # HORIZONTAL BAR
-<Multi_key> <minus> <2> <M>	 	 : "⸺" U2E3A # TWO-EM DASH
-<Multi_key> <minus> <3> <M>	 	 : "⸻" U2E3B # THREE-EM DASH
-<Multi_key> <backslash> <minus>		: "­"	U00AD		# SOFT HYPHEN
-# This is the recommended typographical practice for em dashes in English.
-# Unfortunately, it doesn’t work out all that well in monospace fonts,
-# where the thin spaces aren’t thin.  But I think this is okay.
-# This conflicts with the default binding to “~”, which is potentially
-# a problem for non-American keyboards.
-<Multi_key> <space> <minus>             : " — "                 # EM DASH surrounded by THIN SPACEs.
-
-
-# Quotation marks.
-<Multi_key> <comma> <space>		: "‚"	U201A		# SINGLE LOW-9 QUOTATION MARK
-<Multi_key> <comma> <comma>		: "„"	U201E		# DOUBLE LOW-9 QUOTATION MARK
-<Multi_key> <less> <comma> <comma>	: "⹂"	U2E42		# DOUBLE LOW-REVERSED-9 QUOTATION MARK
-<Multi_key> <apostrophe> <space>	: "’"	U2019		# RIGHT SINGLE QUOTATION MARK
-<Multi_key> <apostrophe> <apostrophe>	: "”"	U201D		# RIGHT DOUBLE QUOTATION MARK
-<Multi_key> <grave> <space>		: "‘"	U2018		# LEFT SINGLE QUOTATION MARK
-<Multi_key> <grave> <grave>		: "“"	U201C		# LEFT DOUBLE QUOTATION MARK
-<Multi_key> <6> <apostrophe>		: "‘"	U2018		# LEFT SINGLE QUOTATION MARK (high 6)
-<Multi_key> <6> <quotedbl>		: "“"	U201C		# LEFT DOUBLE QUOTATION MARK (66)
-<Multi_key> <9> <apostrophe>		: "’"	U2019		# RIGHT SINGLE QUOTATION MARK (high 9)
-<Multi_key> <9> <quotedbl>		: "”"	U201D		# RIGHT DOUBLE QUOTATION MARK (99)
-<Multi_key> <less> <9> <apostrophe>	: "‛"	U201B		# SINGLE HIGH-REVERSED-9 QUOTATION MARK
-<Multi_key> <less> <9> <quotedbl>	: "‟"	U201F		# DOUBLE HIGH-REVERSED-9 QUOTATION MARK
-<Multi_key> <comma> <apostrophe>	: "‚"	U201A		# SINGLE LOW-9 QUOTATION MARK (quote resembling a comma)
-<Multi_key> <comma> <quotedbl>		: "„"	U201E		# DOUBLE LOW-9 QUOTATION MARK
-
-# Convenience shortcuts for quotation marks.
-<Multi_key> <space> <quotedbl>          : " “"                  # space followed by LEFT DOUBLE QUOTATION MARK
-<Multi_key> <quotedbl> <space>          : "” "                  # RIGHT DOUBLE QUOTATION MARK followed by space
-<Multi_key> <space> <apostrophe>        : " ‘"                # space followed by LEFT SINGLE QUOTATION MARK
-# Unfortunately <apostrophe> <space> is, asymmetrically, just "’".  Whatever.
-<Multi_key> <n> <t>                     : "n’t "              # Apostrophized English “not.”
-# Some more English shortcuts:
-<Multi_key> <space> <t>                 : " the "
-<Multi_key> <space> <T>                 : "  The "
-<Multi_key> <space> <a>                 : " and "
-<Multi_key> <i> <m>                     : " I’m "
-<Multi_key> <v> <e>                     : "’ve "
-
-<Multi_key> <comma> <at>		: "⸲"	U2E32		# TURNED COMMA
-# Conflicts with system def? (·)
-<Multi_key> <period> <asciicircum>	: "⸳"	U2E33		# RAISED DOT
-<Multi_key> <period> <asciitilde>	: "⸳"	U2E33		# RAISED DOT
-<Multi_key> <comma> <asciicircum>	: "⸴"	U2E34		# RAISED COMMA
-<Multi_key> <semicolon> <at>		: "⸵"	U2E35		# TURNED SEMICOLON
-# Convlicts with system def? (⍭)
-<Multi_key> <asciitilde> <bar>		: "ⸯ"	U2E2F		# VERTICAL TILDE
-<Multi_key> <asciicircum> <bar>		: "ⸯ"	U2E2F		# VERTICAL TILDE
-<Multi_key> <minus> <equal>		: "⹀"	U2E40		# DOUBLE HYPHEN
-<Multi_key> <comma> <less>		: "⹁"	U2E41		# REVERSED COMMA
-<Multi_key> <less> <bar>		: "↵"	U21B5		# DOWNWARDS ARROW WITH CORNER LEFTWARDS
-# The bullet was <o> <period>, but it clashes with ꙭ
-<Multi_key> <asterisk> <1>		: "•"	U2022		# BULLET
-# By default <Multi_key> <period> <period> does this, but we broke that with the ... binding.
-<Multi_key> <o> <underscore>		: "⁃"   U2043		# HYPHEN BULLET
-<Multi_key> <o> <comma>			: "·"	periodcentered	# MIDDLE DOT
-# I don’t use this nearly as often as the em-dash sequence I’ve remapped it to:
-#<Multi_key> <space> <minus>		: "‑"	U2011		# NON-BREAKING HYPHEN
-# Already present for me:
-# <Multi_key> <space> <space>		: " "	U00A0		# NO-BREAK SPACE
-# Narrow no-break space, needed for some Latin languages like French
-<Multi_key> <space> <n> : " "    U202f # NARROW NO-BREAK SPACE
-# Do we want/need these?
-<Multi_key> <d> <a> <g>			: "†"	U2020		# DAGGER
-<Multi_key> <d> <d> <a> <g>		: "‡"	U2021		# DOUBLE DAGGER
-# We used to have THIN SPACE as <space> <apostrophe>, but now that’s remapped
-# to " ‘", for conveniently enclosing things in proper single-quotes.
-<Multi_key> <backslash> <comma>		: " "	U2009		# THIN SPACE
-<Multi_key> <s> <e> <c> : "§"   U00A7   # SECTION SIGN
-# It's in the Asian section, but it's a general-purpose punctuation:
-<Multi_key> <quotedbl> <quotedbl>       : "〃"	U3003		# DITTO MARK
-# Working with the pattern from FLOOR/CEILING
-<Multi_key> <7> <asciicircum> <bracketleft>  : "⸢"  U2E22	# TOP LEFT HALF BRACKET
-<Multi_key> <7> <asciicircum> <bracketright> : "⸣"  U2E23	# TOP RIGHT HALF BRACKET
-<Multi_key> <L> <underscore> <bracketleft>   : "⸤"  U2E24	# BOTTOM LEFT HALF BRACKET
-<Multi_key> <L> <underscore> <bracketright>  : "⸥"  U2E25	# BOTTOM RIGHT HALF BRACKET
-# Consider <7> <less>/<greater> for ⸂⸃ maybe? <S> and <slash> for ⸉⸊⸌⸍ ...?
-# I guess we can get by with sub/superset for ⸦⸧.
-
-<Multi_key> <minus> <less>		: "←"	leftarrow	# LEFTWARDS ARROW
-<Multi_key> <minus> <asciicircum>	: "↑"	uparrow		# UPWARDS ARROW
-<Multi_key> <minus> <greater>		: "→"	rightarrow	# RIGHTWARDS ARROW
-<Multi_key> <minus> <v>			: "↓"	downarrow	# DOWNWARDS ARROW
-<Multi_key> <less> <minus> <greater>	: "↔"	U2194           # LEFT RIGHT ARROW (kragen's)
-
-<Multi_key> <Left> <Left>		: "←"	leftarrow	# LEFTWARDS ARROW
-<Multi_key> <Up> <Up>			: "↑"	uparrow		# UPWARDS ARROW
-<Multi_key> <Right> <Right>		: "→"	rightarrow	# RIGHTWARDS ARROW
-<Multi_key> <Down> <Down>		: "↓"	downarrow	# DOWNWARDS ARROW
-<Multi_key> <Left> <Right>		: "↔"	U2194           # LEFT RIGHT ARROW (kragen's)
-<Multi_key> <Right> <Left>		: "↔"	U2194           # LEFT RIGHT ARROW (kragen's)
-<Multi_key> <Up> <Down>			: "↕"	U2195           # UP DOWN ARROW (kragen's)
-<Multi_key> <Up> <ampersand> <Down>     : "⇵"	U21F5		# DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
-<Multi_key> <Down> <Left>		: "↵"	U21B5		# DOWNWARDS ARROW WITH CORNER LEFTWARDS
-<Multi_key> <Left> <o>			: "⟲"	U27F2		# ANTICLOCKWISE GAPPED CIRCLE ARROW
-<Multi_key> <Right> <o>			: "⟳"	U27F3		# CLOCKWISE GAPPED CIRCLE ARROW
-<Multi_key> <Left> <c>			: "↺"	U21BA		# ANTICLOCKWISE OPEN CIRCLE ARROW
-<Multi_key> <Right> <c>			: "↻"	U21BB		# CLOCKWISE OPEN CIRCLE ARROW
-<Multi_key> <Left> <asciitilde>		: "⇜"	U21DC		# LEFTWARDS SQUIGGLE ARROW
-<Multi_key> <Right> <asciitilde>	: "⇝"	U21DD		# RIGHTWARDS SQUIGGLE ARROW
-<Multi_key> <Left> <bar>       		: "⇤"	U21E4		# LEFTWARDS ARROW TO BAR
-<Multi_key> <Right> <bar>       	: "⇥"	U21E5		# RIGHTWARDS ARROW TO BAR
-<Multi_key> <Left> <minus>     		: "⇠"	U21E0		# LEFTWARDS DASHED ARROW
-<Multi_key> <Up> <minus>     		: "⇡"	U21E1		# UPWARDS DASHED ARROW
-<Multi_key> <Right> <minus>     	: "⇢"	U21E2		# RIGHTWARDS DASHED ARROW
-<Multi_key> <Down> <minus>      	: "⇣"	U21E3		# DOWNWARDS DASHED ARROW
-
-# Arrow keys don't always work: some apps trap them for cursor control and
-# other boring things.  The arrow symbols have alternate keystrokes.  Do
-# we need others for these printer's fists?  If so, what?  The -= and =-
-# we had before are not necessarily the best choices.
-<Multi_key> <F> <Left>		: "☚"	U261A		# BLACK LEFT POINTING INDEX
-<Multi_key> <F> <Right>		: "☛"	U261B		# BLACK RIGHT POINTING INDEX
-<Multi_key> <f> <Left>		: "☜"	U261C		# WHITE LEFT POINTING INDEX
-<Multi_key> <f> <Up>		: "☝"	U261D		# WHITE UP POINTING INDEX
-<Multi_key> <f> <Right>		: "☞"	U261E		# WHITE RIGHT POINTING INDEX
-<Multi_key> <f> <Down>		: "☟"	U261F		# WHITE DOWN POINTING INDEX
-<Multi_key> <f> <v>   		: "✌"   U270C   	# VICTORY HAND
-<Multi_key> <f> <w>   		: "✍"   U270D   	# WRITING HAND
-<Multi_key> <f> <p> <Down>	: "✎"   U270E   	# LOWER RIGHT PENCIL
-<Multi_key> <f> <p> <Right>	: "✏"   U270F   	# PENCIL
-<Multi_key> <f> <p> <Up>	: "✐"   U2710   	# UPPER RIGHT PENCIL
-
-# For some logical statements.  I prefer doubled arrows for implication.
-<Multi_key> <equal> <greater>		: "⇒"	U21D2		# RIGHTWARDS DOUBLE ARROW
-<Multi_key> <equal> <less>		: "⇐"	U21D0		# LEFTWARDS DOUBLE ARROW
-<Multi_key> <less> <minus> <equal> <greater> : "⇔" U21D4 # LEFT RIGHT DOUBLE ARROW 
-<Multi_key> <equal> <Right> <Right>	: "⇒"	U21D2		# RIGHTWARDS DOUBLE ARROW
-<Multi_key> <equal> <Left> <Left>	: "⇐"	U21D0		# LEFTWARDS DOUBLE ARROW
-<Multi_key> <equal> <Left> <Right>	: "⇔"	U21D4	# LEFT RIGHT DOUBLE ARROW
-<Multi_key> <equal> <Right> <Left>	: "⇔"	U21D4	# LEFT RIGHT DOUBLE ARROW
-<Multi_key> <equal> <Up> <Up>		: "⇑"	U21D1	# UPWARDS DOUBLE ARROW
-<Multi_key> <equal> <Down> <Down>	: "⇓"	U21D3	# DOWNWARDS DOUBLE ARROW
-<Multi_key> <equal> <Up> <Down>		: "⇕"	U21D5	# UP DOWN DOUBLE ARROW
-<Multi_key> <equal> <Down> <Left>	: "⏎"	U23CE	# RETURN SYMBOL
-# These are just too cool-looking not to have (if your font supports them)
-<Multi_key> <equal> <period> <equal>	: "⸎"	U2E0E		# EDITORIAL CORONIS
-<Multi_key> <Multi_key> <p> <a> <l> <m>	: "⸙"	U2E19		# PALM BRANCH
-<Multi_key> <Multi_key> <b> <r> <a> <n> <c> <h>: "⸙"	U2E19		# PALM BRANCH
-
-
-<Multi_key> <f> <f>		: "ff"	   UFB00   # LATIN SMALL LIGATURE FF
-<Multi_key> <f> <i>		: "fi"	   UFB01   # LATIN SMALL LIGATURE FI
-<Multi_key> <F> <i>		: "ffi"	   UFB03   # LATIN SMALL LIGATURE FFI
-<Multi_key> <f> <l>		: "fl"	   UFB02   # LATIN SMALL LIGATURE FL
-<Multi_key> <F> <l>		: "ffl"	   UFB04   # LATIN SMALL LIGATURE FFL
-<Multi_key> <s> <t>		: "st"  UFB06	   # LATIN SMALL LIGATURE ST
-<Multi_key> <f> <t>		: "ſt"  UFB05	   # LATIN SMALL LIGATURE LONG S T
-# allow me still to use my ſ key, okay?
-<Multi_key> <U017F> <t>		: "ſt"  UFB05	   # LATIN SMALL LIGATURE LONG S T
-# ß is already available as <s><s> I think.  But now it comes in industrial size!
-<Multi_key> <S> <S> 		: "ẞ"  U1E9E	   # LATIN CAPITAL LETTER SHARP S
-
-# Eventually we'll have to look over the really crazy-cakes Latin letters 
-# they're adding as "mediævalist extensions"
-# ꜢꜣꜤꜥ for the Egyptologists, Ꝏꝏ because they're cꝏl...  Maybe some others.
-# Can't do <o> <o> for ꝏ though, since that's already °.
-# Epigraphics should not be missed:
-<Multi_key> <F> <less>		: "ꟻ"	UA7FB	# LATIN EPIGRAPHIC LETTER REVERSED F
-<Multi_key> <P> <less>		: "ꟼ"	UA7FC	# LATIN EPIGRAPHIC LETTER REVERSED P
-<Multi_key> <F> <BackSpace>		: "ꟻ"	UA7FB	# LATIN EPIGRAPHIC LETTER REVERSED F
-<Multi_key> <P> <BackSpace>		: "ꟼ"	UA7FC	# LATIN EPIGRAPHIC LETTER REVERSED P
-<Multi_key> <M> <W>		: "ꟽ"	UA7FD	# LATIN EPIGRAPHIC LETTER INVERTED M
-<Multi_key> <I> <bar>		: "ꟾ"	UA7FE	# LATIN EPIGRAPHIC LETTER I LONGA
-<Multi_key> <M> <slash>		: "ꟿ"	UA7FF	# LATIN EPIGRAPHIC LETTER ARCHAIC M
-# I'd been avoiding this because we already have ∃...
-# Hey, these, being *letters* can be used as identifiers in some languages...
-<Multi_key> <E> <less>	 	 : "Ǝ"	    U018E	# LATIN CAPITAL LETTER REVERSED E
-<Multi_key> <E> <BackSpace>	 : "Ǝ"	    U018E	# LATIN CAPITAL LETTER REVERSED E
-<Multi_key> <e> <less>		 : "ɘ"	    U0258	# LATIN SMALL LETTER REVERSED E
-<Multi_key> <e> <BackSpace>	 : "ɘ"	    U0258	# LATIN SMALL LETTER REVERSED E
-# Complete the set
-<Multi_key> <A> <less>		 : "Ɐ"	    U2C6F	# LATIN CAPITAL LETTER TURNED A
-# These seem too long as keystrokes; any suggestions?
-# How about 2o?
-<Multi_key> <o> <ampersand> <o>	: "ꝏ"	UA74F	# LATIN SMALL LETTER OO
-<Multi_key> <O> <ampersand> <O> : "Ꝏ"	UA74E	# LATIN CAPITAL LETTER OO
-<Multi_key> <2> <o>	: "ꝏ"	UA74F	# LATIN SMALL LETTER OO
-<Multi_key> <2> <O> 	: "Ꝏ"	UA74E	# LATIN CAPITAL LETTER OO
-# Latin-D chars I'm particularly thinking about:
-# (side note: "I" has many referents in this file.)
-# ꜲꜳꜴꜵꜶꜷꜸꜹꜼꜽꝒꝓꝔꝕꝚꝛꝜꝝꝠꝡꝪꝫꝸ
-# The ligature pairs are so easy, might as well include them (probably
-# using ampersand though).  P with flourish?  Squirrel tail?  How
-# pretty!  I like the r and rum rotunda, and et actually has something
-# close to usefulness (it was very common for abbreviations, and is the 
-# source of the "z" in abbreviations like oz. and viz.)  Some others 
-# are a little appealing too.
-
-<Multi_key> <A> <ampersand> <A> :	"Ꜳ"	UA732		# LATIN CAPITAL LETTER AA
-<Multi_key> <a> <ampersand> <a> :	"ꜳ"	UA733		# LATIN SMALL LETTER AA
-<Multi_key> <2> <A> :	"Ꜳ"	UA732		# LATIN CAPITAL LETTER AA
-<Multi_key> <2> <a> :	"ꜳ"	UA733		# LATIN SMALL LETTER AA
-<Multi_key> <A> <ampersand> <O>	:	"Ꜵ"	UA734	# LATIN CAPITAL LETTER AO
-<Multi_key> <a> <ampersand> <o>	:	"ꜵ"	UA735	# LATIN SMALL LETTER AO
-<Multi_key> <A> <ampersand> <U>	:	"Ꜷ"	UA736	# LATIN CAPITAL LETTER AU
-<Multi_key> <a> <ampersand> <u>	:	"ꜷ"	UA737	# LATIN SMALL LETTER AU
-<Multi_key> <A> <ampersand> <V> :	"Ꜹ"	UA738	# LATIN CAPITAL LETTER AV
-<Multi_key> <a> <ampersand> <v> :	"ꜹ"	UA739	# LATIN SMALL LETTER AV
-<Multi_key> <A> <ampersand> <Y> :	"Ꜽ"	UA73C	# LATIN CAPITAL LETTER AY
-<Multi_key> <a> <ampersand> <y> :	"ꜽ"	UA73D	# LATIN SMALL LETTER AY
-<Multi_key> <slash> <ampersand> <L> :	"Ꝇ"	UA746	# LATIN CAPITAL LETTER BROKEN L
-<Multi_key> <slash> <ampersand> <l> :	"ꝇ"	UA747	# LATIN SMALL LETTER BROKEN L
-# (See above for reason behind keystrokes)
-<Multi_key> <Z> <period>	:	"Ꝫ"	UA76A	# LATIN CAPITAL LETTER ET
-<Multi_key> <z> <period>	:	"ꝫ"	UA76B	# LATIN SMALL LETTER ET
-<Multi_key> <V> <ampersand> <Y>	:	"Ꝡ"	UA760	# LATIN CAPITAL LETTER VY
-<Multi_key> <v> <ampersand> <y>	:	"ꝡ"	UA761	# LATIN SMALL LETTER VY
-<Multi_key> <C> <Z>	    	:	"Ꝣ"	UA762	# LATIN CAPITAL LETTER VISIGOTHIC Z
-<Multi_key> <c> <z>		:	"ꝣ"	UA763	# LATIN SMALL LETTER VISIGOTHIC Z
-<Multi_key> <L> <ampersand> <L>	:	"Ỻ"	U1EFA	# LATIN CAPITAL LETTER MIDDLE-WELSH LL
-<Multi_key> <l> <ampersand> <l>	:	"ỻ"	U1EFB	# LATIN SMALL LETTER MIDDLE-WELSH LL
-<Multi_key> <V> <ampersand> <V>	:	"Ỽ"	U1EFC	# LATIN CAPITAL LETTER MIDDLE-WELSH V
-<Multi_key> <v> <ampersand> <v>	:	"ỽ"	U1EFD	# LATIN SMALL LETTER MIDDLE-WELSH V
-<Multi_key> <d> <ampersand> <b>	:	"ȸ"	U0238	# LATIN SMALL LETTER DB DIGRAPH
-<Multi_key> <q> <ampersand> <p>	:	"ȹ"	U0239	# LATIN SMALL LETTER QP DIGRAPH
-<Multi_key> <w> <y>	    	:	"ƿ"	U01BF	# LATIN LETTER WYNN
-<Multi_key> <W> <Y>		:	"Ƿ"	U01F7	# LATIN CAPITAL LETTER WYNN
-<Multi_key> <O> <U>		:	"Ȣ"	U0222	# LATIN CAPITAL LETTER OU
-<Multi_key> <o> <u>		:	"ȣ"	U0223	# LATIN SMALL LETTER OU
-<Multi_key> <y> <r>		:	"Ʀ"	U01A6	# LATIN LETTER YR
-
-# Custom additions: Mathematical symbols
-<Multi_key> <exclam> <equal>		: "≠"	U2260		# NOT EQUAL TO
-<Multi_key> <slash> <equal>		: "≠"	U2260		# NOT EQUAL TO
-<Multi_key> <less> <equal>		: "≤"	U2264		# LESS-THAN OR EQUAL TO
-<Multi_key> <greater> <equal>		: "≥"	U2265		# GREATER-THAN OR EQUAL TO
-<Multi_key> <exclam> <less> <greater>   : "≸"	U2278		# NEITHER LESS-THAN NOR GREATER-THAN
-# MUCH is usually enough for me.  No need for VERY.
-<Multi_key> <plus> <less>        	: "≪"	U226A		# MUCH LESS-THAN
-<Multi_key> <plus> <greater> 		: "≫"	U226B		# MUCH GREATER-THAN
-# Damn.  That makes this conflict with the standard plus plus -> #
-<Multi_key> <plus> <plus> <less>        : "⋘"	U22D8		# VERY MUCH LESS-THAN
-<Multi_key> <plus> <plus> <greater>  	: "⋙"	U22D9		# VERY MUCH GREATER-THAN
-<Multi_key> <3> <greater> 		: "⋙"	U22D9		# VERY MUCH GREATER-THAN
-<Multi_key> <3> <less>			: "⋘"	U22D8		# VERY MUCH LESS-THAN
-<Multi_key> <i> <n>			: "∈"	U2208		# ELEMENT OF
-<Multi_key> <exclam> <i> <n>		: "∉"	U2209		# NOT AN ELEMENT OF
-<Multi_key> <U2208> <slash>		: "∉"	U2209		# NOT AN ELEMENT OF (I have ∈ on my keyboard...)
-<Multi_key> <n> <i>			: "∋"	U220B		# CONTAINS AS MEMBER  (I hope this doesn't conflict)
-<Multi_key> <slash> <n> <i>		: "∌"	U220C		# DOES NOT CONTAIN AS MEMBER
-# <exclam><n><i> would conflict, with <exclam> <n> for N WITH UNDERDOT, etc.
-<Multi_key> <U220B> <slash>		: "∌"	U220C		# DOES NOT CONTAIN AS MEMBER
-<Multi_key> <asciitilde> <equal>			: "≅"	U2245		# APPROXIMATELY EQUAL TO (It actually means "congruent"!)
-<Multi_key> <equal> <question>		: "≟"	U225f		# QUESTIONED EQUAL TO
-<Multi_key> <equal> <d> <e> <f>		: "≝"	U225D		# EQUAL TO BY DEFINITION
-<Multi_key> <d> <e> <f> <equal>		: "≝"	U225D		# EQUAL TO BY DEFINITION
-<Multi_key> <equal> <equal>		: "≡"	U2261		# IDENTICAL TO
-<Multi_key> <colon> <equal> 		: "≔"  U2254		# COLON EQUALS
-<Multi_key> <equal> <colon> 		: "≕"  U2255		# EQUALS COLON
-# Using <slash> conflicts.
-<Multi_key> <equal> <bar> <equal>	: "≢"	U2262		# NOT IDENTICAL TO
-# We already have ±
-<Multi_key> <minus> <plus>		: "∓"	U2213		# MINUS OR PLUS SIGN
-<Multi_key> <s> <q>			: "√"	U221A		# SQUARE ROOT
-# keystrokes might not make the most sense, but you know what they mean...
-<Multi_key> <3> <s> <q>			: "∛"	U221B	        # CUBE ROOT
-<Multi_key> <4> <s> <q>			: "∜"	U221C		# FOURTH ROOT
-    # “(Note: I had put the backslash in position 5/15. It enabled the
-    # ALGOL “and” to be “/\” and the “or” to be “\/”.)” --- Bob Bemer,
-    # http://home.ccil.org/~remlaps/www.bobbemer.com/BRACES.HTM, quoting
-    # himself in “A view of the history of the ISO character code”, 1972
-<Multi_key> <slash> <backslash>         : "∧"  U2227           # LOGICAL AND
-<Multi_key> <backslash> <slash>         : "∨"  U2228           # LOGICAL OR
-<Multi_key> <backslash> <underscore> <slash>    : "⊻" U22BB     # XOR
-<Multi_key> <minus> <comma>	     :	"¬"	U00AC 		# NOT SIGN
-<Multi_key> <Multi_key> <asterisk> <o>              : "∘"   U2218           # RING OPERATOR (function composition)
-<Multi_key> <Multi_key> <asterisk> <x>             : "⨯"   U2A2F           # CROSS PRODUCT
-<Multi_key> <Multi_key> <asterisk>  <period>        : "⋅"   U22C5           # DOT OPERATOR (dot product)
-<Multi_key> <0> <slash>                 : "∅"   U2205           # EMPTY SET (thanks jsled!)
-<Multi_key> <slash> <0>                 : "∅"   U2205           # EMPTY SET
-# I'm hoping { can work as a set mnemonic
-<Multi_key> <braceleft> <U>		: "∪"	U222A		# UNION
-<Multi_key> <braceleft> <asciicircum>	: "∩"	U2229		# INTERSECTION
-<Multi_key> <braceleft> <parenleft>	: "⊂"	U2282		# SUBSET OF
-<Multi_key> <braceleft> <equal> <parenleft> : "⊆" U2286		# SUBSET OF OR EQUAL TO
-<Multi_key> <exclam> <braceleft> <parenleft> : "⊄" U2284        # NOT A SUBSET OF
-<Multi_key> <slash> <braceleft> <parenleft>  : "⊄" U2284        # NOT A SUBSET OF
-<Multi_key> <braceleft>	<parenright>	: "⊃"	U2283		# SUPERSET OF
-<Multi_key> <braceleft> <equal> <parenright> : "⊇" U2287	# SUPERSET OF OR EQUAL TO
-<Multi_key> <E> <E>                     : "∃"  U2203           # THERE EXISTS
-# We can't use ! E E, because ! E maps to E-WITH-UNDERDOT.
-<Multi_key> <slash> <E> <E>             : "∄"   U2204           # THERE DOES NOT EXIST
-<Multi_key> <A> <A>                     : "∀"  U2200           # FOR ALL
-<Multi_key> <Multi_key> <Q> <E> <D>     : "∎"   U220E           # END OF PROOF
-<Multi_key> <8> <8>                     : "∞"  U221E           # INFINITY
-<Multi_key> <Multi_key> <a> <l> <e> <p> <h> : "ℵ" U2135	       # ALEF SYMBOL
-<Multi_key> <Multi_key> <a> <l> <e> <p> <0> : "ℵ₀"        # ALEF Null
-<Multi_key> <Multi_key> <a> <l> <e> <p> <1> : "ℵ₁"        # ALEF One
-<Multi_key> <Multi_key> <a> <l> <e> <f> : "ℵ" U2135	       # ALEF SYMBOL
-<Multi_key> <KP_Multiply> <KP_Multiply>    : "∗"   U2217 # ASTERISK OPERATOR
-<Multi_key> <parenleft> <plus> <parenright>     : "⊕"  U2295    # CIRCLED PLUS
-<Multi_key> <parenleft> <minus> <parenright>    : "⊖"  U2296    # CIRCLED MINUS
-<Multi_key> <parenleft> <x> <x> <parenright>    : "⊗"  U2297    # CIRCLED TIMES
-<Multi_key> <parenleft> <slash> <parenright>    : "⊘"  U2298    # CIRCLED DIVISION SLASH
-<Multi_key> <parenleft> <asterisk> <parenright> : "⊛"  U229B    # CIRCLED ASTERISK OPERATOR
-# )- conflicts with system for }.
-<Multi_key> <parenright> <underscore>    : "⟌"   	U27CC		# LONG DIVISION
-<Multi_key> <period> <quotedbl>	   	: "∴"	U2234  		# THEREFORE
-<Multi_key> <quotedbl> <period>	   	: "∵"	U2235  		# BECAUSE
-<Multi_key> <Multi_key> <b> <e> <c> <a> <u> <s> <e>	   	: "∵"	U2235  		# BECAUSE
-<Multi_key> <percent> <percent>		: "‱"	U2031	# PER TEN THOUSAND (basis points)
-<Multi_key> <slash> <u>                : "µ"   U00B5      # MICRO SIGN
-# Ordinal indicators, for femenine and masculine, used in Romance languages
-<Multi_key> <minus> <a>	      	  	: "ª"   U00AA		# FEMININE ORDINAL INDICATOR
-<Multi_key> <minus> <o>			: "º"	U00BA		# MASCULINE ORDINAL INDICATOR
-
-# See also U03A3 (Greek capital sigma)
-<Multi_key> <Multi_key> <s> <u> <m>	: "∑"	U2211		# N-ARY SUMMATION
-# OK, absolutely cannot believe we made it this long without NABLA or INTEGRAL
-# or PARTIAL DIFFERENTIAL
-<Multi_key> <Multi_key> <i> <n> <t>	: "∫"	U222B		# INTEGRAL
-<Multi_key> <Multi_key> <u> <i> <n> <t>	: "⨛"	U2A1B		# UPPER INTEGRAL
-<Multi_key> <Multi_key> <l> <i> <n> <t>	: "⨜"	U2A1C		# LOWER INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <n> <t>	: "∬"	U222C		# DOUBLE INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <i> <n> <t>	: "∭"	U222D		# TRIPLE INTEGRAL
-<Multi_key> <Multi_key> <i> <i> <i> <i> <n> <t>	: "⨌"	U2A0C		# QUADRUPLE INTEGRAL
-<Multi_key> <Multi_key> <o> <i> <n> <t>	: "∮"	U222E		# CONTOUR INTEGRAL
-<Multi_key> <Multi_key> <p> <i> <n> <t>	: "⨕"	U2A15		# SEMICIRCULAR POLE INTEGRAL
-<Multi_key> <Multi_key> <c> <P> <i> <n> <t>	: "⨓"	U2A13		# INTEGRAL AROUND POINT
-<Multi_key> <Multi_key> <o> <i> <i> <n> <t>	: "∯"	U222F		# SURFACE INTEGRAL
-<Multi_key> <Multi_key> <o> <i> <i> <i> <n> <t>	: "∰"	U2230		# VOLUME INTEGRAL
-<Multi_key> <Multi_key> <g> <i> <n> <t>	: "⨘"	U2A18		# GEOMETRIC INTEGRAL
-<Multi_key> <Multi_key> <s> <i> <n> <t>	: "⨋"	U2A0B		# SUM/INTEGRAL
-#Now for some WTF integrals: ⨙ ⨚ 	
-<Multi_key> <Multi_key> <d> <e> <l>	: "∇"	U2207	        # NABLA
-<Multi_key> <Multi_key> <p> <a> <r> <t>   : "∂" U2202		# PARTIAL DIFFERENTIAL
-<Multi_key> <asterisk> <period> <period> <d>   : "∂" U2202	# PARTIAL DIFFERENTIAL
-<Multi_key> <R> <e>    		: "ℜ"	 U211C 	     	# BLACK-LETTER CAPITAL R (Real Part)
-<Multi_key> <I> <m>		: "ℑ"	 U2111		# BLACK-LETTER CAPTIAL I (Imaginary Part)
-<Multi_key> <Multi_key> <h> <b> <a> <r>	:   "ℏ"	U210F	# PLANCK CONSTANT OVER TWO PI
-<Multi_key> <h> <minus>			:   "ℏ"	U210F	# PLANCK CONSTANT OVER TWO PI
-<Multi_key> <h> <p>	    :	"ℎ"	    U210E   # PLANCK CONSTANT
-<Multi_key> <Multi_key> <e> <x> <p> :   "ℯ"	U212F   # SCRIPT SMALL E
-<Multi_key> <e> <1> <0> :	"⏨" 	U23E8   # DECIMAL EXPONENT SYMBOL
-<Multi_key> <w> <p> 	:	"℘"	U2118	# SCRIPT CAPITAL P
-# Would we prefer 20D1 COMBINING RIGHT HARPOON ABOVE?
-<Multi_key> <asciicircum> <greater>     : "⃗"   U20D7           # COMBINING RIGHT ARROW ABOVE (vector)
-# There's a whole passel of these guys starting at U+1D538 but I have no fonts for those.
-<Multi_key> <bar> <C>                   : "ℂ"   U2102           # DOUBLE-STRUCK CAPITAL C (set of complex numbers)
-<Multi_key> <bar> <N>                   : "ℕ"   U2115           # DOUBLE-STRUCK CAPITAL N (natural number)
-<Multi_key> <bar> <P>                   : "ℙ"   U2119           # DOUBLE-STRUCK CAPITAL P 
-<Multi_key> <bar> <Q>                   : "ℚ"   U211A           # DOUBLE-STRUCK CAPITAL Q (set of rational numbers)
-<Multi_key> <bar> <R>                   : "ℝ"   U211D           # DOUBLE-STRUCK CAPITAL R (set of real numbers)
-<Multi_key> <bar> <Z>                   : "ℤ"   U2124           # DOUBLE-STRUCK CAPITAL Z (set of integers)
-<Multi_key> <bar> <H>		: "ℍ" U210d	# DOUBLE-STRUCK CAPITAL H
-<Multi_key> <bar> <e>		: "ⅇ" U2147	# DOUBLE-STRUCK ITALIC SMALL E
-<Multi_key> <bar> <i>		: "ⅈ" U2148	# DOUBLE-STRUCK ITALIC SMALL I
-<Multi_key> <bar> <j>		: "ⅉ" U2149	# DOUBLE-STRUCK ITALIC SMALL J
-<Multi_key> <bar> <asterisk> <p> : "ℼ" U213C	# DOUBLE-STRUCK SMALL PI
-<Multi_key> <bar> <Greek_pi> 	 : "ℼ" U213C	# DOUBLE-STRUCK SMALL PI
-<Multi_key> <bar> <asterisk> <P> : "ℿ" U213F	# DOUBLE-STRUCK CAPITAL PI
-<Multi_key> <bar> <Greek_PI> 	 : "ℿ" U213F	# DOUBLE-STRUCK CAPITAL PI
-<Multi_key> <bar> <asterisk> <S> : "⅀" U2140	# DOUBLE-STRUCK N-ARY SUMMATION
-<Multi_key> <bar> <Greek_SIGMA>  : "⅀" U2140	# DOUBLE-STRUCK N-ARY SUMMATION
-<Multi_key> <bar> <colon>   :	"⦂" U2982	# Z NOTATION TYPE COLON
-# Apparently it is only for historical reasons that this is not unified with
-# ⨟ U+2A1F Z NOTATION SCHEMA COMPOSITION
-<Multi_key> <bar> <semicolon>	:   "⨾"	U2A3E	# Z NOTATION RELATIONAL COMPOSITION
-# The *look* double-struck.
-<Multi_key> <bar> <braceleft>	 : "⦃" U2983	# LEFT WHITE CURLY BRACKET
-<Multi_key> <bar> <braceright>	 : "⦄" U2984	# RIGHT WHITE CURLY BRACKET 
-# ⦅⦆⦇⦈⦉⦊ too?
-# The rest of that block?  Some there may be worth it.
-# Ooh.  There are lots of nice brackets to consider: 
-# ⟅⟆⟨⟩⟪⟫⟬⟭⟮⟯⦑⦒⦓⦔⦕⦖⦗⦘⧼⧽⧘⧙⧚⧛⸢⸣⸤⸥⸨⸩「」『』
-# Others too, of course, but these to start with.  Some are likely worthy.
-<Multi_key> <S> <parenleft>  	: "⟅" U27C5 	# LEFT S-SHAPED BAG DELIMITER
-<Multi_key> <S> <parenright>	: "⟆" U27C6 	# RIGHT S-SHAPED BAG DELIMITER
-<Multi_key> <E> <bracketleft>   : "⁅" U2045     # LEFT SQUARE BRACKET WITH QUILL
-<Multi_key> <E> <bracketright>  : "⁆" U2046     # RIGHT SQUARE BRACKET WITH QUILL
-# There are a lot of angle brackets (3008/9, 27E8/9, 2329/A).  I'm deciding
-# to go with the mathematical brackets from now on, since they seem to be
-# better supported.
-<Multi_key> <less> <parenleft>	: "⟨" U27E8	# MATHEMATICAL LEFT ANGLE BRACKET
-<Multi_key> <greater> <parenright>: "⟩" U27E9	# MATHEMATICAL RIGHT ANGLE BRACKET
-<Multi_key> <bar> <bracketleft>	:   "⟦"	U27E6	# MATHEMATICAL LEFT WHITE SQUARE BRACKET
-<Multi_key> <bar> <bracketright>:   "⟧"	U27E7	# MATHEMATICAL RIGHT WHITE SQUARE BRACKET
-<Multi_key> <2> <greater> <parenleft> :   "⟪"	U27EA	# MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
-<Multi_key> <2> <less> <parenright>   :   "⟫"	U27EB	# MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-# Keystrokes inconsistent.
-<Multi_key> <bar> <bar> <parenleft>	:   "⟬"  U27EC	# MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
-<Multi_key> <bar> <bar> <parenright>:   "⟭"	U27ED	# MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
-<Multi_key> <underscore> <underscore> <parenleft> :   "⟮"  U27EE	# MATHEMATICAL LEFT FLATTENED PARENTHESIS
-<Multi_key> <underscore> <underscore> <parenright>:   "⟯"  U27EF	# MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-<Multi_key> <parenleft> <bracketleft>	:   "⦗"	U2997	# LEFT BLACK TORTOISE SHELL BRACKET
-<Multi_key> <parenright> <bracketright> :   "⦘"	U2998	# RIGHT BLACK TORTOISE SHELL BRACKET
-# Do the underlined brackets, ones with ticks, dots, etc?
-<Multi_key> <percent> <parenleft>:  "⧘"	U29D8	# LEFT WIGGLY FENCE
-<Multi_key> <percent> <parenright>: "⧙"	U29D9	# RIGHT WIGGLY FENCE
-<Multi_key> <2> <percent> <parenleft>:	"⧚" U29DA   # LEFT DOUBLE WIGGLY FENCE
-<Multi_key> <2> <percent> <parenright>:	"⧛" U29DB   # RIGHT DOUBLE WIGGLY FENCE
-<Multi_key> <parenleft> <ampersand> <parenleft>:  "⸨"  U2E28 # LEFT DOUBLE PARENTHESIS
-<Multi_key> <parenright> <ampersand> <parenright>:  "⸩"  U2E29 # RIGHT DOUBLE PARENTHESIS
-<Multi_key> <2> <parenleft>:  "⸨"  U2E28 # LEFT DOUBLE PARENTHESIS
-<Multi_key> <2> <parenright>:  "⸩"  U2E29 # RIGHT DOUBLE PARENTHESIS
-<Multi_key> <Z> <parenleft>	    : "༼"     U0F3C   # TIBETAN MARK ANG KHANG GYON
-<Multi_key> <Z> <parenright>	    : "༽"     U0F3D   # TIBETAN MARK ANG KHANG GYAS
-# I'm thinking shape-mnemonics for these, somehow:
-<Multi_key> <L> <bracketleft>       : "⌊"     U230A   # LEFT FLOOR
-<Multi_key> <L> <bracketright>	    : "⌋"     U230B   # RIGHT FLOOR
-<Multi_key> <7> <bracketleft>	    : "⌈"     U2308   # LEFT CEILING
-<Multi_key> <7> <bracketright>	    : "⌉"     U2309   # RIGHT CEILING
-# These are actually quotes, hence the mnemonic.
-<Multi_key> <7> <apostrophe>	    : "「"     UFF62   # HALFWIDTH LEFT CORNER BRACKET
-<Multi_key> <L> <apostrophe>	    : "」"     UFF63   # HALFWIDTH RIGHT CORNER BRACKET
-<Multi_key> <7> <quotedbl>	    : "『"    U300E   # LEFT WHITE CORNER BRACKET
-<Multi_key> <L> <quotedbl>	    : "』"    U300F   # RIGHT WHITE CORNER BRACKET
-<Multi_key> <parenleft> <ampersand> <parenright> :  "≬"	U226C	# BETWEEN
-<Multi_key> <l> <l>		: "ℓ" U2113	# SCRIPT SMALL L
-<Multi_key> <bracketleft> <bracketleft> : "⊏"   U228F           # SQUARE IMAGE OF
-<Multi_key> <bracketleft> <equal>       : "⊑"   U2291           # SQUARE IMAGE OF OR EQUAL TO
-<Multi_key> <bracketleft> <underscore>  : "⊑"   U2291           # SQUARE IMAGE OF OR EQUAL TO
-<Multi_key> <bracketright> <bracketright>: "⊐"  U2290           # SQUARE ORIGINAL OF
-<Multi_key> <bracketright> <equal>      : "⊒"   U2292           # SQUARE ORIGINAL OF OR EQUAL TO
-<Multi_key> <bracketright> <underscore> : "⊒"   U2292           # SQUARE ORIGINAL OF OR EQUAL TO
-# If I did more Haskell, I'd want this more:
-<Multi_key> <underscore> <bar> <underscore>:	"⊥"	 U22A5	# UP TACK (bottom) or should we use U27C2 PERPENDICULAR?
-<Multi_key> <underscore> <exclam> <underscore>:	"⊤"	 U22A4	# DOWN TACK (opposite of False)
-<Multi_key> <underscore> <greater> <underscore>:	"⊢"	 U22A2	# RIGHT TACK
-<Multi_key> <underscore> <less> <underscore>:	"⊣"	 U22A3	# LEFT TACK
-# Handy for UNIX filenames... but XXX conflicts with standard <Multi_key> <slash> <slash> → "\"
-<Multi_key> <slash> <slash>		: "⁄"	U2044	# FRACTION SLASH
-
-# The system file gives us subscript numbers, plus/minus, and parens.  But
-# there are letters missing.  It would be nice to have at least a few of them.
-
-# block U+208x
-<Multi_key> <underscore> <0>  	       : "₀"  U2080   	  # SUBSCRIPT ZERO
-<Multi_key> <underscore> <1>  	       : "₁"  U2081   	  # SUBSCRIPT ONE
-<Multi_key> <underscore> <2>  	       : "₂"  U2082   	  # SUBSCRIPT TWO
-<Multi_key> <underscore> <3>  	       : "₃"  U2083   	  # SUBSCRIPT THREE
-<Multi_key> <underscore> <4>  	       : "₄"  U2084   	  # SUBSCRIPT FOUR
-<Multi_key> <underscore> <5>  	       : "₅"  U2085   	  # SUBSCRIPT FIVE
-<Multi_key> <underscore> <6>  	       : "₆"  U2086   	  # SUBSCRIPT SIX
-<Multi_key> <underscore> <7>  	       : "₇"  U2087   	  # SUBSCRIPT SEVEN
-<Multi_key> <underscore> <8>  	       : "₈"  U2088   	  # SUBSCRIPT EIGHT
-<Multi_key> <underscore> <9>  	       : "₉"  U2089   	  # SUBSCRIPT NONE
-<Multi_key> <underscore> <plus>	       : "₊"  U208A	  # SUBSCRIPT PLUS
-<Multi_key> <underscore> <minus>       : "₋"  U208B	  # SUBSCRIPT MINUS
-<Multi_key> <underscore> <equal>           : "₌"  U208C	  # SUBSCRIPT EQUALS SIGN
-<Multi_key> <underscore> <parenleft>           : "₍"  U208D	  # SUBSCRIPT LEFT PARENTHESIS
-<Multi_key> <underscore> <parenright>           : "₎"  U208E	  # SUBSCRIPT RIGHT PARENTHESIS
-
-# block U+209x
-<Multi_key> <underscore> <a>	       : "ₐ"  U2090	  # LATIN SUBSCRIPT SMALL LETTER A
-<Multi_key> <underscore> <e>	       : "ₑ"  U2091	  # LATIN SUBSCRIPT SMALL LETTER E
-<Multi_key> <underscore> <o>	       : "ₒ"  U2092	  # LATIN SUBSCRIPT SMALL LETTER O
-<Multi_key> <underscore> <x>	       : "ₓ"  U2093	  # LATIN SUBSCRIPT SMALL LETTER X
-<Multi_key> <underscore> <h>	       : "ₕ"  U2095	  # LATIN SUBSCRIPT SMALL LETTER H
-<Multi_key> <underscore> <k>           : "ₖ"  U2096	  # LATIN SUBSCRIPT SMALL LETTER K
-<Multi_key> <underscore> <l>           : "ₗ"  U2097	  # LATIN SUBSCRIPT SMALL LETTER L
-<Multi_key> <underscore> <m>	       : "ₘ"  U2098	  # LATIN SUBSCRIPT SMALL LETTER M
-<Multi_key> <underscore> <n>	       : "ₙ"  U2099	  # LATIN SUBSCRIPT SMALL LETTER N
-<Multi_key> <underscore> <p>	       : "ₚ"  U209A	  # LATIN SUBSCRIPT SMALL LETTER P
-<Multi_key> <underscore> <s>	       : "ₛ"  U209B	  # LATIN SUBSCRIPT SMALL LETTER S
-<Multi_key> <underscore> <t>	       : "ₜ"  U209C	  # LATIN SUBSCRIPT SMALL LETTER T
-
-# subscripts in other blocks
-<Multi_key> <underscore> <i>  	       : "ᵢ"  U1D62   	  # LATIN SUBSCRIPT SMALL LETTER I
-<Multi_key> <underscore> <j>           : "ⱼ"  U2C7C	  # LATIN SUBSCRIPT SMALL LETTER J
-<Multi_key> <underscore> <r>           : "ᵣ"  U1D63       # LATIN SUBSCRIPT SMALL LETTER R
-<Multi_key> <underscore> <u>           : "ᵤ"  U1D64       # LATIN SUBSCRIPT SMALL LETTER U
-<Multi_key> <underscore> <v>           : "ᵥ"  U1D65       # LATIN SUBSCRIPT SMALL LETTER V
-<Multi_key> <underscore> <asterisk> <b> : "ᵦ"  U1D66     # GREEK SUBSCRIPT SMALL LETTER BETA
-<Multi_key> <underscore> <asterisk> <g> : "ᵧ"  U1D67     # GREEK SUBSCRIPT SMALL LETTER GAMMA
-<Multi_key> <underscore> <asterisk> <r> : "ᵨ"  U1D68     # GREEK SUBSCRIPT SMALL LETTER RHO
-<Multi_key> <underscore> <asterisk> <f> : "ᵩ"  U1D69     # GREEK SUBSCRIPT SMALL LETTER PHI
-<Multi_key> <underscore> <asterisk> <x> : "ᵪ"  U1D6A     # GREEK SUBSCRIPT SMALL LETTER CHI
-
-# Custom additions: Greek letters.  Mapping corresponds to Emacs Greek
-# input method.  Aristotle Pagaltzis informs me that this is the
-# standard Greek keyboard layout, which is good.
-<Multi_key> <asterisk> <a>		: "α"	U03B1		# GREEK SMALL LETTER ALPHA
-<Multi_key> <asterisk> <b>		: "β"	U03B2		# GREEK SMALL LETTER BETA
-<Multi_key> <asterisk> <c>		: "ψ"	U03C8		# GREEK SMALL LETTER PSI
-<Multi_key> <asterisk> <d>		: "δ"	U03B4		# GREEK SMALL LETTER DELTA
-<Multi_key> <asterisk> <e>		: "ε"	U03B5		# GREEK SMALL LETTER EPSILON
-<Multi_key> <asterisk> <f>		: "φ"	U03C6		# GREEK SMALL LETTER PHI
-<Multi_key> <asterisk> <g>		: "γ"	U03B3		# GREEK SMALL LETTER GAMMA
-<Multi_key> <asterisk> <h>		: "η"	U03B7		# GREEK SMALL LETTER ΕΤΑ
-<Multi_key> <asterisk> <i>		: "ι"	U03B9		# GREEK SMALL LETTER ΙΟΤΑ
-<Multi_key> <asterisk> <j>		: "ξ"	U03BE		# GREEK SMALL LETTER XI
-<Multi_key> <asterisk> <k>		: "κ"	U03BA		# GREEK SMALL LETTER KAPPA
-<Multi_key> <asterisk> <l>		: "λ"	U03BB		# GREEK SMALL LETTER LAMBDA
-<Multi_key> <asterisk> <m>		: "μ"	U03BC		# GREEK SMALL LETTER MU
-<Multi_key> <asterisk> <n>		: "ν"	U03BD		# GREEK SMALL LETTER NU
-<Multi_key> <asterisk> <o>		: "ο"	U03BF		# GREEK SMALL LETTER OMICRON
-<Multi_key> <asterisk> <p>		: "π"	U03C0		# GREEK SMALL LETTER PI
-# no mapping for q; in Emacs that's ";"
-# U037E GREEK QUESTION MARK is canonically equivalent to U003B SEMICOLON.
-# ... But that won't stop us from doing it anyway!!!
-<Multi_key> <asterisk> <period> <question> : ";"  U037E		# GREEK QUESTION MARK
-<Multi_key> <asterisk> <r>		: "ρ"	U03C1		# GREEK SMALL LETTER RHO
-<Multi_key> <asterisk> <s>		: "σ"	U03C3		# GREEK SMALL LETTER SIGMA
-<Multi_key> <asterisk> <t>		: "τ"	U03C4		# GREEK SMALL LETTER TAU
-<Multi_key> <asterisk> <u>		: "θ"	U03B8		# GREEK SMALL LETTER THETA
-<Multi_key> <asterisk> <v>		: "ω"	U03C9		# GREEK SMALL LETTER OMEGA
-<Multi_key> <asterisk> <w>		: "ς"	U03C2		# GREEK SMALL LETTER FINAL SIGMA
-<Multi_key> <asterisk> <x>		: "χ"	U03C7		# GREEK SMALL LETTER CHI
-<Multi_key> <asterisk> <y>		: "υ"	U03C5		# GREEK SMALL LETTER UPSILON
-<Multi_key> <asterisk> <z>		: "ζ"	U03B6		# GREEK SMALL LETTER ZETA
-
-# Capital greek letters.
-<Multi_key> <asterisk> <A>		: "Α"	U0391		# GREEK CAPITAL LETTER ALPHA
-<Multi_key> <asterisk> <B>		: "Β"	U0392		# GREEK CAPITAL LETTER BETA
-<Multi_key> <asterisk> <C>		: "Ψ"	U03A8		# GREEK CAPITAL LETTER PSI
-<Multi_key> <asterisk> <D>		: "Δ"	U0394		# GREEK CAPITAL LETTER DELTA
-<Multi_key> <asterisk> <E>		: "Ε"	U0395		# GREEK CAPITAL LETTER EPSILON
-<Multi_key> <asterisk> <F>		: "Φ"	U03A6		# GREEK CAPITAL LETTER PHI
-<Multi_key> <asterisk> <G>		: "Γ"	U0393		# GREEK CAPITAL LETTER GAMMA
-<Multi_key> <asterisk> <H>		: "Η"	U0397		# GREEK CAPITAL LETTER ΕΤΑ
-<Multi_key> <asterisk> <I>		: "Ι"	U0399		# GREEK CAPITAL LETTER ΙΟΤΑ
-<Multi_key> <asterisk> <J>		: "Ξ"	U039E		# GREEK CAPITAL LETTER XI
-<Multi_key> <asterisk> <K>		: "Κ"	U039A		# GREEK CAPITAL LETTER KAPPA
-<Multi_key> <asterisk> <L>		: "Λ"	U039B		# GREEK CAPITAL LETTER LAMBDA
-<Multi_key> <asterisk> <M>		: "Μ"	U039C		# GREEK CAPITAL LETTER MU
-<Multi_key> <asterisk> <N>		: "Ν"	U039D		# GREEK CAPITAL LETTER NU
-<Multi_key> <asterisk> <O>		: "Ο"	U039F		# GREEK CAPITAL LETTER OMICRON
-<Multi_key> <asterisk> <P>		: "Π"	U03A0		# GREEK CAPITAL LETTER PI
-# see below for Q qoppa; in Emacs Q is “:”
-<Multi_key> <asterisk> <R>		: "Ρ"	U03A1		# GREEK CAPITAL LETTER RHO
-<Multi_key> <asterisk> <S>		: "Σ"	U03A3		# GREEK CAPITAL LETTER SIGMA
-<Multi_key> <asterisk> <T>		: "Τ"	U03A4		# GREEK CAPITAL LETTER TAU
-<Multi_key> <asterisk> <U>		: "Θ"	U0398		# GREEK CAPITAL LETTER THETA
-<Multi_key> <asterisk> <V>		: "Ω"	U03A9		# GREEK CAPITAL LETTER OMEGA
-# Emacs maps W to "Σ", but I think that’s stupid
-# I think that's from the Greek keyboard.
-<Multi_key> <asterisk> <X>		: "Χ"	U03A7		# GREEK CAPITAL LETTER CHI
-<Multi_key> <asterisk> <Y>		: "Υ"	U03A5		# GREEK CAPITAL LETTER UPSILON
-<Multi_key> <asterisk> <Z>		: "Ζ"	U0396		# GREEK CAPITAL LETTER ZETA
-
-# Some archaic Greek.  If we only wanted *normal* characters we wouldn't be
-# doing this at all!
-# "period" will indicate a sort of variant of some kind; asterisk is still the "greek" marker
-<Multi_key> <asterisk> <period> <p>	: "ϖ"	U03D6		# GREEK PI SYMBOL
-# Reserving .f in case we want PHI SYMBOL.  Digamma was "w" sound anyway.
-<Multi_key> <asterisk> <period> <w>	: "ϝ"	U03DD		# GREEK SMALL LETTER DIGAMMA
-<Multi_key> <asterisk> <period> <W>	: "Ϝ"	U03DC		# GREEK CAPITAL LETTER DIGAMMA
-<Multi_key> <asterisk> <Q>	: "Ϟ"	U03DE	# GREEK LETTER QOPPA
-<Multi_key> <asterisk> <q>	: "ϟ"	U03DF	# GREEK SMALL LETTER QOPPA
-<Multi_key> <asterisk> <period> <Q>	: "Ϙ"	U03D8	# GREEK LETTER ARCHAIC QOPPA
-<Multi_key> <asterisk> <period> <q>	: "ϙ"	U03D9	# GREEK SMALL LETTER ARCHAIC QOPPA
-<Multi_key> <asterisk> <ampersand>	: "ϗ"	U03D7	# GREEK KAI SYMBOL
-<Multi_key> <asterisk> <period> <Z>	: "Ϡ"	U03E0	# GREEK LETTER SAMPI
-<Multi_key> <asterisk> <period> <z>	: "ϡ"	U03E1	# GREEK SMALL LETTER SAMPI
-<Multi_key> <asterisk> <period> <period> <Z> : "Ͳ"  U0372  # GREEK CAPITAL LETTER ARCHAIC SAMPI
-<Multi_key> <asterisk> <period> <period> <z> : "ͳ"  U0373  # GREEK SMALL LETTER ARCHAIC SAMPI
-# Sorry, couldn't think of better ones for these.  Might want .s for SAN.
-<Multi_key> <asterisk> <question>      : "Ϛ"	U03DA	# GREEK LETTER STIGMA
-<Multi_key> <asterisk> <slash>	       : "ϛ"	U03DB	# GREEK SMALL LETTER STIGMA
-<Multi_key> <asterisk> <apostrophe>    : "ʹ"	U02B9	# MODIFIER LETTER PRIME, canonically equivalent to U0374 GREEK NUMERAL SIGN
-# While we're at it...
-<Multi_key> <asterisk> <period> <apostrophe>	: "′"	U2032	# PRIME
-<Multi_key> <asterisk> <period> <quotedbl>      : "″"	U2033	# DOUBLE PRIME
-<Multi_key> <asterisk> <comma>	       : "͵"	U0375	# GREEK LOWER NUMERAL SIGN (for thousands)
-# Do we want BETA SYMBOL, RHO SYMBOL, KAPPA SYMBOL, PHI SYMBOL, THETA SYMBOL?
-# The format makes them obvious enough I guess.  PI SYMBOL is different enough
-# that there's no question, and it is separate from these.
-<Multi_key> <asterisk> <period> <b>    : "ϐ"	U03D0	# GREEK BETA SYMBOL
-<Multi_key> <asterisk> <period> <u>    : "ϑ"	U03D1	# GREEK THETA SYMBOL
-<Multi_key> <asterisk> <period> <Y>    : "ϒ"	U03D2	# GREEK UPSILON WITH HOOK SYMBOL
-<Multi_key> <asterisk> <period> <f>    : "ϕ"	U03D5	# GREEK PHI SYMBOL
-<Multi_key> <asterisk> <period> <k>    : "ϰ"	U03F0	# GREEK KAPPA SYMBOL
-<Multi_key> <asterisk> <period> <r>    : "ϱ"	U03F1	# GREEK RHO SYMBOL
-<Multi_key> <asterisk> <period> <U>    : "ϴ"	U03F4	# GREEK CAPITAL THETA SYMBOL
-<Multi_key> <asterisk> <period> <e>    : "ϵ"	U03F5	# GREEK LUNATE EPSILON SYMBOL
-# Not doing the lunate sigmas and dotted versions thereof...  What about SAN, which is at least a letter?
-<Multi_key> <asterisk> <period> <s>	 : "ϻ"	  U03FB	      # GREEK SMALL LETTER SAN
-<Multi_key> <asterisk> <period> <S>	 : "Ϻ"	  U03FA	      # GREEK CAPITAL LETTER SAN
-
-# If you wanted to actually type in Greek, you would also need άίέ
-# etc.  But you would probably just switch to a Greek keyboard layout.
-
-# Custom additions: fractions
-<Multi_key> <1> <3>                     : "⅓"  U2153           # VULGAR FRACTION ONE THIRD
-<Multi_key> <2> <3>                     : "⅔"  U2154           # VULGAR FRACTION TWO THIRDS
-# more extensive fractions from jsled
-<Multi_key> <1> <5>                     : "⅕"  U2155           # VULGAR FRACTION ONE FIFTH
-<Multi_key> <2> <5>                     : "⅖" U2156            # VULGAR FRACTION TWO FIFTHS
-<Multi_key> <3> <5>                     : "⅗" U2157            # VULGAR FRACTION THREE FIFTHS
-<Multi_key> <4> <5>                     : "⅘" U2158            # VULGAR FRACTION FOUR FIFTHS
-<Multi_key> <1> <6>                     : "⅙" U2159            # VULGAR FRACTION ONE SIXTH
-<Multi_key> <5> <6>                     : "⅚" U215A            # VULGAR FRACTION FIVE SIXTHS
-<Multi_key> <1> <8>                     : "⅛" U215B           # VULGAR FRACTION ONE EIGHTH
-<Multi_key> <3> <8>                     : "⅜" U215C           # VULGAR FRACTION THREE EIGHTHS
-<Multi_key> <5> <8>                     : "⅝" U215D           # VULGAR FRACTION FIVE EIGHTHS
-<Multi_key> <7> <8>                     : "⅞" U215E           # VULGAR FRACTION SEVEN EIGHTHS
-<Multi_key> <1> <7>			: "⅐" U2150	      # VULGAR FRACTION ONE SEVENTH
-<Multi_key> <1> <9>			: "⅑" U2151	      # VULGAR FRACTION ONE NINTH
-<Multi_key> <1> <x>			: "⅒" U2152	      # VULGAR FRACTION ONE TENTH
-<Multi_key> <0> <3>			: "↉" U2189	      # VULGAR FRACTION ZERO THIRDS
-<Multi_key> <1> <slash>			: "⅟" U215F	      # FRACTION NUMERATOR ONE
-
-# How about roman numerals?  Percent for numerical mnemonic?
-# Does this go against the spirit of this file?  These symbols are accessible 
-# as regular letters and would look okay.  Maybe only for I-X?
-<Multi_key> <percent> <1>		: "ⅰ"	U2170		# SMALL ROMAN NUMERAL ONE
-<Multi_key> <percent> <2>		: "ⅱ"	U2171		# SMALL ROMAN NUMERAL TWO
-<Multi_key> <percent> <3>		: "ⅲ"	U2172		# SMALL ROMAN NUMERAL THREE
-<Multi_key> <percent> <4>		: "ⅳ"	U2173		# SMALL ROMAN NUMERAL FOUR
-<Multi_key> <percent> <5>		: "ⅴ"	U2174		# SMALL ROMAN NUMERAL FIVE
-<Multi_key> <percent> <6>		: "ⅵ"	U2175		# SMALL ROMAN NUMERAL SIX
-<Multi_key> <percent> <7>		: "ⅶ"	U2176		# SMALL ROMAN NUMERAL SEVEN
-<Multi_key> <percent> <8>		: "ⅷ"	U2177		# SMALL ROMAN NUMERAL EIGHT
-<Multi_key> <percent> <9>		: "ⅸ"	U2178		# SMALL ROMAN NUMERAL NINE
-<Multi_key> <percent> <x>		: "ⅹ"	U2179		# SMALL ROMAN NUMERAL TEN
-# How do we handle eleven and twelve?
-<Multi_key> <percent> <underscore> <1>	: "ⅺ"	U217A		# SMALL ROMAN NUMERAL ELEVEN
-<Multi_key> <percent> <underscore> <2>	: "ⅻ"	U217B		# SMALL ROMAN NUMERAL TWELVE
-# That okay?
-<Multi_key> <percent> <l>		: "ⅼ"	U217C		# SMALL ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <c>		: "ⅽ"	U217D		# SMALL ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <d>		: "ⅾ"	U217E		# SMALL ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <m>		: "ⅿ"	U217F		# SMALL ROMAN NUMERAL ONE THOUSAND
-###
-<Multi_key> <percent> <0> <1>		: "Ⅰ"	U2160		# ROMAN NUMERAL ONE
-<Multi_key> <percent> <0> <2>		: "Ⅱ"	U2161		# ROMAN NUMERAL TWO
-<Multi_key> <percent> <0> <3>		: "Ⅲ"	U2162		# ROMAN NUMERAL THREE
-<Multi_key> <percent> <0> <4>		: "Ⅳ"	U2163		# ROMAN NUMERAL FOUR
-<Multi_key> <percent> <0> <5>		: "Ⅴ"	U2164		# ROMAN NUMERAL FIVE
-<Multi_key> <percent> <0> <6>		: "Ⅵ"	U2165		# ROMAN NUMERAL SIX
-<Multi_key> <percent> <0> <7>		: "Ⅶ"	U2166		# ROMAN NUMERAL SEVEN
-<Multi_key> <percent> <0> <8>		: "Ⅷ"	U2167		# ROMAN NUMERAL EIGHT
-<Multi_key> <percent> <0> <9>		: "Ⅸ"	U2168		# ROMAN NUMERAL NINE
-<Multi_key> <percent> <0> <x>		: "Ⅹ"	U2169		# ROMAN NUMERAL TEN
-# How do we handle eleven and twelve?
-<Multi_key> <percent> <underscore> <0> <1>	: "Ⅺ"	U216A	# ROMAN NUMERAL ELEVEN
-<Multi_key> <percent> <underscore> <0> <2>	: "Ⅻ"	U216B	# ROMAN NUMERAL TWELVE
-<Multi_key> <percent> <0> <l>		: "Ⅼ"	U216C		# ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <0> <c>		: "Ⅽ"	U216D		# ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <0> <d>		: "Ⅾ"	U216E		# ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <0> <m>		: "Ⅿ"	U216F		# ROMAN NUMERAL ONE THOUSAND
-<Multi_key> <percent> <X>		: "Ⅹ"	U2169		# ROMAN NUMERAL TEN
-<Multi_key> <percent> <L>		: "Ⅼ"	U216C		# ROMAN NUMERAL FIFTY
-<Multi_key> <percent> <C>		: "Ⅽ"	U216D		# ROMAN NUMERAL ONE HUNDRED
-<Multi_key> <percent> <D>		: "Ⅾ"	U216E		# ROMAN NUMERAL FIVE HUNDRED
-<Multi_key> <percent> <M>		: "Ⅿ"	U216F		# ROMAN NUMERAL ONE THOUSAND
-<Multi_key> <percent> <0> <C> <D>	: "ↀ"	U2180		# ROMAN NUMERAL ONE THOUSAND C D
-<Multi_key> <percent> <0> <D> 		: "ↁ"	U2181		# ROMAN NUMERAL FIVE THOUSAND
-<Multi_key> <percent> <0> <M>		: "ↂ"	U2182		# ROMAN NUMERAL TEN THOUSAND
-<Multi_key> <percent> <0> <0> <D>	: "ↇ"	U2187		# ROMAN NUMERAL FIFTY THOUSAND
-<Multi_key> <percent> <0> <0> <M>	: "ↈ"	U2188		# ROMAN NUMERAL ONE HUNDRED THOUSAND
-
-
-# Custom additions: for chat (kragen)
-<Multi_key> <parenleft> <colon>         : "☻"   U263B           # BLACK SMILING FACE
-<Multi_key> <colon> <parenright>        : "☺"   U263A           # WHITE SMILING FACE
-<Multi_key> <colon> <parenleft>         : "☹"   U2639           # WHITE FROWNING FACE
-<Multi_key> <colon> <asciitilde>	: "⍨"   U2368		# APL FUNCTIONAL SYMBOL TILDE DIAERESIS
-<Multi_key> <colon> <bar>		: "⸚"   U2E1A		# HYPHEN WITH DIAERESIS
-<Multi_key> <colon> <o> <o> <parenright>  :  "°͜°"    # Funny smiley-face.
-# Those are archaic cyrilic letters... but look so _perfect_ for use
-# in chat. And about the last, the "multiocular O"... Well, I don't
-# know what it can be used for, but given the description, how could I
-# leave it out‽
-# (I guess using U+1F440 EYES would be more straightforward, but not as funny?)
-<Multi_key> <O> <period> <O>		: "Ꙭ"	UA66C		# CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O * used in the dual of words based on the root for 'eye'
-<Multi_key> <o> <period> <o>		: "ꙭ"  UA66D		# CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
-<Multi_key> <O> <colon>	 		: "Ꙫ"  UA66A		# CYRILLIC CAPITAL LETTER BINOCULAR O * used in the dual of words based on the root for 'eye'
-<Multi_key> <o> <colon> 		: "ꙫ"  UA66B 		# CYRILLIC SMALL LETTER BINOCULAR O
-<Multi_key> <o> <plus>			: "ꙮ"  UA66E		# CYRILLIC LETTER MULTIOCULAR O * used in the epithet 'many-eyed'
-# While we're doing stacks of circles with dots.
-<Multi_key> <o> <3>			: "߷"	U07F7		# NKO SYMBOL GBAKURUNEN
-<Multi_key> <exclam> <question>         : "‽"   U203D           # INTERROBANG
-<Multi_key> <question> <exclam>         : "⸘"	U2E18		# INVERTED INTERROBANG, standard now.
-<Multi_key> <questiondown> <exclamdown>	: "⸘"	U2E18		# INVERTED INTERROBANG (if you have a ¡ key.  Otherwise...? "?i" maybe?
-<Multi_key> <exclamdown> <questiondown>	: "⸘"	U2E18		# INVERTED INTERROBANG (if you have a ¡ key.  Otherwise...? "?i" maybe?
-<Multi_key> <question> <less>	      : "⸮"	  U2E2E		# REVERSED QUESTION MARK
-<Multi_key> <question> <BackSpace>      : "⸮"	  U2E2E		# REVERSED QUESTION MARK
-<Multi_key> <question> <ampersand> <question>	  : "⁇"	 U2047	# DOUBLE QUESTION MARK
-<Multi_key> <2> <question>	  : "⁇"	 U2047	# DOUBLE QUESTION MARK
-<Multi_key> <question> <ampersand> <exclam>	  : "⁈"	 U2048	# QUESTION EXCLAMATION MARK
-<Multi_key> <exclam> <ampersand> <question>	  : "⁉"	 U2049	# EXCLAMATION QUESTION MARK
-<Multi_key> <exclam> <ampersand> <exclam>	  : "‼"	 U203C	# DOUBLE EXCLAMATION MARK
-<Multi_key> <2> <exclam>	  : "‼"	 U203C	# DOUBLE EXCLAMATION MARK
-<Multi_key> <2> <colon>		  : "∷"	 U2237	# PROPORTION -- not strictly 2 times COLON
-<Multi_key> <semicolon> <less>	 		  : "⁏"	 U204F	# REVERSED SEMICOLON
-<Multi_key> <semicolon> <BackSpace>	 		  : "⁏"	 U204F	# REVERSED SEMICOLON
-# Keep looking into big hunks of Latin Extended-D, A720- et seq.
-<Multi_key> <less> <3>                  : "♥"  U2665            # BLACK HEART SUIT
-<Multi_key> <3> <3>			: "♣" U2663		# BLACK CLUB SUIT
-<Multi_key> <o> <8>			: "♣" U2663		# BLACK CLUB SUIT
-<Multi_key> <c> <3>			: "♣" U2663		# BLACK CLUB SUIT
-<Multi_key> <less> <greater>		: "♢" U2662		# WHITE DIAMOND SUIT
-<Multi_key> <3> <minus>		: "♠" U2660		# BLACK SPADE SUIT
-<Multi_key> <less> <braceright>	: "♠" U2660		# BLACK SPADE SUIT
-<Multi_key> <E> <greater>		: "♡" U2661		# WHITE HEART SUIT
-# "shamrock" is too long; there IS a limit to these!
-<Multi_key> <Multi_key> <s> <h> <m> <r> <c> <k>		: "☘" U2618   # SHAMROCK
-<Multi_key> <Multi_key> <s> <h> <a> <m> <r> <o>		: "☘" U2618   # SHAMROCK
-<Multi_key> <Multi_key> <p> <c>         : "☮"   U262E           # PEACE SYMBOL
-<Multi_key> <Multi_key> <p> <e> <a> <c> <e> : "☮"   U262E           # PEACE SYMBOL
-<Multi_key> <Multi_key> <y> <y>		: "☯" U262F		# YIN YANG
-<Multi_key> <Multi_key> <y> <i>	<n> <y> <a> <n>	: "☯" U262F	# YIN YANG
-# And now that we are into hearts...
-<Multi_key> <Left> <less> <3>           : "❥"  U2765            # ROTATED HEAVY BLACK HEART BULLET
-<Multi_key> <exclam> <less> <3>         : "❣"  U2763            # HEAVY HEART EXCLAMATION MARK ORNAMENT
-<Multi_key> <f> <less> <3>              : "❦"  U2766            # FLORAL HEART
-<Multi_key> <Left> <f> <less> <3>       : "❧"  U2767            # ROTATED FLORAL HEART BULLET
-<Multi_key> <Right> <f> <less> <3>      : "☙"  U2619            # REVERSED ROTATED FLORAL HEART BULLET
-<Multi_key> <Multi_key> <t> <e> <l>			: "☎" 	U260E		# BLACK TELEPHONE
-<Multi_key> <Multi_key> <t> <e> <a>		: "☕"	U2615		# HOT BEVERAGE
-# These last two bother me less, though they can still be improved.
-# Other possibly useful symbols:
-# 2668 HOT SPRINGS (for chat, for running off to shower?)
-# I want 2713-2714 and 2717-2718
-# We need a Dingbats prefix, for ❛❜❝❞❢
-<Multi_key> <bracketleft> <space> <bracketright> :	"☐"	U2610	# BALLOT BOX
-# Better keystrokes anyone?  This one breaks the pattern. [c]? [v]? [y]? [/]?
-<Multi_key> <Multi_key> <c> <h> <k>	      :	 "☑"  U2611		# BALLOT BOX WITH CHECK
-<Multi_key> <bracketleft> <slash> <bracketright>     :	 "☑"  U2611		# BALLOT BOX WITH CHECK
-<Multi_key> <bracketleft> <x> <bracketright>  :	 "☒"  U2612		# BALLOT BOX WITH X
-# @ for dingbats?
-<Multi_key> <at> <slash>	:	"✓"	U2713	# CHECK MARK
-<Multi_key> <at> <at> <slash>	:	"✔"	U2714	# HEAVY CHECK MARK
-<Multi_key> <at> <X>  		:	"✗"	U2717	# BALLOT X
-<Multi_key> <at> <at> <X>	:	"✘"	U2718	# HEAVY BALLOT X
-<Multi_key> <at> <parenleft>    :       "❨"     U2768   # MEDIUM LEFT PARENTHESIS ORNAMENT
-<Multi_key> <at> <parenright>   :       "❩"     U2769   # MEDIUM RIGHT PARENTHESIS ORNAMENT
-<Multi_key> <at> <at> <parenleft>    :  "❪"     U276A   # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
-<Multi_key> <at> <at> <parenright>   :  "❫"     U276B   # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
-<Multi_key> <at> <less>         :       "❬"     U276C   # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <greater>      :       "❭"     U276D   # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
-# U276E&F ❮❯ ?  Angle quotation mark ornaments?
-<Multi_key> <at> <at> <less>    :       "❰"     U2770   # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <at> <greater> :       "❱"     U2771   # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
-<Multi_key> <at> <bracketleft> <parenleft> :    "❲"     U2772   # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
-<Multi_key> <at> <bracketright> <parenright> :  "❳"     U2773   # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
-<Multi_key> <at> <braceleft>    :       "❴"     U2774   # MEDIUM LEFT CURLY BRACKET ORNAMENT
-<Multi_key> <at> <braceright>   :       "❵"     U2775   # MEDIUM RIGHT CURLY BRACKET ORNAMENT
-# Will I want <at> <at> for something else?
-# Now there is such a thing as text style and emoji style.  Use the
-# "dingbat prefix" in an unusual way:
-<Multi_key> <at> <Multi_key>	:	"️"	UFE0F		# Emoji selector
-<Multi_key> <exclam> <Multi_key>	:	"︎"		UFE0E	# Text selector
-# How about dice?
-<Multi_key> <bracketleft> <1> <bracketright>  :  "⚀"  U2680	# DIE FACE-1
-<Multi_key> <bracketleft> <2> <bracketright>  :  "⚁"  U2681	# DIE FACE-2
-<Multi_key> <bracketleft> <3> <bracketright>  :  "⚂"  U2682	# DIE FACE-3
-<Multi_key> <bracketleft> <4> <bracketright>  :  "⚃"  U2683	# DIE FACE-4
-<Multi_key> <bracketleft> <5> <bracketright>  :  "⚄"  U2684	# DIE FACE-5
-<Multi_key> <bracketleft> <6> <bracketright>  :  "⚅"  U2685	# DIE FACE-6
-# 267B BLACK UNIVERSAL RECYCLING SYMBOL
-
-# Keystrokes okay?
-<Multi_key> <Multi_key> <f> <d> <l>   	        : "⚜"	U269C	  # FLEUR-DE-LIS
-<Multi_key> <Multi_key> <a> <t> <o> <m>	        : "⚛"	U269B		# ATOM SYMBOL
-<Multi_key> <Multi_key> <c> <c> <c> <p>		: "☭" 	U262D		# HAMMER AND SICKLE
-<Multi_key> <slash> <exclam> <backslash> : "⚠"  U26A0           # WARNING SIGN
-<Multi_key> <exclam> <asciicircum>	: "⚠"	U26A0		# WARNING SIGN 
-<Multi_key> <Multi_key> <z> <a> <p>	  		: "⚡"	U26A1		# HIGH VOLTAGE SIGN 
-# Shouldn't use just <r><a> because it's too likely to be a prefix for
-# a useful word.
-<Multi_key> <Multi_key> <r> <a> <d>	: "☢"	U2622		# RADIOACTIVE SIGN
-<Multi_key> <Multi_key> <b> <h>		: "☣"	U2623		# BIOHAZARD SIGN
-<Multi_key> <Multi_key> <b> <i> <o> <h>	<a> <z>	: "☣"	U2623		# BIOHAZARD SIGN
-# Changing this from ⚝
-<Multi_key> <Multi_key> <A> <A> <A> <A> <A>	:	"⛤" U26E4 # PENTAGRAM (pentalpha, get it?)
-<Multi_key> <Multi_key> <p> <l> <a> <n> <e>	: "✈"   U2708	  # AIRPLANE
-<Multi_key> <Multi_key> <m> <a> <i> <l>		: "✉"	U2709	  # ENVELOPE
-<Multi_key> <Multi_key> <w> <h> <l> <c> <h>	: "♿"	U267F	  # WHEELCHAIR SYMBOL
-<Multi_key> <Multi_key> <m> <e> <d> 		: "☤"	U2624	  # CADEUCEUS
-## Don't usually do sequences, but exception made for the
-## "eyewitness" compound emoji sequence:
-<Multi_key> <Multi_key> <i> <w> <i> <t>     : "👁️‍🗨️"
-# Something different for STAFF OF AESCULAPIUS?
-<Multi_key> <Multi_key> <1> <m> <e> <d>		: "⚕"	U2695	# STAFF OF AESCULAPIUS
-# 26B0 COFFIN ?
-# One of the SNOWFLAKEs?
-# SNOWMAN? COMET? ANCHOR?
-# Maybe if we go with having a "word" symbol and spelling out lots and 
-# lots of whole words, we can have all the planets.
-#
-# I already have STAR OF DAVID on another map.
-# 231A, 231B -- WATCH and HOURGLASS -- one should be &-w-a-i-t
-# 23D4 METRICAL LONG OVER TWO SHORTS a.k.a. METRICAL BOOBS
-# 0950 DEVANAGARI OM?
-# 212E ESTIMATED SYMBOL?
-# 2324 UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS a.k.a. NOT AMUSED
-# 237E BELL SYMBOL a.k.a. ALIENS LANDING
-
-<Multi_key> <o> <minus> <plus>		: "♀"	U2640		# FEMALE SIGN
-<Multi_key> <o> <minus> <greater>	: "♂"	U2642		# MALE SIGN
-
-<Multi_key> <Multi_key> <g> <a> <y>                 :   "⚣"     U26A3   # DOUBLED MALE SIGN
-<Multi_key> <Multi_key> <l> <e> <s> <b> <i> <a> <n> :   "⚢"     U26A2   # DOUBLED FEMALE SIGN
-<Multi_key> <Multi_key> <h> <e> <t> <e> <r> <o>     :   "⚤"     U26A4   # INTERLOCKED FEMALE AND MALE SIGN
-
-# 'trans': short for transgender/transexual
-# 'genderq': short for genderqueer.
-# Wasn't sure which to call which symbol, and wanted to include both
-<Multi_key> <Multi_key> <t> <r> <a> <n> <s>         :   "⚥"     U26A5   # MALE AND FEMALE SIGN
-<Multi_key> <Multi_key> <g> <e> <n> <d> <e> <r> <q> :   "⚧"     U26A7   # MALE WITH STROKE AND MALE AND FEMALE SIGN
-
-
-<Multi_key> <O> <X>: 			"☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <d> <e> <a> <t> <h>:	  "☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <X> <b> <o> <n> <e> <s>:	  "☠" U2620 # SKULL AND CROSSBONES
-<Multi_key> <Multi_key> <k> <b> <d> :	"⌨"	  U2328	    # KEYBOARD
-<Multi_key> <Multi_key> <r> <h> <a> <n> <d>	: "☞" U261E # WHITE RIGHT POINTING INDEX
-<Multi_key> <Multi_key> <l> <h> <a> <n> <d>	: "☜" U261C # WHITE LEFT POINTING INDEX
-<Multi_key> <asterisk> <asterisk>	:"★" U2605 # BLACK STAR
-<Multi_key> <asterisk> <0>	:"☆" U2606 # WHITE STAR
-<Multi_key> <asterisk> <minus>	:"✪" U272A # CIRCLED WHITE STAR
-<Multi_key> <asterisk> <3>	:"⁂" U2042 # ASTERISM
-<Multi_key> <3> <asterisk>	:"⁂" U2042 # ASTERISM
-<Multi_key> <2> <asterisk>	:"⁑" U2051 # TWO ASTERISKS ALIGNED VERTICALLY
-<Multi_key> <asterisk> <4>      :"✢"  U2722  # FOUR TEARDROP-SPOKED ASTERISK
-<Multi_key> <asterisk> <6>	:"✡" U2721 # STAR OF DAVID
-<Multi_key> <asterisk> <numbersign>	:"✯" U272F # PINWHEEL STAR
-<Multi_key> <asterisk> <exclam>	:"✱" U2731 # HEAVY ASTERISK
-<Multi_key> <less> <X> <greater> :  "❖"	U2756	# BLACK DIAMOND MINUS WHITE X
-<Multi_key> <at> <numbersign>	: "⌘" U2318	# PLACE OF INTEREST SIGN
-# Using backslash-minus-slash etc. conflicts with combining accents.
-<Multi_key> <grave> <minus> <apostrophe>	 : "⚞"	U269E  # THREE LINES CONVERGING RIGHT
-<Multi_key> <apostrophe> <minus> <grave>	 : "⚟"	U269F  # THREE LINES CONVERGING LEFT
-<Multi_key> <Multi_key> <B> <e> <l> <l> <s> <y> <m>	: "⍾" U237E  # BELL SYMBOL (or ALIENS LANDING) -- &-a-l-i-e-n ?
-# Other monstery characters... ѪꙚ (alien abductions?)
-# ඏൠഋ & others from Kannada et al...?
-# Can't use -^- for this; conflicts with -^ for ↑, and getting those arrows
-# workable was complicated enough.  How about this?
-<Multi_key> <underscore> <asciicircum> <underscore>	: "⌤" U2324  # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS; aka ENTER KEY, aka NOT AMUSED.
-<Multi_key> <Multi_key> <w> <a> <i> <t>		: "⌛" U231B   # HOURGLASS
-<Multi_key> <Multi_key> <h> <o> <u> <r>		: "⌛" U231B   # HOURGLASS
-<Multi_key> <Multi_key> <t> <i> <m> <e>		: "⌚" U231A   # WATCH
-<Multi_key> <Multi_key> <w> <a> <t> <c> <h>	: "⌚" U231A   # WATCH
-<Multi_key> <space> <N>		  : " "	U2002  # EN SPACE
-<Multi_key> <space> <M>		  : " " U2003  # EM SPACE
-<Multi_key> <space> <3> <M>	  : " "	U2004  # THREE-PER-EM SPACE
-<Multi_key> <space> <4> <M>	  : " "	U2005  # FOUR-PER-EM SPACE
-<Multi_key> <parenleft> <parenright>: "◌" U25CC # DOTTED CIRCLE
-<Multi_key> <bracketleft> <bracketright>: "⬚" U2B1A # DOTTED SQUARE
-<Multi_key> <asterisk> <parenleft>      : "﴾"   UFD3E           # ORNATE LEFT PARENTHESIS
-<Multi_key> <asterisk> <parenright>     : "﴿"   UFD3F           # ORNATE RIGHT PARENTHESIS
-<Multi_key> <k> <s>                     : "ʘ"   U0298           # LATIN LETTER BILABIAL CLICK (kiss sound)
-<Multi_key> <bar> <greater>             : "‣"   U2023           # TRIANGULAR BULLET
-#SUPERSCRIPTS:
-#To avoid namespace clashes, <asciicircum> is doubled (will I regret that?)
-<Multi_key> <asciicircum> <asciicircum> <h>       : "ʰ"   U02B0           # SUPERSCRIPT H
-<Multi_key> <asciicircum> <asciicircum> <i>       : "ⁱ"   U2071           # SUPERSCRIPT I
-<Multi_key> <asciicircum> <asciicircum> <j>       : "ʲ"   U02B2           # SUPERSCRIPT J
-<Multi_key> <asciicircum> <asciicircum> <n>       : "ⁿ"   U207F           # SUPERSCRIPT N
-<Multi_key> <asciicircum> <asciicircum> <r>       : "ʳ"   U02B3           # SUPERSCRIPT R
-<Multi_key> <asciicircum> <asciicircum> <w>       : "ʷ"   U02B7           # SUPERSCRIPT W
-<Multi_key> <asciicircum> <asciicircum> <y>       : "ʸ"   U02B8           # SUPERSCRIPT Y
-# So I can use yᵗ/þᵗ and yᵉ/þᵉ
-<Multi_key> <asciicircum> <asciicircum> <e>	  : "ᵉ"	  U1D49		  # MODIFIER LETTER SMALL E
-<Multi_key> <asciicircum> <asciicircum> <t>	  : "ᵗ"	  U1D57		  # MODIFIER LETTER SMALL T
-# Abbreviation for "that":
-<Multi_key> <U00FE> <t>	  			  : "ꝥ"	  UA765		  # LATIN SMALL LETTER THORN WITH STROKE
-#Maybe add: ˀˁ˃˂  Need to be able to talk about ʔˁ...
-<Multi_key> <asciicircum> <question> <period>	: "ˀ"	U02C0	# MODIFIER LETTER GLOTTAL STOP
-<Multi_key> <asciicircum> <question> <parenleft> : "ˁ"	U02C1	# MODIFIER LETTER REVERSED GLOTTAL STOP
-<Multi_key> <asciicircum> <minus>       : "⁻"   U207B           # SUPERSCRIPT MINUS
-<Multi_key> <asciicircum> <plus>	: "⁺"	U207A		# SUPERSCRIPT PLUS
-
-<Multi_key> <asciitilde> <asciitilde>        : "≈"  U2248           # ALMOST EQUAL TO
-<Multi_key> <s> <h>			: "ʃ"	U0283		# LATIN SMALL LETTER ESH
-<Multi_key> <z> <h>			: "ʒ"	U0292		# LATIN SMALL LETTER EZH
-<Multi_key> <l> <h>    			: "ɬ"	U026C		# LATIN SMALL LETTER L WITH BELT
-<Multi_key> <l> <3>			: "ɮ"	U026E		# LATIN SMALL LETTER LEZH
-<Multi_key> <y> <g>			: "ȝ"	U021D		# LATIN SMALL LETTER YOGH
-<Multi_key> <Y> <G>			: "Ȝ"	U021C		# LATIN CAPITAL LETTER YOGH
-<Multi_key> <question> <period>		: "ʔ"	U0294		# LATIN LETTER GLOTTAL STOP
-<Multi_key> <question> <parenleft>	: "ʕ"	U0295		# LATIN LETTER PHARYNGEAL VOICED FRICATIVE
-# Not great keystrokes...
-<Multi_key> <question> <v>		: "ʖ"	U0296		# LATIN LETTER INVERTED GLOTTAL STOP
-<Multi_key> <question> <minus>		: "ʡ"	U02A1		# LATIN LETTER GLOTTAL STOP WITH STROKE
-<Multi_key> <question> <braceleft>	: "ʢ"	U02A2		# LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
-# How about ɸ? φ isn’t the IPA glyph.
-<Multi_key> <p> <h>			: "ɸ"	U0278		# LATIN SMALL LETTER PHI
-<Multi_key> <i> <h>    			: "ɪ"	U026A		# LATIN LETTER SMALL CAPITAL I
-<Multi_key> <I> <H>    			: "ɪ"	U026A		# LATIN LETTER SMALL CAPITAL I
-<Multi_key> <u> <h>			: "ʊ"	U028A		# LATIN SMALL LETTER UPSILON
-<Multi_key> <U> <H>			: "ʊ"	U028A		# LATIN SMALL LETTER UPSILON
-<Multi_key> <a> <h>			: "ɑ"	U0251		# LATIN SMALL LETTER ALPHA
-<Multi_key> <e> <r>			: "ɚ"	U025A		# LATIN SMALL LETTER SCHWA WITH HOOK
-<Multi_key> <o> <parenright>		:"ɔ" 	U0254 		# LATIN SMALL LETTER OPEN O
-<Multi_key> <a> <w>			: "ɔ"	U0254		# LATIN SMALL LETTER OPEN O
-<Multi_key> <O> <parenright>		:"Ɔ" 	U0186 		# LATIN CAPITAL LETTER OPEN O
-<Multi_key> <A> <W>			: "Ɔ"	U0186		# LATIN CAPITAL LETTER OPEN O
-<Multi_key> <e> <h>   	    	    	: "ɛ"   U025B		# LATIN SMALL LETTER OPEN E
-# Have to put the <less> at the beginning for these.
-<Multi_key> <less> <e> <h>		: "ɜ"	U025C		# LATIN SMALL LETTER REVERSED OPEN E
-<Multi_key> <BackSpace> <e> <h>		: "ɜ"	U025C		# LATIN SMALL LETTER REVERSED OPEN E
-<Multi_key> <less> <e> <r>		: "ɝ"	U025D		# LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-<Multi_key> <BackSpace> <e> <r>		: "ɝ"	U025D		# LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
-# It's spelled "gy" in Hungarian...
-<Multi_key> <g> <y>			: "ɟ"	U025F		# LATIN SMALL LETTER DOTLESS J WITH STROKE
-# How are these keystrokes?
-<Multi_key> <bar> <apostrophe>		: "ˈ"	U02C8		# MODIFIER LETTER VERTICAL LINE
-<Multi_key> <bar> <comma>		: "ˌ"	U02CC		# MODIFIER LETTER LOW VERTICAL LINE
-<Multi_key> <bar> <underscore>		: "̩"	U0329		# COMBINING VERTICAL LINE BELOW
-# Harmonize with other combiners.
-<Multi_key> <backslash> <underscore> <bar>	: "̩"	U0329		# COMBINING VERTICAL LINE BELOW
-<Multi_key> <r> <r>                     : "ɹ"   U0279           # LATIN SMALL LETTER TURNED R: voiced alveolar approximant (American English (at least) R)
-<Multi_key> <r> <d>                     : "ɾ"   U027E           # LATIN SMALL LETTER R WITH FISHHOOK: voiced alveolar flap or tap (American English intervocalic allophone of d, or Spanish r)
-<Multi_key> <v> <v>                     : "ʌ"   U028C           # LATIN SMALL LETTER TURNED V
-<Multi_key> <u> <i>			: "ɯ"	U026F		# LATIN SMALL LETTER TURNED M
-# doubling a letter seems to be mostly used for turning
-<Multi_key> <w> <w>			: "ʍ"	U028D		# LATIN SMALL LETTER TURNED W
-<Multi_key> <y> <y>			: "ʎ"	U028E		# LATIN SMALL LETTER TURNED Y
-<Multi_key> <a> <a>			: "ɐ"	U0250		# LATIN SMALL LETTER TURNED A
-<Multi_key> <h> <h>			: "ɥ"	U0265		# LATIN SMALL LETTER TURNED H
-# ı is already available in the "standard" .XCompose
-<Multi_key> <j> <period>    		: "ȷ"	U0237		# LATIN SMALL LETTER DOTLESS J
-<Multi_key> <exclam> <period>		: "Ꞌ"	UA78B		# LATIN CAPITAL LETTER SALTILLO
-<Multi_key> <exclam> <underscore> <period>		: "ꞌ"	UA78C		# LATIN SMALL LETTER SALTILLO
-# I'll use capitals for a different double
-<Multi_key> <W> <W>			: "ʬ"	U02AC		# LATIN LETTER BILABIAL PERCUSSIVE
-# Also handy for writing urls: http://ʬw.omniglot.com/
-# Sorry, I miss having this and hate having to use colon instead:
-<Multi_key> <colon> <plus>  	      	: "ː"	U02D0		# MODIFIER LETTER TRIANGULAR COLON
-# ɣ? ᴥ?  Important enough to add? ᴥ is cool just as a "latin" letter.
-<Multi_key> <g> <h>	     	    : "ɣ"   U0263     # LATIN SMALL LETTER GAMMA
-# It looks like a ɣ and makes an "o" sorta sound:
-<Multi_key> <o> <g> <h>	      	    : "ɤ"  U0264      # LATIN SMALL LETTER RAMS HORN
-<Multi_key> <a> <i> <n>		    : "ᴥ"   U1D25     # LATIN LETTER AIN
-# Sometimes it's a "tail", sometimes a "hook", and sometimes a "retroflex hook"
-<Multi_key> <d> <comma>		    : "ɖ"   U0256     # LATIN SMALL LETTER D WITH TAIL
-<Multi_key> <l> <comma>		    : "ɭ"   U026D     # LATIN SMALL LETTER L WITH RETROFLEX HOOK
-<Multi_key> <n> <comma>		    : "ɳ"   U0273     # LATIN SMALL LETTER N WITH RETROFLEX HOOK
-<Multi_key> <s> <comma>		    : "ʂ"   U0282     # LATIN SMALL LETTER S WITH HOOK
-<Multi_key> <t> <comma>		    : "ʈ"   U0288     # LATIN SMALL LETTER T WITH RETROFLEX HOOK
-<Multi_key> <z> <comma>		    : "ʐ"   U0290     # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
-# This is used for functions, folders, etc.  Yeah, the hook's facing wrong.
-<Multi_key> <f> <comma>		    : "ƒ"   U0192     # LATIN SMALL LETTER F WITH HOOK
-# Sigh, might as well do implosives.  Which is also sometimes a hook.
-<Multi_key> <b> <apostrophe>	    : "ɓ"   U0253     # LATIN SMALL LETTER B WITH HOOK
-<Multi_key> <d> <apostrophe>	    : "ɗ"   U0257     # LATIN SMALL LETTER D WITH HOOK
-<Multi_key> <g> <apostrophe>	    : "ɠ"   U0260     # LATIN SMALL LETTER G WITH HOOK
-<Multi_key> <g> <g>		    : "ɡ"   U0261     # LATIN SMALL LETTER SCRIPT G
-# The h looks the same...
-<Multi_key> <h> <apostrophe>	    : "ɦ"   U0266     # LATIN SMALL LETTER H WITH HOOK
-<Multi_key> <G> <apostrophe>	    : "ʛ"   U029B     # LATIN LETTER SMALL CAPITAL G WITH HOOK
-<Multi_key> <N> <o>			: "№"	U2116		# NUMERO SIGN
-<Multi_key> <R> <x>			: "℞"	U211E		# PRESCRIPTION TAKE
-<Multi_key> <P> <e> <r>			: "⅌"	U214C		# PER SIGN
-<Multi_key> <o> <z> <period>		: "℥"	U2125		# OUNCE SIGN
-<Multi_key> <s> <c> <r> <period>	: "℈"	U2108		# SCRUPLE
-# There are all kinds of awesome combining characters in the U+0300 page.
-# There are a bunch of other awesome combining characters like U+20E0
-<Multi_key> <asterisk> <period> <period> <period> : "๛" U0E5B   # THAI CHARACTER KHOMUT (end of chapter)
-#
-# Music stuff.  # is the music mnemonic.
-<Multi_key> <numbersign> <b>		: "♭" U266d # MUSIC FLAT SIGN
-<Multi_key> <numbersign> <f>		: "♮" U266e # MUSIC NATURAL SIGN
-<Multi_key> <numbersign> <equal>	: "♮" U266e # MUSIC NATURAL SIGN
-<Multi_key> <numbersign> <numbersign>	: "♯" U266f # MUSIC SHARP SIGN
-<Multi_key> <numbersign> <G>             : "𝄞"  U0001d11e # MUSICAL SYMBOL G CLEF
-<Multi_key> <numbersign> <F>              : "𝄢"  U0001d122 # MUSICAL SYMBOL F CLEF
-<Multi_key> <numbersign> <C>              : "𝄡" U0001d121 # MUSICAL SYMBOL C CLEF
-<Multi_key> <numbersign> <o> <slash>	: "♪" U266a	# EIGHTH NOTE
-<Multi_key> <numbersign> <o> <o>	: "♫" U266b	# BEAMED EIGHTH NOTES
-<Multi_key> <numbersign> <percent>	: "♫" U266b	# BEAMED EIGHTH NOTES
-
-
-# Combining accents, for making things you don't have precomposed chars or keystrokes for:
-<Multi_key> <backslash> <grave>	: "̀"  U0300   # COMBINING GRAVE ACCENT
-<Multi_key> <backslash> <apostrophe>    : "́"   U0301   # COMBINING ACUTE ACCENT
-<Multi_key> <backslash> <asciicircum>    : "̂"   U0302   # COMBINING CIRCUMFLEX ACCENT
-<Multi_key> <backslash> <asciitilde>       : "̃"   U0303	# COMBINING TILDE
-<Multi_key> <backslash> <equal>		: "̄"	U0304	# COMBINING MACRON
-<Multi_key> <backslash> <backslash> <equal>		: "̅"	U0305	# COMBINING OVERLINE -- ???
-<Multi_key> <backslash> <U>		: "̆"	U0306	# COMBINING BREVE
-<Multi_key> <backslash> <period>	: "̇"	U0307	# COMBINING DOT ABOVE
-<Multi_key> <backslash> <quotedbl>	: "̈"	U0308	# COMBINING DIAERESIS
-<Multi_key> <backslash> <question>	: "̉"	U0309	# COMBINING HOOK ABOVE
-<Multi_key> <backslash> <o>		: "̊"	U030a	# COMBINING RING ABOVE
-# That now conflicts with the new 🙌 in the system xcompose.  Alternative:
-<Multi_key> <backslash> <0>   	       	: "̊"	U030a	# COMBINING RING ABOVE
-<Multi_key> <backslash> <backslash> <apostrophe>	: "̋"	U030b	# COMBINING DOUBLE ACUTE ACCENT -- ??
-<Multi_key> <backslash> <c>		: "̌"	U030c	# COMBINING CARON
-<Multi_key> <backslash> <bar>       	: "̍"	U030d	# COMBINING VERTICAL LINE ABOVE
-<Multi_key> <backslash> <2> <bar>	: "̎"	U030e	# COMBINING DOUBLE VERTICAL LINE ABOVE
-<Multi_key> <backslash> <2> <grave>	: "̏"	U030f	# COMBINING DOUBLE GRAVE ACCENT
-# For writing PSILI and DASIA in Greek
-# Ugh, better key-coding?  I may need @ for BELOW.
-<Multi_key> <backslash> <backslash> <backslash> <comma>	:	"̒"  U0312   # COMBINING TURNED COMMA ABOVE
-<Multi_key> <backslash> <backslash> <comma>	:	"̓"  U0313   # COMBINING COMMA ABOVE
-<Multi_key> <backslash> <backslash> <less> <comma>	:	"̔"   U0314   # COMBINING REVERSED COMMA ABOVE
-<Multi_key> <backslash> <f> <m>                 : "͒"   U0352   # COMBINING FERMATA
-<Multi_key> <backslash> <parenleft> <period>	: "̐"	U0310	# COMBINING CHANDRABINDU
-<Multi_key> <backslash> <i> <b>		: "̑"	U0311	# COMBINING INVERTED BREVE -- ??
-<Multi_key> <backslash> <parenleft> <parenright>: "⃝"  U20DD # COMBINING ENCLOSING CIRCLE
-<Multi_key> <backslash> <parenleft> <slash> <parenright>:    "⃠"	 U20E0	   # COMBINING ENCLOSING CIRCLE BACKSLASH
-<Multi_key> <backslash> <exclam>	: "̣"   U0323   # COMBINING DOT BELOW
-# With only one underscore it conflicts with stuff.
-<Multi_key> <backslash> <underscore> <underscore>	: "̱"	U0331	# COMBINING MACRON BELOW
-<Multi_key> <backslash> <backslash> <underscore>	: "̲"	U0332	# COMBINING LOW LINE
-<Multi_key> <backslash> <backslash> <backslash> <underscore>	: "̳"	U0333	# COMBINING DOUBLE LOW LINE
-
-# The @ sign will signify reversal to the bottom of the glyph, 'kay?
-
-<Multi_key> <backslash> <at> <o>	: "̥"	U0325	# COMBINING RING BELOW
-
-<Multi_key> <backslash> <at> <c>	: "̬"	U032c	# COMBINING CARON BELOW
-<Multi_key> <backslash> <at> <asciicircum>	: "̭"	U032d	# COMBINING CIRCUMFLEX ACCENT BELOW
-<Multi_key> <backslash> <at> <U>	: "̮"	U032e	# COMBINING BREVE BELOW
-<Multi_key> <backslash> <at> <i> <b>	: "̯"	U032f	# COMBINING INVERTED BREVE BELOW -- ??
-
-# How about leading & (or &&?) for double combiners?  There aren't many anyway.
-# Except that I found myself assuming it was "2" for double.
-<Multi_key> <backslash> <ampersand> <at> <U> : "͜" U035C # COMBINING DOUBLE BREVE BELOW
-<Multi_key> <backslash> <2> <at> <U> : "͜" U035C # COMBINING DOUBLE BREVE BELOW
-<Multi_key> <backslash> <ampersand> <U>	  : "͝"	U035D   # COMBINING DOUBLE BREVE
-<Multi_key> <backslash> <2> <U>	  : "͝"	U035D   # COMBINING DOUBLE BREVE
-<Multi_key> <backslash> <ampersand> <minus> : "͞" U035E	# COMBINING DOUBLE MACRON
-<Multi_key> <backslash> <2> <minus> : "͞" U035E	# COMBINING DOUBLE MACRON
-<Multi_key> <backslash> <ampersand> <at> <minus> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <2> <at> <minus> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <ampersand> <underscore> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <2> <underscore> : "͟" U035F # COMBINING DOUBLE MACRON BELOW
-<Multi_key> <backslash> <ampersand> <asciitilde> : "͠" U0360 # COMBINING DOUBLE TILDE
-<Multi_key> <backslash> <2> <asciitilde> : "͠" U0360 # COMBINING DOUBLE TILDE
-<Multi_key> <backslash> <ampersand> <i> <b>  : "͡"  U0361 # COMBINING DOUBLE INVERTED BREVE
-<Multi_key> <backslash> <2> <i> <b>  : "͡"  U0361 # COMBINING DOUBLE INVERTED BREVE
-<Multi_key> <backslash> <ampersand> <at> <i> <b>  : "᷼"  U1DFC # COMBINING DOUBLE INVERTED BREVE BELOW
-<Multi_key> <backslash> <2> <at> <i> <b>  : "᷼"  U1DFC # COMBINING DOUBLE INVERTED BREVE BELOW
-# Might as well finish up the set.
-<Multi_key> <backslash> <ampersand> <greater> : "͢" U0362 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-<Multi_key> <backslash> <2> <greater> : "͢" U0362 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-
-<Multi_key> <period> <parenright>	: "͒"	U0352   # COMBINING FERMATA
-
-<Multi_key> <backslash> <asterisk>	: "҉"	U0489	# COMBINING CYRILLIC MILLIONS SIGN  -- aka COMBINING SHINY
-<Multi_key> <P> <minus>		: "₽"	U20BD	# RUBLE SIGN
-<Multi_key> <p> <minus>		: "₽"	U20BD	# RUBLE SIGN
-
-# How about for a little extra control:
-<Multi_key> <Z> <W> <S> <P>		: "​"	U200B	# ZERO WIDTH SPACE
-<Multi_key> <Z> <W> <N> <J>		: "‌"	U200C	# ZERO WIDTH NON-JOINER
-<Multi_key> <Z> <W> <J>			: "‍"	U200D	# ZERO WIDTH JOINER
-<Multi_key> <L> <R> <M>			: "‎"	U200E	# LEFT-TO-RIGHT MARK
-<Multi_key> <R> <L> <M>			: "‏"	U200F	# RIGHT-TO-LEFT MARK
-# I never understood the whole embedding/pop thing, but we might as well add 'em
-<Multi_key> <L> <R> <E>			: "‪"	U202A	# LEFT-TO-RIGHT EMBEDDING
-<Multi_key> <R> <L> <E>			: "‫"	U202B	# RIGHT-TO-LEFT EMBEDDING
-<Multi_key> <P> <D> <F>			: "‬"	U202C	# POP DIRECTIONAL FORMATTING
-<Multi_key> <L> <R> <I>			: "⁦"	U2066	# LEFT-TO-RIGHT ISOLATE
-<Multi_key> <R> <L> <I>			: "⁧"	U2067	# RIGHT-TO-LEFT ISOLATE
-<Multi_key> <F> <S> <I>			: "⁨"	U2068	# FIRST STRONG ISOLATE
-<Multi_key> <P> <D> <I>			: "⁩"	U2069	# POP DIRECTIONAL ISOLATE
-<Multi_key> <L> <R> <O>			: "‭"	U202D	# LEFT-TO-RIGHT OVERRIDE
-<Multi_key> <R> <L> <O>			: "‮"	U202E	# RIGHT-TO-LEFT OVERRIDE
-<Multi_key> <B> <O> <M>			: ""	UFEFF	# ZERO WIDTH NO-BREAK SPACE (Byte Order Mark)
-<Multi_key> <C> <G> <J>			: "͏"	U034F	# COMBINING GRAPHEME JOINER
-# These are sufficiently special and well-known that they don't need the
-# double <Multi_key> prefix I think.  The all-caps helps too.
-
-# How about some small-caps?  We normally use a special character as a prefix,
-# but why not a suffix?  It won't interfere with things that way.
-# Several of these are also IPA, which is handy.  And so a few have multiple
-# entries.  Whatever.
-
-<Multi_key> <a> <grave>	    	  : "ᴀ"	    U1D00 # LATIN LETTER SMALL CAPITAL A
-<Multi_key> <b> <grave>	    	  : "ʙ"	    U0299 # LATIN LETTER SMALL CAPITAL B
-<Multi_key> <c> <grave>	    	  : "ᴄ"	    U1D04 # LATIN LETTER SMALL CAPITAL C
-<Multi_key> <d> <grave>	    	  : "ᴅ"	    U1D05 # LATIN LETTER SMALL CAPITAL D
-<Multi_key> <e> <grave>	    	  : "ᴇ"	    U1D07 # LATIN LETTER SMALL CAPITAL E
-<Multi_key> <f> <grave>	    	  : "ꜰ"	    UA730 # LATIN LETTER SMALL CAPITAL F
-<Multi_key> <g> <grave>	    	  : "ɢ"	    U0262 # LATIN LETTER SMALL CAPITAL G
-<Multi_key> <h> <grave>	    	  : "ʜ"	    U029C # LATIN LETTER SMALL CAPITAL H
-<Multi_key> <i> <grave>	    	  : "ɪ"	    U026A # LATIN LETTER SMALL CAPITAL I
-<Multi_key> <j> <grave>	    	  : "ᴊ"	    U1D0A # LATIN LETTER SMALL CAPITAL J
-<Multi_key> <k> <grave>	    	  : "ᴋ"	    U1D0B # LATIN LETTER SMALL CAPITAL K
-<Multi_key> <l> <grave>	    	  : "ʟ"	    U029F # LATIN LETTER SMALL CAPITAL L
-<Multi_key> <m> <grave>	    	  : "ᴍ"	    U1D0D # LATIN LETTER SMALL CAPITAL M
-<Multi_key> <n> <grave>	    	  : "ɴ"	    U0274 # LATIN LETTER SMALL CAPITAL N
-<Multi_key> <o> <grave>	    	  : "ᴏ"	    U1D0F # LATIN LETTER SMALL CAPITAL O
-<Multi_key> <p> <grave>	    	  : "ᴘ"	    U1D18 # LATIN LETTER SMALL CAPITAL P
-# There is no SMALL CAPITAL Q (yet)!
-<Multi_key> <r> <grave>	    	  : "ʀ"	    U0280 # LATIN LETTER SMALL CAPITAL R
-<Multi_key> <s> <grave>	    	  : "ꜱ"	    UA731 # LATIN LETTER SMALL CAPITAL S
-<Multi_key> <t> <grave>	    	  : "ᴛ"	    U1D1B # LATIN LETTER SMALL CAPITAL T
-<Multi_key> <u> <grave>	    	  : "ᴜ"	    U1D1C # LATIN LETTER SMALL CAPITAL U
-<Multi_key> <v> <grave>	    	  : "ᴠ"	    U1D20 # LATIN LETTER SMALL CAPITAL V
-<Multi_key> <w> <grave>	    	  : "ᴡ"	    U1D21 # LATIN LETTER SMALL CAPITAL W
-# There is no SMALL CAPITAL X (yet)
-<Multi_key> <y> <grave>	    	  : "ʏ"	    U028F # LATIN LETTER SMALL CAPITAL Y
-<Multi_key> <z> <grave>	    	  : "ᴢ"	    U1D22 # LATIN LETTER SMALL CAPITAL Z
-
-
-# See also http://bleah.co.uk/~simon/stuff/XCompose
-# and http://dotfiles.org/~inky/.XCompose
-# and http://paste.lisp.org/display/73094
-
-<Multi_key> <Multi_key> <s> <u> <n>	: "☉"	U2609	# SUN (Sunday)
-<Multi_key> <Multi_key> <m> <o> <o> <n>	: "☽"	U263D	# FIRST QUARTER MOON (Monday)
-<Multi_key> <Multi_key> <m> <e> <r> <c> <u> <r> <y> : "☿" U263F	# MERCURY (Wednesday)
-# We already have Venus (Friday) and Mars (Tuesday) as Male/Female signs; do we need them here too?
-#<Multi_key> <Multi_key> <v> <e> <n> <u> <s>  : "♀" U2640    # FEMALE SIGN
-#<Multi_key> <Multi_key> <m> <a> <r> <s>  : "♂"	U2642   # MALE SIGN
-<Multi_key> <Multi_key> <j> <u> <p> <i> <t> <e> <r> : "♃" U2643	# JUPITER (Thursday)
-<Multi_key> <Multi_key> <s> <a> <t> <u> <r> <n>     : "♄" U2644	# SATURN (Saturday)
-<Multi_key> <Multi_key> <u> <r> <a> <n> <u> <s>	    : "♅" U2645	# URANUS (or ⛢ U26E2?)
-<Multi_key> <Multi_key> <n> <e> <p> <t> <u> <n> <e> : "♆" U2646	# NEPTUNE
-<Multi_key> <Multi_key> <p> <l> <u> <t> <o> 	    : "♇" U2647	# PLUTO (ok, it isn't a planet anymore, but we still love it.)
-# Minor planets, whilst we're at it?
-<Multi_key> <Multi_key> <c> <e> <r> <e> <s>	: "⚳"	U26B3	# CERES
-<Multi_key> <Multi_key> <p> <a> <l> <l> <a> <s>	: "⚴"	U26B4	# PALLAS
-<Multi_key> <Multi_key> <j> <u> <n> <o>     	: "⚵"	U26B5	# JUNO
-<Multi_key> <Multi_key> <v> <e> <s> <t> <a>    	: "⚶"	U26B6	# VESTA
-<Multi_key> <Multi_key> <c> <h> <i> <r> <o> <n>	: "⚷"	U26B7	# CHIRON
-<Multi_key> <Multi_key> <l> <i> <l> <i> <t> <h>	: "⚸"	U26B8	# BLACK MOON LILITH
-<Multi_key>  <bracketleft> <k> <e> <y> <bracketright> : "⚿"	U26BF	# SQUARED KEY
-
-# Unicode 6.0 gave us all kinds of things, perhaps more than we can use...
-
-# Playing Cards?  It's a lot, but so what?  I don't think the [] convention
-# will conflict with anything.
-# The convention is more or less established, except for the Knight.  I'm
-# using N for that, like in Chess, since K would conflict with King of course.
-
-<Multi_key> <bracketleft> <A> <S> <bracketright>  : "🂡"	U1F0A1	# PLAYING CARD ACE OF SPADES
-<Multi_key> <bracketleft> <2> <S> <bracketright>  : "🂢"	U1F0A2	# PLAYING CARD TWO OF SPADES
-<Multi_key> <bracketleft> <3> <S> <bracketright>  : "🂣"	U1F0A3	# PLAYING CARD THREE OF SPADES
-<Multi_key> <bracketleft> <4> <S> <bracketright>  : "🂤"	U1F0A4	# PLAYING CARD FOUR OF SPADES
-<Multi_key> <bracketleft> <5> <S> <bracketright>  : "🂥"	U1F0A5	# PLAYING CARD FIVE OF SPADES
-<Multi_key> <bracketleft> <6> <S> <bracketright>  : "🂦"	U1F0A6	# PLAYING CARD SIX OF SPADES
-<Multi_key> <bracketleft> <7> <S> <bracketright>  : "🂧"	U1F0A7	# PLAYING CARD SEVEN OF SPADES
-<Multi_key> <bracketleft> <8> <S> <bracketright>  : "🂨"	U1F0A8	# PLAYING CARD EIGHT OF SPADES
-<Multi_key> <bracketleft> <9> <S> <bracketright>  : "🂩"	U1F0A9	# PLAYING CARD NINE OF SPADES
-<Multi_key> <bracketleft> <T> <S> <bracketright>  : "🂪"	U1F0AA	# PLAYING CARD TEN OF SPADES
-<Multi_key> <bracketleft> <J> <S> <bracketright>  : "🂫"	U1F0AB	# PLAYING CARD JACK OF SPADES
-<Multi_key> <bracketleft> <N> <S> <bracketright>  : "🂬"	U1F0AC	# PLAYING CARD KNIGHT OF SPADES
-<Multi_key> <bracketleft> <Q> <S> <bracketright>  : "🂭"	U1F0AD	# PLAYING CARD QUEEN OF SPADES
-<Multi_key> <bracketleft> <K> <S> <bracketright>  : "🂮"	U1F0AE	# PLAYING CARD KING OF SPADES
-
-<Multi_key> <bracketleft> <A> <H> <bracketright>  : "🂱"	U1F0B1	# PLAYING CARD ACE OF HEARTS
-<Multi_key> <bracketleft> <2> <H> <bracketright>  : "🂲"	U1F0B2	# PLAYING CARD TWO OF HEARTS
-<Multi_key> <bracketleft> <3> <H> <bracketright>  : "🂳"	U1F0B3	# PLAYING CARD THREE OF HEARTS
-<Multi_key> <bracketleft> <4> <H> <bracketright>  : "🂴"	U1F0B4	# PLAYING CARD FOUR OF HEARTS
-<Multi_key> <bracketleft> <5> <H> <bracketright>  : "🂵"	U1F0B5	# PLAYING CARD FIVE OF HEARTS
-<Multi_key> <bracketleft> <6> <H> <bracketright>  : "🂶"	U1F0B6	# PLAYING CARD SIX OF HEARTS
-<Multi_key> <bracketleft> <7> <H> <bracketright>  : "🂷"	U1F0B7	# PLAYING CARD SEVEN OF HEARTS
-<Multi_key> <bracketleft> <8> <H> <bracketright>  : "🂸"	U1F0B8	# PLAYING CARD EIGHT OF HEARTS
-<Multi_key> <bracketleft> <9> <H> <bracketright>  : "🂹"	U1F0B9	# PLAYING CARD NINE OF HEARTS
-<Multi_key> <bracketleft> <T> <H> <bracketright>  : "🂺"	U1F0BA	# PLAYING CARD TEN OF HEARTS
-<Multi_key> <bracketleft> <J> <H> <bracketright>  : "🂻"	U1F0BB	# PLAYING CARD JACK OF HEARTS
-<Multi_key> <bracketleft> <N> <H> <bracketright>  : "🂼"	U1F0BC	# PLAYING CARD KNIGHT OF HEARTS
-<Multi_key> <bracketleft> <Q> <H> <bracketright>  : "🂽"	U1F0BD	# PLAYING CARD QUEEN OF HEARTS
-<Multi_key> <bracketleft> <K> <H> <bracketright>  : "🂾"	U1F0BE	# PLAYING CARD KING OF HEARTS
-
-<Multi_key> <bracketleft> <A> <D> <bracketright>  : "🃁"	U1F0C1	# PLAYING CARD ACE OF DIAMONDS
-<Multi_key> <bracketleft> <2> <D> <bracketright>  : "🃂"	U1F0C2	# PLAYING CARD TWO OF DIAMONDS
-<Multi_key> <bracketleft> <3> <D> <bracketright>  : "🃃"	U1F0C3	# PLAYING CARD THREE OF DIAMONDS
-<Multi_key> <bracketleft> <4> <D> <bracketright>  : "🃄"	U1F0C4	# PLAYING CARD FOUR OF DIAMONDS
-<Multi_key> <bracketleft> <5> <D> <bracketright>  : "🃅"	U1F0C5	# PLAYING CARD FIVE OF DIAMONDS
-<Multi_key> <bracketleft> <6> <D> <bracketright>  : "🃆"	U1F0C6	# PLAYING CARD SIX OF DIAMONDS
-<Multi_key> <bracketleft> <7> <D> <bracketright>  : "🃇"	U1F0C7	# PLAYING CARD SEVEN OF DIAMONDS
-<Multi_key> <bracketleft> <8> <D> <bracketright>  : "🃈"	U1F0C8	# PLAYING CARD EIGHT OF DIAMONDS
-<Multi_key> <bracketleft> <9> <D> <bracketright>  : "🃉"	U1F0C9	# PLAYING CARD NINE OF DIAMONDS
-<Multi_key> <bracketleft> <T> <D> <bracketright>  : "🃊"	U1F0CA	# PLAYING CARD TEN OF DIAMONDS
-<Multi_key> <bracketleft> <J> <D> <bracketright>  : "🃋"	U1F0CB	# PLAYING CARD JACK OF DIAMONDS
-<Multi_key> <bracketleft> <N> <D> <bracketright>  : "🃌"	U1F0CC	# PLAYING CARD KNIGHT OF DIAMONDS
-<Multi_key> <bracketleft> <Q> <D> <bracketright>  : "🃍"	U1F0CD	# PLAYING CARD QUEEN OF DIAMONDS
-<Multi_key> <bracketleft> <K> <D> <bracketright>  : "🃎"	U1F0CE	# PLAYING CARD KING OF DIAMONDS
-
-<Multi_key> <bracketleft> <A> <C> <bracketright>  : "🃑"	U1F0D1	# PLAYING CARD ACE OF CLUBS
-<Multi_key> <bracketleft> <2> <C> <bracketright>  : "🃒"	U1F0D2	# PLAYING CARD TWO OF CLUBS
-<Multi_key> <bracketleft> <3> <C> <bracketright>  : "🃓"	U1F0D3	# PLAYING CARD THREE OF CLUBS
-<Multi_key> <bracketleft> <4> <C> <bracketright>  : "🃔"	U1F0D4	# PLAYING CARD FOUR OF CLUBS
-<Multi_key> <bracketleft> <5> <C> <bracketright>  : "🃕"	U1F0D5	# PLAYING CARD FIVE OF CLUBS
-<Multi_key> <bracketleft> <6> <C> <bracketright>  : "🃖"	U1F0D6	# PLAYING CARD SIX OF CLUBS
-<Multi_key> <bracketleft> <7> <C> <bracketright>  : "🃗"	U1F0D7	# PLAYING CARD SEVEN OF CLUBS
-<Multi_key> <bracketleft> <8> <C> <bracketright>  : "🃘"	U1F0D8	# PLAYING CARD EIGHT OF CLUBS
-<Multi_key> <bracketleft> <9> <C> <bracketright>  : "🃙"	U1F0D9	# PLAYING CARD NINE OF CLUBS
-<Multi_key> <bracketleft> <T> <C> <bracketright>  : "🃚"	U1F0DA	# PLAYING CARD TEN OF CLUBS
-<Multi_key> <bracketleft> <J> <C> <bracketright>  : "🃛"	U1F0DB	# PLAYING CARD JACK OF CLUBS
-<Multi_key> <bracketleft> <N> <C> <bracketright>  : "🃜"	U1F0DC	# PLAYING CARD KNIGHT OF CLUBS
-<Multi_key> <bracketleft> <Q> <C> <bracketright>  : "🃝"	U1F0DD	# PLAYING CARD QUEEN OF CLUBS
-<Multi_key> <bracketleft> <K> <C> <bracketright>  : "🃞"	U1F0DE	# PLAYING CARD KING OF CLUBS
-
-<Multi_key> <bracketleft> <C> <B> <bracketright>  : "🂠"	U1F0A0	# PLAYING CARD BACK
-<Multi_key> <bracketleft> <B> <J> <bracketright>  : "🃏" U1F0CF	# PLAYING CARD BLACK JOKER
-<Multi_key> <bracketleft> <W> <J> <bracketright>  : "🃟"	U1F0DF	# PLAYING CARD WHITE JOKER
-
-# Do we want domino bones also?  I'm thinking [ 1 1 ], etc, maybe use
-# ] 1 1 [ for vertical (or vice-versa)
-
-# And chess/checkers pieces! We need a convention for those.  # looks like a
-# checkerboard but we're already using that for music.  Half of it?
-# <bar> will be an issue when we want double-struck W or B... we'll have
-# to consider it.  Maybe replace with <equal>
-<Multi_key> <bar> <W> <K>	 : "♔" U2654	# WHITE CHESS KING
-<Multi_key> <bar> <W> <Q>	 : "♕" U2655	# WHITE CHESS QUEEN
-<Multi_key> <bar> <W> <R>	 : "♖" U2656	# WHITE CHESS ROOK
-<Multi_key> <bar> <W> <B>	 : "♗" U2657	# WHITE CHESS BISHOP
-<Multi_key> <bar> <W> <N>	 : "♘" U2658	# WHITE CHESS KNIGHT
-<Multi_key> <bar> <W> <P>	 : "♙" U2659	# WHITE CHESS PAWN
-<Multi_key> <bar> <B> <K>	 : "♚" U265A	# BLACK CHESS KING
-<Multi_key> <bar> <B> <Q>	 : "♛" U265B	# BLACK CHESS QUEEN
-<Multi_key> <bar> <B> <R>	 : "♜" U265C	# BLACK CHESS ROOK
-<Multi_key> <bar> <B> <B>	 : "♝" U265D	# BLACK CHESS BISHOP
-<Multi_key> <bar> <B> <N>	 : "♞" U265E	# BLACK CHESS KNIGHT
-<Multi_key> <bar> <B> <P>	 : "♟" U265F	# BLACK CHESS PAWN
-<Multi_key> <bar> <W> <D> <M>	 : "⛀" U26C0	# WHITE DRAUGHTS MAN
-<Multi_key> <bar> <W> <D> <K>	 : "⛁" U26C1	# WHITE DRAUGHTS KING
-<Multi_key> <bar> <B> <D> <M>	 : "⛂" U26C2	# BLACK DRAUGHTS MAN
-<Multi_key> <bar> <B> <D> <K>	 : "⛃" U26C3	# BLACK DRAUGHTS KING
-# Since we're doing game pieces, might as well.
-<Multi_key> <bar> <W> <S>	 : "☖" U2616	# WHITE SHOGI PIECE
-<Multi_key> <bar> <B> <S>	 : "☗" U2617	# BLACK SHOGI PIECE
-# It's turned vertically and not horizontally reflected, but we use the <
-# symbol for turning...
-<Multi_key> <bar> <less> <W> <S> : "⛉" U26C9	# TURNED WHITE SHOGI PIECE
-<Multi_key> <bar> <less> <B> <S> : "⛊" U26CA	# TURNED BLACK SHOGI PIECE
-
-# As for the emoji... We can't possibly get all of them, even just all of the
-# cool/useful ones.  Maybe we can pick and choose some high-fliers.
-
-<Multi_key> <Multi_key> <d> <e> <g> <r> <e> <e> 		: "°"	U00B0	# DEGREE SIGN
-<Multi_key> <Multi_key> <d> <e> <g> <C> 		: "℃"   U2103 	# DEGREE CELSIUS
-<Multi_key> <Multi_key> <d> <e> <g> <c> 		: "℃"   U2103 	# DEGREE CELSIUS
-<Multi_key> <Multi_key> <d> <e> <g> <F> 		: "℉"   U2109   # DEGREE FAHRENHEIT
-<Multi_key> <Multi_key> <d> <e> <g> <f> 		: "℉"   U2109   # DEGREE FAHRENHEIT
-
-# Zodiacal symbols?
-<Multi_key> <Multi_key> <a> <r> <i> <e> <s>	: "♈"	U2648	# ARIES
-<Multi_key> <Multi_key> <t> <a> <u> <r> <u> <s>	: "♉"	U2649	# TAURUS
-<Multi_key> <Multi_key> <g> <e> <m> <i> <n> <i>	: "♊"	U264A	# GEMINI
-<Multi_key> <Multi_key> <c> <a> <n> <c> <e> <r>	: "♋"	U264B	# CANCER
-<Multi_key> <Multi_key> <l> <e> <o> 		: "♌"	U264C	# LEO
-<Multi_key> <Multi_key> <v> <i> <r> <g> <o>	: "♍"	U264D	# VIRGO
-<Multi_key> <Multi_key> <l> <i> <b> <r> <a>	: "♎"	U264E	# LIBRA
-# Abbreviating some of the longer ones.
-<Multi_key> <Multi_key> <s> <c> <o> <r> <p>	: "♏"	U264F	# SCORPIUS
-<Multi_key> <Multi_key> <s> <a> <g> <i> <t>	: "♐"	U2650	# SAGITTARIUS
-<Multi_key> <Multi_key> <c> <a> <p> <r> <i> <c>	: "♑"	U2651	# CAPRICORN
-<Multi_key> <Multi_key> <a> <q> <u> <a> <r>	: "♒"	U2652	# AQUARIUS
-<Multi_key> <Multi_key> <p> <i> <s> <c> <e> <s>	: "♓"	U2653	# PISCES
-# Really, this should be SERPENTARIUS.  All the other signs are in Latin.
-<Multi_key> <Multi_key> <o> <p> <h> <i> <u> <c> : "⛎"	U26CE	# OPHIUCHUS
-
-# Sigh.  So many emoji...  I think the first ones I'd go for would be
-# 💡💢💣💤💥💦💧💨💫 (1F4A1-1F4A8 and 1F4AB).  Maybe 1F550-1F567 are useful.  
-<Multi_key> <Multi_key> <i> <d> <e> <a>	    : "💡"    U1F4A1 # ELECTRIC LIGHT BULB
-<Multi_key> <Multi_key> <a> <n> <g> <e> <r> : "💢"    U1F4A2 # ANGER SYMBOL
-<Multi_key> <Multi_key> <b> <o> <m> <b>	    : "💣"    U1F4A3 # BOMB
-<Multi_key> <Multi_key> <z> <z> <z> 	    : "💤"    U1F4A4 # SLEEPING SYMBOL
-<Multi_key> <Multi_key> <p> <o> <w>	    : "💥"    U1F4A5 # COLLISION SYMBOL
-<Multi_key> <Multi_key> <s> <w> <e> <a> <t> : "💦"    U1F4A6 # SPLASHING SWEAT SYMBOL
-<Multi_key> <Multi_key> <d> <r> <o> <p>	    : "💧"    U1F4A7 # DROPLET
-<Multi_key> <Multi_key> <z> <i> <p> 	    : "💨"    U1F4A8 # DASH SYMBOL
-<Multi_key> <Multi_key> <p> <o> <o>	    : "💩"    U1F4A9 # PILE OF POO
-# Skipping U+1F4AA just now.
-<Multi_key> <Multi_key> <d> <i> <z> <z> <y> : "💫"    U1F4AB # DIZZY SYMBOL
-<Multi_key> <Multi_key> <dollar> <b> <a> <g>  : "💰"  U1F4B0 # MONEY BAG
-<Multi_key> <Multi_key> <c> <a> <k> <e>	    : "🍰"    U1F370 # SHORTCAKE
-# The cake is a lie... OK, too cutesy?
-<Multi_key> <Multi_key> <l> <i> <e> 	    : "🎂"    U1F382 # BIRTHDAY CAKE
-<Multi_key> <Multi_key> <b> <d> <a> <y>	    : "🎂"    U1F382 # BIRTHDAY CAKE
-<Multi_key> <Multi_key> <A> <O> <K>	    : "👌"    U1F44C # OK HAND SIGN
-<Multi_key> <Multi_key> <t> <h> <m> <u> <p> : "👍"    U1F44D # THUMBS UP SIGN
-<Multi_key> <Multi_key> <t> <h> <m> <d> <n> : "👎"    U1F44E # THUMBS DOWN SIGN
-# More useful in chat than U+1F48F KISS
-<Multi_key> <Multi_key> <k> <i> <s> <s>	    : "💋"    U1F48B # KISS MARK
-# ⛔ U+26D4 NO ENTRY for "Don't go there"?
-# So many hearts... I'm not touching them for now.
-# And emoticons? (U+1F600 et seq)
-
-<Multi_key> <parenleft> <1> <colon> <0> <0> <parenright> : "🕐" U1F550 # CLOCK FACE ONE OCLOCK
-<Multi_key> <parenleft> <2> <colon> <0> <0> <parenright> : "🕑" U1F551 # CLOCK FACE TWO OCLOCK
-<Multi_key> <parenleft> <3> <colon> <0> <0> <parenright> : "🕒" U1F552 # CLOCK FACE THREE OCLOCK
-<Multi_key> <parenleft> <4> <colon> <0> <0> <parenright> : "🕓" U1F553 # CLOCK FACE FOUR OCLOCK
-<Multi_key> <parenleft> <5> <colon> <0> <0> <parenright> : "🕔" U1F554 # CLOCK FACE FIVE OCLOCK
-<Multi_key> <parenleft> <6> <colon> <0> <0> <parenright> : "🕕" U1F555 # CLOCK FACE SIX OCLOCK
-<Multi_key> <parenleft> <7> <colon> <0> <0> <parenright> : "🕖" U1F556 # CLOCK FACE SEVEN OCLOCK
-<Multi_key> <parenleft> <8> <colon> <0> <0> <parenright> : "🕗" U1F557 # CLOCK FACE EIGHT OCLOCK
-<Multi_key> <parenleft> <9> <colon> <0> <0> <parenright> : "🕘" U1F558 # CLOCK FACE NINE OCLOCK
-<Multi_key> <parenleft> <1> <0> <colon> <0> <0> <parenright> : "🕙" U1F559 # CLOCK FACE TEN OCLOCK
-<Multi_key> <parenleft> <1> <1> <colon> <0> <0> <parenright> : "🕚" U1F55A # CLOCK FACE ELEVEN OCLOCK
-<Multi_key> <parenleft> <1> <2> <colon> <0> <0> <parenright> : "🕛" U1F55B # CLOCK FACE TWELVE OCLOCK
-
-<Multi_key> <parenleft> <1> <colon> <3> <0> <parenright>     : "🕜" U1F55C # CLOCK FACE ONE-THIRTY
-<Multi_key> <parenleft> <2> <colon> <3> <0> <parenright>     : "🕝" U1F55D # CLOCK FACE TWO-THIRTY
-<Multi_key> <parenleft> <3> <colon> <3> <0> <parenright>     : "🕞" U1F55E # CLOCK FACE THREE-THIRTY
-<Multi_key> <parenleft> <4> <colon> <3> <0> <parenright>     : "🕟" U1F55F # CLOCK FACE FOUR-THIRTY
-<Multi_key> <parenleft> <5> <colon> <3> <0> <parenright>     : "🕠" U1F560 # CLOCK FACE FIVE-THIRTY
-<Multi_key> <parenleft> <6> <colon> <3> <0> <parenright>     : "🕡" U1F561 # CLOCK FACE SIX-THIRTY
-<Multi_key> <parenleft> <7> <colon> <3> <0> <parenright>     : "🕢" U1F562 # CLOCK FACE SEVEN-THIRTY
-<Multi_key> <parenleft> <8> <colon> <3> <0> <parenright>     : "🕣" U1F563 # CLOCK FACE EIGHT-THIRTY
-<Multi_key> <parenleft> <9> <colon> <3> <0> <parenright>     : "🕤" U1F564 # CLOCK FACE NINE-THIRTY
-<Multi_key> <parenleft> <1> <0> <colon> <3> <0> <parenright>     : "🕥" U1F565 # CLOCK FACE TEN-THIRTY
-<Multi_key> <parenleft> <1> <1> <colon> <3> <0> <parenright>     : "🕦" U1F566 # CLOCK FACE ELEVEN-THIRTY
-<Multi_key> <parenleft> <1> <2> <colon> <3> <0> <parenright>     : "🕧" U1F567 # CLOCK FACE TWELVE-THIRTY
-# Real bitcoin symbol now.
-<Multi_key> <B> <bar> : "฿" U20BF  # BITCOIN SIGN
users/vincent/desktop/xorg/Xmodmap
@@ -1,5 +0,0 @@
-! Use Caps Lock button for compose key
-keycode 66 = Multi_key
-
-! Remove shift lock functionality
-clear Lock
users/vincent/desktop/audio.nix
@@ -1,32 +0,0 @@
-{
-  nixosConfig,
-  lib,
-  pkgs,
-  ...
-}:
-
-{
-  home.packages = with pkgs; [
-    ffmpeg-full
-  ];
-  xdg.configFile = lib.mkIf nixosConfig.services.pipewire.wireplumber.enable {
-    "pipewire/pipewire.conf.d/raop-discover.conf" = {
-      text = ''
-        context.modules = [
-           {
-               name = libpipewire-module-raop-discover
-               args = { }
-           }
-        ]
-      '';
-    };
-    "pipewire/pipewire.conf.d/zeroconf-discover.conf".text = ''
-      context.modules = [
-         {
-             name = libpipewire-module-zeroconf-discover
-             args = { }
-         }
-      ]
-    '';
-  };
-}
users/vincent/desktop/default.nix
@@ -1,101 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  nixosConfig,
-  ...
-}:
-
-let
-  inherit (lib) optionals;
-in
-{
-  imports =
-    [
-      ./audio.nix
-      ./finances.nix
-      ./firefox.nix
-      ./gtk.nix
-      ./keyboard.nix
-      ./mpv.nix
-      ./passwordstore.nix
-      ./spotify.nix
-    ]
-    ++ optionals nixosConfig.modules.desktop.xorg.enable [ ./xorg.nix ]
-    ++ optionals nixosConfig.modules.desktop.wayland.enable [ ./wayland.nix ]
-    ++ optionals nixosConfig.modules.desktop.wayland.sway.enable [ ./sway.nix ];
-
-  home.sessionVariables = {
-    WEBKIT_DISABLE_COMPOSITING_MODE = 1;
-  };
-  home.packages = with pkgs; [
-    aspell
-    aspellDicts.en
-    aspellDicts.fr
-    desktop-file-utils
-    hunspell
-    hunspellDicts.en_GB-ize
-    hunspellDicts.en_US-large
-    hunspellDicts.fr-any
-    keybase
-    mpw
-    my.batzconverter
-    # nyxt
-    obs-studio
-    playerctl
-    trash-cli
-    xdg-user-dirs
-    xdg-utils
-    xsel
-    yt-dlp # youtube-dl
-  ];
-
-  xdg.portal = {
-    enable = true;
-    xdgOpenUsePortal = true;
-    extraPortals = with pkgs; [
-      xdg-desktop-portal-hyprland
-      xdg-desktop-portal-gtk
-    ];
-    config = {
-      common = {
-        default = [
-          "gtk"
-        ];
-      };
-    };
-  };
-  xdg.mimeApps = {
-    enable = true;
-    defaultApplications = {
-      "text/html" = "firefox.desktop";
-      "x-scheme-handler/http" = "firefox.desktop";
-      "x-scheme-handler/https" = "firefox.desktop";
-      "x-scheme-handler/about" = "firefox.desktop";
-      "x-scheme-handler/unknown" = "firefox.desktop";
-    };
-  };
-  xdg.desktopEntries.firefox = {
-    name = "Firefox";
-    genericName = "Web Browser";
-    exec = "firefox %U";
-    terminal = false;
-    categories = [
-      "Application"
-      "Network"
-      "WebBrowser"
-    ];
-    mimeType = [
-      "text/html"
-      "text/xml"
-    ];
-  };
-  home.file.".XCompose".source = ./xorg/XCompose;
-  xdg.configFile."xorg/emoji.compose".source = ./xorg/emoji.compose;
-  xdg.configFile."xorg/parens.compose".source = ./xorg/parens.compose;
-  xdg.configFile."xorg/modletters.compose".source = ./xorg/modletters.compose;
-  home.file.".oath" = {
-    source = config.lib.file.mkOutOfStoreSymlink "/home/vincent/desktop/documents/.oath";
-    recursive = true;
-  };
-}
users/vincent/desktop/finances.nix
@@ -1,5 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.packages = with pkgs; [ ledger ];
-}
users/vincent/desktop/firefox.nix
@@ -1,120 +0,0 @@
-{ pkgs, ... }:
-
-{
-  programs.firefox = {
-    enable = true;
-    # Temporary fix
-    # https://github.com/nix-community/home-manager/issues/1641
-    # (https://github.com/NixOS/nixpkgs/pull/105796)
-    package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
-      extraPolicies = {
-        ExtensionSettings = { };
-        CaptivePortal = false;
-        DisableFirefoxStudies = true;
-        DisablePocket = true;
-        DisableTelemetry = true;
-        # DisableFirefoxAccounts = true;
-        FirefoxHome = {
-          Pocket = false;
-          # Snippets = false;
-        };
-        UserMessaging = {
-          ExtensionRecommendations = false;
-          SkipOnboarding = true;
-        };
-      };
-    };
-
-    profiles.default = {
-      id = 0;
-      isDefault = true;
-      settings = {
-        "general.warnOnAboutConfig" = false;
-        "browser.aboutConfig.showWarning" = false;
-        # It keeps asking me on startup if I want firefox as default
-        "browser.shell.checkDefaultBrowser" = false;
-        # Disable pocket
-        "extensions.pocket.enabled" = false;
-        "extensions.pocket.site" = "";
-        "extensions.pocket.oAuthConsumerKey" = "";
-        "extensions.pocket.api" = "";
-        "extensions.htmlaboutaddons.recommendations.enabled" = false;
-        # performance
-        "browser.download.animateNotifications" = false;
-        "browser.tabs.animate" = false;
-        "toolkit.cosmeticAnimations.enabled" = false;
-        "html5.offmainthread" = true;
-        "layers.acceleration.force-enabled" = true;
-        "layers.async-video.enabled" = true;
-        "layers.offmainthreadcomposition.async-animations" = true;
-        "layers.offmainthreadcomposition.enabled" = true;
-        "layout.frame_rate.precise" = true;
-        "webgl.force-enabled" = true;
-        "gfx.xrender.enabled" = true;
-        "gfx.webrender.all" = true;
-        "gfx.webrender.enable" = true;
-        # Misc
-        "privacy.donottrackheader.enabled" = true;
-        # "privacy.firstparty.isolate" = true;
-        #"privacy.resistFingerprinting" = true;
-        "privacy.trackingprotection.cryptomining.enabled" = true;
-        "privacy.trackingprotection.enabled" = true;
-        "privacy.trackingprotection.fingerprinting.enabled" = true;
-        "privacy.trackingprotection.socialtracking.enabled" = true;
-        # FIXME(vdemeester) Enable thoses
-        #"privacy.clearOnShutdown.history" = true;
-        #"privacy.clearOnShutdown.siteSettings" = true;
-        "browser.formfill.enable" = false;
-        "browser.newtabpage.activity-stream.feeds.telemetry" = false;
-        "browser.newtabpage.activity-stream.telemetry" = false;
-        "browser.ping-centre.telemetry" = false;
-        "browser.safebrowsing.enabled" = false;
-        "browser.search.geoip.url" = "";
-        "browser.selfsupport.url" = "";
-        "browser.send_pings" = false;
-        "browser.send_pings.require_same_host" = true;
-        "browser.sessionstore.privacy_level" = 2;
-        "browser.startup.homepage_override.buildID" = "";
-        "browser.startup.homepage_override.mstone" = "ignore";
-        "browser.urlbar.speculativeConnect.enabled" = false;
-        "browser.contentblocking.category" = "strict";
-        "browser.ctrlTab.recentlyUsedOrder" = false;
-        "network.dns.disablePrefetch" = true;
-        "network.dnsCacheEntries" = 100;
-        "network.dnsCacheExpiration" = 60;
-        #"network.http.referer.XOriginPolicy" = 2;
-        #"network.http.referer.XOriginTrimmingPolicy" = 2;
-        #"network.http.referer.spoofSource" = true;
-        "network.http.sendRefererHeader" = 2;
-        #"network.http.sendSecureXSiteReferrer" = false;
-        #"network.http.speculative-parallel-limit" = 0;
-        "network.predictor.enabled" = false;
-        "network.prefetch-next" = false;
-        "media.peerconnection.enabled" = false;
-        "media.peerconnection.turn.disable" = true;
-        "media.peerconnection.video.enabled" = false;
-        "media.peerconnection.identity.timeout" = 1;
-        "dom.battery.enabled" = false;
-        # "dom.event.clipboardevents.enabled" = false;
-        "dom.event.contextmenu.enabled" = false;
-        "toolkit.telemetry.archive.enabled" = false;
-        "toolkit.telemetry.bhrPing.enabled" = false;
-        "toolkit.telemetry.cachedClientID" = "";
-        "toolkit.telemetry.enabled" = false;
-        "toolkit.telemetry.firstShutdownPing.enabled" = false;
-        "toolkit.telemetry.hybridContent.enabled" = false;
-        "toolkit.telemetry.newProfilePing.enabled" = false;
-        "toolkit.telemetry.reportingpolicy.firstRun" = false;
-        "toolkit.telemetry.server" = "";
-        "toolkit.telemetry.shutdownPingSender.enabled" = false;
-        "toolkit.telemetry.unified" = false;
-        "toolkit.telemetry.updatePing.enabled" = false;
-        # Red Hat specific
-        "network.negotiate-auth.trusted-uris" = ".redhat.com";
-      };
-    };
-    profiles.redhat = {
-      id = 1;
-    };
-  };
-}
users/vincent/desktop/gtk.nix
@@ -1,15 +0,0 @@
-{ pkgs, ... }:
-
-{
-  gtk = {
-    enable = true;
-    iconTheme = {
-      name = "Arc";
-      package = pkgs.arc-icon-theme;
-    };
-    theme = {
-      name = "Arc-Darker";
-      package = pkgs.arc-theme;
-    };
-  };
-}
users/vincent/desktop/i3.nix
@@ -1,506 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  # FIXME(change this at some point)
-  powermenu = pkgs.writeScript "powermenu.sh" ''
-    #!/usr/bin/env bash
-    MENU="$(${pkgs.rofi}/bin/rofi -sep "|" -dmenu -i -p 'System' -location 3 -xoffset -10 -yoffset 32 -width 20 -hide-scrollbar -line-padding 4 -padding 20 -lines 5 <<< "Suspend|Hibernate|Reboot|Shutdown")"
-    case "$MENU" in
-      *Suspend) systemctl suspend;;
-      *Hibernate) systemctl hibernate;;
-      *Reboot) systemctl reboot ;;
-      *Shutdown) systemctl -i poweroff
-    esac
-  '';
-  emacs-in-folder = pkgs.writeScript "emacs-in-folder" ''
-    #!/usr/bin/env bash
-    fd . -d 3 --type d ~/src | rofi -dmenu | xargs -I {} zsh -i -c "cd {}; emacs ."
-  '';
-  lockCommand = "${pkgs.betterlockscreen}/bin/betterlockscreen -l dim";
-in
-{
-  imports = [
-    ./alacritty.nix
-    ./autorandr.nix
-    # ./dconf.nix
-    ./xsession.nix
-  ];
-  home.sessionVariables = {
-    WEBKIT_DISABLE_COMPOSITING_MODE = 1;
-  };
-  home.packages = with pkgs; [
-    alacritty
-    kitty
-    arandr
-    # TODO switch to betterlockscreen
-    i3lock-color
-    libnotify
-    maim
-    slop
-    # Gnome3 relica
-    # gnome3.dconf-editor
-    # FIXME move this elsewhere
-    pop-gtk-theme
-    pop-icon-theme
-    pinentry-gnome
-
-    aspell
-    aspellDicts.en
-    aspellDicts.fr
-    hunspell
-    hunspellDicts.en_US-large
-    hunspellDicts.en_GB-ize
-    hunspellDicts.fr-any
-    wmctrl
-    xclip
-    xdg-user-dirs
-    xdg-utils
-    xsel
-  ];
-  xdg.configFile."rofi/slate.rasi".text = ''
-    * {
-      background-color: #282C33;
-      border-color: #2e343f;
-      text-color: #8ca0aa;
-      spacing: 0;
-      width: 512px;
-    }
-
-    inputbar {
-      border: 0 0 1px 0;
-      children: [prompt,entry];
-    }
-
-    prompt {
-      padding: 16px;
-      border: 0 1px 0 0;
-    }
-
-    textbox {
-      background-color: #2e343f;
-      border: 0 0 1px 0;
-      border-color: #282C33;
-      padding: 8px 16px;
-    }
-
-    entry {
-      padding: 16px;
-    }
-
-    listview {
-      cycle: false;
-      margin: 0 0 -1px 0;
-      scrollbar: false;
-    }
-
-    element {
-      border: 0 0 1px 0;
-      padding: 16px;
-    }
-
-    element selected {
-      background-color: #2e343f;
-    }
-  '';
-  programs.kitty = {
-    enable = true;
-    settings = {
-      term = "xterm-256color";
-      close_on_child_death = "yes";
-      font_family = "Ubuntu Mono";
-    };
-    theme = "Tango Light";
-  };
-  programs.rofi = {
-    enable = true;
-    package = pkgs.rofi.override {
-      plugins = [
-        pkgs.rofi-emoji
-        pkgs.rofi-menugen
-        pkgs.rofi-mpd
-      ];
-    };
-    font = "Ubuntu Mono 14";
-    terminal = "${pkgs.kitty}/bin/kitty";
-    theme = "slate";
-  };
-  services = {
-    blueman-applet.enable = true;
-    pasystray.enable = true;
-    dunst = {
-      enable = true;
-      settings = {
-        global = {
-          geometry = "500x5-10+10";
-          follow = "keyboard";
-          frame_color = "#cccccc";
-          font = "Ubuntu Mono 11";
-          indicate_hidden = "yes";
-          separator_height = 1;
-          padding = 8;
-          horizontal_padding = 8;
-          frame_width = 2;
-          sort = "yes";
-          markup = "full";
-          format = "<b>%s</b>\n%b";
-          ignore_newline = "no";
-          stack_duplicates = true;
-          show_indicators = "yes";
-          history_length = 40;
-        };
-        shortcuts = {
-          close = "ctrl+space";
-          close_all = "ctrl+shift+space";
-          history = "ctrl+percent";
-          context = "ctrl+shift+period";
-        };
-        urgency_low = {
-          background = "#000000";
-          foreground = "#ffffff";
-          timeout = 4;
-        };
-        urgency_normal = {
-          background = "#000000";
-          foreground = "#ffffff";
-          timeout = 6;
-        };
-        urgency_critical = {
-          background = "#000000";
-          foreground = "#cf6a4c";
-          timeout = 0;
-        };
-      };
-    };
-    udiskie.enable = true;
-    network-manager-applet.enable = true;
-    /*
-      screern-locker = {
-      enable = true;
-      lockCmd = lockCommand;
-      inactiveInterval = 60;
-      xautolock = {
-      enable = true;
-      detectSleep = true;
-      };
-      };
-    */
-    random-background = {
-      enable = true;
-      enableXinerama = true;
-      imageDirectory = "${config.home.homeDirectory}/desktop/pictures/walls";
-      interval = "5h";
-    };
-  };
-  xsession.windowManager.i3 = {
-    package = pkgs.i3-gaps;
-    enable = true;
-    config = {
-      fonts = {
-        names = [ "Ubuntu Mono" ];
-        size = 10.0;
-      };
-      focus = {
-        followMouse = false;
-      };
-      window = {
-        titlebar = false;
-        border = 1;
-        hideEdgeBorders = "both";
-      };
-      keybindings = {
-        "Mod4+Return" = "exec kitty";
-        "Mod4+Shift+Return" = "exec emacsclient -c";
-        "Mod4+Control+Return" = "exec emacs";
-        "Mod4+Control+Shift+Return" = "exec ${emacs-in-folder}";
-      };
-      gaps = {
-        inner = 2;
-        outer = 2;
-      };
-      keycodebindings = {
-        "Mod4+Shift+24" = "kill";
-        "Mod4+33" =
-          "exec \"rofi -show drun -modi 'drun,run,window,ssh' -kb-row-select 'Tab' -kb-row-tab '' -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'";
-        "Mod4+Shift+33" =
-          "exec \"rofi -show combi -modi 'drun,run,window,ssh,combi' -kb-row-select 'Tab' -kb-row-tab '' -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'";
-        "Mod4+Control+33" =
-          "exec \"rofi -show emoji -modi emoji -location 2 -hide-scrollbar -separator-style solid -font 'Ubuntu Mono 14'|pbcopy";
-        # "Mod4+space" = "";
-        # focus window
-        "Mod4+44" = "focus left";
-        "Mod4+45" = "focus down";
-        "Mod4+46" = "focus up";
-        "Mod4+47" = "focus right";
-        "Mod4+38" = "focus parent";
-        # move focused window
-        "Mod4+Shift+44" = "move left";
-        "Mod4+Shift+45" = "move down";
-        "Mod4+Shift+46" = "move up";
-        "Mod4+Shift+47" = "move right";
-        # resize
-        "Mod4+Control+44" = "resize shrink width 5px or 5ppt";
-        "Mod4+Control+45" = "resize grow width 5px or 5ppt";
-        "Mod4+Control+46" = "resize shrink height 5px or 5ppt";
-        "Mod4+Control+47" = "resize grow height 5px or 5ppt";
-        # gaps
-        "Mod4+Mod1+44" = "gaps inner current plus 5";
-        "Mod4+Mod1+45" = "gaps inner current minus 5";
-        "Mod4+Mod1+46" = "gaps outer current plus 5";
-        "Mod4+Mod1+47" = "gaps outer current minus 5";
-        # Fullscreen
-        "Mod4+41" = "fullscreen toggle";
-        # Change container layout
-        "Mod4+39" = "layout stacking";
-        "Mod4+25" = "layout tabbed";
-        "Mod4+26" = "layout toggle split";
-        # Split
-        "Mod4+Control+39" = "split h";
-        # Manage floating
-        "Mod4+Shift+61" = "floating toggle";
-        "Mod4+61" = "focus mode_toggle";
-        # manage workspace
-        "Mod4+113" = "workspace prev_on_output";
-        "Mod4+112" = "workspace prev_on_output";
-        "Mod4+114" = "workspace next_on_output";
-        "Mod4+117" = "workspace next_on_output";
-        # manage output
-        "Mod4+Shift+113" = "focus output left";
-        "Mod4+Shift+116" = "focus output down";
-        "Mod4+Shift+111" = "focus output up";
-        "Mod4+Shift+114" = "focus output right";
-        # Custom keybinding
-        "Mod4+Shift+32" = "exec ${lockCommand}";
-        # "Mod4+Shift+39" = "exec ~/.screenlayout/home-work.sh && systemctl --user start random-background.service";
-        "Mod4+24" = "border toggle";
-        # TODO transform this into mode with multiple "capture" target
-        "Mod4+32" = "exec capture";
-      };
-      modes = { };
-      bars = [
-        {
-          mode = "hide";
-          position = "bottom";
-          trayOutput = "primary";
-          statusCommand = "${pkgs.i3status}/bin/i3status";
-          fonts = {
-            names = [ "Fira Code" ];
-            size = 12.0;
-          };
-        }
-      ];
-    };
-    extraConfig = ''
-      set $mod Mod4
-
-      # Use Mouse+$mod to drag floating windows to their wanted position
-      floating_modifier $mod
-
-      set $WS0 0
-      set $WS1 1
-      set $WS2 2
-      set $WS3 3
-      set $WS4 4
-      set $WS5 5
-      set $WS6 6
-      set $WS7 7
-      set $WS8 8
-      set $WS9 9
-
-      # switch to workspace
-      bindcode $mod+10 workspace $WS1
-      bindcode $mod+11 workspace $WS2
-      bindcode $mod+12 workspace $WS3
-      bindcode $mod+13 workspace $WS4
-      bindcode $mod+14 workspace $WS5
-      bindcode $mod+15 workspace $WS6
-      bindcode $mod+16 workspace $WS7
-      bindcode $mod+17 workspace $WS8
-      bindcode $mod+18 workspace $WS9
-      bindcode $mod+19 workspace $WS0
-
-      # move focused container to workspace
-      bindcode $mod+Shift+10 move container to workspace $WS1
-      bindcode $mod+Shift+11 move container to workspace $WS2
-      bindcode $mod+Shift+12 move container to workspace $WS3
-      bindcode $mod+Shift+13 move container to workspace $WS4
-      bindcode $mod+Shift+14 move container to workspace $WS5
-      bindcode $mod+Shift+15 move container to workspace $WS6
-      bindcode $mod+Shift+16 move container to workspace $WS7
-      bindcode $mod+Shift+17 move container to workspace $WS8
-      bindcode $mod+Shift+18 move container to workspace $WS9
-      bindcode $mod+Shift+19 move container to workspace $WS0
-
-      #assign [class="Firefox" window_role="browser"] → $WS1
-      #assign [class="Google-chrome" window_role="browser"] → $WS1
-
-      for_window [title="capture"] floating enable;
-
-      bindsym XF86MonBrightnessUp exec "xbacklight -inc 10"
-      bindsym XF86MonBrightnessDown exec "xbacklight -dec 10"
-      bindsym shift+XF86MonBrightnessUp exec "xbacklight -inc 1"
-      bindsym shift+XF86MonBrightnessDown exec "xbacklight -dec 1"
-      bindsym XF86AudioLowerVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ -5%"
-      bindsym XF86AudioRaiseVolume exec "pactl set-sink-mute @DEFAULT_SINK@ false ; pactl set-sink-volume @DEFAULT_SINK@ +5%"
-      bindsym XF86AudioMute exec "pactl set-sink-mute @DEFAULT_SINK@ toggle"
-      bindsym XF86AudioMicMute exec "pactl set-source-mute @DEFAULT_SOURCE@ toggle"
-      bindsym XF86AudioPlay exec "playerctl play-pause"
-      bindsym XF86AudioNext exec "playerctl next"
-      bindsym XF86AudioPrev exec "playerctl previous"
-
-      # reload the configuration file
-      bindsym $mod+Shift+x reload
-      # restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
-      bindsym $mod+Shift+o restart
-      # exit i3 (logs you out of your X session)
-      bindsym $mod+Shift+p exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3?' -b 'Yes, exit i3' 'i3-msg exit'"
-      # powermenu
-      bindsym $mod+F12 exec ${powermenu}
-      bindsym $mod+F10 exec ${pkgs.my.scripts}/bin/shot %d
-      bindsym $mod+Shift+F10 exec ${pkgs.my.scripts}/bin/shotf %d
-
-      # screen management
-      bindsym $mod+F11 exec "autorandr -c"
-      bindsym $mod+Shift+F11 exec "arandr"
-
-      # move workspace to output
-      set $workspace_move Move workspace to output : [l]eft [r]ight [d]own [u]p
-
-      mode "$workspace_move" {
-      bindsym left move workspace to output left
-        bindsym l move workspace to output left
-
-      bindsym right move workspace to output right
-        bindsym r move workspace to output right
-
-      bindsym down move workspace to output down
-        bindsym d move workspace to output down
-
-      bindsym up move workspace to output up
-        bindsym u move workspace to output up
-
-      bindsym Escape mode "default"
-      bindsym Return mode "default"
-        }
-
-        bindsym $mod+m mode "$workspace_move"
-
-      # resize window (you can also use the mouse for that)
-      mode "resize" {
-        # These bindings trigger as soon as you enter the resize mode
-
-      # Pressing left will shrink the window’s width.
-      # Pressing right will grow the window’s width.
-      # Pressing up will shrink the window’s height.
-      # Pressing down will grow the window’s height.
-      bindsym t resize shrink width 10 px or 10 ppt
-      bindsym s resize grow height 10 px or 10 ppt
-      bindsym r resize shrink height 10 px or 10 ppt
-      bindsym n resize grow width 10 px or 10 ppt
-
-      # same bindings, but for the arrow keys
-      bindsym Left resize shrink width 10 px or 10 ppt
-      bindsym Down resize grow height 10 px or 10 ppt
-      bindsym Up resize shrink height 10 px or 10 ppt
-      bindsym Right resize grow width 10 px or 10 ppt
-
-      # back to normal: Enter or Escape
-      bindsym Return mode "default"
-      bindsym Escape mode "default"
-        }
-
-      bindsym $mod+o mode "resize"
-      ## quick terminal (tmux)
-      exec --no-startup-id kitty --title metask --class metask tmux
-      exec --no-startup-id emacsclient -n -c -F "((name . \"_emacs scratchpad_\"))"
-      for_window [instance="metask"] floating enable;
-      for_window [instance="metask"] move scratchpad; [instance="metask"] scratchpad show; move position center; move scratchpad
-      bindcode $mod+49 [instance="metask"] scratchpad show
-
-      bindcode $mod+51 [class="Spotify"] scratchpad show
-      bindcode $mod+23 move scratchpad
-
-      exec --no-startup-id emacsclient -n -c -F "((name . \"_emacs scratchpad_\"))"
-      for_window [title="_emacs scratchpad_" class="Emacs"] move scratchpad
-      bindcode $mod+Shift+49 [title="_emacs scratchpad_" class="Emacs"] scratchpad show
-
-      # System menu
-      set $sysmenu "system:  [s]uspend [l]ock [r]estart [b]lank-screen [p]oweroff reload-[c]onf e[x]it"
-      bindsym $mod+q mode $sysmenu
-      mode $sysmenu {
-          # restart i3 inplace (preserves your layout/session)
-          bindsym s exec ~/.i3/status_scripts/ambisleep; mode "default"
-          bindsym l exec i3lock -c 5a5376; mode "default"
-          bindsym r restart
-          bindsym b exec "xset dpms force off"; mode "default"
-          bindsym p exec systemctl shutdown
-          bindsym c reload; mode "default"
-          bindsym x exit
-          bindsym Return mode "default"
-          bindsym Escape mode "default"
-          bindsym $mod+q mode "default"
-      }
-    '';
-  };
-  # FIXME switch to polybar ?
-  xdg.configFile."i3status/config".text = ''
-    # i3status configuration file.
-    # see "man i3status" for documentation.
-
-    # It is important that this file is edited as UTF-8.
-    # The following line should contain a sharp s:
-    # ß
-    # If the above line is not correctly displayed, fix your editor first!
-
-    general {
-      colors = true
-      interval = 2
-    }
-
-    order += "path_exists 🔑"
-    order += "battery 0"
-    order += "load"
-    order += "tztime local"
-
-    battery 0 {
-      format = "%status %percentage %remaining"
-      format_down = "No battery"
-      status_chr = "⚇"
-      status_bat = "⚡"
-      status_full = "☻"
-      status_unk = "?"
-      path = "/sys/class/power_supply/BAT%d/uevent"
-      low_threshold = 10
-    }
-
-    run_watch 🐳 {
-      pidfile = "/run/docker.pid"
-    }
-
-    path_exists 🔑 {
-      path = "/proc/sys/net/ipv4/conf/wg0"
-    }
-
-    tztime local {
-      format = "%Y-%m-%d %H:%M:%S"
-    }
-
-    load {
-      format = "%1min"
-    }
-
-    cpu_temperature 0 {
-      format = "T: %degrees °C"
-      path = "/sys/class/hwmon/hwmon0/temp1_input"
-    }
-
-    disk "/" {
-      format = "%avail"
-    }
-  '';
-}
users/vincent/desktop/keyboard.nix
@@ -1,11 +0,0 @@
-{
-  home.keyboard = {
-    layout = "fr(bepo),fr";
-    variant = "oss";
-    options = [
-      "grp:menu_toggle"
-      "grp_led:caps"
-      "compose:caps"
-    ];
-  };
-}
users/vincent/desktop/mpv.nix
@@ -1,11 +0,0 @@
-{ pkgs, ... }:
-
-{
-  programs.mpv = {
-    enable = true;
-    config = {
-      hwdec = "auto";
-    };
-    scripts = [ pkgs.mpvScripts.mpris ];
-  };
-}
users/vincent/desktop/passwordstore.nix
@@ -1,21 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  home.sessionVariables = {
-    "PASSAGE_DIR" = "${config.xdg.dataHome}/passage";
-    "PASSAGE_IDENTITIES_FILE" = "${config.xdg.dataHome}/passage/identities";
-  };
-  # TODO Migrate to passage
-  programs.password-store = {
-    enable = true;
-    package = pkgs.pass-wayland.withExtensions (exts: [
-      exts.pass-otp
-      exts.pass-genphrase
-      exts.pass-update
-    ]);
-  };
-  home.packages = with pkgs; [
-    wofi-pass
-    passage
-  ];
-}
users/vincent/desktop/spotify.nix
@@ -1,8 +0,0 @@
-{ pkgs, ... }:
-
-{
-  # FIXME: need a .desktop file..
-  home.packages = with pkgs; [
-    spotify
-  ];
-}
users/vincent/desktop/sway.nix
@@ -1,302 +0,0 @@
-{ config, pkgs, ... }:
-
-let
-  emacs-in-folder = pkgs.writeScript "emacs-in-folder" ''
-    #!/usr/bin/env bash
-    fd . -d 3 --type d ~/src | ${pkgs.wofi}/bin/wofi -dmenu | xargs -I {} zsh -i -c "cd {}; emacs ."
-  '';
-  fontConf = {
-    names = [ "JetBrains Mono" ];
-    size = 12.0;
-  };
-in
-{
-  wayland.windowManager.sway = {
-    enable = true;
-    wrapperFeatures.gtk = true;
-    # systemd.enable = true;
-    extraSessionCommands = ''
-      export SDL_VIDEODRIVER=wayland
-      export QT_QPA_PLATFORM=wayland
-      export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
-      export _JAVA_AWT_WM_NONREPARTENTING=1
-      export MOZ_ENABLE_WAYLAND=1
-    '';
-    checkConfig = false;
-    config = {
-      gaps = {
-        inner = 2;
-        outer = 2;
-      };
-      colors = {
-        focused = {
-          border = "#BD93F9";
-          background = "#282A36";
-          text = "#ffffff";
-          indicator = "#8BE9FD";
-          childBorder = "#BD93F9";
-        };
-        focusedInactive = {
-          border = "#BD93F9";
-          background = "#282A36";
-          text = "#F8F8F2";
-          indicator = "#44475A";
-          childBorder = "#44475A";
-        };
-        unfocused = {
-          border = "#44475A";
-          background = "#282A36";
-          text = "#BFBFBF";
-          indicator = "#282A36";
-          childBorder = "#282A36";
-        };
-      };
-      modifier = "Mod4";
-      terminal = "${pkgs.kitty}/bin/kitty";
-      menu = "${pkgs.wofi}/bin/wofi -G --show drun -modi 'drun,run,window,ssh'";
-      bindkeysToCode = true;
-      input = {
-        "type:keyboard" = {
-          xkb_layout = "fr,fr,us";
-          xkb_variant = "bepo,ergol,";
-          xkb_options = "grp:menu_toggle,grp_led:caps,compose:caps";
-        };
-      };
-      output = {
-        "*" = {
-          bg = "~/desktop/pictures/lockscreen fill";
-        };
-      };
-      fonts = fontConf;
-      bars = [ ];
-      keybindings =
-        let
-          mod = config.wayland.windowManager.sway.config.modifier;
-          inherit (config.wayland.windowManager.sway.config) terminal;
-        in
-        {
-          "${mod}+Return" = "exec ${terminal}";
-
-          "${mod}+Shift+Return" = "exec emacsclient -c";
-          "${mod}+Control+Return" = "exec emacs";
-          "${mod}+Control+Shift+Return" = "exec ${emacs-in-folder}";
-
-          "${mod}+Left" = "focus left";
-          "${mod}+Down" = "focus down";
-          "${mod}+Up" = "focus up";
-          "${mod}+Right" = "focus right";
-
-          "${mod}+Shift+Left" = "move left";
-          "${mod}+Shift+Down" = "move down";
-          "${mod}+Shift+Up" = "move up";
-          "${mod}+Shift+Right" = "move right";
-
-          "${mod}+Control+Left" = "workspace prev_on_output";
-          "${mod}+Control+Down" = "workspace prev";
-          "${mod}+Control+Up" = "workspace next";
-          "${mod}+Control+Right" = "workspace next_on_output";
-
-          "${mod}+Shift+Control+Left" = "move workspace to output left";
-          "${mod}+Shift+Control+Down" = "move workspace to output down";
-          "${mod}+Shift+Control+Up" = "move workspace to output up";
-          "${mod}+Shift+Control+Right" = "move workspace to output right";
-
-          "${mod}+Shift+space" = "floating toggle";
-          "${mod}+space" = "focus mode_toggle";
-          "${mod}+Tab" = "[con_mark=_back] focus";
-
-          "XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 10%+";
-          "XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 10%-";
-          "Shift+XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 1%+";
-          "Shift+XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl set 1%-";
-        };
-      window.commands = [
-        {
-          command = "inhibit_idle fullscreen";
-          criteria.app_id = "firefox";
-        }
-        {
-          command = "inhibit_idle fullscreen";
-          criteria.app_id = "mpv";
-        }
-        {
-          # spotify doesn't set its WM_CLASS until it has mapped, so the assign is not reliable
-          command = "move to workspace 10";
-          criteria.class = "Spotify";
-        }
-        {
-          command = "move to scratchpad, scratchpad show";
-          criteria = {
-            app_id = "metask";
-          };
-        }
-        {
-          command = "move to scratchpad, scratchpad show";
-          criteria = {
-            app_id = "emacs";
-            title = "^_emacs scratchpad_$";
-          };
-        }
-        {
-          criteria = {
-            title = "Save File";
-          };
-          command = "floating enable, resize set width 600px height 800px";
-        }
-        {
-          criteria = {
-            class = "pavucontrol";
-          };
-          command = "floating enable";
-        }
-        {
-          criteria = {
-            title = "(Sharing Indicator)";
-          };
-          command = "inhibit_idle visible, floating enable";
-        }
-        {
-          # browser zoom|meet|bluejeans
-          criteria = {
-            title = "(Blue Jeans)|(Meet)|(Zoom Meeting)";
-          };
-          command = "inhibit_idle visible";
-        }
-        # for_window [app_id="^chrome-.*"] shortcuts_inhibitor disable
-        {
-          criteria = {
-            app_id = "^chrome-.*";
-          };
-          command = "shortcuts_inhibitor disable";
-        }
-      ];
-      startup = [
-        {
-          command = "dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY DBUS_SESSION_BUS_ADDRESS SWAYSOCK XDG_SESSION_TYPE XDG_SESSION_DESKTOP XDG_CURRENT_DESKTOP";
-        } # workaround
-        # Make sure we update systemd service env variables with the current ones. This is required for dbus to work properly.
-        { command = "dbus-update-activation-environment --systemd --all"; }
-        {
-          command = "systemctl --user restart kanshi";
-          always = true;
-        }
-        {
-          command = "${pkgs.pa-notify}/bin/pa-notify -u0";
-          always = true;
-        }
-        # Probably put a condition here.
-        { command = "emacs --fg-daemon"; }
-        { command = "i3-back"; }
-        { command = "firefox"; }
-        { command = "${pkgs.kitty}/bin/kitty --title metask --class metask"; }
-      ];
-    };
-    extraConfig =
-      let
-        mod = config.wayland.windowManager.sway.config.modifier;
-        inherit (config.wayland.windowManager.sway.config) menu;
-      in
-      ''
-        bindcode ${mod}+33 exec "${menu}"
-        bindcode ${mod}+Shift+33 exec "raffi -I"
-        bindcode ${mod}+Control+33 exec "${pkgs.wofi-emoji}/bin/wofi-emoji -G"
-        bindcode ${mod}+Shift+24 kill
-        bindcode ${mod}+38 focus parent
-        bindcode ${mod}+39 layout stacking
-        bindcode ${mod}+25 layout tabbed
-        bindcode ${mod}+26 layout toggle split
-        bindcode ${mod}+Shift+54 reload
-        bindcode ${mod}+Shift+26 exec "swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'"
-
-        mode "resize" {
-            bindsym Shift+Left resize grow width 5px
-            bindsym Shift+Down resize shrink height 5px
-            bindsym Shift+Up resize grow height 5px
-            bindsym Shift+Right resize shrink width 5px
-
-            bindsym Control+Left resize grow width 50px
-            bindsym Control+Down resize shrink height 50px
-            bindsym Control+Up resize grow height 50px
-            bindsym Control+Right resize shrink width 50px
-
-            # Ditto, with arrow keys
-            bindsym Left resize grow width 15px
-            bindsym Down resize shrink height 15px
-            bindsym Up resize grow height 15px
-            bindsym Right resize shrink width 15px
-
-            # Return to default mode
-            bindsym Return mode "default"
-            bindsym Escape mode "default"
-        }
-        bindcode ${mod}+32 mode "resize"
-
-        bindcode ${mod}+Shift+32 exec "${pkgs.swaylock}/bin/swaylock -i $HOME/desktop/pictures/lockscreen"
-
-        bindcode ${mod}+24 exec notify-send --icon=battery --category=info --urgency=critical "$(acpi)"
-        # bindcode ${mod}+58 exec
-        bindcode ${mod}+28 exec notify-send --icon=clock --category=info --urgency=critical "$(date +"%I:%M")"
-        bindcode ${mod}+Shift+28 exec notify-send --icon=clock --category=info --urgency=critical "$(date)" 
-
-        # switch to workspace
-        bindcode ${mod}+10 workspace number 1
-        bindcode ${mod}+11 workspace number 2
-        bindcode ${mod}+12 workspace number 3
-        bindcode ${mod}+13 workspace number 4
-        bindcode ${mod}+14 workspace number 5
-        bindcode ${mod}+15 workspace number 6
-        bindcode ${mod}+16 workspace number 7
-        bindcode ${mod}+17 workspace number 8
-        bindcode ${mod}+18 workspace number 9
-        bindcode ${mod}+19 workspace number 10
-
-        # move focused container to workspace
-        bindcode ${mod}+Shift+10 move container to workspace number 1
-        bindcode ${mod}+Shift+11 move container to workspace number 2
-        bindcode ${mod}+Shift+12 move container to workspace number 3
-        bindcode ${mod}+Shift+13 move container to workspace number 4
-        bindcode ${mod}+Shift+14 move container to workspace number 5
-        bindcode ${mod}+Shift+15 move container to workspace number 6
-        bindcode ${mod}+Shift+16 move container to workspace number 7
-        bindcode ${mod}+Shift+17 move container to workspace number 8
-        bindcode ${mod}+Shift+18 move container to workspace number 9
-        bindcode ${mod}+Shift+19 move container to workspace number 10
-
-        bindcode ${mod}+Control+39 split h
-        bindcode ${mod}+41 fullscreen toggle
-
-        bindsym XF86AudioRaiseVolume exec ${pkgs.pamixer}/bin/pamixer -ui 5 && ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
-        bindsym XF86AudioLowerVolume exec ${pkgs.pamixer}/bin/pamixer -ud 5 && ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
-        bindsym XF86AudioMute exec ${pkgs.pamixer}/bin/pamixer --toggle-mute && ( ${pkgs.pamixer}/bin/pamixer --get-mute && echo 0 > $SWAYSOCK.wob ) || ${pkgs.pamixer}/bin/pamixer --get-volume > $SWAYSOCK.wob
-
-        bindsym XF86AudioPlay exec "playerctl play-pause"
-        bindsym XF86Messenger exec "playerctl play-pause"
-        bindsym XF86AudioNext exec "playerctl next"
-        bindsym XF86Go exec "playerctl next"
-        bindsym XF86AudioPrev exec "playerctl previous"
-        bindsym Cancel exec "playerctl previous"
-
-        bindcode ${mod}+49 exec swaymsg [app_id="metask"] scratchpad show || exec ${pkgs.kitty}/bin/kitty --title metask --class metask
-        bindsym --whole-window button8 exec sswaymsg [app_id="metask"] scratchpad show || exec ${pkgs.kitty}/bin/kitty --title metask --class metask
-        bindcode ${mod}+Shift+49 exec swaymsg '[app_id="emacs" title="^_emacs scratchpad_$"]' scratchpad show || exec ${config.programs.emacs.package}/bin/emacsclient -c -F "((name . \"_emacs scratchpad_\"))"
-        bindsym --whole-window button9 exec swaymsg '[app_id="emacs" title="^_emacs scratchpad_$"]' scratchpad show || exec ${config.programs.emacs.package}/bin/emacsclient -c -F "((name . \"_emacs scratchpad_\"))"
-
-        # Mouse
-        # Disabled as it doesn't play well with thinkpad's trackpoint :D
-        # bindsym --whole-window button6 workspace next_on_output
-        # bindsym --whole-window button7 workspace prev_on_output
-
-        bindsym ${mod}+F10 exec ${pkgs.my.scripts}/bin/shot %d
-        bindsym ${mod}+Shift+F10 exec ${pkgs.my.scripts}/bin/shotf %d
-
-        bindsym ${mod}+F9 exec ${pkgs.mako}/bin/makoctl mode -s do-not-disturb
-        bindsym ${mod}+Shift+F9 exec ${pkgs.mako}/bin/makoctl mode -s default
-      '';
-  };
-  home.packages = with pkgs; [
-    swaybg
-    pinentry-gnome3
-    i3-back
-  ];
-
-}
users/vincent/desktop/wayland.nix
@@ -1,222 +0,0 @@
-{
-  lib,
-  pkgs,
-  nixosConfig,
-  ...
-}:
-
-{
-  home.pointerCursor = {
-    gtk.enable = true;
-    x11.enable = true;
-    package = pkgs.qogir-icon-theme;
-    name = "Qogir";
-    size = 24;
-  };
-
-  programs = {
-    kitty = {
-      enable = true;
-      shellIntegration.enableZshIntegration = true;
-      settings = {
-        term = "xterm-256color";
-        close_on_child_death = "yes";
-        font_family = "JetBrains Mono";
-        tab_bar_edge = "top";
-        listen_on = "unix:/tmp/my kitty";
-        allow_remote_control = "yes";
-        macos_option_as_alt = "yes";
-        copy_on_select = "yes";
-        notify_on_cmd_finish = "invisible 5.0 notify";
-
-        active_tab_foreground = "#C6A0F6";
-        active_tab_background = "#0c0c0c";
-        inactive_tab_foreground = "#6E738D";
-        inactive_tab_background = "#0c0c0c";
-      };
-      font = {
-        name = "JetBrains Mono";
-        size = 12;
-      };
-      keybindings = {
-        "shift+left" = "neighboring_window left";
-        "shift+right" = "neighboring_window right";
-        "shift+up" = "neighboring_window up";
-        "shift+down" = "neighboring_window down";
-      };
-      theme = "Tango Light";
-      # action_alias mkh kitten hints --alphabet asdfghjklqwertyuiopzxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM
-      # map kitty_mod+n    mkh --type=linenum emacsclient -c -nw +{line} {path}
-    };
-  };
-  services = {
-    blueman-applet.enable = nixosConfig.modules.hardware.bluetooth.enable;
-    pasystray.enable = nixosConfig.modules.hardware.audio.enable;
-    udiskie.enable = true;
-    # network-manager-applet.enable = true;
-    gammastep = {
-      enable = true;
-      provider = "geoclue2";
-      # longitude = "2.333333";
-      # latitude = "48.866667";
-    };
-    kanshi = {
-      enable = true;
-      settings = [
-        # Make it configurable per host
-        {
-          profile.name = "aomi";
-          profile.outputs = [
-            {
-              criteria = "eDP-1";
-              status = "disable";
-            }
-            {
-              criteria = "DP-1";
-              status = "enable";
-              position = "0,0";
-              mode = "3440x1440";
-              scale = 1.0;
-            }
-          ];
-        }
-        {
-          profile.name = "home-undocked";
-          profile.outputs = [
-            # Output eDP-1 'AU Optronics 0xD291 Unknown'
-            {
-              criteria = "eDP-1";
-              status = "enable";
-              position = "0,0";
-              mode = "1920x1200";
-              scale = 1.0;
-            }
-          ];
-        }
-        {
-          profile.name = "home-docked";
-          profile.outputs = [
-            # Old: Output eDP-1 'AU Optronics 0xD291 Unknown'
-            # Output eDP-1 'Unknown 0xD291 Unknown'
-            # Output DP-5 'LG Electronics LG ULTRAWIDE 0x0005D10C' (focused)
-            # { criteria = "LG Electronics LG ULTRAWIDE 0x0000D50C"; status = "enable"; position = "0,0"; mode = "3440x1440"; scale = 1.0; }
-            {
-              criteria = "DP-5";
-              status = "enable";
-              position = "0,0";
-              mode = "3440x1440";
-              scale = 1.0;
-            }
-            # Use it as a "shareable" screen when needed
-            {
-              criteria = "eDP-1";
-              status = "enable";
-              position = "1460,1440";
-              mode = "1920x1200";
-              scale = 1.0;
-            }
-          ];
-        }
-      ];
-    };
-    mako = {
-      enable = true;
-      font = "JetBrains Mono 12";
-      defaultTimeout = 8000; # 5s timeout
-      groupBy = "app-name,summary";
-      # FIXME: hide pulseaudio notifications (maybe they don't show up without pasystray)
-      extraConfig = ''
-        width=400
-        on-button-left=dismiss
-        on-button-middle=invoke-default-action
-        on-button-right=dismiss
-        border-radius=6
-        border-size=3
-        border-color=#db7508
-        format=<b>%s</b>\n%b\n<i>%a</i>
-        icon-path=/run/current-system/sw/share/icons/Qogir-dark:/run/current-system/sw/share/icons/hicolor
-
-        [urgency=low]
-        background-color=#282c30
-        text-color=#888888
-        default-timeout=2000
-
-        [urgency=normal]
-        background-color=#282c30
-        text-color=#ffffff
-        default-timeout=5000
-
-        [urgency=high]
-        background-color=#900000
-        text-color=#ffffff
-        border-color=#ff0000
-
-        [app-name="pa-notify"]
-        background-color=#0080ff
-        text-color=#333333
-        anchor=bottom-right
-        format=<b>%s</b>\n%b
-
-        [category="build"]
-        anchor=bottom-right
-        format=<b>%s</b>\n%b
-
-        [category="recording"]
-        anchor=bottom-right
-        format=<b>%s</b>\n%b
-
-        [category="info"]
-        anchor=center
-        format=<b>%s</b> %b
-
-        #[app-name="Google Chrome" body~="calendar.google.com.*"]
-        #max-visible=2
-
-        [mode=do-not-disturb]
-        invisible=1
-      '';
-    };
-    swayidle = {
-      enable = true;
-      events = [
-        {
-          event = "before-sleep";
-          command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen";
-        }
-        {
-          event = "lock";
-          command = "${pkgs.swaylock}/bin/swaylock --daemonize -i $HOME/desktop/pictures/lockscreen";
-        }
-      ];
-      timeouts = [
-        {
-          timeout = 600;
-          command = ''${pkgs.sway}/bin/swaymsg "output * power off"'';
-          resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * power on"'';
-        }
-      ];
-    };
-  };
-  xdg.configFile."raffi/raffi.yaml".text = lib.generators.toYAML { } {
-    "firefox" = {
-      binary = "firefox";
-      args = [ "--marionette" ];
-    };
-  };
-  home.packages = with pkgs; [
-    swaylock
-    swayidle
-    wf-recorder
-    wl-clipboard
-    wtype
-    mako
-    wofi # might deprecate
-    fuzzel
-    raffi
-    slurp
-    grim
-    zenity
-    qogir-icon-theme
-    cliphist
-  ];
-}
users/vincent/desktop/xorg.nix
@@ -1,6 +0,0 @@
-{ nixosConfig, ... }:
-
-{
-  # home.file.".Xmodmap".source = ./xorg/Xmodmap;
-  programs.autorandr.enable = nixosConfig.profiles.laptop.enable;
-}
users/vincent/desktop/xsession.nix
@@ -1,14 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  xsession = {
-    enable = true;
-    initExtra = ''
-      ${pkgs.xorg.xmodmap}/bin/xmodmap ${config.home.homeDirectory}.Xmodmap &
-    '';
-    pointerCursor = {
-      package = pkgs.vanilla-dmz;
-      name = "Vanilla-DMZ";
-    };
-  };
-}
users/vincent/dev/emacs/capture.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=Emacs capture
-Exec=capture
-Type=Application
-Terminal=false
-Categories=System;
-Icon=emacs;
users/vincent/dev/emacs/org-protocol.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=org-protocol
-Exec=emacsclient -c -n %u
-Type=Application
-Terminal=false
-Categories=System;
-MimeType=x-scheme-handler/org-protocol;
users/vincent/dev/mr/lib.mr
@@ -1,39 +0,0 @@
-# -*- mode: sh -*-
-[DEFAULT]
-lib =
-    my_git_clone() {
-        USERNAME=${GIT_USERNAME:-git}
-        GIT_PREFIX=${GIT_PREFIX}
-        GIT_BASE=${GIT_BASE:-${BASE_HOST}}
-        URL="${GIT_PREFIX}${USERNAME}@${GIT_BASE}${MR_REPO//$(dirname ${MR_CONFIG})}.git"
-        UPSTREAM_URL=""
-        if [[ -z "$NO_UPSTREAM_U" ]]; then
-            URL="${GIT_PREFIX}${USERNAME}@${GIT_BASE}:${BASE_USER}/${BASE_PATH}-${MR_REPO//$(dirname ${MR_CONFIG})\/}.git"
-            UPSTREAM_URL="https://${GIT_BASE}/${BASE_PATH}${MR_REPO//$(dirname ${MR_CONFIG}\/)}.git"
-        fi
-        echo "URL         : $URL"
-        echo "UPSTREAM_URL: $UPSTREAM_URL"
-        git clone $URL $MR_REPO
-        if [[ -n "$UPSTREAM_URL" ]]; then
-            cd $MR_REPO
-            git remote add upstream $UPSTREAM_URL
-            git fetch -p --all
-        fi
-    }
-checkout = my_git_clone
-git_gc = git gc "$@"
-# git_u = git pull --rebase --autostash "$@"
-git_u =
-    git fetch -p --all
-    CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
-    DEFAULT_BRANCH=${DEFAULT_BRANCH:-main}
-    echo "On $CURRENT_BRANCH"
-    git stash
-    REMOTE="origin"
-    if [[ -z "$NO_UPSTREAM_U" ]]; then
-        git config remote.upstream.url && REMOTE="upstream"
-    fi
-    echo "Rebase ${REMOTE}/${DEFAULT_BRANCH} on ${DEFAULT_BRANCH}"
-    git rebase ${REMOTE}/${DEFAULT_BRANCH} ${DEFAULT_BRANCH}
-    git co $CURRENT_BRANCH
-skip = [ $1 != "checkout" ] && lazy
users/vincent/dev/mr/src.github.mr
@@ -1,15 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
-    export BASE_HOST="github.com"
-    export BASE_USER=vdemeester
-    export GIT_BASE="github.com:"
-
-[NixOS/nixpkgs]
-checkout =
-    git clone git@github.com:vdemeester/nixpkgs.git
-    cd NixOS/nixpkgs
-    git remote add upstream https://github.com/NixOS/nixpkgs.git
-    git fetch -p --all
users/vincent/dev/mr/src.go.sbr.pm.mr
@@ -1,9 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[ape]
-checkout = git clone git@git.sr.ht:~vdemeester/ape
-[nr]
-checkout = git clone git@git.sr.ht:~vdemeester/nr
-[ram]
-checkout = git clone git@git.sr.ht:~vdemeester/ram
users/vincent/dev/mr/src.k8s.io.mr
@@ -1,9 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
-    export BASE_HOST="${HOME}/src/k8s.io/"
-    export GIT_BASE="github.com:kubernetes/"
-
-[test-infra]
users/vincent/dev/mr/src.knative.dev.mr
@@ -1,11 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
-    export BASE_PATH=knative
-    export BASE_USER=vdemeester
-    export BASE_HOST="github.com"
-
-[pkg]
-[serving]
\ No newline at end of file
users/vincent/dev/mr/src.mr
@@ -1,39 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[osp]
-chain = true
-skip = true
-
-[tektoncd]
-chain = true
-skip = true
-
-[knative.dev]
-chain = true
-skip = true
-
-[k8s.io]
-chain = true
-skip = true
-
-# Old ones
-[github.com]
-chain = true
-skip = true
-
-[gitlab.com]
-chain = true
-skip = true
-
-[home]
-checkout =
-    git clone https://git.sr.ht/~vdemeester/home
-    cd home
-    git remote set-url --add --push origin git@git.sr.ht:~vdemeester/home
-
-[www]
-checkout =
-    git clone https://git.sr.ht/~vdemeester/www
-    cd home
-    git remote set-url --add --push origin git@git.sr.ht:~vdemeester/www
users/vincent/dev/mr/src.osp.mr
@@ -1,74 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
-    export BASE_USER=vdemeester
-    export BASE_HOST="github.com"
-
-# downstream (RH internal)
-[p12n]
-chain = true
-skip = true
-
-# github.com/openshift
-[openshift-ci]
-skip = true
-lib =
-    export DEFAULT_BRANCH=master
-checkout =
-    git clone git@github.com:vdemeester/release.git openshift-ci
-    cd openshift-ci
-    git remote add upstream https://github.com/openshift/release.git
-    git fetch -p --all
-
-[pipelines-docs]
-lib =
-    export BASE_PATH=openshift
-    export DEFAULT_BRANCH=master
-
-[pipelines-tutorial]
-lib =
-    export BASE_PATH=openshift
-    export DEFAULT_BRANCH=master
-
-[must-gather]
-lib =
-    export BASE_PATH=openshift-pipelines
-
-[pipelines-as-code]
-lib =
-    export BASE_PATH=openshift-pipelines
-
-[operator-tooling]
-lib = 
-    export BASE_PATH=openshift-pipelines
-
-[toolbox]
-lib =
-    export BASE_PATH=openshift-pipelines
-
-# github.com/openshift-pipelines
-[enhancements]
-lib =
-    export BASE_PATH=openshift-pipelines
-[knowledge-base]
-lib =
-    export DEFAULT_BRANCH=master
-checkout =
-    git clone git@github.com:vdemeester/knowledge-base.git
-    cd knowledge-base
-    git remote add upstream git@github.com:openshift-pipelines/knowledge-base.git
-    git fetch -p --all
-
-[cookbook]
-lib =
-    export BASE_PATH=openshift-pipelines
-
-[cluster-tasks-tests]
-lib =
-    export BASE_PATH=ppitonak
-
-[tekton-task-group]
-lib =
-    export BASE_PATH=openshift-pipelines
users/vincent/dev/mr/src.osp.p12n.mr
@@ -1,54 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[gerrit]
-checkout =
-    git clone vdemeest@code.engineering.redhat.com:openshift-pipelines.git gerrit
-    cd gerrit
-    git remote rename origin gerrit
-u = git fetch -p --all
-
-[p12n]
-checkout =
-    git clone git@gitlab.cee.redhat.com:vdemeest/p12n.git p12n
-    cd p12n
-    git config http.sslVerify false
-    git remote add upstream https://gitlab.cee.redhat.com/tekton/p12n
-    git fetch -p --all
-u = git fetch -p --all
-
-[plumbing]
-checkout =
-    git clone git@gitlab.cee.redhat.com:vdemeest/tekton-plumbing.git plumbing
-    cd plumbing
-    git config http.sslVerify false
-    git remote add upstream https://gitlab.cee.redhat.com/tekton/plumbing
-    git fetch -p --all
-u = git fetch -p --all
-
-[honeybadger]
-checkout =
-    git clone git@gitlab.cee.redhat.com:vdemeest/pipeline-products.git honeybadger
-    cd honeybadger
-    git config http.sslVerify false
-    git remote add upstream https://gitlab.cee.redhat.com/pipeline/products
-    git fetch -p --all
-u = git fetch -p --all
-
-[cpaas-config]
-checkout =
-    git clone git@gitlab.cee.redhat.com:vdemeest/openshift-pipelines.git cpaas-config
-    cd cpaas-config
-    git config http.sslVerify false
-    git remote add upstream https://gitlab.cee.redhat.com/cpaas-products/openshift-pipelines.git
-    git fetch -p --all
-u = git fetch -p --all
-
-[cpaas-product-configs]
-checkout =
-    git clone git@gitlab.cee.redhat.com:vdemeest/product-configs.git cpaas-product-configs
-    cd cpaas-product-configs
-    git config http.sslVerify false
-    git remote add upstream https://gitlab.cee.redhat.com/cpaas-products/product-configs.git
-    git fetch -p --all
-u = git fetch -p --all
users/vincent/dev/mr/src.tektoncd.mr
@@ -1,38 +0,0 @@
-# -*- mode: sh -*-
-include = cat ${HOME}/.config/mr
-
-[DEFAULT]
-lib =
-    export BASE_PATH=tektoncd
-    export BASE_USER=vdemeester
-    export BASE_HOST="github.com"
-
-[catalog]
-[catlin]
-[chains]
-[cli]
-[community]
-[dashboard]
-[experimental]
-[friends]
-[homebrew-tools]
-[hub]
-[operator]
-[pipeline]
-[plumbing]
-[resolution]
-[results]
-[triggers]
-[website]
-
-[buildkit-tekton]
-checkout = git clone git@github.com:vdemeester/buildkit-tekton.git
-
-[vegetable-resolver]
-checkout = git clone git@github.com:vdemeester/vegetable-resolver.git
-
-[tkn-local-action]
-checkout = git clone git@github.com:vdemeester/tkn-local-action.git
-
-[setup-tektoncd]
-checkout = git clone git@github.com:vdemeester/setup-tektoncd.git
users/vincent/dev/python/pythonrc
@@ -1,36 +0,0 @@
-#!/usr/bin/env python3
-# This entire thing is unnecessary post v3.13.0a3
-# https://github.com/python/cpython/issues/73965
-
-def is_vanilla() -> bool:
-    """ :return: whether running "vanilla" Python <3.13 """
-    import sys
-    return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0] and sys.version_info < (3, 13)
-
-
-def setup_history():
-    """ read and write history from state file """
-    import os
-    import atexit
-    import readline
-    from pathlib import Path
-
-    # Check PYTHON_HISTORY for future-compatibility with Python 3.13
-    if history := os.environ.get('PYTHON_HISTORY'):
-        history = Path(history)
-    # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables
-    elif state_home := os.environ.get('XDG_STATE_HOME'):
-        state_home = Path(state_home)
-    else:
-        state_home = Path.home() / '.local' / 'state'
-
-    history: Path = history or state_home / 'python_history'
-
-    # https://github.com/python/cpython/issues/105694
-    if not history.is_file():
-        readline.write_history_file(str(history)) # breaks on macos + python3 without this.
-    readline.read_history_file(history)
-    atexit.register(readline.write_history_file, history)
-
-    if is_vanilla():
-        setup_history()
users/vincent/dev/ai.nix
@@ -1,14 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.packages = with pkgs; [
-    aichat
-    aider-chat
-    goose-cli
-    ollama
-    oterm
-    python312Packages.google-generativeai
-    python313Packages.google-generativeai
-    repomix
-  ];
-}
users/vincent/dev/default.nix
@@ -1,64 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  imports = [
-    ./ai.nix
-    ./go.nix
-    ./js.nix
-    ./lisp.nix
-    ./mr.nix
-    ./nix.nix
-    ./python.nix
-  ];
-
-  home.extraOutputsToInstall = [
-    "doc"
-    "info"
-    "devdoc"
-  ];
-
-  home.sessionVariables = {
-    CARGO_HOME = "${config.xdg.dataHome}/cargo";
-  };
-  home.packages = with pkgs; [
-    binutils
-    cmake
-    codespell
-    # devenv
-    difftastic
-    fswatch
-    gnumake
-    gron
-    gum
-    ijq
-    jq
-    markdownlint-cli
-    minica
-    moreutils
-    pre-commit
-    shellcheck
-    shfmt
-    tldr
-    tmate
-    vale
-    yamllint
-    yamlfmt
-    yq-go
-    radicle-node
-    vscode-fhs
-  ];
-
-  home.file.".ignore".text = ''
-    *.swp
-    *~
-    **/VENDOR-LICENSE
-  '';
-
-  home.file.gdbinit = {
-    target = ".gdbinit";
-    text = ''
-      set auto-load safe-path /
-    '';
-  };
-
-}
users/vincent/dev/emacs.nix
@@ -1,210 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-with lib;
-let
-  capture = pkgs.writeScriptBin "capture" ''
-    #!${pkgs.stdenv.shell}
-    emacsclient -n -c -F '((name . "capture") (width . 150) (height . 90) (vde/window-popup-frame . t))' -e '(org-capture)'
-  '';
-  et = pkgs.writeScriptBin "et" ''
-    #!${pkgs.stdenv.shell}
-    emacsclient --tty $@
-  '';
-  ec = pkgs.writeScriptBin "ec" ''
-    #!${pkgs.stdenv.shell}
-    emacsclient --create-frame $@
-  '';
-  myExtraPackages =
-    epkgs: with epkgs; [
-      ace-window
-      adoc-mode
-      age
-      aggressive-indent
-      aidermacs
-      alert
-      async
-      avy
-      beginend
-      cape
-      casual
-      casual-avy
-      conner
-      consult
-      consult-dir
-      consult-denote
-      consult-notes
-      consult-project-extra
-      consult-vc-modified-files
-      copilot
-      copilot-chat
-      corfu
-      corfu-candidate-overlay
-      dape
-      dash
-      denote
-      denote-menu
-      devdocs
-      dired-collapse
-      dired-narrow
-      dired-rsync
-      diredfl
-      dockerfile-mode
-      doom-modeline
-      easy-kill
-      eat
-      edit-indirect
-      editorconfig
-      eldoc-box
-      pr-review
-      embark
-      embark-consult
-      emms
-      envrc
-      eshell-atuin
-      eshell-prompt-extras
-      esup
-      flimenu
-      flymake-yamllint
-      focus
-      general
-      git-gutter
-      git-gutter-fringe
-      git-modes
-      go-mode
-      gotest
-      gotest-ts
-      gptel
-      hardhat
-      helpful
-      highlight
-      highlight-indentation
-      htmlize
-      ibuffer-vc
-      indent-bars
-      jinx
-      json-mode
-      kubed
-      ligature
-      macrostep
-      magit
-      magit-popup
-      marginalia
-      markdown-mode
-      minions
-      modus-themes
-      multi-vterm
-      mu4e
-      mwim
-      nix-mode
-      nix-ts-mode
-      nixpkgs-fmt
-      no-littering
-      noether
-      # notmuch
-      ob-async
-      ob-go
-      ob-http
-      orderless # TODO configure this
-      org
-      org-contrib
-      org-download
-      org-modern
-      org-nix-shell
-      org-ql
-      org-review
-      org-rich-yank
-      org-tree-slide
-      org-web-tools
-      orgalist
-      orgit
-      outline-indent
-      ox-pandoc
-      pandoc-mode
-      # password-store
-      # pkgs.bookmatrk-plus # Do I use it ?
-      popper
-      project-rootfile
-      rg
-      run-command # Try this out instead of conner, might be even better
-      scopeline
-      scratch
-      shr-tag-pre-highlight
-      sideline
-      sideline-eglot
-      sideline-flymake
-      smartparens
-      substitute
-      surround
-      symbol-overlay
-      tempel
-      tempel-collection
-      topsy
-      trashed
-      treesit-fold
-      treesit-grammars.with-all-grammars # see how much it weight
-      try
-      typescript-mode
-      vertico
-      visual-fill-column
-      visual-regexp
-      vterm
-      vundo
-      web-mode
-      wgrep
-      with-editor
-      xterm-color
-    ];
-in
-{
-  home.file.".config/emacs" = {
-    source = config.lib.file.mkOutOfStoreSymlink "/home/vincent/src/home/tools/emacs";
-    # recursive = true;
-  };
-  home.file.".local/share/applications/org-protocol.desktop".source = ./emacs/org-protocol.desktop;
-  home.file.".local/share/applications/capture.desktop".source = ./emacs/capture.desktop;
-  home.packages = with pkgs; [
-    ditaa
-    graphviz
-    pandoc
-    sqlite
-    zip
-    ugrep
-    # See if I can hide this under an option
-    capture
-    # github-copilot-cli # for copilot.el
-    nodejs
-    ec
-    et
-    languagetool
-    asciidoctor
-    enchant
-  ];
-  programs.emacs = {
-    enable = true;
-    # FIXME: choose depending on the enabled modules
-    #package = (pkgs.emacs29.override { withTreeSitter = true; withNativeCompilation = true; withPgtk = true; withWebP = true; withGTK3 = true; withSQLite3 = true; });
-    package = pkgs.emacs-unstable.override {
-      withTreeSitter = true;
-      withNativeCompilation = true;
-      withPgtk = true;
-      withWebP = true;
-      withGTK3 = true;
-      withSQLite3 = true;
-    };
-    extraPackages = myExtraPackages;
-  };
-  # services.emacs = {
-  #   enable = true;
-  #   client.enable = true;
-  #   #socketActivation.enable = true;
-  # };
-  home.sessionVariables = {
-    EDITOR = "emacs";
-    ALTERNATE_EDITOR = "emacs -nw";
-  };
-}
users/vincent/dev/go.nix
@@ -1,30 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  home.sessionVariables = {
-    # GOPATH = "${config.home.homeDirectory}";
-    GOPATH = "${config.xdg.dataHome}/go";
-  };
-  home.packages = with pkgs; [
-    gcc
-    go_1_24
-    gopls
-    godef
-    golangci-lint
-    golint
-    gopkgs
-    go-outline
-    go-symbols
-    delve
-    gotools
-    gotestsum
-    gofumpt
-    # misc
-    protobuf
-    my.ram
-    # not really go but still
-    gosmee
-    # cue
-    deptree
-  ];
-}
users/vincent/dev/js.nix
@@ -1,17 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  # config.xdg.configFile."npm/npmrc ".text = ''
-  #   prefix = ${config.home.homeDirectory}/.local/npm
-  # '';
-  home.sessionVariables = {
-    NPM_CONFIG_INIT_MODULE = "${config.xdg.configHome}/npm/config/npm-init.js";
-    NPM_CONFIG_CACHE = "${config.xdg.cacheHome}/npm";
-    NPM_CONFIG_TMP = "$CONFIG.XDG_RUNTIME_DIR/npm";
-    NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc";
-  };
-  home.packages = with pkgs; [
-    # javascript-typescript-langserver
-    # vscode-langservers-extracted
-  ];
-}
users/vincent/dev/mr.nix
@@ -1,15 +0,0 @@
-_:
-
-{
-  xdg.configFile."mr".source = ./mr/lib.mr;
-  home.file."src/.mrconfig".source = ./mr/src.mr;
-  home.file."src/tektoncd/.mrconfig".source = ./mr/src.tektoncd.mr;
-  home.file."src/go.sbr.pm/.mrconfig".source = ./mr/src.go.sbr.pm.mr;
-  home.file."src/k8s.io/.mrconfig".source = ./mr/src.k8s.io.mr;
-  home.file."src/knative.dev/.mrconfig".source = ./mr/src.knative.dev.mr;
-  # home.file."src/osp/forks/.mrconfig".source = ./mr/src.osp.forks.mr;
-  home.file."src/osp/p12n/.mrconfig".source = ./mr/src.osp.p12n.mr;
-  home.file."src/osp/.mrconfig".source = ./mr/src.osp.mr;
-  # Old setup, migrate this slowly
-  home.file."src/github.com/.mrconfig".source = ./mr/src.github.mr;
-}
users/vincent/dev/nix.nix
@@ -1,13 +0,0 @@
-{ pkgs, ... }:
-
-{
-  home.packages = with pkgs; [
-    nh
-    nix-output-monitor
-    nix-prefetch-scripts
-    nix-update
-    nixpkgs-fmt
-    nixpkgs-review
-    nurl
-  ];
-}
users/vincent/dev/python.nix
@@ -1,14 +0,0 @@
-{ config, pkgs, ... }:
-
-{
-  xdg.configFile."python/pythonrc".source = ./python/pythonrc;
-  home.packages = with pkgs; [
-    pipenv
-    python313
-    python313Packages.python-lsp-server
-    uv
-  ];
-  home.sessionVariables = {
-    PYTHONSTARTUP = "${config.xdg.configHome}/python/pythonrc";
-  };
-}
users/vincent/redhat/redhat-vpn.desktop
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=Red Hat VPN
-Exec=redhat-vpn
-Type=Application
-Terminal=false
-Categories=System;
-Icon=seahorse;
\ No newline at end of file
users/vincent/default.nix
@@ -1,281 +0,0 @@
-{
-  config,
-  lib,
-  pkgs,
-  ...
-}:
-
-let
-  inherit (lib)
-    importTOML
-    attrsets
-    hasAttr
-    optionals
-    versionAtLeast
-    mkIf
-    ;
-  metadata = importTOML ../../ops/hosts.toml;
-  hasSSHAttr = _name: value: hasAttr "ssh" value;
-  authorizedKeys = attrsets.mapAttrsToList (_name: value: value.ssh.pubkey) (
-    attrsets.filterAttrs hasSSHAttr metadata.hosts
-  );
-in
-{
-  warnings =
-    if (versionAtLeast config.system.nixos.release "21.11") then
-      [ ]
-    else
-      [ "NixOS release: ${config.system.nixos.release}" ];
-  users.users.vincent = {
-    createHome = true;
-    uid = 1000;
-    description = "Vincent Demeester";
-    extraGroups =
-      [
-        "wheel"
-        "input"
-      ]
-      ++ optionals config.networking.networkmanager.enable [ "networkmanager" ]
-      ++ optionals config.modules.desktop.enable [
-        "audio"
-        "video"
-      ]
-      # ++ optionals config.profiles.scanning.enable [ "lp" "scanner" ]
-      ++ optionals config.networking.networkmanager.enable [ "networkmanager" ]
-      ++ optionals config.virtualisation.docker.enable [ "docker" ]
-      ++ optionals config.virtualisation.buildkitd.enable [ "buildkit" ]
-      ++ optionals config.modules.virtualisation.libvirt.enable [ "libvirtd" ]
-      ++ optionals config.services.nginx.enable [ "nginx" ]
-      ++ optionals config.security.tpm2.enable [ "tss" ];
-    shell = mkIf config.programs.zsh.enable pkgs.zsh;
-    isNormalUser = true;
-    openssh.authorizedKeys.keys = authorizedKeys ++ metadata.ssh.keys.vincent ++ metadata.ssh.keys.root;
-    initialPassword = "changeMe";
-    subUidRanges = [
-      {
-        startUid = 100000;
-        count = 65536;
-      }
-    ];
-    subGidRanges = [
-      {
-        startGid = 100000;
-        count = 65536;
-      }
-    ];
-  };
-
-  nix = {
-    settings = {
-      trusted-users = [ "vincent" ];
-    };
-    sshServe.keys = authorizedKeys;
-  };
-
-  security = {
-    pam = {
-      # Nix will hit the stack limit when using `nixFlakes`.
-      loginLimits = [
-        {
-          domain = config.users.users.vincent.name;
-          item = "stack";
-          type = "-";
-          value = "unlimited";
-        }
-      ];
-    };
-  };
-
-  # Enable user units to persist after sessions end.
-  system.activationScripts.loginctl-enable-linger-vincent = lib.stringAfter [ "users" ] ''
-    ${pkgs.systemd}/bin/loginctl enable-linger ${config.users.users.vincent.name}
-  '';
-
-  # To use nixos config in home-manager configuration, use the nixosConfig attr.
-  # This make it possible to import the whole configuration, and let each module
-  # load their own.
-  # FIXME(vdemeester) using nixosConfig, we can get the NixOS configuration from
-  # the home-manager configuration. This should help play around the conditions
-  # inside each "home-manager" modules instead of here.
-  home-manager.users.vincent = lib.mkMerge (
-    [
-      (import ./core)
-      (import ./mails {
-        hostname = config.networking.hostName;
-        inherit pkgs;
-      })
-    ]
-    ++ optionals config.modules.editors.emacs.enable [
-      (import ./dev/emacs.nix)
-    ]
-    ++ optionals config.modules.dev.enable [
-      (import ./dev)
-      # TODO Move it elsewhere ?
-      (import ./containers/kubernetes.nix)
-      (import ./containers/openshift.nix)
-      (import ./containers/tekton.nix)
-      {
-        # Enable only on dev, could do something better than this longterm 😀
-        services.keybase.enable = true;
-      }
-    ]
-    ++ optionals config.modules.dev.containers.enable [
-      (import ./containers)
-    ]
-    ++ optionals config.modules.desktop.enable [ (import ./desktop) ]
-    ++ optionals (config.networking.hostName == "wakasu" || config.networking.hostName == "aomi") [
-      {
-        # Move this to its own module
-        home.packages = with pkgs; [
-          libosinfo
-          asciinema
-          oathToolkit
-          p7zip
-        ];
-        home.file."bin/msmtp" = {
-          text = ''
-            #!${pkgs.stdenv.shell}
-            ${pkgs.libnotify}/bin/notify-send "Sending mail ✉️"
-            ${pkgs.msmtp}/bin/msmtp --read-envelope-from $@
-          '';
-          executable = true;
-        };
-        programs.mbsync.enable = true;
-        # programs.lieer.enable = true;
-        programs.aerc.enable = true;
-        programs.msmtp.enable = true;
-        programs.mu.enable = true;
-        # programs.notmuch.enable = true;
-        accounts.email = {
-          maildirBasePath = "desktop/mails";
-          accounts = {
-            "icloud" = {
-              primary = true;
-              address = "vincent@demeester.fr";
-              userName = "vdemeester@icloud.com";
-              realName = "Vincent Demeester";
-              passwordCommand = "${pkgs.passage}/bin/passage show mails/icloud/vdemeester";
-              imap.host = "imap.mail.me.com";
-              smtp.host = "smtp.mail.me.com";
-              smtp.port = 587;
-              mbsync = {
-                enable = true;
-                create = "both";
-                expunge = "both";
-                extraConfig = {
-                  channel = {
-                    Sync = "All";
-                  };
-                  account = {
-                    Timeout = 120;
-                    PipelineDepth = 1;
-                  };
-                };
-              };
-              mu.enable = true;
-              msmtp = {
-                enable = true;
-                extraConfig = {
-                  tls_starttls = "on";
-                };
-              };
-            };
-            # We will forward those to a "central" mail account.
-            "gmail" = {
-              address = "vinc.demeester@gmail.com";
-              userName = "vinc.demeester@gmail.com";
-              realName = "Vincent Demeester";
-              passwordCommand = "${pkgs.passage}/bin/passage show mails/gmail/vinc.demeester";
-              imap.host = "imap.gmail.com";
-              smtp.host = "smtp.gmail.com";
-              flavor = "gmail.com";
-              # aerc.enable = true;
-              msmtp = {
-                enable = true;
-                # extraConfig = {
-                #   tls_starttls = "on";
-                # };
-              };
-              # This is here for doing backup
-              mbsync = {
-                enable = true;
-                create = "both";
-                expunge = "both";
-                # Sync everything *but* "[Gmail] All Mail" to get the "organized" view.
-                patterns = [
-                  "*"
-                  "![Gmail]*"
-                  "[Gmail]/Sent Mail"
-                  "[Gmail]/Starred"
-                  "[Gmail]/Trash"
-                  "[Gmail]/Drafts"
-                ];
-                extraConfig = {
-                  channel = {
-                    Sync = "All";
-                  };
-                  account = {
-                    Timeout = 120;
-                    PipelineDepth = 1;
-                  };
-                };
-              };
-            };
-            "redhat" = {
-              # primary = true; # because it's work, but it's really just for notmuch
-              address = "vdemeest@redhat.com";
-              userName = "vdemeest@redhat.com";
-              realName = "Vincent Demeester";
-              passwordCommand = "${pkgs.passage}/bin/passage show mails/gmail/redhat";
-              imap.host = "imap.gmail.com";
-              smtp.host = "smtp.gmail.com";
-              flavor = "gmail.com";
-              mbsync = {
-                enable = true;
-                create = "both";
-                expunge = "both";
-                # Sync everything *but* "[Gmail] All Mail" to get the "organized" view.
-                patterns = [
-                  "*"
-                  "!area/github"
-                  "!memo-list"
-                  "![Gmail]*"
-                  "[Gmail]/Sent Mail"
-                  "[Gmail]/Starred"
-                  "[Gmail]/Trash"
-                  "[Gmail]/Drafts"
-                ];
-                extraConfig = {
-                  channel = {
-                    Sync = "All";
-                  };
-                  account = {
-                    Timeout = 120;
-                    PipelineDepth = 1;
-                  };
-                };
-              };
-              mu.enable = true;
-              # aerc.enable = true;
-              msmtp = {
-                enable = true;
-                # extraConfig = {
-                #   tls_starttls = "on";
-                # };
-              };
-            };
-          };
-        };
-      }
-    ]
-    # ++ optionals config.virtualisation.docker.enable [
-    #   {
-    #     home.packages = with pkgs; [ docker docker-compose dive ];
-    #   }
-    # ]
-    #++ optionals config.profiles.redhat.enable [{
-    #  home.file.".local/share/applications/redhat-vpn.desktop".source = ./redhat/redhat-vpn.desktop;
-    #  home.packages = with pkgs; [ gnome3.zenity oathToolkit ];
-    #}]
-  );
-}
flake.lock
@@ -23,37 +23,14 @@
         "type": "github"
       }
     },
-    "agenix-24_11": {
+    "agenix-25_05": {
       "inputs": {
         "darwin": "darwin_2",
         "home-manager": "home-manager_2",
-        "nixpkgs": [
-          "nixpkgs-24_11"
-        ],
-        "systems": "systems_2"
-      },
-      "locked": {
-        "lastModified": 1747575206,
-        "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
-        "owner": "ryantm",
-        "repo": "agenix",
-        "rev": "4835b1dc898959d8547a871ef484930675cb47f1",
-        "type": "github"
-      },
-      "original": {
-        "owner": "ryantm",
-        "repo": "agenix",
-        "type": "github"
-      }
-    },
-    "agenix-25_05": {
-      "inputs": {
-        "darwin": "darwin_3",
-        "home-manager": "home-manager_3",
         "nixpkgs": [
           "nixpkgs-25_05"
         ],
-        "systems": "systems_3"
+        "systems": "systems_2"
       },
       "locked": {
         "lastModified": 1747575206,
@@ -194,28 +171,6 @@
       }
     },
     "darwin_2": {
-      "inputs": {
-        "nixpkgs": [
-          "agenix-24_11",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1744478979,
-        "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
-        "owner": "lnl7",
-        "repo": "nix-darwin",
-        "rev": "43975d782b418ebf4969e9ccba82466728c2851b",
-        "type": "github"
-      },
-      "original": {
-        "owner": "lnl7",
-        "ref": "master",
-        "repo": "nix-darwin",
-        "type": "github"
-      }
-    },
-    "darwin_3": {
       "inputs": {
         "nixpkgs": [
           "agenix-25_05",
@@ -263,7 +218,7 @@
           "nixpkgs"
         ],
         "nixpkgs-stable": [
-          "nixpkgs-24_11"
+          "nixpkgs-25_05"
         ]
       },
       "locked": {
@@ -345,22 +300,6 @@
       }
     },
     "flake-compat_5": {
-      "flake": false,
-      "locked": {
-        "lastModified": 1747046372,
-        "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
-        "type": "github"
-      },
-      "original": {
-        "owner": "edolstra",
-        "repo": "flake-compat",
-        "type": "github"
-      }
-    },
-    "flake-compat_6": {
       "flake": false,
       "locked": {
         "lastModified": 1696426674,
@@ -547,27 +486,6 @@
         "type": "github"
       }
     },
-    "home-manager-24_11": {
-      "inputs": {
-        "nixpkgs": [
-          "nixpkgs-24_11"
-        ]
-      },
-      "locked": {
-        "lastModified": 1747688870,
-        "narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=",
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "rev": "d5f1f641b289553927b3801580598d200a501863",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "ref": "release-24.11",
-        "repo": "home-manager",
-        "type": "github"
-      }
-    },
     "home-manager-25_05": {
       "inputs": {
         "nixpkgs": [
@@ -590,27 +508,6 @@
       }
     },
     "home-manager_2": {
-      "inputs": {
-        "nixpkgs": [
-          "agenix-24_11",
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1745494811,
-        "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "type": "github"
-      }
-    },
-    "home-manager_3": {
       "inputs": {
         "nixpkgs": [
           "agenix-25_05",
@@ -631,7 +528,7 @@
         "type": "github"
       }
     },
-    "home-manager_4": {
+    "home-manager_3": {
       "inputs": {
         "nixpkgs": [
           "nixpkgs"
@@ -790,27 +687,6 @@
         "type": "github"
       }
     },
-    "nixos-wsl": {
-      "inputs": {
-        "flake-compat": "flake-compat_5",
-        "nixpkgs": [
-          "nixpkgs"
-        ]
-      },
-      "locked": {
-        "lastModified": 1749574455,
-        "narHash": "sha256-fm2/8KPOYvvIAnNVtjDlTt/My00lIbZQ+LMrfQIWVzs=",
-        "owner": "nix-community",
-        "repo": "NixOS-WSL",
-        "rev": "917af390377c573932d84b5e31dd9f2c1b5c0f09",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-community",
-        "repo": "NixOS-WSL",
-        "type": "github"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1730768919,
@@ -827,22 +703,6 @@
         "type": "github"
       }
     },
-    "nixpkgs-24_11": {
-      "locked": {
-        "lastModified": 1749995256,
-        "narHash": "sha256-LEGfcombb0otUf23oAmYCXR4+lMQKa49XmU0G5HItGI=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "daa45f10955cc2207ac9c5f0206774d2f757c162",
-        "type": "github"
-      },
-      "original": {
-        "owner": "NixOS",
-        "ref": "nixos-24.11",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
     "nixpkgs-25_05": {
       "locked": {
         "lastModified": 1750005367,
@@ -962,7 +822,7 @@
     },
     "pre-commit-hooks_3": {
       "inputs": {
-        "flake-compat": "flake-compat_6",
+        "flake-compat": "flake-compat_5",
         "gitignore": "gitignore_4",
         "nixpkgs": [
           "nixpkgs"
@@ -985,7 +845,6 @@
     "root": {
       "inputs": {
         "agenix": "agenix",
-        "agenix-24_11": "agenix-24_11",
         "agenix-25_05": "agenix-25_05",
         "buildkit-tekton": "buildkit-tekton",
         "chapeau-rouge": "chapeau-rouge",
@@ -994,15 +853,12 @@
         "disko": "disko",
         "emacs-overlay": "emacs-overlay",
         "flake-compat": "flake-compat_3",
-        "home-manager": "home-manager_4",
-        "home-manager-24_11": "home-manager-24_11",
+        "home-manager": "home-manager_3",
         "home-manager-25_05": "home-manager-25_05",
         "lanzaboote": "lanzaboote",
         "nixos-generators": "nixos-generators",
         "nixos-hardware": "nixos-hardware",
-        "nixos-wsl": "nixos-wsl",
         "nixpkgs": "nixpkgs_2",
-        "nixpkgs-24_11": "nixpkgs-24_11",
         "nixpkgs-25_05": "nixpkgs-25_05",
         "nixpkgs-master": "nixpkgs-master",
         "pre-commit-hooks": "pre-commit-hooks_3",
@@ -1079,21 +935,6 @@
         "repo": "default",
         "type": "github"
       }
-    },
-    "systems_3": {
-      "locked": {
-        "lastModified": 1681028828,
-        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-        "owner": "nix-systems",
-        "repo": "default",
-        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nix-systems",
-        "repo": "default",
-        "type": "github"
-      }
     }
   },
   "root": "root",
flake.nix
@@ -21,44 +21,6 @@
         "aarch64-linux"
       ];
       forAllSystems = inputs.nixpkgs.lib.genAttrs supportedSystems;
-
-      stableModules = [ inputs.home-manager-24_11.nixosModules.home-manager ];
-      commonModules = [
-        {
-          config.nixpkgs.overlays = [
-            (import ./nix/overlays/tekton.nix)
-            (import ./nix/overlays/sbr.nix)
-            inputs.emacs-overlay.overlay
-            inputs.chapeau-rouge.overlays.openshift
-            inputs.chick-group.overlays.default
-            (_: prev: {
-              inherit (inputs.buildkit-tekton.packages.${prev.system})
-                tkn-local
-                ;
-              inherit (inputs.dagger.packages.${prev.system}) dagger;
-            })
-          ];
-        }
-        ./systems/modules/core/default.nix
-        ./systems/modules/shell/default.nix
-        ./systems/modules/desktop/default.nix
-        ./systems/modules/dev/default.nix
-        ./systems/modules/editors/default.nix
-        ./systems/modules/hardware/default.nix
-        ./systems/modules/profiles/default.nix
-        ./systems/modules/virtualisation/default.nix
-        ./systems/modules/virtualisation/buildkit.nix
-        ./systems/modules/services/default.nix
-        inputs.agenix.nixosModules.default
-        # inputs.envfs.nixosModules.envfs
-        {
-          # config.nix.generateRegistryFromInputs = true;
-          config.home-manager.useGlobalPkgs = true;
-          config.home-manager.useUserPackages = true;
-          # Import custom home-manager modules (NixOS)
-          config.home-manager.sharedModules = import ./users/modules/modules.nix;
-        }
-      ];
     in
     {
       # Standalone home configurations
@@ -116,23 +78,16 @@
           pkgsInput = inputs.nixpkgs-25_05;
           homeInput = inputs.home-manager-25_05;
         };
-        # sakhalin = libx.mkHost { hostname = "sakhalin"; };
+        sakhalin = libx.mkHost {
+          hostname = "sakhalin";
+          pkgsInput = inputs.nixpkgs-25_05;
+          homeInput = inputs.home-manager-25_05;
+        };
         kerkouane = libx.mkHost {
           hostname = "kerkouane";
           pkgsInput = inputs.nixpkgs-25_05;
           homeInput = inputs.home-manager-25_05;
         };
-        # FIXME migrate to libx.mkHost
-        sakhalin = inputs.nixpkgs-24_11.lib.nixosSystem {
-          system = "x86_64-linux";
-          modules =
-            commonModules
-            ++ stableModules
-            ++ [
-              inputs.nixos-hardware.nixosModules.common-pc-ssd
-              ./systems/hosts/sakhalin.nix
-            ];
-        };
       };
 
       nixosModules = {
@@ -157,19 +112,19 @@
         aix =
           (self.nixosConfigurations.aix.extendModules {
             modules = [
-              "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+              "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
             ];
           }).config.system.build.sdImage;
         athena =
           (self.nixosConfigurations.athena.extendModules {
             modules = [
-              "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+              "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
             ];
           }).config.system.build.sdImage;
         demeter =
           (self.nixosConfigurations.demeter.extendModules {
             modules = [
-              "${inputs.nixpkgs-24_11}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
+              "${inputs.nixpkgs-25_05}/nixos/modules/installer/sd-card/sd-image-aarch64.nix"
             ];
           }).config.system.build.sdImage;
       };
@@ -250,12 +205,6 @@
       repo = "nixpkgs";
       ref = "nixos-25.05";
     };
-    nixpkgs-24_11 = {
-      type = "github";
-      owner = "NixOS";
-      repo = "nixpkgs";
-      ref = "nixos-24.11";
-    };
     nixpkgs-master.url = "github:nixos/nixpkgs/master";
     pre-commit-hooks.url = "github:cachix/git-hooks.nix";
     pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
@@ -273,13 +222,6 @@
       ref = "release-25.05";
       inputs.nixpkgs.follows = "nixpkgs-25_05";
     };
-    home-manager-24_11 = {
-      type = "github";
-      owner = "nix-community";
-      repo = "home-manager";
-      ref = "release-24.11";
-      inputs.nixpkgs.follows = "nixpkgs-24_11";
-    };
 
     # FIXME could still be useful for servers
     # impermanence = { type = "github"; owner = "nix-community"; repo = "impermanence"; };
@@ -294,16 +236,9 @@
     emacs-overlay = {
       url = "github:nix-community/emacs-overlay";
       inputs.nixpkgs.follows = "nixpkgs";
-      inputs.nixpkgs-stable.follows = "nixpkgs-24_11";
+      inputs.nixpkgs-stable.follows = "nixpkgs-25_05";
     };
 
-    # WSL
-    nixos-wsl = {
-      type = "github";
-      owner = "nix-community";
-      repo = "NixOS-WSL";
-      inputs.nixpkgs.follows = "nixpkgs";
-    };
     nixos-hardware = {
       type = "github";
       owner = "NixOS";
@@ -333,8 +268,6 @@
     agenix.inputs.nixpkgs.follows = "nixpkgs";
     agenix-25_05.url = "github:ryantm/agenix";
     agenix-25_05.inputs.nixpkgs.follows = "nixpkgs-25_05";
-    agenix-24_11.url = "github:ryantm/agenix";
-    agenix-24_11.inputs.nixpkgs.follows = "nixpkgs-24_11";
 
     lanzaboote.url = "github:nix-community/lanzaboote";
     lanzaboote.inputs.nixpkgs.follows = "nixpkgs";
secrets.nix
@@ -14,14 +14,16 @@ let
   kerkouane = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJguVoQYObRLyNxELFc3ai2yDJ25+naiM3tKrBGuxwwA"; # ssh-keyscan -q -t ed25519 kerkouane.sbr.pm
   sakhalin = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN/PMBThi4DhgZR8VywbRDzzMVh2Qp3T6NJAcPubfXz6"; # ssh-keyscan -q -t ed25519 sakhalin.sbr.pm
   shikoku = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH18c6kcorVbK2TwCgdewL6nQf29Cd5BVTeq8nRYUigm"; # ssh-keyscan -q -t ed25519 shikoku.sbr.pm
-  wakasu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D"; # ssh-keyscan -q -t ed25519 wakasu.sbr.pm
+  # wakasu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrAh07USjRnAdS3mMNGdKee1KumjYDLzgXaiZ5LYi2D"; # ssh-keyscan -q -t ed25519 wakasu.sbr.pm
   kyushu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINd795m+P54GlGJdMaGci9pQ9N942VUz8ri2F14+LWxg"; # ssh-keyscan -q -t ed25519 kyushu.sbr.pm
+  # TODO: kobe
+  # TODO: aion
+  # TODO: aix
   desktops = [
-    aomi
-    wakasu
     kyushu
   ];
   servers = [
+    aomi
     athena
     demeter
     kerkouane
@@ -34,72 +36,58 @@ in
   # Red Hat
   "secrets/redhat/krb5.conf.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/RHVPN.ovpn.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/AMS2.ovpn.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/RDU2.ovpn.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/BBRQ.ovpn.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/ipa.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/2022-RH-IT-Root-CA.pem.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/2015-RH-IT-Root-CA.pem.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/Eng-CA.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/newca.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/oracle_ebs.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/pki-ca-chain.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/RH_ITW.crt.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/win-intermediate-ca.cer.age".publicKeys = users ++ [
     aomi
-    wakasu
     kyushu
   ];
   "secrets/redhat/redhat.pem.age".publicKeys = users ++ systems;