{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tune.toys/schemas/toy-0.1.0.schema.json",
  "title": "ToyDocument",
  "description": "Draft local authoring contract. Validation is not runtime admission or a release certificate.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "format": { "const": "tune-toys" },
    "schemaVersion": { "const": "0.1.0" },
    "id": { "type": "string", "pattern": "^[a-z][a-z0-9_.-]{0,127}$" },
    "revision": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "title": { "type": "string", "minLength": 1, "maxLength": 128 },
    "description": { "type": "string", "maxLength": 4096 },
    "entrypoint": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_-]{0,63}$",
      "not": { "enum": ["constructor", "prototype"] }
    },
    "entryFrame": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_-]{0,63}$",
      "not": { "enum": ["constructor", "prototype"] }
    },
    "definitions": {
      "type": "object",
      "maxProperties": 64,
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9_-]{0,63}$",
        "not": { "enum": ["constructor", "prototype"] }
      },
      "additionalProperties": { "$ref": "#/$defs/Definition" },
      "minProperties": 1
    },
    "frames": {
      "type": "object",
      "maxProperties": 64,
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9_-]{0,63}$",
        "not": { "enum": ["constructor", "prototype"] }
      },
      "additionalProperties": { "$ref": "#/$defs/Frame" },
      "minProperties": 1
    },
    "assets": {
      "type": "object",
      "maxProperties": 64,
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9_-]{0,63}$",
        "not": { "enum": ["constructor", "prototype"] }
      },
      "additionalProperties": { "$ref": "#/$defs/Asset" }
    },
    "extensions": {
      "type": "object",
      "maxProperties": 32,
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9-]*[.][a-zA-Z0-9_.-]+$"
      },
      "additionalProperties": true
    },
    "theme": { "$ref": "#/$defs/Theme" },
    "transport": { "$ref": "#/$defs/Transport" },
    "tuning": { "$ref": "#/$defs/Tuning" },
    "previewAsset": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_-]{0,63}$",
      "not": { "enum": ["constructor", "prototype"] }
    },
    "styles": {
      "description": "Toy-wide reusable text/control styles keyed by durable identity.",
      "type": "object",
      "maxProperties": 64,
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-z][a-z0-9_-]{0,63}$",
        "not": { "enum": ["constructor", "prototype"] }
      },
      "additionalProperties": { "$ref": "#/$defs/ReusableStyle" }
    }
  },
  "required": [
    "format",
    "schemaVersion",
    "id",
    "revision",
    "title",
    "entrypoint",
    "entryFrame",
    "definitions",
    "frames",
    "assets"
  ],
  "$defs": {
    "Port": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": { "const": "audio" },
            "channels": {
              "oneOf": [
                { "type": "integer", "minimum": 1, "maximum": 32 },
                { "const": "auto" }
              ]
            },
            "labels": {
              "type": "array",
              "minItems": 1,
              "maxItems": 32,
              "items": { "type": "string", "minLength": 1, "maxLength": 64 }
            }
          },
          "required": ["type", "channels"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": { "const": "video" },
            "streams": {
              "oneOf": [
                { "type": "integer", "minimum": 1, "maximum": 8 },
                { "const": "auto" }
              ]
            },
            "labels": {
              "type": "array",
              "minItems": 1,
              "maxItems": 8,
              "items": { "type": "string", "minLength": 1, "maxLength": 64 }
            }
          },
          "required": ["type", "streams"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": { "const": "control" },
            "lanes": {
              "oneOf": [
                { "type": "integer", "minimum": 1, "maximum": 32 },
                { "const": "auto" }
              ]
            },
            "labels": {
              "type": "array",
              "minItems": 1,
              "maxItems": 32,
              "items": { "type": "string", "minLength": 1, "maxLength": 64 }
            }
          },
          "required": ["type", "lanes"]
        },
        {
          "description": "Audio or control, resolved from the node's cables. Declared by Math and Compare; definition boundaries reject it.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": { "const": "signal" },
            "lanes": {
              "oneOf": [
                { "type": "integer", "minimum": 1, "maximum": 32 },
                { "const": "auto" }
              ]
            },
            "labels": {
              "type": "array",
              "minItems": 1,
              "maxItems": 32,
              "items": { "type": "string", "minLength": 1, "maxLength": 64 }
            }
          },
          "required": ["type", "lanes"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": { "type": { "const": "midi" } },
          "required": ["type"]
        },
        {
          "description": "One lane of structured host-domain messages; never enters the audio engine.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "type": { "const": "data" },
            "data": { "$ref": "#/$defs/DataType" }
          },
          "required": ["type", "data"]
        }
      ]
    },
    "DataType": {
      "description": "Datatype of a data cable. Optional bounds apply to integer and number (min, max, unit), string (maxLength) and bytes (mime).",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "kind": {
          "enum": [
            "trigger",
            "boolean",
            "integer",
            "number",
            "string",
            "color",
            "json",
            "table",
            "bytes",
            "any"
          ]
        },
        "min": { "type": "number" },
        "max": { "type": "number" },
        "unit": { "type": "string", "maxLength": 16 },
        "maxLength": { "type": "integer", "minimum": 1, "maximum": 1048576 },
        "mime": {
          "type": "string",
          "pattern": "^[a-z0-9.+-]{1,64}/[a-z0-9.+*-]{1,64}$"
        }
      },
      "required": ["kind"]
    },
    "DataSource": {
      "description": "The data output a widget shows: a node (or $in) of the Frame's definition and one of its ports.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "node": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            { "enum": ["$in"] }
          ]
        },
        "port": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_-]{0,63}$",
          "not": { "enum": ["constructor", "prototype"] }
        }
      },
      "required": ["node", "port"]
    },
    "Node": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "primitive" },
            "type": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_.-]{0,127}$"
            },
            "version": { "enum": ["0.1.0", "0.2.0", "0.3.0"] },
            "values": {
              "description": "Parameter values by name: a fixed parameter, or `<item>.<parameter>` for a repeat parameter of an item in the node's `items` data. At most 288 (MAX_NODE_SLOTS).",
              "type": "object",
              "maxProperties": 288,
              "propertyNames": {
                "type": "string",
                "pattern": "^([a-z][a-z0-9_-]{0,63}|[a-z][a-z0-9_-]{0,31}[.][a-z][a-z0-9_-]{0,31})$",
                "not": { "enum": ["constructor", "prototype"] }
              },
              "additionalProperties": { "type": "number" }
            },
            "audio": { "$ref": "#/$defs/AudioConfiguration" },
            "bus": {
              "description": "Named wireless bus for bus.send and bus.receive; scoped to this definition.",
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "data": {
              "description": "Bounded portable node data the node's manifest admits: float tables, text, string lists, header rows or item lists. The manifest bounds each key; host data nodes keep the whole object within 64 KiB.",
              "type": "object",
              "maxProperties": 8,
              "propertyNames": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                "not": { "enum": ["constructor", "prototype"] }
              },
              "additionalProperties": {
                "anyOf": [
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 16384,
                    "items": { "type": "number" }
                  },
                  { "type": "string", "maxLength": 8192 },
                  {
                    "type": "array",
                    "maxItems": 64,
                    "items": { "type": "string", "maxLength": 1024 }
                  },
                  {
                    "type": "array",
                    "maxItems": 32,
                    "items": {
                      "type": "array",
                      "minItems": 2,
                      "maxItems": 2,
                      "items": { "type": "string", "maxLength": 1024 }
                    }
                  },
                  {
                    "description": "An item list: ordered records with durable ids. The manifest's `items` spec bounds the count and each field; a `repeat` block gives every item `<id>.<member>` ports and parameters. List order is presentation.",
                    "type": "array",
                    "maxItems": 32,
                    "items": {
                      "type": "object",
                      "maxProperties": 9,
                      "propertyNames": {
                        "type": "string",
                        "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                        "not": { "enum": ["constructor", "prototype"] }
                      },
                      "properties": {
                        "id": {
                          "type": "string",
                          "pattern": "^[a-z][a-z0-9_-]{0,31}$",
                          "not": { "enum": ["constructor", "prototype"] }
                        }
                      },
                      "additionalProperties": {
                        "anyOf": [
                          { "type": "string", "maxLength": 128 },
                          { "type": "number" }
                        ]
                      },
                      "required": ["id"]
                    }
                  }
                ]
              }
            }
          },
          "required": ["kind", "type", "version"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "group" },
            "definition": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "values": {
              "type": "object",
              "maxProperties": 512,
              "propertyNames": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                "not": { "enum": ["constructor", "prototype"] }
              },
              "additionalProperties": { "type": "number" }
            },
            "voices": {
              "description": "Polyphony: the compiler replicates this instance once per voice behind a note allocator and sums the replicas' audio outputs. Absent means 1 (one instance, no allocator).",
              "type": "integer",
              "minimum": 1,
              "maximum": 8
            },
            "mpe": {
              "description": "MPE zone of a polyphonic instance: member-channel bend, pressure and CC74 reach only the voice holding that channel's note; master-channel messages reach every voice.",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "zone": { "enum": ["lower", "upper"] },
                "bend": {
                  "description": "Member-channel pitch-bend range in semitones (default 48). The allocator writes one combined bend per voice at this range.",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 96
                }
              },
              "required": ["zone"]
            }
          },
          "required": ["kind", "definition"]
        }
      ]
    },
    "Parameter": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "label": { "type": "string", "minLength": 1, "maxLength": 128 },
        "min": { "type": "number" },
        "max": { "type": "number" },
        "default": { "type": "number" },
        "unit": {
          "type": "string",
          "maxLength": 24,
          "description": "Presentation only; values are stored unscaled. `linear` shows a gain as ×; `%` shows a stored fraction ×100 (0.7 reads 70 %); any other text is shown beside the number."
        },
        "scale": { "enum": ["linear", "log"] },
        "smoothingMs": { "type": "number", "minimum": 0, "maximum": 10000 },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "node": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                "not": { "enum": ["constructor", "prototype"] }
              },
              "parameter": {
                "description": "A node parameter, or `<item>.<parameter>` for an item's repeat parameter.",
                "type": "string",
                "pattern": "^([a-z][a-z0-9_-]{0,63}|[a-z][a-z0-9_-]{0,31}[.][a-z][a-z0-9_-]{0,31})$",
                "not": { "enum": ["constructor", "prototype"] }
              }
            },
            "required": ["node", "parameter"]
          },
          "maxItems": 32,
          "minItems": 1
        },
        "modulation": { "$ref": "#/$defs/Modulation" },
        "midi": { "$ref": "#/$defs/MidiBinding" }
      },
      "required": [
        "label",
        "min",
        "max",
        "default",
        "unit",
        "scale",
        "smoothingMs",
        "targets"
      ]
    },
    "Definition": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "title": { "type": "string", "minLength": 1, "maxLength": 128 },
        "widgets": {
          "description": "Loose interface components on this definition's Patch. Their bounds are Patch coordinates; Frame membership is explicit in Frame.widgets.",
          "type": "object",
          "maxProperties": 512,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Widget" }
        },
        "inputs": {
          "type": "object",
          "maxProperties": 256,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Port" }
        },
        "outputs": {
          "type": "object",
          "maxProperties": 256,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Port" }
        },
        "parameters": {
          "type": "object",
          "maxProperties": 512,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Parameter" },
          "description": "Public controls for the definition. The 512-control budget fits a full 32-channel Mixer (129 controls) beside the expanded DSP families; expanded programs remain capped at 4096 controls."
        },
        "nodes": {
          "type": "object",
          "maxProperties": 64,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Node" }
        },
        "connections": {
          "type": "object",
          "maxProperties": 256,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "from": { "$ref": "#/$defs/Endpoint" },
              "to": { "$ref": "#/$defs/Endpoint" }
            },
            "required": ["from", "to"]
          }
        },
        "presets": {
          "type": "object",
          "maxProperties": 64,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Preset" }
        }
      },
      "required": [
        "title",
        "inputs",
        "outputs",
        "parameters",
        "nodes",
        "connections"
      ]
    },
    "Endpoint": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "node": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            { "enum": ["$in", "$out"] }
          ]
        },
        "port": {
          "description": "A port name, or `@name` for the parameter socket that a one-lane control cable drives. Item ports and sockets are scoped as `<item>.<member>` (`saw.in`, `@saw.gain`).",
          "type": "string",
          "pattern": "^@?([a-z][a-z0-9_-]{0,63}|[a-z][a-z0-9_-]{0,31}[.][a-z][a-z0-9_-]{0,31})$",
          "not": { "enum": ["constructor", "prototype"] }
        }
      },
      "required": ["node", "port"]
    },
    "Bounds": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "x": { "type": "number" },
        "y": { "type": "number" },
        "width": { "type": "number", "exclusiveMinimum": 0, "maximum": 8192 },
        "height": { "type": "number", "exclusiveMinimum": 0, "maximum": 8192 }
      },
      "required": ["x", "y", "width", "height"]
    },
    "Widget": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "enum": ["knob", "slider"] },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "parameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "orientation": { "enum": ["auto", "horizontal", "vertical"] }
          },
          "required": ["kind", "label", "parameter", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "envelope" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "parameters": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "attack": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "decay": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "sustain": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "release": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "gate": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "type": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "curve": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "loop": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "retrigger": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "hold": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                }
              },
              "required": [
                "attack",
                "decay",
                "sustain",
                "release",
                "gate",
                "type",
                "curve",
                "loop",
                "retrigger",
                "hold"
              ]
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "label", "parameters", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "filter" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "parameters": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "cutoff": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "resonance": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "mode": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "type": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "slope": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "compensation": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                }
              },
              "required": ["cutoff"]
            },
            "model": { "enum": ["lowpass", "svf"] },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "label", "parameters", "bounds", "model"]
        },
        {
          "description": "A node face: one processor's instrument screen (filter response, ADSR, transfer curve, tap train, waveform, EQ, wavetable stack, tuner, curve or step grid). Every role binds a distinct public control that targets that role's parameter of one node of the face's type; faces that draw node data also name that node.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "face" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "face": {
              "enum": [
                "lowpass",
                "svf",
                "envelope",
                "compressor",
                "limiter",
                "delay",
                "oscillator",
                "eq",
                "wavetable",
                "tuner",
                "curve",
                "step",
                "euclid",
                "poly",
                "drive",
                "crush",
                "reverb",
                "chorus",
                "lfo",
                "math",
                "compare",
                "scale"
              ]
            },
            "parameters": {
              "description": "Face role to public control id. Every role of the face is bound.",
              "type": "object",
              "maxProperties": 288,
              "propertyNames": {
                "type": "string",
                "pattern": "^([a-z][a-z0-9_]{0,63}|[a-z][a-z0-9_-]{0,31}[.][a-z][a-z0-9_-]{0,31})$",
                "not": { "enum": ["constructor", "prototype"] }
              },
              "additionalProperties": {
                "type": "string",
                "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                "not": { "enum": ["constructor", "prototype"] }
              }
            },
            "node": {
              "description": "The processor node in this Frame's definition. Required for faces that draw node data (wavetable, tuner, curve, step); it also gives the face its live readings.",
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "label", "face", "parameters", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "enum": ["toggle", "momentary", "trigger"] },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "parameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "onValue": {
              "type": "number",
              "description": "Pressed/on value; defaults to the bound public parameter maximum."
            },
            "offValue": {
              "type": "number",
              "description": "Released/off value; defaults to the bound public parameter minimum."
            },
            "pulseMs": {
              "type": "number",
              "minimum": 10,
              "maximum": 2000,
              "description": "Trigger pulse length in milliseconds, default 80. Only applies to trigger controls."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "appearance": { "enum": ["button", "checkbox", "switch"] }
          },
          "required": ["kind", "label", "parameter", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "xy" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "xParameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "yParameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "appearance": { "enum": ["pad", "joystick"] },
            "spring": { "type": "boolean" }
          },
          "required": ["kind", "label", "xParameter", "yParameter", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "text" },
            "text": { "type": "string", "maxLength": 4096 },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "text", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "frame" },
            "node": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Group instance for a nested Frame. Omit only for an inline Frame of the same definition."
            },
            "frame": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "frame", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "icon" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "icon": { "$ref": "#/$defs/IconName" },
            "label": {
              "description": "Accessible name for this icon; an empty string marks it decorative.",
              "type": "string",
              "maxLength": 128
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "appearance": { "$ref": "#/$defs/IconAppearance" },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "icon", "label", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "meter" },
            "label": { "type": "string", "maxLength": 128 },
            "source": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                { "enum": ["$in", "$out"] }
              ]
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "label", "source", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "segmented" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "parameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "options": {
              "type": "array",
              "minItems": 2,
              "maxItems": 16,
              "items": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "label": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "value": { "type": "number" }
                },
                "required": ["label", "value"]
              }
            }
          },
          "required": ["kind", "bounds", "label", "parameter", "options"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "image" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "label": { "type": "string", "maxLength": 128 },
            "asset": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "fit": { "enum": ["contain", "cover", "stretch"] }
          },
          "required": ["kind", "bounds", "label", "asset"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "piano" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "label": { "type": "string", "minLength": 1, "maxLength": 128 },
            "node": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_/-]{0,1023}$"
            },
            "firstNote": { "type": "integer", "minimum": 0, "maximum": 126 },
            "lastNote": { "type": "integer", "minimum": 1, "maximum": 127 }
          },
          "required": ["kind", "bounds", "label", "node"]
        },
        {
          "description": "A lamp showing a color, boolean, number, integer or trigger data output. Hidden lamps never change execution.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "led" },
            "label": { "type": "string", "maxLength": 128 },
            "source": { "$ref": "#/$defs/DataSource" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "shape": { "enum": ["round", "square", "bar"] },
            "onColor": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"
            },
            "offColor": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"
            },
            "glow": { "type": "boolean" },
            "pulseMs": { "type": "integer", "minimum": 10, "maximum": 2000 }
          },
          "required": ["kind", "label", "source", "bounds"]
        },
        {
          "description": "A sandboxed page bound to a web.frame node; it loads after a click and relays messages only with the node's declared origin.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "web" },
            "label": { "type": "string", "maxLength": 128 },
            "source": { "$ref": "#/$defs/DataSource" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "showOrigin": { "type": "boolean" }
          },
          "required": ["kind", "label", "source", "bounds"]
        },
        {
          "description": "Draws strokes onto a video.paint node's surface; strokes are runtime state, never source. Place it over the Screen that shows the paint so strokes stay aligned.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "paint" },
            "label": { "type": "string", "maxLength": 128 },
            "source": { "$ref": "#/$defs/DataSource" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "color": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"
            },
            "width": { "type": "number", "minimum": 1, "maximum": 64 },
            "opacity": { "type": "number", "minimum": 0.05, "maximum": 1 }
          },
          "required": ["kind", "label", "source", "bounds"]
        },
        {
          "description": "Draws one frame of a std.wavetable node's table; each gesture is one source edit.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "curve" },
            "label": { "type": "string", "maxLength": 128 },
            "node": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "tableFrame": { "type": "integer", "minimum": 0, "maximum": 7 },
            "color": {
              "type": "string",
              "pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$"
            }
          },
          "required": ["kind", "label", "node", "bounds"]
        },
        {
          "description": "A multiview face of a video.switch node: program/preview tally, click to cue, Take and transition. Public controls stay the authority.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "switcher" },
            "label": { "type": "string", "maxLength": 128 },
            "node": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "parameters": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "program": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "preview": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "transition": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                }
              },
              "required": ["program", "preview"]
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" }
          },
          "required": ["kind", "label", "node", "parameters", "bounds"]
        },
        {
          "description": "Shows one public parameter's effective value or one lane of a control output, formatted with a unit.",
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "readout" },
            "label": { "type": "string", "maxLength": 128 },
            "parameter": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "source": { "$ref": "#/$defs/DataSource" },
            "lane": { "type": "integer", "minimum": 0, "maximum": 31 },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "format": { "enum": ["number", "percent", "integer", "boolean"] },
            "precision": { "type": "integer", "minimum": 0, "maximum": 6 },
            "unit": { "type": "string", "maxLength": 16 }
          },
          "required": ["kind", "label", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "scope" },
            "label": { "type": "string", "maxLength": 128 },
            "source": {
              "description": "Audio source in this definition. Omit for a disconnected Scope.",
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                { "enum": ["$in", "$out"] }
              ]
            },
            "port": {
              "description": "Audio port to inspect; when omitted, use the source's first audio port.",
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "mode": {
              "enum": ["scope", "spectrum", "spectrogram", "xy", "tuner"]
            },
            "channel": { "type": "integer", "minimum": 0, "maximum": 31 }
          },
          "required": ["kind", "label", "bounds"]
        },
        {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "kind": { "const": "screen" },
            "bounds": { "$ref": "#/$defs/Bounds" },
            "style": { "$ref": "#/$defs/WidgetStyle" },
            "name": {
              "description": "Optional editor layer name, independent of content, labels and durable identity.",
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "hidden": {
              "description": "Omit this layer from Frame presentation; parameter bindings and DSP remain unchanged.",
              "type": "boolean"
            },
            "locked": {
              "description": "Protect this layer from browser design edits. Does not disable playback controls.",
              "type": "boolean"
            },
            "folder": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional parent layer-folder identity within this Frame."
            },
            "styleRef": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] },
              "description": "Optional reference to a compatible reusable style in this Toy. Local style values override it."
            },
            "constraints": { "$ref": "#/$defs/LayoutConstraints" },
            "label": { "type": "string", "maxLength": 128 },
            "asset": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_-]{0,63}$",
              "not": { "enum": ["constructor", "prototype"] }
            },
            "fit": { "enum": ["contain", "cover", "stretch"] },
            "mode": { "enum": ["image", "video", "scene", "live"] },
            "scene": { "enum": ["cube", "pyramid"] },
            "stream": {
              "description": "For `live` Screens on a bundled video port: which stream to show (0-based).",
              "type": "integer",
              "minimum": 0,
              "maximum": 15
            },
            "tracking": {
              "description": "For live Screens: draw points and connections from vision nodes receiving this video output. Preview only; does not modify the video signal.",
              "type": "boolean"
            },
            "source": {
              "description": "For `live` Screens: the video output port of a node in this Frame's definition.",
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "node": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                },
                "port": {
                  "type": "string",
                  "pattern": "^[a-z][a-z0-9_-]{0,63}$",
                  "not": { "enum": ["constructor", "prototype"] }
                }
              },
              "required": ["node", "port"]
            }
          },
          "required": ["kind", "bounds", "label", "mode"]
        }
      ]
    },
    "Frame": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "definition": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_-]{0,63}$",
          "not": { "enum": ["constructor", "prototype"] }
        },
        "title": { "type": "string", "minLength": 1, "maxLength": 128 },
        "width": { "type": "number", "exclusiveMinimum": 0, "maximum": 8192 },
        "height": { "type": "number", "exclusiveMinimum": 0, "maximum": 8192 },
        "widgets": {
          "type": "object",
          "maxProperties": 512,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/Widget" }
        },
        "theme": { "$ref": "#/$defs/Theme" },
        "layerFolders": {
          "type": "object",
          "maxProperties": 64,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "$ref": "#/$defs/LayerFolder" }
        },
        "layout": { "$ref": "#/$defs/ResponsiveLayout" }
      },
      "required": ["definition", "title", "width", "height", "widgets"]
    },
    "Asset": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "path": {
          "type": "string",
          "pattern": "^assets/[a-zA-Z0-9_./-]+$",
          "maxLength": 240
        },
        "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
        "sizeBytes": { "type": "integer", "minimum": 0, "maximum": 134217728 },
        "mediaType": { "type": "string", "maxLength": 128 },
        "license": { "type": "string", "minLength": 1, "maxLength": 128 },
        "mediaId": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,128}$" },
        "mediaVersion": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9_-]{1,128}$"
        },
        "attribution": { "type": "string", "maxLength": 1024 },
        "origin": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "provider": { "const": "tone3000" },
            "toneId": { "type": "string", "pattern": "^[0-9A-Za-z_-]{1,64}$" },
            "modelId": { "type": "string", "pattern": "^[0-9A-Za-z_-]{1,64}$" },
            "url": {
              "type": "string",
              "pattern": "^https://www[.]tone3000[.]com/[a-zA-Z0-9_./-]*$",
              "not": { "pattern": "[^a-zA-Z0-9_./:-]" },
              "maxLength": 512
            }
          },
          "required": ["provider", "toneId", "modelId", "url"]
        }
      },
      "required": ["path", "sha256", "sizeBytes", "mediaType", "license"]
    },
    "ThemePreset": {
      "type": "string",
      "enum": ["neutral-dark", "neutral-light", "warm", "midnight"]
    },
    "FontFamily": {
      "type": "string",
      "enum": ["sans", "display", "mono", "serif"]
    },
    "ThemeTokens": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "background": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "surface": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "text": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "muted": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "accent": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "border": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "fontFamily": { "$ref": "#/$defs/FontFamily" },
        "fontSize": { "type": "number", "minimum": 6, "maximum": 120 },
        "radius": { "type": "number", "minimum": 0, "maximum": 40 },
        "screen": {
          "description": "Instrument screen colour behind node faces, signal plots and curves. Omitted: the default graphite screen.",
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "screenTrace": {
          "description": "One trace colour for every face on the screen, replacing each face's own tone. A widget accent still overrides it.",
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$"
        },
        "screenGlow": {
          "description": "Strength of the soft halo under screen traces, 0 for none.",
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      }
    },
    "Theme": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "preset": { "$ref": "#/$defs/ThemePreset" },
        "overrides": { "$ref": "#/$defs/ThemeTokens" }
      }
    },
    "WidgetStyle": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "color": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "background": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "accent": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "borderColor": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" },
        "fontFamily": { "$ref": "#/$defs/FontFamily" },
        "fontSize": { "type": "number", "minimum": 6, "maximum": 120 },
        "fontWeight": { "type": "integer", "enum": [300, 400, 500, 600, 700] },
        "letterSpacing": { "type": "number", "minimum": -2, "maximum": 20 },
        "textAlign": { "type": "string", "enum": ["left", "center", "right"] },
        "borderWidth": { "type": "number", "minimum": 0, "maximum": 8 },
        "borderRadius": { "type": "number", "minimum": 0, "maximum": 80 },
        "opacity": { "type": "number", "minimum": 0, "maximum": 1 },
        "zIndex": { "type": "integer", "minimum": 0, "maximum": 1023 }
      }
    },
    "IconName": {
      "description": "Bundled icon identity. Glyphs are local, inert and versioned with the Frame renderer.",
      "type": "string",
      "enum": [
        "a-arrow-down",
        "a-arrow-up",
        "a-large-small",
        "accessibility",
        "activity",
        "ad",
        "air-vent",
        "airplay",
        "alarm-clock",
        "alarm-clock-check",
        "alarm-clock-minus",
        "alarm-clock-off",
        "alarm-clock-plus",
        "alarm-smoke",
        "align-center-horizontal",
        "align-center-vertical",
        "align-end-horizontal",
        "align-end-vertical",
        "align-horizontal-distribute-center",
        "align-horizontal-distribute-end",
        "align-horizontal-distribute-start",
        "align-horizontal-justify-center",
        "align-horizontal-justify-end",
        "align-horizontal-justify-start",
        "align-horizontal-space-around",
        "align-horizontal-space-between",
        "align-start-horizontal",
        "align-start-vertical",
        "align-vertical-distribute-center",
        "align-vertical-distribute-end",
        "align-vertical-distribute-start",
        "align-vertical-justify-center",
        "align-vertical-justify-end",
        "align-vertical-justify-start",
        "align-vertical-space-around",
        "align-vertical-space-between",
        "ambulance",
        "ampersand",
        "ampersands",
        "amphora",
        "anchor",
        "angle",
        "antenna",
        "anvil",
        "aperture",
        "app-window",
        "app-window-mac",
        "apple",
        "archive",
        "archive-arrow-down",
        "archive-arrow-up",
        "archive-x",
        "armchair",
        "armenian-dram",
        "arrow-big-down",
        "arrow-big-down-dash",
        "arrow-big-left",
        "arrow-big-left-dash",
        "arrow-big-right",
        "arrow-big-right-dash",
        "arrow-big-up",
        "arrow-big-up-dash",
        "arrow-down",
        "arrow-down-0-1",
        "arrow-down-1-0",
        "arrow-down-a-z",
        "arrow-down-from-line",
        "arrow-down-left",
        "arrow-down-narrow-wide",
        "arrow-down-right",
        "arrow-down-to-dot",
        "arrow-down-to-line",
        "arrow-down-up",
        "arrow-down-wide-narrow",
        "arrow-down-z-a",
        "arrow-left",
        "arrow-left-from-line",
        "arrow-left-right",
        "arrow-left-to-line",
        "arrow-right",
        "arrow-right-from-line",
        "arrow-right-left",
        "arrow-right-to-line",
        "arrow-up",
        "arrow-up-0-1",
        "arrow-up-1-0",
        "arrow-up-a-z",
        "arrow-up-down",
        "arrow-up-from-dot",
        "arrow-up-from-line",
        "arrow-up-left",
        "arrow-up-narrow-wide",
        "arrow-up-right",
        "arrow-up-to-line",
        "arrow-up-wide-narrow",
        "arrow-up-z-a",
        "arrows-up-from-line",
        "asterisk",
        "astroid",
        "at-sign",
        "atom",
        "audio-lines",
        "audio-lines-off",
        "audio-lines-x",
        "audio-waveform",
        "avocado",
        "award",
        "axe",
        "axis-3d",
        "azerbaijani-manat",
        "baby",
        "backpack",
        "bacon",
        "badge",
        "badge-alert",
        "badge-cent",
        "badge-check",
        "badge-dollar-sign",
        "badge-euro",
        "badge-indian-rupee",
        "badge-info",
        "badge-japanese-yen",
        "badge-minus",
        "badge-percent",
        "badge-plus",
        "badge-pound-sterling",
        "badge-question-mark",
        "badge-russian-ruble",
        "badge-swiss-franc",
        "badge-turkish-lira",
        "badge-x",
        "baggage-claim",
        "ball-wave",
        "balloon",
        "ban",
        "banana",
        "bandage",
        "bangladeshi-taka",
        "banknote",
        "banknote-arrow-down",
        "banknote-arrow-up",
        "banknote-check",
        "banknote-x",
        "barcode",
        "barrel",
        "baseline",
        "bath",
        "battery",
        "battery-charging",
        "battery-full",
        "battery-low",
        "battery-medium",
        "battery-plus",
        "battery-warning",
        "beaker",
        "bean",
        "bean-off",
        "bed",
        "bed-double",
        "bed-single",
        "beef",
        "beef-off",
        "beer",
        "beer-off",
        "belarusian-ruble",
        "bell",
        "bell-check",
        "bell-dot",
        "bell-electric",
        "bell-minus",
        "bell-off",
        "bell-plus",
        "bell-ring",
        "between-horizontal-end",
        "between-horizontal-start",
        "between-vertical-end",
        "between-vertical-start",
        "biceps-flexed",
        "bike",
        "binary",
        "binoculars",
        "biohazard",
        "bird",
        "birdhouse",
        "bitcoin",
        "blend",
        "blender",
        "blinds",
        "blocks",
        "bluetooth",
        "bluetooth-connected",
        "bluetooth-off",
        "bluetooth-searching",
        "bolt",
        "bomb",
        "bone",
        "bone-fracture",
        "book",
        "book-a",
        "book-alert",
        "book-audio",
        "book-bookmark",
        "book-check",
        "book-copy",
        "book-dashed",
        "book-down",
        "book-headphones",
        "book-heart",
        "book-image",
        "book-key",
        "book-lock",
        "book-minus",
        "book-open",
        "book-open-check",
        "book-open-text",
        "book-plus",
        "book-search",
        "book-text",
        "book-type",
        "book-up",
        "book-up-2",
        "book-user",
        "book-x",
        "bookmark",
        "bookmark-check",
        "bookmark-minus",
        "bookmark-off",
        "bookmark-plus",
        "bookmark-x",
        "boom-box",
        "bot",
        "bot-message-square",
        "bot-off",
        "bottle-wine",
        "bow-arrow",
        "box",
        "boxes",
        "boxes-linked",
        "braces",
        "brackets",
        "brain",
        "brain-circuit",
        "brain-cog",
        "brain-off",
        "brand-1001tracklists",
        "brand-1and1",
        "brand-1dot1dot1dot1",
        "brand-1panel",
        "brand-1password",
        "brand-2fas",
        "brand-2k",
        "brand-30secondsofcode",
        "brand-365datascience",
        "brand-3m",
        "brand-42",
        "brand-4chan",
        "brand-4d",
        "brand-500px",
        "brand-7zip",
        "brand-99designs",
        "brand-9gag",
        "brand-abb",
        "brand-abbott",
        "brand-abbvie",
        "brand-abdownloadmanager",
        "brand-aboutdotme",
        "brand-abstract",
        "brand-abusedotch",
        "brand-academia",
        "brand-accenture",
        "brand-accusoft",
        "brand-accuweather",
        "brand-acer",
        "brand-acm",
        "brand-acode",
        "brand-actigraph",
        "brand-activeloop",
        "brand-activision",
        "brand-activitypub",
        "brand-actix",
        "brand-actualbudget",
        "brand-acura",
        "brand-ada",
        "brand-adafruit",
        "brand-adaway",
        "brand-adblock",
        "brand-adblockplus",
        "brand-addydotio",
        "brand-adguard",
        "brand-adidas",
        "brand-adminer",
        "brand-adonisjs",
        "brand-adp",
        "brand-adroll",
        "brand-adventofcode",
        "brand-adyen",
        "brand-aegisauthenticator",
        "brand-aeroflot",
        "brand-aeromexico",
        "brand-afdian",
        "brand-affine",
        "brand-aframe",
        "brand-afterpay",
        "brand-aftership",
        "brand-agentskills",
        "brand-agora",
        "brand-aib",
        "brand-aidungeon",
        "brand-aiohttp",
        "brand-aiqfome",
        "brand-airasia",
        "brand-airbnb",
        "brand-airbrake",
        "brand-airbus",
        "brand-airbyte",
        "brand-aircall",
        "brand-aircanada",
        "brand-airchina",
        "brand-airfrance",
        "brand-airindia",
        "brand-airplayaudio",
        "brand-airplayvideo",
        "brand-airserbia",
        "brand-airtable",
        "brand-airtel",
        "brand-airtransat",
        "brand-ajv",
        "brand-akamai",
        "brand-akasaair",
        "brand-akaunting",
        "brand-akiflow",
        "brand-alacritty",
        "brand-alamy",
        "brand-albertheijn",
        "brand-alby",
        "brand-alchemy",
        "brand-aldinord",
        "brand-aldisud",
        "brand-alfred",
        "brand-algolia",
        "brand-algorand",
        "brand-alibabacloud",
        "brand-alibabadotcom",
        "brand-alienware",
        "brand-aliexpress",
        "brand-alipay",
        "brand-alist",
        "brand-allegro",
        "brand-alliedmodders",
        "brand-alltrails",
        "brand-almalinux",
        "brand-alpinedotjs",
        "brand-alpinelinux",
        "brand-alternativeto",
        "brand-alwaysdata",
        "brand-amd",
        "brand-ameba",
        "brand-americanairlines",
        "brand-americanexpress",
        "brand-amg",
        "brand-amp",
        "brand-amul",
        "brand-ana",
        "brand-anaconda",
        "brand-analogue",
        "brand-andela",
        "brand-android",
        "brand-androidauto",
        "brand-androidstudio",
        "brand-angular",
        "brand-anichart",
        "brand-anilist",
        "brand-animalplanet",
        "brand-animedotjs",
        "brand-ankermake",
        "brand-anki",
        "brand-ansible",
        "brand-answer",
        "brand-ansys",
        "brand-anta",
        "brand-antdesign",
        "brand-antena3",
        "brand-antennapod",
        "brand-anthropic",
        "brand-antv",
        "brand-anycubic",
        "brand-anydesk",
        "brand-anytype",
        "brand-apache",
        "brand-apacheairflow",
        "brand-apacheant",
        "brand-apachearrow",
        "brand-apacheavro",
        "brand-apachecassandra",
        "brand-apachecloudstack",
        "brand-apachecordova",
        "brand-apachecouchdb",
        "brand-apachedolphinscheduler",
        "brand-apachedoris",
        "brand-apachedruid",
        "brand-apacheecharts",
        "brand-apacheflink",
        "brand-apachefreemarker",
        "brand-apachegroovy",
        "brand-apacheguacamole",
        "brand-apachehadoop",
        "brand-apachehbase",
        "brand-apachehive",
        "brand-apachejmeter",
        "brand-apachekafka",
        "brand-apachekylin",
        "brand-apachelucene",
        "brand-apachemaven",
        "brand-apachenetbeanside",
        "brand-apachenifi",
        "brand-apacheopenoffice",
        "brand-apacheparquet",
        "brand-apachepdfbox",
        "brand-apachepulsar",
        "brand-apacherocketmq",
        "brand-apachesolr",
        "brand-apachespark",
        "brand-apachestorm",
        "brand-apachesuperset",
        "brand-apachetomcat",
        "brand-aparat",
        "brand-apifox",
        "brand-apmterminals",
        "brand-apollographql",
        "brand-apostrophe",
        "brand-appgallery",
        "brand-appian",
        "brand-appimage",
        "brand-appium",
        "brand-apple",
        "brand-applearcade",
        "brand-applemusic",
        "brand-applenews",
        "brand-applepay",
        "brand-applepodcasts",
        "brand-appletv",
        "brand-appmanager",
        "brand-appsignal",
        "brand-appsmith",
        "brand-appstore",
        "brand-appveyor",
        "brand-appwrite",
        "brand-aqua",
        "brand-aral",
        "brand-arangodb",
        "brand-arc",
        "brand-arcgis",
        "brand-archicad",
        "brand-archiveofourown",
        "brand-archlinux",
        "brand-ardour",
        "brand-arduino",
        "brand-argo",
        "brand-argos",
        "brand-ariakit",
        "brand-arkecosystem",
        "brand-arlo",
        "brand-arm",
        "brand-armkeil",
        "brand-arstechnica",
        "brand-artifacthub",
        "brand-artixlinux",
        "brand-artstation",
        "brand-arxiv",
        "brand-asahilinux",
        "brand-asana",
        "brand-asciidoctor",
        "brand-asciinema",
        "brand-asda",
        "brand-aseprite",
        "brand-assemblyscript",
        "brand-asterisk",
        "brand-astonmartin",
        "brand-astra",
        "brand-astral",
        "brand-astro",
        "brand-asus",
        "brand-atandt",
        "brand-atari",
        "brand-atlasos",
        "brand-atlassian",
        "brand-auchan",
        "brand-audacity",
        "brand-audi",
        "brand-audible",
        "brand-audiobookshelf",
        "brand-audioboom",
        "brand-audiomack",
        "brand-audiotechnica",
        "brand-aurelia",
        "brand-autentique",
        "brand-auth0",
        "brand-authelia",
        "brand-authentik",
        "brand-autocad",
        "brand-autocannon",
        "brand-autodesk",
        "brand-autodeskmaya",
        "brand-autodeskrevit",
        "brand-autohotkey",
        "brand-autoit",
        "brand-automattic",
        "brand-autoprefixer",
        "brand-autozone",
        "brand-avajs",
        "brand-avaloniaui",
        "brand-avast",
        "brand-avianca",
        "brand-avira",
        "brand-avm",
        "brand-await",
        "brand-awesomelists",
        "brand-awesomewm",
        "brand-awwwards",
        "brand-axios",
        "brand-axisbank",
        "brand-b4x",
        "brand-babel",
        "brand-babelio",
        "brand-babylondotjs",
        "brand-backblaze",
        "brand-backbone",
        "brand-backbonedotjs",
        "brand-backendless",
        "brand-backstage",
        "brand-backstagecasting",
        "brand-badoo",
        "brand-baidu",
        "brand-bakalari",
        "brand-bamboo",
        "brand-bambulab",
        "brand-bandcamp",
        "brand-bandlab",
        "brand-bandrautomation",
        "brand-bandsintown",
        "brand-bankofamerica",
        "brand-barclays",
        "brand-baremetrics",
        "brand-barmenia",
        "brand-basecamp",
        "brand-baserow",
        "brand-baseui",
        "brand-basicattentiontoken",
        "brand-bastyon",
        "brand-bat",
        "brand-bata",
        "brand-battledotnet",
        "brand-bazel",
        "brand-beatport",
        "brand-beats",
        "brand-beatsbydre",
        "brand-beatstars",
        "brand-beekeeperstudio",
        "brand-behance",
        "brand-beijingsubway",
        "brand-bem",
        "brand-bentley",
        "brand-bento",
        "brand-bentobox",
        "brand-bentoml",
        "brand-bereal",
        "brand-betfair",
        "brand-betterauth",
        "brand-betterdiscord",
        "brand-betterstack",
        "brand-bevy",
        "brand-bigbasket",
        "brand-bigbluebutton",
        "brand-bigcartel",
        "brand-bigcommerce",
        "brand-bilibili",
        "brand-billboard",
        "brand-bim",
        "brand-binance",
        "brand-bioconductor",
        "brand-biolink",
        "brand-biome",
        "brand-bisecthosting",
        "brand-bit",
        "brand-bitbucket",
        "brand-bitcoin",
        "brand-bitcoincash",
        "brand-bitcoinsv",
        "brand-bitcomet",
        "brand-bitdefender",
        "brand-bitly",
        "brand-bitrise",
        "brand-bitsy",
        "brand-bittorrent",
        "brand-bitwarden",
        "brand-bitwig",
        "brand-black",
        "brand-blackberry",
        "brand-blackmagicdesign",
        "brand-blazemeter",
        "brand-blazor",
        "brand-blender",
        "brand-blibli",
        "brand-blockbench",
        "brand-blockchaindotcom",
        "brand-blogger",
        "brand-bloglovin",
        "brand-blueprint",
        "brand-bluesky",
        "brand-bluesound",
        "brand-bluetooth",
        "brand-bmcsoftware",
        "brand-bmw",
        "brand-bnbchain",
        "brand-boardgamegeek",
        "brand-boat",
        "brand-boehringeringelheim",
        "brand-boeing",
        "brand-bohemiainteractive",
        "brand-bombardier",
        "brand-bookalope",
        "brand-bookbub",
        "brand-bookingdotcom",
        "brand-bookmeter",
        "brand-bookmyshow",
        "brand-bookstack",
        "brand-boost",
        "brand-boosty",
        "brand-boots",
        "brand-bootstrap",
        "brand-borgbackup",
        "brand-bosch",
        "brand-bose",
        "brand-botblecms",
        "brand-boulanger",
        "brand-bower",
        "brand-box",
        "brand-boxysvg",
        "brand-braintree",
        "brand-braintrust",
        "brand-brandfetch",
        "brand-brandfolder",
        "brand-brave",
        "brand-breaker",
        "brand-brenntag",
        "brand-brevo",
        "brand-brex",
        "brand-bricks",
        "brand-britishairways",
        "brand-broadcom",
        "brand-bruno",
        "brand-bsd",
        "brand-bspwm",
        "brand-bt",
        "brand-buddy",
        "brand-budibase",
        "brand-buefy",
        "brand-buffer",
        "brand-bugatti",
        "brand-bugcrowd",
        "brand-buhl",
        "brand-buildkite",
        "brand-builtbybit",
        "brand-bukalapak",
        "brand-bulma",
        "brand-bun",
        "brand-bungie",
        "brand-bunnydotnet",
        "brand-bunq",
        "brand-burgerking",
        "brand-burpsuite",
        "brand-burton",
        "brand-buymeacoffee",
        "brand-buysellads",
        "brand-buzzfeed",
        "brand-bvg",
        "brand-byjus",
        "brand-bytedance",
        "brand-c",
        "brand-cachet",
        "brand-cachyos",
        "brand-caddy",
        "brand-cadillac",
        "brand-cafepress",
        "brand-cairographics",
        "brand-cairometro",
        "brand-caixabank",
        "brand-cakephp",
        "brand-caldotcom",
        "brand-calendly",
        "brand-calibreweb",
        "brand-campaignmonitor",
        "brand-camunda",
        "brand-canonical",
        "brand-canvas",
        "brand-capacitor",
        "brand-caprover",
        "brand-cardano",
        "brand-cardmarket",
        "brand-carlsberggroup",
        "brand-carrd",
        "brand-carrefour",
        "brand-carthrottle",
        "brand-carto",
        "brand-cashapp",
        "brand-castbox",
        "brand-castorama",
        "brand-castro",
        "brand-caterpillar",
        "brand-cbc",
        "brand-cbs",
        "brand-ccc",
        "brand-ccleaner",
        "brand-cdprojekt",
        "brand-ce",
        "brand-celery",
        "brand-celestron",
        "brand-centos",
        "brand-ceph",
        "brand-cesium",
        "brand-chai",
        "brand-chainguard",
        "brand-chainlink",
        "brand-chakraui",
        "brand-changedetection",
        "brand-channel4",
        "brand-charles",
        "brand-chartdotjs",
        "brand-chartmogul",
        "brand-chase",
        "brand-chatbot",
        "brand-chatwoot",
        "brand-checkio",
        "brand-checkmarx",
        "brand-checkmk",
        "brand-chedraui",
        "brand-cheerio",
        "brand-chef",
        "brand-chemex",
        "brand-chessdotcom",
        "brand-chevrolet",
        "brand-chianetwork",
        "brand-chinaeasternairlines",
        "brand-chinarailway",
        "brand-chinasouthernairlines",
        "brand-chocolatey",
        "brand-chromatic",
        "brand-chromewebstore",
        "brand-chrysler",
        "brand-chupachups",
        "brand-cilium",
        "brand-cinema4d",
        "brand-cinnamon",
        "brand-cinny",
        "brand-circle",
        "brand-circleci",
        "brand-circuitverse",
        "brand-cirrusci",
        "brand-cisco",
        "brand-citrix",
        "brand-citroen",
        "brand-civicrm",
        "brand-civo",
        "brand-clarifai",
        "brand-claris",
        "brand-clarivate",
        "brand-claude",
        "brand-claudecode",
        "brand-clerk",
        "brand-clevercloud",
        "brand-clickhouse",
        "brand-clickup",
        "brand-cline",
        "brand-clion",
        "brand-clockify",
        "brand-clojure",
        "brand-cloud66",
        "brand-cloudbees",
        "brand-cloudcannon",
        "brand-cloudera",
        "brand-cloudflare",
        "brand-cloudflarepages",
        "brand-cloudflareworkers",
        "brand-cloudfoundry",
        "brand-cloudinary",
        "brand-cloudnativebuild",
        "brand-cloudron",
        "brand-cloudsmith",
        "brand-cloudways",
        "brand-clubforce",
        "brand-clubhouse",
        "brand-clyp",
        "brand-cmake",
        "brand-cncf",
        "brand-cnes",
        "brand-cnet",
        "brand-cnn",
        "brand-cobalt",
        "brand-cocacola",
        "brand-cockpit",
        "brand-cockroachlabs",
        "brand-cocoapods",
        "brand-cocos",
        "brand-coda",
        "brand-codacy",
        "brand-codeberg",
        "brand-codeblocks",
        "brand-codebuddy",
        "brand-codecademy",
        "brand-codeceptjs",
        "brand-codechef",
        "brand-codeclimate",
        "brand-codecov",
        "brand-codecrafters",
        "brand-codefactor",
        "brand-codeforces",
        "brand-codefresh",
        "brand-codeigniter",
        "brand-codemagic",
        "brand-codementor",
        "brand-codemirror",
        "brand-codenewbie",
        "brand-codeproject",
        "brand-coder",
        "brand-coderabbit",
        "brand-codersrank",
        "brand-coderwall",
        "brand-codesandbox",
        "brand-codeship",
        "brand-codesignal",
        "brand-codestream",
        "brand-codewars",
        "brand-codingame",
        "brand-codingninjas",
        "brand-codio",
        "brand-coffeescript",
        "brand-coggle",
        "brand-coinbase",
        "brand-coinmarketcap",
        "brand-collaboraonline",
        "brand-comicfury",
        "brand-comma",
        "brand-commerzbank",
        "brand-commitlint",
        "brand-commodore",
        "brand-commonlisp",
        "brand-commonworkflowlanguage",
        "brand-compilerexplorer",
        "brand-composer",
        "brand-comptia",
        "brand-comsol",
        "brand-conan",
        "brand-concourse",
        "brand-condaforge",
        "brand-conekta",
        "brand-confluence",
        "brand-construct3",
        "brand-consul",
        "brand-contabo",
        "brand-contactlesspayment",
        "brand-containerd",
        "brand-contao",
        "brand-contensis",
        "brand-contentful",
        "brand-contentstack",
        "brand-continente",
        "brand-contributorcovenant",
        "brand-conventionalcommits",
        "brand-convertio",
        "brand-convex",
        "brand-cookiecutter",
        "brand-coolermaster",
        "brand-coolify",
        "brand-coop",
        "brand-copaairlines",
        "brand-coppel",
        "brand-cora",
        "brand-coreboot",
        "brand-coreldraw",
        "brand-coronaengine",
        "brand-coronarenderer",
        "brand-corsair",
        "brand-couchbase",
        "brand-counterstrike",
        "brand-countingworkspro",
        "brand-coursera",
        "brand-coveralls",
        "brand-coze",
        "brand-cpanel",
        "brand-cplusplus",
        "brand-cplusplusbuilder",
        "brand-craftcms",
        "brand-craftsman",
        "brand-cratedb",
        "brand-crayon",
        "brand-creality",
        "brand-createreactapp",
        "brand-creativecommons",
        "brand-creativetechnology",
        "brand-credly",
        "brand-crehana",
        "brand-crewai",
        "brand-crewunited",
        "brand-criticalrole",
        "brand-crowdin",
        "brand-crowdsource",
        "brand-crunchbase",
        "brand-crunchyroll",
        "brand-cryengine",
        "brand-cryptomator",
        "brand-cryptpad",
        "brand-crystal",
        "brand-csdn",
        "brand-css",
        "brand-cssdesignawards",
        "brand-cssmodules",
        "brand-csswizardry",
        "brand-cts",
        "brand-cucumber",
        "brand-cultura",
        "brand-curl",
        "brand-curseforge",
        "brand-cursor",
        "brand-customink",
        "brand-cyberdefenders",
        "brand-cycling74",
        "brand-cypress",
        "brand-cytoscapedotjs",
        "brand-d",
        "brand-d3",
        "brand-dacia",
        "brand-daf",
        "brand-dailydotdev",
        "brand-dailymotion",
        "brand-daisyui",
        "brand-dapr",
        "brand-darkreader",
        "brand-dart",
        "brand-darty",
        "brand-daserste",
        "brand-dash",
        "brand-dash0",
        "brand-dashlane",
        "brand-dask",
        "brand-dassaultsystemes",
        "brand-databricks",
        "brand-datacamp",
        "brand-datadog",
        "brand-datadotai",
        "brand-datagrip",
        "brand-dataiku",
        "brand-datastax",
        "brand-datefns",
        "brand-datev",
        "brand-datocms",
        "brand-datto",
        "brand-davinciresolve",
        "brand-dazhongdianping",
        "brand-dazn",
        "brand-dbeaver",
        "brand-dblp",
        "brand-dcentertainment",
        "brand-debian",
        "brand-debridlink",
        "brand-decapcms",
        "brand-decentraland",
        "brand-dedge",
        "brand-deepcool",
        "brand-deepgram",
        "brand-deepin",
        "brand-deepl",
        "brand-deepmind",
        "brand-deepnote",
        "brand-deepseek",
        "brand-deezer",
        "brand-deliveroo",
        "brand-dell",
        "brand-delonghi",
        "brand-delphi",
        "brand-delta",
        "brand-deluge",
        "brand-deno",
        "brand-denodeploy",
        "brand-denon",
        "brand-dependabot",
        "brand-dependencycheck",
        "brand-depositphotos",
        "brand-derspiegel",
        "brand-deutschebahn",
        "brand-deutschebank",
        "brand-deutschepost",
        "brand-deutschetelekom",
        "brand-deutschewelle",
        "brand-devbox",
        "brand-devdotto",
        "brand-developmentcontainers",
        "brand-devexpress",
        "brand-deviantart",
        "brand-devpost",
        "brand-devrant",
        "brand-devuan",
        "brand-dgraph",
        "brand-dhl",
        "brand-diagramsdotnet",
        "brand-dialogflow",
        "brand-diaspora",
        "brand-dicebear",
        "brand-dictionarydotcom",
        "brand-dify",
        "brand-digg",
        "brand-digikeyelectronics",
        "brand-digitalocean",
        "brand-dinersclub",
        "brand-dior",
        "brand-directus",
        "brand-discogs",
        "brand-discord",
        "brand-discorddotjs",
        "brand-discourse",
        "brand-discover",
        "brand-disqus",
        "brand-disroot",
        "brand-distrobox",
        "brand-distrokid",
        "brand-django",
        "brand-dji",
        "brand-dlib",
        "brand-dlna",
        "brand-dlthub",
        "brand-dm",
        "brand-dmm",
        "brand-docker",
        "brand-docsdotrs",
        "brand-docsify",
        "brand-doctrine",
        "brand-docusaurus",
        "brand-dodopayments",
        "brand-dogecoin",
        "brand-doi",
        "brand-dolby",
        "brand-dolibarr",
        "brand-dolphin",
        "brand-doordash",
        "brand-dota2",
        "brand-dotenv",
        "brand-dotnet",
        "brand-douban",
        "brand-doubanread",
        "brand-dovecot",
        "brand-dovetail",
        "brand-downdetector",
        "brand-doxygen",
        "brand-dpd",
        "brand-dragonframe",
        "brand-draugiemdotlv",
        "brand-dreamstime",
        "brand-dribbble",
        "brand-drizzle",
        "brand-drone",
        "brand-drooble",
        "brand-dropbox",
        "brand-drupal",
        "brand-dsautomobiles",
        "brand-dts",
        "brand-dtube",
        "brand-ducati",
        "brand-duckdb",
        "brand-duckduckgo",
        "brand-dungeonsanddragons",
        "brand-dunked",
        "brand-dunzo",
        "brand-duolingo",
        "brand-duplicati",
        "brand-dvc",
        "brand-dwavesystems",
        "brand-dwm",
        "brand-dynatrace",
        "brand-e",
        "brand-e3",
        "brand-ea",
        "brand-eac",
        "brand-eagle",
        "brand-easyeda",
        "brand-easyjet",
        "brand-ebay",
        "brand-ebox",
        "brand-eclipseadoptium",
        "brand-eclipseche",
        "brand-eclipseide",
        "brand-eclipsejetty",
        "brand-eclipsemosquitto",
        "brand-eclipsevertdotx",
        "brand-ecosia",
        "brand-ecovacs",
        "brand-edeka",
        "brand-edgeimpulse",
        "brand-editorconfig",
        "brand-edotleclerc",
        "brand-educative",
        "brand-edx",
        "brand-effect",
        "brand-egghead",
        "brand-egnyte",
        "brand-eight",
        "brand-eightsleep",
        "brand-ejs",
        "brand-elastic",
        "brand-elasticcloud",
        "brand-elasticsearch",
        "brand-elasticstack",
        "brand-elavon",
        "brand-electron",
        "brand-electronbuilder",
        "brand-electronfiddle",
        "brand-elegoo",
        "brand-element",
        "brand-elementary",
        "brand-elementor",
        "brand-elevenlabs",
        "brand-eleventy",
        "brand-elgato",
        "brand-elixir",
        "brand-elk",
        "brand-elm",
        "brand-elsevier",
        "brand-embarcadero",
        "brand-embark",
        "brand-emberdotjs",
        "brand-emby",
        "brand-emirates",
        "brand-emlakjet",
        "brand-endeavouros",
        "brand-enpass",
        "brand-ens",
        "brand-ente",
        "brand-enterprisedb",
        "brand-envato",
        "brand-envoyproxy",
        "brand-epel",
        "brand-epicgames",
        "brand-epson",
        "brand-equinixmetal",
        "brand-eraser",
        "brand-ericsson",
        "brand-erlang",
        "brand-erpnext",
        "brand-esbuild",
        "brand-esea",
        "brand-eslgaming",
        "brand-eslint",
        "brand-esotericsoftware",
        "brand-esphome",
        "brand-espressif",
        "brand-esri",
        "brand-etcd",
        "brand-ethereum",
        "brand-ethers",
        "brand-ethiopianairlines",
        "brand-etihadairways",
        "brand-etsy",
        "brand-europeanunion",
        "brand-eventstore",
        "brand-evernote",
        "brand-everydotorg",
        "brand-excalidraw",
        "brand-exercism",
        "brand-exordo",
        "brand-exoscale",
        "brand-expedia",
        "brand-expensify",
        "brand-expertsexchange",
        "brand-expo",
        "brand-express",
        "brand-expressdotcom",
        "brand-expressvpn",
        "brand-eyeem",
        "brand-f1",
        "brand-f5",
        "brand-facebook",
        "brand-facebookgaming",
        "brand-facebooklive",
        "brand-faceit",
        "brand-facepunch",
        "brand-fairphone",
        "brand-faker",
        "brand-falco",
        "brand-falcon",
        "brand-fampay",
        "brand-fandango",
        "brand-fandom",
        "brand-fanfou",
        "brand-fantom",
        "brand-farcaster",
        "brand-fareharbor",
        "brand-farfetch",
        "brand-fastapi",
        "brand-fastify",
        "brand-fastlane",
        "brand-fastly",
        "brand-fathom",
        "brand-fauna",
        "brand-favro",
        "brand-fawry",
        "brand-fcc",
        "brand-fdroid",
        "brand-fedex",
        "brand-fedora",
        "brand-feedly",
        "brand-ferrari",
        "brand-ferrarinv",
        "brand-ferretdb",
        "brand-ffmpeg",
        "brand-fi",
        "brand-fiat",
        "brand-fidoalliance",
        "brand-fifa",
        "brand-fig",
        "brand-figma",
        "brand-figshare",
        "brand-fila",
        "brand-filament",
        "brand-filedotio",
        "brand-filen",
        "brand-files",
        "brand-filezilla",
        "brand-fillout",
        "brand-fineco",
        "brand-fing",
        "brand-firebase",
        "brand-firefish",
        "brand-fireflyiii",
        "brand-firefox",
        "brand-firefoxbrowser",
        "brand-fireship",
        "brand-firewalla",
        "brand-first",
        "brand-fishaudio",
        "brand-fishshell",
        "brand-fitbit",
        "brand-fivem",
        "brand-fiverr",
        "brand-fizz",
        "brand-flashforge",
        "brand-flask",
        "brand-flat",
        "brand-flathub",
        "brand-flatpak",
        "brand-flickr",
        "brand-flightaware",
        "brand-flipboard",
        "brand-floatplane",
        "brand-flood",
        "brand-floorp",
        "brand-flower",
        "brand-fluentbit",
        "brand-fluentd",
        "brand-fluke",
        "brand-flutter",
        "brand-flux",
        "brand-fluxer",
        "brand-flydotio",
        "brand-flyway",
        "brand-fmod",
        "brand-fnac",
        "brand-folium",
        "brand-folo",
        "brand-fonoma",
        "brand-fontawesome",
        "brand-fontbase",
        "brand-fontforge",
        "brand-foobar2000",
        "brand-foodpanda",
        "brand-ford",
        "brand-forgejo",
        "brand-formbricks",
        "brand-formik",
        "brand-formspree",
        "brand-formstack",
        "brand-fortinet",
        "brand-fortnite",
        "brand-fortran",
        "brand-fossa",
        "brand-fossilscm",
        "brand-foundryvirtualtabletop",
        "brand-foursquare",
        "brand-fox",
        "brand-foxtel",
        "brand-fozzy",
        "brand-framer",
        "brand-framework",
        "brand-framework7",
        "brand-franprix",
        "brand-frappe",
        "brand-fraunhofergesellschaft",
        "brand-freebsd",
        "brand-freecad",
        "brand-freecodecamp",
        "brand-freedesktopdotorg",
        "brand-freelancer",
        "brand-freelancermap",
        "brand-freenas",
        "brand-freenet",
        "brand-freepik",
        "brand-freetube",
        "brand-fresh",
        "brand-freshrss",
        "brand-frigate",
        "brand-fritz",
        "brand-frontendmentor",
        "brand-frontify",
        "brand-fsharp",
        "brand-fubo",
        "brand-fueler",
        "brand-fugacloud",
        "brand-fujifilm",
        "brand-fujitsu",
        "brand-furaffinity",
        "brand-furrynetwork",
        "brand-fusionauth",
        "brand-futurelearn",
        "brand-fyle",
        "brand-g2",
        "brand-g2a",
        "brand-g2g",
        "brand-galaxus",
        "brand-gamebanana",
        "brand-gamedeveloper",
        "brand-gamejolt",
        "brand-gameloft",
        "brand-gamemaker",
        "brand-gamescience",
        "brand-gandi",
        "brand-garmin",
        "brand-garudalinux",
        "brand-gatling",
        "brand-gatsby",
        "brand-gcore",
        "brand-gdal",
        "brand-geeksforgeeks",
        "brand-generalelectric",
        "brand-generalmotors",
        "brand-genius",
        "brand-gentoo",
        "brand-geocaching",
        "brand-geode",
        "brand-geopandas",
        "brand-gerrit",
        "brand-getx",
        "brand-ghost",
        "brand-ghostery",
        "brand-ghostfolio",
        "brand-ghostty",
        "brand-gimp",
        "brand-gin",
        "brand-giphy",
        "brand-git",
        "brand-gitbook",
        "brand-gitcode",
        "brand-gitconnected",
        "brand-gitea",
        "brand-gitee",
        "brand-gitextensions",
        "brand-gitforwindows",
        "brand-github",
        "brand-githubactions",
        "brand-githubcopilot",
        "brand-githubpages",
        "brand-githubsponsors",
        "brand-gitignoredotio",
        "brand-gitkraken",
        "brand-gitlab",
        "brand-gitlfs",
        "brand-gitpod",
        "brand-gitter",
        "brand-glance",
        "brand-glass",
        "brand-glassdoor",
        "brand-gldotinet",
        "brand-gleam",
        "brand-glide",
        "brand-glitch",
        "brand-globus",
        "brand-glovo",
        "brand-gltf",
        "brand-gmail",
        "brand-gmx",
        "brand-gnome",
        "brand-gnometerminal",
        "brand-gnu",
        "brand-gnubash",
        "brand-gnuemacs",
        "brand-gnuicecat",
        "brand-gnuprivacyguard",
        "brand-gnusocial",
        "brand-go",
        "brand-gocd",
        "brand-godaddy",
        "brand-godotengine",
        "brand-gofundme",
        "brand-gogdotcom",
        "brand-gojek",
        "brand-goland",
        "brand-goldmansachs",
        "brand-goodreads",
        "brand-google",
        "brand-googleadmob",
        "brand-googleads",
        "brand-googleadsense",
        "brand-googleanalytics",
        "brand-googleappsscript",
        "brand-googleassistant",
        "brand-googleauthenticator",
        "brand-googlebigquery",
        "brand-googlebigtable",
        "brand-googlecalendar",
        "brand-googlecampaignmanager360",
        "brand-googlecardboard",
        "brand-googlecast",
        "brand-googlechat",
        "brand-googlechrome",
        "brand-googlechronicle",
        "brand-googleclassroom",
        "brand-googlecloud",
        "brand-googlecloudcomposer",
        "brand-googlecloudspanner",
        "brand-googlecloudstorage",
        "brand-googlecolab",
        "brand-googlecontaineroptimizedos",
        "brand-googledataflow",
        "brand-googledataproc",
        "brand-googledisplayandvideo360",
        "brand-googledocs",
        "brand-googledrive",
        "brand-googleearth",
        "brand-googleearthengine",
        "brand-googlefonts",
        "brand-googleforms",
        "brand-googlegemini",
        "brand-googlehome",
        "brand-googlejules",
        "brand-googlekeep",
        "brand-googlelens",
        "brand-googlemaps",
        "brand-googlemarketingplatform",
        "brand-googlemeet",
        "brand-googlemessages",
        "brand-googlenearby",
        "brand-googlenews",
        "brand-googlepay",
        "brand-googlephotos",
        "brand-googleplay",
        "brand-googlepubsub",
        "brand-googlescholar",
        "brand-googlesearchconsole",
        "brand-googlesheets",
        "brand-googleslides",
        "brand-googlestreetview",
        "brand-googlesummerofcode",
        "brand-googletagmanager",
        "brand-googletasks",
        "brand-googletranslate",
        "brand-googletv",
        "brand-gotomeeting",
        "brand-gplv3",
        "brand-grab",
        "brand-gradio",
        "brand-gradle",
        "brand-gradleplaypublisher",
        "brand-grafana",
        "brand-grammarly",
        "brand-grandfrais",
        "brand-grapheneos",
        "brand-graphite",
        "brand-graphiteeditor",
        "brand-graphql",
        "brand-grav",
        "brand-gravatar",
        "brand-graylog",
        "brand-greasyfork",
        "brand-greatlearning",
        "brand-greenhouse",
        "brand-greensock",
        "brand-greptimedb",
        "brand-griddotai",
        "brand-gridsome",
        "brand-grocy",
        "brand-groupme",
        "brand-groupon",
        "brand-grunt",
        "brand-gsap",
        "brand-gsk",
        "brand-gsma",
        "brand-gsmarenadotcom",
        "brand-gstreamer",
        "brand-gtk",
        "brand-guangzhoumetro",
        "brand-guilded",
        "brand-guitarpro",
        "brand-gulp",
        "brand-gumroad",
        "brand-gumtree",
        "brand-gunicorn",
        "brand-gurobi",
        "brand-gusto",
        "brand-gutenberg",
        "brand-h2database",
        "brand-h3",
        "brand-habr",
        "brand-hackaday",
        "brand-hackclub",
        "brand-hackerearth",
        "brand-hackernoon",
        "brand-hackerone",
        "brand-hackerrank",
        "brand-hackmd",
        "brand-hackster",
        "brand-hackthebox",
        "brand-hal",
        "brand-handlebarsdotjs",
        "brand-handm",
        "brand-handshake",
        "brand-handshakeprotocol",
        "brand-happycow",
        "brand-harbor",
        "brand-harmonyos",
        "brand-hashcat",
        "brand-hashicorp",
        "brand-hashnode",
        "brand-haskell",
        "brand-hasura",
        "brand-hatenabookmark",
        "brand-haveibeenpwned",
        "brand-havells",
        "brand-haxe",
        "brand-haystack",
        "brand-hbo",
        "brand-hbomax",
        "brand-hcl",
        "brand-hdfcbank",
        "brand-headlessui",
        "brand-headphonezone",
        "brand-headspace",
        "brand-hearth",
        "brand-hearthisdotat",
        "brand-hedera",
        "brand-hedgedoc",
        "brand-helium",
        "brand-heliumbrowser",
        "brand-helix",
        "brand-hellofresh",
        "brand-hellyhansen",
        "brand-helm",
        "brand-helpdesk",
        "brand-helpscout",
        "brand-hepsiemlak",
        "brand-here",
        "brand-hermes",
        "brand-heroicgameslauncher",
        "brand-heroui",
        "brand-hetzner",
        "brand-hevy",
        "brand-hexlet",
        "brand-hexo",
        "brand-hey",
        "brand-hibernate",
        "brand-hibob",
        "brand-hilton",
        "brand-hiltonhotelsandresorts",
        "brand-hitachi",
        "brand-hive",
        "brand-hiveblockchain",
        "brand-hivemq",
        "brand-homarr",
        "brand-homeadvisor",
        "brand-homeassistant",
        "brand-homeassistantcommunitystore",
        "brand-homebrew",
        "brand-homebridge",
        "brand-homepage",
        "brand-homify",
        "brand-honda",
        "brand-honey",
        "brand-honeybadger",
        "brand-honeygain",
        "brand-hono",
        "brand-honor",
        "brand-hootsuite",
        "brand-hoppscotch",
        "brand-hostinger",
        "brand-hotelsdotcom",
        "brand-hotjar",
        "brand-hotwire",
        "brand-houdini",
        "brand-houzz",
        "brand-hp",
        "brand-hsbc",
        "brand-htc",
        "brand-htcvive",
        "brand-html5",
        "brand-htmlacademy",
        "brand-htmx",
        "brand-htop",
        "brand-httpie",
        "brand-huawei",
        "brand-hubspot",
        "brand-huggingface",
        "brand-hugo",
        "brand-humblebundle",
        "brand-humhub",
        "brand-hungryjacks",
        "brand-husqvarna",
        "brand-hyper",
        "brand-hyperskill",
        "brand-hyperx",
        "brand-hypothesis",
        "brand-hyprland",
        "brand-hyundai",
        "brand-i18next",
        "brand-i3",
        "brand-iata",
        "brand-ibeacon",
        "brand-iberia",
        "brand-iced",
        "brand-iceland",
        "brand-icicibank",
        "brand-icinga",
        "brand-icloud",
        "brand-icomoon",
        "brand-icon",
        "brand-iconfinder",
        "brand-iconify",
        "brand-iconjar",
        "brand-icons8",
        "brand-icq",
        "brand-ieee",
        "brand-ifixit",
        "brand-ifood",
        "brand-ifttt",
        "brand-igdb",
        "brand-ign",
        "brand-iheartradio",
        "brand-ikea",
        "brand-iledefrancemobilites",
        "brand-ilovepdf",
        "brand-imagedotsc",
        "brand-imagej",
        "brand-imagetoolbox",
        "brand-imdb",
        "brand-imessage",
        "brand-imgur",
        "brand-immer",
        "brand-immersivetranslate",
        "brand-immich",
        "brand-imou",
        "brand-improvmx",
        "brand-indeed",
        "brand-indiansuperleague",
        "brand-indiehackers",
        "brand-indieweb",
        "brand-indigo",
        "brand-inductiveautomation",
        "brand-inertia",
        "brand-infiniti",
        "brand-infinityfree",
        "brand-influxdb",
        "brand-infomaniak",
        "brand-infoq",
        "brand-infosys",
        "brand-infracost",
        "brand-infuse",
        "brand-ingress",
        "brand-inkdrop",
        "brand-inkscape",
        "brand-inoreader",
        "brand-inquirer",
        "brand-insomnia",
        "brand-inspire",
        "brand-insta360",
        "brand-instacart",
        "brand-instagram",
        "brand-instapaper",
        "brand-instatus",
        "brand-instructables",
        "brand-instructure",
        "brand-intel",
        "brand-intellijidea",
        "brand-interactiondesignfoundation",
        "brand-interactjs",
        "brand-interbase",
        "brand-intercom",
        "brand-intermarche",
        "brand-internetarchive",
        "brand-internetcomputer",
        "brand-intigriti",
        "brand-intuit",
        "brand-invidious",
        "brand-invoiceninja",
        "brand-iobroker",
        "brand-ionic",
        "brand-ionos",
        "brand-ios",
        "brand-iota",
        "brand-ipfs",
        "brand-iris",
        "brand-irobot",
        "brand-isc2",
        "brand-isro",
        "brand-issuu",
        "brand-istio",
        "brand-itchdotio",
        "brand-iterm2",
        "brand-itunes",
        "brand-itvx",
        "brand-iveco",
        "brand-jabber",
        "brand-jaeger",
        "brand-jameson",
        "brand-jamstack",
        "brand-japanairlines",
        "brand-jasmine",
        "brand-javascript",
        "brand-jbl",
        "brand-jcb",
        "brand-jdoodle",
        "brand-jeep",
        "brand-jekyll",
        "brand-jellyfin",
        "brand-jenkins",
        "brand-jest",
        "brand-jet",
        "brand-jetblue",
        "brand-jetbrains",
        "brand-jetpackcompose",
        "brand-jfrog",
        "brand-jfrogpipelines",
        "brand-jhipster",
        "brand-jinja",
        "brand-jio",
        "brand-jira",
        "brand-jirasoftware",
        "brand-jitpack",
        "brand-jitsi",
        "brand-johndeere",
        "brand-joomla",
        "brand-joplin",
        "brand-jordan",
        "brand-jouav",
        "brand-jovian",
        "brand-jpeg",
        "brand-jquery",
        "brand-jrgroup",
        "brand-jsdelivr",
        "brand-jsfiddle",
        "brand-json",
        "brand-jsonwebtokens",
        "brand-jsr",
        "brand-jss",
        "brand-juce",
        "brand-juejin",
        "brand-juke",
        "brand-julia",
        "brand-junipernetworks",
        "brand-junit5",
        "brand-jupyter",
        "brand-just",
        "brand-justeat",
        "brand-justgiving",
        "brand-k3s",
        "brand-k6",
        "brand-kaggle",
        "brand-kagi",
        "brand-kahoot",
        "brand-kaios",
        "brand-kakao",
        "brand-kakaotalk",
        "brand-kalilinux",
        "brand-kamailio",
        "brand-kando",
        "brand-kaniko",
        "brand-karakeep",
        "brand-karlsruherverkehrsverbund",
        "brand-kasasmart",
        "brand-kashflow",
        "brand-kaspersky",
        "brand-katana",
        "brand-kaufland",
        "brand-kde",
        "brand-kdeneon",
        "brand-kdenlive",
        "brand-kdeplasma",
        "brand-kedro",
        "brand-keenetic",
        "brand-keepachangelog",
        "brand-keepassxc",
        "brand-keeper",
        "brand-keeweb",
        "brand-kenmei",
        "brand-kentico",
        "brand-keploy",
        "brand-keras",
        "brand-keybase",
        "brand-keycdn",
        "brand-keycloak",
        "brand-keystone",
        "brand-kfc",
        "brand-khanacademy",
        "brand-khronosgroup",
        "brand-kia",
        "brand-kibana",
        "brand-kicad",
        "brand-kick",
        "brand-kickstarter",
        "brand-kik",
        "brand-kimi",
        "brand-kingstontechnology",
        "brand-kinopoisk",
        "brand-kinsta",
        "brand-kirby",
        "brand-kit",
        "brand-kitsu",
        "brand-kiwix",
        "brand-klarna",
        "brand-kleinanzeigen",
        "brand-klm",
        "brand-klook",
        "brand-knative",
        "brand-knexdotjs",
        "brand-knime",
        "brand-knip",
        "brand-knowledgebase",
        "brand-known",
        "brand-koa",
        "brand-koc",
        "brand-kodak",
        "brand-kodi",
        "brand-kodular",
        "brand-koenigsegg",
        "brand-kofax",
        "brand-kofi",
        "brand-komoot",
        "brand-konami",
        "brand-kong",
        "brand-kongregate",
        "brand-konva",
        "brand-koreader",
        "brand-kotlin",
        "brand-koyeb",
        "brand-kred",
        "brand-krita",
        "brand-ktm",
        "brand-ktor",
        "brand-kuaishou",
        "brand-kubernetes",
        "brand-kubespray",
        "brand-kubuntu",
        "brand-kucoin",
        "brand-kueski",
        "brand-kuma",
        "brand-kununu",
        "brand-kuula",
        "brand-kx",
        "brand-kyocera",
        "brand-labex",
        "brand-labview",
        "brand-lada",
        "brand-lamborghini",
        "brand-langchain",
        "brand-langchaincorporate",
        "brand-langflow",
        "brand-langgraph",
        "brand-languagetool",
        "brand-lapce",
        "brand-laragon",
        "brand-laravel",
        "brand-laravelhorizon",
        "brand-laravelnova",
        "brand-lastdotfm",
        "brand-lastpass",
        "brand-latex",
        "brand-launchpad",
        "brand-lazarus",
        "brand-lazyvim",
        "brand-lbry",
        "brand-leaderprice",
        "brand-leaflet",
        "brand-leagueoflegends",
        "brand-leanpub",
        "brand-leetcode",
        "brand-lefthook",
        "brand-legacygames",
        "brand-leica",
        "brand-lemmy",
        "brand-lemonsqueezy",
        "brand-lenovo",
        "brand-lens",
        "brand-leptos",
        "brand-lequipe",
        "brand-lerna",
        "brand-leroymerlin",
        "brand-leslibraires",
        "brand-less",
        "brand-letsencrypt",
        "brand-letterboxd",
        "brand-levelsdotfyi",
        "brand-lg",
        "brand-liberadotchat",
        "brand-liberapay",
        "brand-librariesdotio",
        "brand-librarything",
        "brand-libreoffice",
        "brand-libreofficebase",
        "brand-libreofficecalc",
        "brand-libreofficedraw",
        "brand-libreofficeimpress",
        "brand-libreofficemath",
        "brand-libreofficewriter",
        "brand-libretranslate",
        "brand-libretube",
        "brand-librewolf",
        "brand-libuv",
        "brand-lichess",
        "brand-lidl",
        "brand-lifx",
        "brand-lightburn",
        "brand-lighthouse",
        "brand-lightning",
        "brand-limesurvey",
        "brand-line",
        "brand-lineageos",
        "brand-linear",
        "brand-lining",
        "brand-linkerd",
        "brand-linkfire",
        "brand-linksys",
        "brand-linktree",
        "brand-linkvertise",
        "brand-linphone",
        "brand-lintcode",
        "brand-linux",
        "brand-linuxcontainers",
        "brand-linuxfoundation",
        "brand-linuxmint",
        "brand-linuxprofessionalinstitute",
        "brand-linuxserver",
        "brand-lionair",
        "brand-liquibase",
        "brand-listenhub",
        "brand-listmonk",
        "brand-lit",
        "brand-litecoin",
        "brand-literal",
        "brand-litiengine",
        "brand-livechat",
        "brand-livejournal",
        "brand-livekit",
        "brand-livewire",
        "brand-llvm",
        "brand-lmms",
        "brand-lmstudio",
        "brand-lobsters",
        "brand-local",
        "brand-localsend",
        "brand-localxpose",
        "brand-locust",
        "brand-lodash",
        "brand-logmein",
        "brand-logseq",
        "brand-logstash",
        "brand-longhorn",
        "brand-looker",
        "brand-loom",
        "brand-loop",
        "brand-loopback",
        "brand-loops",
        "brand-lootcrate",
        "brand-lospec",
        "brand-lotpolishairlines",
        "brand-lottiefiles",
        "brand-ltspice",
        "brand-lua",
        "brand-luanti",
        "brand-luau",
        "brand-lubuntu",
        "brand-lucia",
        "brand-lucid",
        "brand-lucide",
        "brand-ludwig",
        "brand-lufthansa",
        "brand-lumen",
        "brand-lunacy",
        "brand-luogu",
        "brand-lutris",
        "brand-lvgl",
        "brand-lydia",
        "brand-lyft",
        "brand-m5stack",
        "brand-maas",
        "brand-macos",
        "brand-macpaw",
        "brand-macports",
        "brand-macys",
        "brand-magasinsu",
        "brand-magic",
        "brand-magisk",
        "brand-mahindra",
        "brand-mailbox",
        "brand-mailchimp",
        "brand-maildotcom",
        "brand-maildotru",
        "brand-mailgun",
        "brand-mailtrap",
        "brand-mainwp",
        "brand-majorleaguehacking",
        "brand-make",
        "brand-makerbot",
        "brand-malt",
        "brand-malwarebytes",
        "brand-mambaui",
        "brand-mamp",
        "brand-man",
        "brand-manageiq",
        "brand-mangacollec",
        "brand-mangaupdates",
        "brand-manjaro",
        "brand-mantine",
        "brand-mapbox",
        "brand-mapillary",
        "brand-maplibre",
        "brand-maptiler",
        "brand-mariadb",
        "brand-mariadbfoundation",
        "brand-markdown",
        "brand-marko",
        "brand-marriott",
        "brand-marvelapp",
        "brand-maserati",
        "brand-mastercard",
        "brand-mastercomfig",
        "brand-mastodon",
        "brand-materialdesign",
        "brand-materialdesignicons",
        "brand-materialformkdocs",
        "brand-matillion",
        "brand-matomo",
        "brand-matrix",
        "brand-matterdotjs",
        "brand-mattermost",
        "brand-matternet",
        "brand-mautic",
        "brand-max",
        "brand-maxplanckgesellschaft",
        "brand-maytag",
        "brand-mazda",
        "brand-maze",
        "brand-mcafee",
        "brand-mcdonalds",
        "brand-mclaren",
        "brand-mdblist",
        "brand-mdbook",
        "brand-mdnwebdocs",
        "brand-mdx",
        "brand-mealie",
        "brand-mediafire",
        "brand-mediamarkt",
        "brand-mediapipe",
        "brand-mediatek",
        "brand-medibangpaint",
        "brand-medium",
        "brand-medusa",
        "brand-meetup",
        "brand-mega",
        "brand-meilisearch",
        "brand-meituan",
        "brand-meizu",
        "brand-mendeley",
        "brand-mentorcruise",
        "brand-mercadopago",
        "brand-merck",
        "brand-mercurial",
        "brand-mermaid",
        "brand-messenger",
        "brand-meta",
        "brand-metaai",
        "brand-metabase",
        "brand-metacritic",
        "brand-metafilter",
        "brand-metager",
        "brand-metasploit",
        "brand-meteor",
        "brand-metro",
        "brand-metrodelaciudaddemexico",
        "brand-metrodemadrid",
        "brand-metrodeparis",
        "brand-mewe",
        "brand-mezmo",
        "brand-mg",
        "brand-microbit",
        "brand-microdotblog",
        "brand-microeditor",
        "brand-micropython",
        "brand-microstation",
        "brand-microstrategy",
        "brand-midi",
        "brand-migadu",
        "brand-mihon",
        "brand-mihoyo",
        "brand-mikrotik",
        "brand-milanote",
        "brand-milvus",
        "brand-minds",
        "brand-mingww64",
        "brand-mini",
        "brand-minimax",
        "brand-minio",
        "brand-mintlify",
        "brand-minutemailer",
        "brand-miraheze",
        "brand-miro",
        "brand-misskey",
        "brand-mistralai",
        "brand-mitsubishi",
        "brand-mix",
        "brand-mixcloud",
        "brand-mixpanel",
        "brand-mlb",
        "brand-mlflow",
        "brand-mobx",
        "brand-mobxstatetree",
        "brand-mocha",
        "brand-mockserviceworker",
        "brand-modal",
        "brand-modelcontextprotocol",
        "brand-modelscope",
        "brand-modin",
        "brand-modrinth",
        "brand-modx",
        "brand-mojeek",
        "brand-moleculer",
        "brand-momenteo",
        "brand-monero",
        "brand-moneygram",
        "brand-mongodb",
        "brand-mongoose",
        "brand-mongoosedotws",
        "brand-monica",
        "brand-monkeytie",
        "brand-monkeytype",
        "brand-monogame",
        "brand-monoprix",
        "brand-monster",
        "brand-monzo",
        "brand-moo",
        "brand-moodle",
        "brand-moonrepo",
        "brand-moonshotai",
        "brand-moq",
        "brand-moqups",
        "brand-morrisons",
        "brand-moscowmetro",
        "brand-motorola",
        "brand-movistar",
        "brand-mozilla",
        "brand-mpv",
        "brand-mqtt",
        "brand-msi",
        "brand-msibusiness",
        "brand-mta",
        "brand-mtr",
        "brand-mubi",
        "brand-mui",
        "brand-muller",
        "brand-mullvad",
        "brand-multisim",
        "brand-mumble",
        "brand-muo",
        "brand-mural",
        "brand-musicbrainz",
        "brand-mxlinux",
        "brand-myanimelist",
        "brand-myget",
        "brand-myob",
        "brand-myshows",
        "brand-myspace",
        "brand-mysql",
        "brand-n26",
        "brand-n8n",
        "brand-namebase",
        "brand-namecheap",
        "brand-namemc",
        "brand-namesilo",
        "brand-namuwiki",
        "brand-nano",
        "brand-nanostores",
        "brand-napster",
        "brand-nasa",
        "brand-nationalgrid",
        "brand-nationalrail",
        "brand-nativescript",
        "brand-natsdotio",
        "brand-naver",
        "brand-nba",
        "brand-nbb",
        "brand-nbc",
        "brand-ndi",
        "brand-ndr",
        "brand-near",
        "brand-nebula",
        "brand-nec",
        "brand-nederlandsespoorwegen",
        "brand-neo4j",
        "brand-neon",
        "brand-neovim",
        "brand-neptune",
        "brand-nestjs",
        "brand-netapp",
        "brand-netbsd",
        "brand-netcup",
        "brand-netdata",
        "brand-neteasecloudmusic",
        "brand-netflix",
        "brand-netgear",
        "brand-netim",
        "brand-netlify",
        "brand-nette",
        "brand-netto",
        "brand-neutralinojs",
        "brand-newbalance",
        "brand-newegg",
        "brand-newgrounds",
        "brand-newjapanprowrestling",
        "brand-newpipe",
        "brand-newrelic",
        "brand-newyorktimes",
        "brand-nexon",
        "brand-nextbike",
        "brand-nextbilliondotai",
        "brand-nextcloud",
        "brand-nextdns",
        "brand-nextdoor",
        "brand-nextdotjs",
        "brand-nextflow",
        "brand-nextra",
        "brand-nfc",
        "brand-nfcore",
        "brand-nginx",
        "brand-nginxproxymanager",
        "brand-ngrok",
        "brand-ngrx",
        "brand-nhl",
        "brand-nhost",
        "brand-nicehash",
        "brand-niconico",
        "brand-nike",
        "brand-nikon",
        "brand-nim",
        "brand-niri",
        "brand-nissan",
        "brand-nixos",
        "brand-nobaralinux",
        "brand-nodebb",
        "brand-nodedotjs",
        "brand-nodegui",
        "brand-nodemon",
        "brand-nodered",
        "brand-nokia",
        "brand-nomad",
        "brand-norco",
        "brand-nordicsemiconductor",
        "brand-nordvpn",
        "brand-normalizedotcss",
        "brand-norton",
        "brand-norwegian",
        "brand-note",
        "brand-notebooklm",
        "brand-notepadplusplus",
        "brand-notion",
        "brand-notist",
        "brand-nounproject",
        "brand-novu",
        "brand-now",
        "brand-npm",
        "brand-nrwl",
        "brand-nsis",
        "brand-ntfy",
        "brand-nubank",
        "brand-nucleo",
        "brand-nuget",
        "brand-nuke",
        "brand-numba",
        "brand-numpy",
        "brand-nunjucks",
        "brand-nushell",
        "brand-nutanix",
        "brand-nuxt",
        "brand-nvidia",
        "brand-nvm",
        "brand-nx",
        "brand-nxp",
        "brand-nzxt",
        "brand-o2",
        "brand-obb",
        "brand-observable",
        "brand-obsidian",
        "brand-obsstudio",
        "brand-obtainium",
        "brand-ocaml",
        "brand-oclc",
        "brand-oclif",
        "brand-octanerender",
        "brand-octave",
        "brand-octobercms",
        "brand-octoprint",
        "brand-octopusdeploy",
        "brand-oculus",
        "brand-odido",
        "brand-odin",
        "brand-odnoklassniki",
        "brand-odoo",
        "brand-odysee",
        "brand-ohdear",
        "brand-okcupid",
        "brand-okta",
        "brand-okx",
        "brand-ollama",
        "brand-omadacloud",
        "brand-omarchy",
        "brand-oneplus",
        "brand-onestream",
        "brand-onlyfans",
        "brand-onlyoffice",
        "brand-onnx",
        "brand-onstar",
        "brand-opel",
        "brand-open3d",
        "brand-openaccess",
        "brand-openaigym",
        "brand-openapiinitiative",
        "brand-openbadges",
        "brand-openbao",
        "brand-openbsd",
        "brand-openbugbounty",
        "brand-opencage",
        "brand-opencode",
        "brand-opencollective",
        "brand-opencontainersinitiative",
        "brand-opencritic",
        "brand-opencv",
        "brand-openfaas",
        "brand-opengl",
        "brand-openhab",
        "brand-openid",
        "brand-openjdk",
        "brand-openjsfoundation",
        "brand-openlayers",
        "brand-openmediavault",
        "brand-openmined",
        "brand-opennebula",
        "brand-openproject",
        "brand-openrouter",
        "brand-openscad",
        "brand-opensea",
        "brand-opensearch",
        "brand-opensourcehardware",
        "brand-opensourceinitiative",
        "brand-openssl",
        "brand-openstack",
        "brand-openstreetmap",
        "brand-opensuse",
        "brand-opentelemetry",
        "brand-opentext",
        "brand-opentofu",
        "brand-opentui",
        "brand-openverse",
        "brand-openvpn",
        "brand-openwrt",
        "brand-openzeppelin",
        "brand-openzfs",
        "brand-opera",
        "brand-operagx",
        "brand-opnsense",
        "brand-oppo",
        "brand-opsgenie",
        "brand-opslevel",
        "brand-optimism",
        "brand-optuna",
        "brand-orange",
        "brand-orchardcore",
        "brand-orcid",
        "brand-oreilly",
        "brand-org",
        "brand-organicmaps",
        "brand-origin",
        "brand-ory",
        "brand-osano",
        "brand-osf",
        "brand-osgeo",
        "brand-oshkosh",
        "brand-osmand",
        "brand-osmc",
        "brand-osu",
        "brand-otto",
        "brand-outline",
        "brand-overcast",
        "brand-overleaf",
        "brand-ovh",
        "brand-owasp",
        "brand-owncloud",
        "brand-oxc",
        "brand-oxygen",
        "brand-oyo",
        "brand-p5dotjs",
        "brand-packagist",
        "brand-packer",
        "brand-packt",
        "brand-paddle",
        "brand-paddlepaddle",
        "brand-paddypower",
        "brand-padlet",
        "brand-pagekit",
        "brand-pagerduty",
        "brand-pagespeedinsights",
        "brand-pagseguro",
        "brand-palantir",
        "brand-paloaltonetworks",
        "brand-paloaltosoftware",
        "brand-panasonic",
        "brand-pandas",
        "brand-pandoc",
        "brand-pandora",
        "brand-pangolin",
        "brand-pantheon",
        "brand-paperlessngx",
        "brand-paperspace",
        "brand-paperswithcode",
        "brand-paradoxinteractive",
        "brand-paramountplus",
        "brand-paritysubstrate",
        "brand-parrotsecurity",
        "brand-parsedotly",
        "brand-passbolt",
        "brand-passport",
        "brand-pastebin",
        "brand-patreon",
        "brand-payback",
        "brand-paychex",
        "brand-payhip",
        "brand-payloadcms",
        "brand-payoneer",
        "brand-paypal",
        "brand-paysafe",
        "brand-paytm",
        "brand-pcgamingwiki",
        "brand-pdm",
        "brand-pdq",
        "brand-peakdesign",
        "brand-pearson",
        "brand-peerlist",
        "brand-peertube",
        "brand-pegasusairlines",
        "brand-pelican",
        "brand-peloton",
        "brand-penny",
        "brand-penpot",
        "brand-percy",
        "brand-perforce",
        "brand-perl",
        "brand-perplexity",
        "brand-persistent",
        "brand-personio",
        "brand-petsathome",
        "brand-peugeot",
        "brand-pexels",
        "brand-pfsense",
        "brand-phabricator",
        "brand-philipshue",
        "brand-phoenixframework",
        "brand-phonepe",
        "brand-phosphoricons",
        "brand-photobucket",
        "brand-photocrowd",
        "brand-photon",
        "brand-photopea",
        "brand-php",
        "brand-phpbb",
        "brand-phpmyadmin",
        "brand-phpstorm",
        "brand-pi",
        "brand-piaggiogroup",
        "brand-piapro",
        "brand-picardsurgeles",
        "brand-picartodottv",
        "brand-picnic",
        "brand-picpay",
        "brand-picrew",
        "brand-picsart",
        "brand-picxy",
        "brand-pihole",
        "brand-pimcore",
        "brand-pinboard",
        "brand-pinescript",
        "brand-pinetwork",
        "brand-pingdom",
        "brand-pinia",
        "brand-pino",
        "brand-pinterest",
        "brand-pioneerdj",
        "brand-pipecat",
        "brand-piped",
        "brand-pipx",
        "brand-pivotaltracker",
        "brand-piwigo",
        "brand-pix",
        "brand-pixabay",
        "brand-pixelfed",
        "brand-pixiv",
        "brand-pixlr",
        "brand-pkgsrc",
        "brand-plane",
        "brand-planet",
        "brand-planetscale",
        "brand-plangrid",
        "brand-platformdotsh",
        "brand-platformio",
        "brand-platzi",
        "brand-plausibleanalytics",
        "brand-playcanvas",
        "brand-playerdotme",
        "brand-playerfm",
        "brand-playstation",
        "brand-playstation2",
        "brand-playstation3",
        "brand-playstation4",
        "brand-playstation5",
        "brand-playstationportable",
        "brand-playstationvita",
        "brand-pleroma",
        "brand-plesk",
        "brand-plex",
        "brand-plotly",
        "brand-plume",
        "brand-pluralsight",
        "brand-plurk",
        "brand-pm2",
        "brand-pnpm",
        "brand-pocketbase",
        "brand-pocketcasts",
        "brand-podcastaddict",
        "brand-podcastindex",
        "brand-podman",
        "brand-poe",
        "brand-poetry",
        "brand-polars",
        "brand-polestar",
        "brand-polkadot",
        "brand-poly",
        "brand-polygon",
        "brand-polymerproject",
        "brand-polywork",
        "brand-pomerium",
        "brand-pond5",
        "brand-popos",
        "brand-porkbun",
        "brand-porsche",
        "brand-portableappsdotcom",
        "brand-portainer",
        "brand-portswigger",
        "brand-posit",
        "brand-postcss",
        "brand-postgresql",
        "brand-posthog",
        "brand-postiz",
        "brand-postman",
        "brand-postmates",
        "brand-powers",
        "brand-prdotco",
        "brand-preact",
        "brand-precommit",
        "brand-prefect",
        "brand-prek",
        "brand-premid",
        "brand-premierleague",
        "brand-prepbytes",
        "brand-prestashop",
        "brand-presto",
        "brand-prettier",
        "brand-pretzel",
        "brand-prevention",
        "brand-prezi",
        "brand-primefaces",
        "brand-primeng",
        "brand-primereact",
        "brand-primevue",
        "brand-printables",
        "brand-prisma",
        "brand-prismic",
        "brand-privatedivision",
        "brand-privateinternetaccess",
        "brand-probot",
        "brand-processingfoundation",
        "brand-processon",
        "brand-processwire",
        "brand-producthunt",
        "brand-progate",
        "brand-progress",
        "brand-prometheus",
        "brand-pronounsdotpage",
        "brand-prosemirror",
        "brand-prosieben",
        "brand-proteus",
        "brand-protocolsdotio",
        "brand-protodotio",
        "brand-proton",
        "brand-protoncalendar",
        "brand-protondb",
        "brand-protondrive",
        "brand-protonmail",
        "brand-protonvpn",
        "brand-protools",
        "brand-protractor",
        "brand-proxmox",
        "brand-pterodactyl",
        "brand-pubg",
        "brand-publons",
        "brand-pubmed",
        "brand-pug",
        "brand-pulumi",
        "brand-puma",
        "brand-puppet",
        "brand-puppeteer",
        "brand-purescript",
        "brand-purgecss",
        "brand-purism",
        "brand-pushbullet",
        "brand-pusher",
        "brand-pwa",
        "brand-pycharm",
        "brand-pycqa",
        "brand-pydantic",
        "brand-pyg",
        "brand-pypi",
        "brand-pypy",
        "brand-pyscaffold",
        "brand-pysyft",
        "brand-pytest",
        "brand-python",
        "brand-pythonanywhere",
        "brand-pytorch",
        "brand-pyup",
        "brand-qantas",
        "brand-qase",
        "brand-qatarairways",
        "brand-qbittorrent",
        "brand-qdrant",
        "brand-qemu",
        "brand-qgis",
        "brand-qi",
        "brand-qiita",
        "brand-qiskit",
        "brand-qiwi",
        "brand-qlik",
        "brand-qlty",
        "brand-qmk",
        "brand-qnap",
        "brand-qodo",
        "brand-qq",
        "brand-qt",
        "brand-quad9",
        "brand-qualcomm",
        "brand-qualtrics",
        "brand-qualys",
        "brand-quantcast",
        "brand-quantconnect",
        "brand-quarkus",
        "brand-quarto",
        "brand-quasar",
        "brand-qubesos",
        "brand-quest",
        "brand-quickbooks",
        "brand-quicklook",
        "brand-quicktime",
        "brand-quicktype",
        "brand-quizlet",
        "brand-quora",
        "brand-qwant",
        "brand-qwen",
        "brand-qwik",
        "brand-qwiklabs",
        "brand-qzone",
        "brand-r",
        "brand-r3",
        "brand-rabbitmq",
        "brand-racket",
        "brand-radar",
        "brand-radarr",
        "brand-radiantearth",
        "brand-radiofrance",
        "brand-radixui",
        "brand-radstudio",
        "brand-railway",
        "brand-rainmeter",
        "brand-rainyun",
        "brand-rakuten",
        "brand-rakutenkobo",
        "brand-ram",
        "brand-rancher",
        "brand-rapid",
        "brand-rarible",
        "brand-rasa",
        "brand-raspberrypi",
        "brand-ratatui",
        "brand-ravelry",
        "brand-ray",
        "brand-raycast",
        "brand-raylib",
        "brand-razer",
        "brand-razorpay",
        "brand-rclone",
        "brand-react",
        "brand-reactbootstrap",
        "brand-reacthookform",
        "brand-reactiveresume",
        "brand-reactivex",
        "brand-reactos",
        "brand-reactquery",
        "brand-reactrouter",
        "brand-reacttable",
        "brand-readdotcv",
        "brand-readme",
        "brand-readthedocs",
        "brand-reason",
        "brand-reasonstudios",
        "brand-recoil",
        "brand-red",
        "brand-redash",
        "brand-redbubble",
        "brand-redbull",
        "brand-redcandlegames",
        "brand-reddit",
        "brand-redhat",
        "brand-redhatopenshift",
        "brand-redis",
        "brand-redmine",
        "brand-redox",
        "brand-redragon",
        "brand-redsys",
        "brand-redux",
        "brand-reduxsaga",
        "brand-redwoodjs",
        "brand-reebok",
        "brand-refine",
        "brand-refinedgithub",
        "brand-reflex",
        "brand-rekaui",
        "brand-relay",
        "brand-relianceindustrieslimited",
        "brand-remark",
        "brand-remedyentertainment",
        "brand-remix",
        "brand-removedotbg",
        "brand-renault",
        "brand-render",
        "brand-renovate",
        "brand-renpy",
        "brand-renren",
        "brand-replicate",
        "brand-replit",
        "brand-republicofgamers",
        "brand-rescript",
        "brand-rescuetime",
        "brand-researchgate",
        "brand-resend",
        "brand-resharper",
        "brand-resurrectionremixos",
        "brand-retool",
        "brand-retroachievements",
        "brand-retroarch",
        "brand-retropie",
        "brand-revanced",
        "brand-revealdotjs",
        "brand-revenuecat",
        "brand-reverbnation",
        "brand-revoltdotchat",
        "brand-revolut",
        "brand-rewe",
        "brand-rezgo",
        "brand-rhinoceros",
        "brand-rich",
        "brand-rider",
        "brand-rimacautomobili",
        "brand-rime",
        "brand-ring",
        "brand-riotgames",
        "brand-ripple",
        "brand-riscv",
        "brand-riseup",
        "brand-ritzcarlton",
        "brand-rive",
        "brand-roadmapdotsh",
        "brand-roamresearch",
        "brand-robinhood",
        "brand-roblox",
        "brand-robloxstudio",
        "brand-roboflow",
        "brand-robotframework",
        "brand-rocket",
        "brand-rocketdotchat",
        "brand-rocksdb",
        "brand-rockstargames",
        "brand-rockwellautomation",
        "brand-rockylinux",
        "brand-roku",
        "brand-roll20",
        "brand-rollbar",
        "brand-rolldown",
        "brand-rollsroyce",
        "brand-rollupdotjs",
        "brand-rook",
        "brand-roon",
        "brand-root",
        "brand-rootme",
        "brand-roots",
        "brand-rootsbedrock",
        "brand-rootssage",
        "brand-ros",
        "brand-rossmann",
        "brand-rotaryinternational",
        "brand-rottentomatoes",
        "brand-roundcube",
        "brand-rsocket",
        "brand-rss",
        "brand-rstudioide",
        "brand-rte",
        "brand-rtl",
        "brand-rtlzwei",
        "brand-rtm",
        "brand-rubocop",
        "brand-ruby",
        "brand-rubygems",
        "brand-rubymine",
        "brand-rubyonrails",
        "brand-rubysinatra",
        "brand-ruff",
        "brand-rumahweb",
        "brand-rumble",
        "brand-rundeck",
        "brand-runkeeper",
        "brand-runkit",
        "brand-runrundotit",
        "brand-rust",
        "brand-rustdesk",
        "brand-rustfs",
        "brand-rxdb",
        "brand-ryanair",
        "brand-rye",
        "brand-s7airlines",
        "brand-sabanci",
        "brand-safari",
        "brand-sage",
        "brand-sagemath",
        "brand-sahibinden",
        "brand-sailfishos",
        "brand-sailsdotjs",
        "brand-salla",
        "brand-saltproject",
        "brand-samsclub",
        "brand-samsung",
        "brand-samsungpay",
        "brand-sanfranciscomunicipalrailway",
        "brand-sanic",
        "brand-sanity",
        "brand-saopaulometro",
        "brand-sap",
        "brand-sartorius",
        "brand-sass",
        "brand-sat1",
        "brand-satellite",
        "brand-saturn",
        "brand-saucelabs",
        "brand-saudia",
        "brand-scala",
        "brand-scalar",
        "brand-scaleway",
        "brand-scan",
        "brand-scania",
        "brand-schneiderelectric",
        "brand-scikitlearn",
        "brand-scilab",
        "brand-scipy",
        "brand-scopus",
        "brand-scpfoundation",
        "brand-scrapbox",
        "brand-scrapy",
        "brand-scratch",
        "brand-screencastify",
        "brand-scrimba",
        "brand-scrollreveal",
        "brand-scrumalliance",
        "brand-scrutinizerci",
        "brand-scylladb",
        "brand-seafile",
        "brand-seagate",
        "brand-searxng",
        "brand-seat",
        "brand-seatgeek",
        "brand-securityscorecard",
        "brand-sefaria",
        "brand-sega",
        "brand-selenium",
        "brand-sellfy",
        "brand-semanticrelease",
        "brand-semanticscholar",
        "brand-semanticui",
        "brand-semanticuireact",
        "brand-semanticweb",
        "brand-semaphoreci",
        "brand-semrush",
        "brand-semver",
        "brand-sencha",
        "brand-sennheiser",
        "brand-sensu",
        "brand-sentry",
        "brand-sepa",
        "brand-sequelize",
        "brand-servbay",
        "brand-serverfault",
        "brand-serverless",
        "brand-session",
        "brand-sessionize",
        "brand-setapp",
        "brand-setuptools",
        "brand-sfml",
        "brand-shadcnui",
        "brand-shadow",
        "brand-shanghaimetro",
        "brand-sharex",
        "brand-sharp",
        "brand-shazam",
        "brand-shell",
        "brand-shelly",
        "brand-shenzhenmetro",
        "brand-shieldsdotio",
        "brand-shikimori",
        "brand-shopee",
        "brand-shopify",
        "brand-shopware",
        "brand-shortcut",
        "brand-showpad",
        "brand-showtime",
        "brand-showwcase",
        "brand-sidekiq",
        "brand-sidequest",
        "brand-siemens",
        "brand-sifive",
        "brand-signal",
        "brand-silverairways",
        "brand-similarweb",
        "brand-simkl",
        "brand-simpleanalytics",
        "brand-simpleicons",
        "brand-simplelocalize",
        "brand-simplelogin",
        "brand-simplenote",
        "brand-simplex",
        "brand-sinaweibo",
        "brand-singaporeairlines",
        "brand-singlestore",
        "brand-sitecore",
        "brand-sitepoint",
        "brand-siyuan",
        "brand-skaffold",
        "brand-skeleton",
        "brand-sketch",
        "brand-sketchfab",
        "brand-sketchup",
        "brand-skillshare",
        "brand-skoda",
        "brand-sky",
        "brand-skypack",
        "brand-slackware",
        "brand-slashdot",
        "brand-slickpic",
        "brand-slides",
        "brand-slideshare",
        "brand-slint",
        "brand-smart",
        "brand-smartthings",
        "brand-smashingmagazine",
        "brand-smoothcomp",
        "brand-smrt",
        "brand-smugmug",
        "brand-snapchat",
        "brand-snapcraft",
        "brand-snapdragon",
        "brand-sncf",
        "brand-snort",
        "brand-snowflake",
        "brand-snowpack",
        "brand-snyk",
        "brand-socialblade",
        "brand-society6",
        "brand-socket",
        "brand-socketdotio",
        "brand-softcatala",
        "brand-softpedia",
        "brand-sogou",
        "brand-solana",
        "brand-solid",
        "brand-solidity",
        "brand-sololearn",
        "brand-solus",
        "brand-solveddotac",
        "brand-sonar",
        "brand-sonarqubecloud",
        "brand-sonarqubeforide",
        "brand-sonarqubeserver",
        "brand-sonarr",
        "brand-sonatype",
        "brand-songkick",
        "brand-songoda",
        "brand-sonicwall",
        "brand-sonos",
        "brand-sony",
        "brand-soriana",
        "brand-soundcharts",
        "brand-soundcloud",
        "brand-sourceengine",
        "brand-sourceforge",
        "brand-sourcehut",
        "brand-sourcetree",
        "brand-southwestairlines",
        "brand-spacemacs",
        "brand-spaceship",
        "brand-spacex",
        "brand-spacy",
        "brand-sparkar",
        "brand-sparkasse",
        "brand-sparkfun",
        "brand-sparkpost",
        "brand-spdx",
        "brand-speakerdeck",
        "brand-spectrum",
        "brand-speedtest",
        "brand-speedypage",
        "brand-sphinx",
        "brand-spidermonkey",
        "brand-spigotmc",
        "brand-spine",
        "brand-spinnaker",
        "brand-splunk",
        "brand-spoj",
        "brand-spond",
        "brand-spotify",
        "brand-spotlight",
        "brand-spreadshirt",
        "brand-spreaker",
        "brand-spring",
        "brand-springboot",
        "brand-springcreators",
        "brand-springsecurity",
        "brand-spyderide",
        "brand-sqlalchemy",
        "brand-sqlite",
        "brand-square",
        "brand-squareenix",
        "brand-squarespace",
        "brand-srgssr",
        "brand-ssrn",
        "brand-sst",
        "brand-stackbit",
        "brand-stackblitz",
        "brand-stackedit",
        "brand-stackexchange",
        "brand-stackhawk",
        "brand-stackoverflow",
        "brand-stackshare",
        "brand-stadia",
        "brand-staffbase",
        "brand-stagetimer",
        "brand-standardjs",
        "brand-standardresume",
        "brand-starbucks",
        "brand-stardock",
        "brand-starlingbank",
        "brand-starship",
        "brand-startdotgg",
        "brand-startpage",
        "brand-startrek",
        "brand-starz",
        "brand-statamic",
        "brand-statista",
        "brand-statuspage",
        "brand-statuspal",
        "brand-steam",
        "brand-steamdb",
        "brand-steamdeck",
        "brand-steamworks",
        "brand-steelseries",
        "brand-steem",
        "brand-steemit",
        "brand-steinberg",
        "brand-stellar",
        "brand-stencil",
        "brand-stencyl",
        "brand-stimulus",
        "brand-stmicroelectronics",
        "brand-stockx",
        "brand-stopstalk",
        "brand-storyblok",
        "brand-storybook",
        "brand-strapi",
        "brand-strava",
        "brand-streamlabs",
        "brand-streamlit",
        "brand-streamrunners",
        "brand-stremio",
        "brand-stripe",
        "brand-strongswan",
        "brand-stryker",
        "brand-stubhub",
        "brand-studio3t",
        "brand-styledcomponents",
        "brand-stylelint",
        "brand-styleshare",
        "brand-stylus",
        "brand-subaru",
        "brand-sublimetext",
        "brand-substack",
        "brand-subtitleedit",
        "brand-subversion",
        "brand-suckless",
        "brand-sui",
        "brand-suitest",
        "brand-sumologic",
        "brand-suno",
        "brand-sunrise",
        "brand-supabase",
        "brand-supercell",
        "brand-supercrease",
        "brand-supermicro",
        "brand-superuser",
        "brand-surfshark",
        "brand-surrealdb",
        "brand-surveymonkey",
        "brand-suse",
        "brand-suzuki",
        "brand-svelte",
        "brand-svg",
        "brand-svgdotjs",
        "brand-svgo",
        "brand-svgtrace",
        "brand-swagger",
        "brand-swarm",
        "brand-sway",
        "brand-swc",
        "brand-swift",
        "brand-swiggy",
        "brand-swiper",
        "brand-swisscows",
        "brand-swr",
        "brand-symantec",
        "brand-symbolab",
        "brand-symfony",
        "brand-symphony",
        "brand-sympy",
        "brand-syncthing",
        "brand-synology",
        "brand-system76",
        "brand-tabelog",
        "brand-tablecheck",
        "brand-tacobell",
        "brand-tado",
        "brand-taichigraphics",
        "brand-taichilang",
        "brand-tails",
        "brand-tailscale",
        "brand-tailwindcss",
        "brand-taipy",
        "brand-taketwointeractivesoftware",
        "brand-talend",
        "brand-talenthouse",
        "brand-talos",
        "brand-tamiya",
        "brand-tampermonkey",
        "brand-tangled",
        "brand-tanstack",
        "brand-taobao",
        "brand-tapas",
        "brand-target",
        "brand-tarom",
        "brand-tarteaucitron",
        "brand-task",
        "brand-tasmota",
        "brand-tata",
        "brand-tauri",
        "brand-taxbuzz",
        "brand-tcs",
        "brand-teal",
        "brand-teamcity",
        "brand-teamspeak",
        "brand-teamviewer",
        "brand-techcrunch",
        "brand-ted",
        "brand-teepublic",
        "brand-teespring",
        "brand-tekton",
        "brand-tele5",
        "brand-telefonica",
        "brand-telegram",
        "brand-telegraph",
        "brand-telenor",
        "brand-telequebec",
        "brand-temporal",
        "brand-tensorflow",
        "brand-teradata",
        "brand-teratail",
        "brand-termius",
        "brand-terraform",
        "brand-tesco",
        "brand-tesla",
        "brand-testcafe",
        "brand-testin",
        "brand-testinglibrary",
        "brand-testrail",
        "brand-tether",
        "brand-textpattern",
        "brand-textual",
        "brand-tga",
        "brand-thangs",
        "brand-thanos",
        "brand-thealgorithms",
        "brand-theboringcompany",
        "brand-theconversation",
        "brand-thefinals",
        "brand-theguardian",
        "brand-theirishtimes",
        "brand-themighty",
        "brand-themodelsresource",
        "brand-themoviedatabase",
        "brand-thenorthface",
        "brand-theodinproject",
        "brand-theplanetarysociety",
        "brand-theregister",
        "brand-thesoundsresource",
        "brand-thespritersresource",
        "brand-thestorygraph",
        "brand-thewashingtonpost",
        "brand-theweatherchannel",
        "brand-thingiverse",
        "brand-things",
        "brand-thinkpad",
        "brand-thirdweb",
        "brand-threadless",
        "brand-threads",
        "brand-threedotjs",
        "brand-threema",
        "brand-thumbtack",
        "brand-thunderbird",
        "brand-thunderstore",
        "brand-thurgauerkantonalbank",
        "brand-thymeleaf",
        "brand-ticketmaster",
        "brand-tickettailor",
        "brand-ticktick",
        "brand-tidal",
        "brand-tidb",
        "brand-tiddlywiki",
        "brand-tide",
        "brand-tidyverse",
        "brand-tietoevry",
        "brand-tiktok",
        "brand-tildapublishing",
        "brand-tile",
        "brand-timescale",
        "brand-tina",
        "brand-tinder",
        "brand-tindie",
        "brand-tinkercad",
        "brand-tinygrad",
        "brand-tinyletter",
        "brand-tistory",
        "brand-tldraw",
        "brand-tmux",
        "brand-todoist",
        "brand-toggl",
        "brand-toggltrack",
        "brand-tokio",
        "brand-tokyometro",
        "brand-toll",
        "brand-toml",
        "brand-tomorrowland",
        "brand-tomtom",
        "brand-ton",
        "brand-topcoder",
        "brand-topdotgg",
        "brand-toptal",
        "brand-torbrowser",
        "brand-torizon",
        "brand-torproject",
        "brand-toshiba",
        "brand-totvs",
        "brand-tourbox",
        "brand-tower",
        "brand-toyota",
        "brand-tplink",
        "brand-tqdm",
        "brand-traccar",
        "brand-tradingview",
        "brand-trae",
        "brand-traefikmesh",
        "brand-traefikproxy",
        "brand-trailforks",
        "brand-trainerroad",
        "brand-trakt",
        "brand-transifex",
        "brand-transmission",
        "brand-transportforireland",
        "brand-transportforlondon",
        "brand-travisci",
        "brand-treehouse",
        "brand-trello",
        "brand-trendmicro",
        "brand-tresorit",
        "brand-treyarch",
        "brand-trezor",
        "brand-tricentis",
        "brand-trilium",
        "brand-triller",
        "brand-trillertv",
        "brand-trimble",
        "brand-trino",
        "brand-tripadvisor",
        "brand-tripdotcom",
        "brand-trivago",
        "brand-trivy",
        "brand-trmnl",
        "brand-trove",
        "brand-trpc",
        "brand-truenas",
        "brand-trueup",
        "brand-trulia",
        "brand-trustedshops",
        "brand-trustpilot",
        "brand-tryhackme",
        "brand-tryitonline",
        "brand-tsnode",
        "brand-tubi",
        "brand-tui",
        "brand-tumblr",
        "brand-turbo",
        "brand-turborepo",
        "brand-turbosquid",
        "brand-turkishairlines",
        "brand-turso",
        "brand-tuta",
        "brand-tuxedocomputers",
        "brand-tv4play",
        "brand-tvtime",
        "brand-twenty",
        "brand-twinkly",
        "brand-twinmotion",
        "brand-twitch",
        "brand-ty",
        "brand-typeform",
        "brand-typeorm",
        "brand-typer",
        "brand-typescript",
        "brand-typo3",
        "brand-typst",
        "brand-uber",
        "brand-ubereats",
        "brand-ubiquiti",
        "brand-ubisoft",
        "brand-ublockorigin",
        "brand-ubuntu",
        "brand-ubuntumate",
        "brand-udacity",
        "brand-udemy",
        "brand-udotsdotnews",
        "brand-ufc",
        "brand-uikit",
        "brand-uipath",
        "brand-ukca",
        "brand-ultralytics",
        "brand-ulule",
        "brand-umami",
        "brand-umbraco",
        "brand-umbrel",
        "brand-uml",
        "brand-unacademy",
        "brand-underarmour",
        "brand-underscoredotjs",
        "brand-undertale",
        "brand-unicode",
        "brand-unilever",
        "brand-uniqlo",
        "brand-uniqloja",
        "brand-unitedairlines",
        "brand-unitednations",
        "brand-unity",
        "brand-unjs",
        "brand-unlicense",
        "brand-unocss",
        "brand-unpkg",
        "brand-unraid",
        "brand-unrealengine",
        "brand-unsplash",
        "brand-unstop",
        "brand-untappd",
        "brand-upcloud",
        "brand-uphold",
        "brand-uplabs",
        "brand-upptime",
        "brand-ups",
        "brand-upstash",
        "brand-uptimekuma",
        "brand-upwork",
        "brand-uservoice",
        "brand-usps",
        "brand-utorrent",
        "brand-uv",
        "brand-v",
        "brand-v0",
        "brand-v2ex",
        "brand-v8",
        "brand-vaadin",
        "brand-vagrant",
        "brand-vala",
        "brand-valorant",
        "brand-valve",
        "brand-vanillaextract",
        "brand-vapor",
        "brand-vault",
        "brand-vaultwarden",
        "brand-vauxhall",
        "brand-vbulletin",
        "brand-vectary",
        "brand-vectorlogozone",
        "brand-vectorworks",
        "brand-veeam",
        "brand-veed",
        "brand-veepee",
        "brand-vega",
        "brand-vegas",
        "brand-velocity",
        "brand-velog",
        "brand-vencord",
        "brand-venmo",
        "brand-vercel",
        "brand-verdaccio",
        "brand-veritas",
        "brand-verizon",
        "brand-vespa",
        "brand-vestel",
        "brand-vexxhost",
        "brand-vfairs",
        "brand-viadeo",
        "brand-viaplay",
        "brand-viber",
        "brand-viblo",
        "brand-victoriametrics",
        "brand-victronenergy",
        "brand-vikunja",
        "brand-vim",
        "brand-vimeo",
        "brand-vimeolivestream",
        "brand-vinted",
        "brand-virgin",
        "brand-virginatlantic",
        "brand-virginmedia",
        "brand-virtualbox",
        "brand-virustotal",
        "brand-visa",
        "brand-visualparadigm",
        "brand-visx",
        "brand-vite",
        "brand-vitepress",
        "brand-vitess",
        "brand-vitest",
        "brand-vivaldi",
        "brand-vivawallet",
        "brand-vivino",
        "brand-vivint",
        "brand-vivo",
        "brand-vk",
        "brand-vlcmediaplayer",
        "brand-vllm",
        "brand-vmware",
        "brand-vodafone",
        "brand-voelkner",
        "brand-voidlinux",
        "brand-voipdotms",
        "brand-volkswagen",
        "brand-volvo",
        "brand-vonage",
        "brand-vorondesign",
        "brand-vowpalwabbit",
        "brand-vox",
        "brand-vrchat",
        "brand-vsco",
        "brand-vscodium",
        "brand-vtex",
        "brand-vuedotjs",
        "brand-vuetify",
        "brand-vueuse",
        "brand-vulkan",
        "brand-vultr",
        "brand-vyond",
        "brand-w3schools",
        "brand-wacom",
        "brand-wagmi",
        "brand-wagtail",
        "brand-wails",
        "brand-wakatime",
        "brand-walkman",
        "brand-wallabag",
        "brand-walletconnect",
        "brand-wantedly",
        "brand-wappalyzer",
        "brand-warp",
        "brand-wasabi",
        "brand-wasmcloud",
        "brand-wasmer",
        "brand-watchtower",
        "brand-wattpad",
        "brand-wayland",
        "brand-waze",
        "brand-wazirx",
        "brand-wearos",
        "brand-weasyl",
        "brand-web3dotjs",
        "brand-webassembly",
        "brand-webauthn",
        "brand-webawesome",
        "brand-webcomponentsdotorg",
        "brand-webdotde",
        "brand-webdriverio",
        "brand-webex",
        "brand-webflow",
        "brand-webgl",
        "brand-webgpu",
        "brand-weblate",
        "brand-webmin",
        "brand-webmoney",
        "brand-webpack",
        "brand-webrtc",
        "brand-webstorm",
        "brand-webtoon",
        "brand-webtrees",
        "brand-wechat",
        "brand-wegame",
        "brand-weightsandbiases",
        "brand-welcometothejungle",
        "brand-wellfound",
        "brand-wellsfargo",
        "brand-wemo",
        "brand-weread",
        "brand-westernunion",
        "brand-wetransfer",
        "brand-wezterm",
        "brand-wgpu",
        "brand-what3words",
        "brand-whatsapp",
        "brand-wheniwork",
        "brand-wikibooks",
        "brand-wikidata",
        "brand-wikidotgg",
        "brand-wikidotjs",
        "brand-wikimediacommons",
        "brand-wikimediafoundation",
        "brand-wikipedia",
        "brand-wikiquote",
        "brand-wikisource",
        "brand-wikiversity",
        "brand-wikivoyage",
        "brand-winamp",
        "brand-windsurf",
        "brand-wine",
        "brand-wipro",
        "brand-wire",
        "brand-wireguard",
        "brand-wireshark",
        "brand-wise",
        "brand-wish",
        "brand-wistia",
        "brand-wix",
        "brand-wizzair",
        "brand-wolfram",
        "brand-wolframlanguage",
        "brand-wolframmathematica",
        "brand-wondershare",
        "brand-wondersharefilmora",
        "brand-woo",
        "brand-woocommerce",
        "brand-wordpress",
        "brand-workplace",
        "brand-worldhealthorganization",
        "brand-wpengine",
        "brand-wpexplorer",
        "brand-wprocket",
        "brand-writedotas",
        "brand-wwe",
        "brand-wwise",
        "brand-wxt",
        "brand-wykop",
        "brand-wyze",
        "brand-x",
        "brand-xampp",
        "brand-xcode",
        "brand-xdadevelopers",
        "brand-xdotorg",
        "brand-xendit",
        "brand-xero",
        "brand-xfce",
        "brand-xiaohongshu",
        "brand-xiaomi",
        "brand-xing",
        "brand-xml",
        "brand-xmpp",
        "brand-xo",
        "brand-xrp",
        "brand-xsplit",
        "brand-xstate",
        "brand-xubuntu",
        "brand-xyflow",
        "brand-yaak",
        "brand-yabai",
        "brand-yale",
        "brand-yamahacorporation",
        "brand-yamahamotorcorporation",
        "brand-yaml",
        "brand-yandexcloud",
        "brand-yarn",
        "brand-ycombinator",
        "brand-yelp",
        "brand-yeti",
        "brand-yew",
        "brand-yii",
        "brand-yoast",
        "brand-yolo",
        "brand-youhodler",
        "brand-youtube",
        "brand-youtubegaming",
        "brand-youtubekids",
        "brand-youtubemusic",
        "brand-youtubeshorts",
        "brand-youtubestudio",
        "brand-youtubetv",
        "brand-yr",
        "brand-yubico",
        "brand-yunohost",
        "brand-zabka",
        "brand-zaim",
        "brand-zalando",
        "brand-zalo",
        "brand-zap",
        "brand-zapier",
        "brand-zara",
        "brand-zazzle",
        "brand-zcash",
        "brand-zcool",
        "brand-zdf",
        "brand-zdotai",
        "brand-zebpay",
        "brand-zebratechnologies",
        "brand-zectrix",
        "brand-zedindustries",
        "brand-zelle",
        "brand-zenbrowser",
        "brand-zend",
        "brand-zendesk",
        "brand-zenn",
        "brand-zenodo",
        "brand-zensar",
        "brand-zerodha",
        "brand-zerotier",
        "brand-zettlr",
        "brand-zhihu",
        "brand-zig",
        "brand-zigbee",
        "brand-zigbee2mqtt",
        "brand-ziggo",
        "brand-zilch",
        "brand-zillow",
        "brand-zincsearch",
        "brand-zingat",
        "brand-zod",
        "brand-zoho",
        "brand-zoiper",
        "brand-zola",
        "brand-zomato",
        "brand-zoom",
        "brand-zorin",
        "brand-zotero",
        "brand-zsh",
        "brand-zulip",
        "brand-zx",
        "brand-zyte",
        "brick-wall",
        "brick-wall-fire",
        "brick-wall-shield",
        "bridge",
        "briefcase",
        "briefcase-business",
        "briefcase-conveyor-belt",
        "briefcase-medical",
        "briefcase-plus",
        "bring-to-front",
        "broccoli",
        "broom",
        "broom-sparkles",
        "brush",
        "brush-cleaning",
        "bubbles",
        "bug",
        "bug-off",
        "bug-play",
        "building",
        "building-complex",
        "building-complex-plus",
        "bus",
        "bus-front",
        "cable",
        "cable-car",
        "cake",
        "cake-slice",
        "calculator",
        "calendar",
        "calendar-1",
        "calendar-arrow-down",
        "calendar-arrow-left",
        "calendar-arrow-right",
        "calendar-arrow-up",
        "calendar-check",
        "calendar-check-2",
        "calendar-chevrons-left",
        "calendar-chevrons-right",
        "calendar-clock",
        "calendar-cog",
        "calendar-days",
        "calendar-fold",
        "calendar-heart",
        "calendar-minus",
        "calendar-minus-2",
        "calendar-off",
        "calendar-plus",
        "calendar-plus-2",
        "calendar-range",
        "calendar-search",
        "calendar-sync",
        "calendar-x",
        "calendar-x-2",
        "calendars",
        "camera",
        "camera-off",
        "can",
        "can-soda",
        "candy",
        "candy-cane",
        "candy-off",
        "cannabis",
        "cannabis-off",
        "captions",
        "captions-off",
        "car",
        "car-battery",
        "car-front",
        "car-taxi-front",
        "caravan",
        "card-sim",
        "carrot",
        "carton",
        "carton-off",
        "case-lower",
        "case-sensitive",
        "case-upper",
        "cassette-tape",
        "cast",
        "castle",
        "cat",
        "cctv",
        "cctv-off",
        "certificate",
        "chart-area",
        "chart-bar",
        "chart-bar-big",
        "chart-bar-decreasing",
        "chart-bar-increasing",
        "chart-bar-stacked",
        "chart-bell-curve",
        "chart-candlestick",
        "chart-column",
        "chart-column-big",
        "chart-column-decreasing",
        "chart-column-increasing",
        "chart-column-stacked",
        "chart-gantt",
        "chart-line",
        "chart-network",
        "chart-no-axes-column",
        "chart-no-axes-column-decreasing",
        "chart-no-axes-column-increasing",
        "chart-no-axes-combined",
        "chart-no-axes-gantt",
        "chart-pie",
        "chart-quadrant",
        "chart-radar",
        "chart-scatter",
        "chart-spline",
        "check",
        "check-check",
        "check-line",
        "chef-hat",
        "cherry",
        "chess-bishop",
        "chess-king",
        "chess-knight",
        "chess-pawn",
        "chess-queen",
        "chess-rook",
        "chevron-down",
        "chevron-first",
        "chevron-last",
        "chevron-left",
        "chevron-right",
        "chevron-up",
        "chevrons-down",
        "chevrons-down-up",
        "chevrons-left",
        "chevrons-left-right",
        "chevrons-left-right-ellipsis",
        "chevrons-right",
        "chevrons-right-left",
        "chevrons-up",
        "chevrons-up-down",
        "church",
        "cigarette",
        "cigarette-off",
        "circle",
        "circle-alert",
        "circle-arrow-down",
        "circle-arrow-left",
        "circle-arrow-out-down-left",
        "circle-arrow-out-down-right",
        "circle-arrow-out-up-left",
        "circle-arrow-out-up-right",
        "circle-arrow-right",
        "circle-arrow-up",
        "circle-check",
        "circle-check-big",
        "circle-chevron-down",
        "circle-chevron-left",
        "circle-chevron-right",
        "circle-chevron-up",
        "circle-chevrons-down",
        "circle-chevrons-left",
        "circle-chevrons-right",
        "circle-chevrons-up",
        "circle-dashed",
        "circle-dashed-check",
        "circle-divide",
        "circle-dollar-sign",
        "circle-dot",
        "circle-dot-dashed",
        "circle-ellipsis",
        "circle-equal",
        "circle-euro",
        "circle-fading-arrow-up",
        "circle-fading-play",
        "circle-fading-plus",
        "circle-gauge",
        "circle-help",
        "circle-letter-a",
        "circle-letter-b",
        "circle-letter-c",
        "circle-letter-d",
        "circle-letter-e",
        "circle-letter-f",
        "circle-letter-g",
        "circle-letter-h",
        "circle-letter-i",
        "circle-letter-j",
        "circle-letter-k",
        "circle-letter-l",
        "circle-letter-m",
        "circle-letter-n",
        "circle-letter-o",
        "circle-letter-p",
        "circle-letter-p-off",
        "circle-letter-q",
        "circle-letter-r",
        "circle-letter-s",
        "circle-letter-t",
        "circle-letter-u",
        "circle-letter-v",
        "circle-letter-w",
        "circle-letter-x",
        "circle-letter-y",
        "circle-letter-z",
        "circle-minus",
        "circle-off",
        "circle-pause",
        "circle-percent",
        "circle-pile",
        "circle-play",
        "circle-plus",
        "circle-pound-sterling",
        "circle-power",
        "circle-question-mark",
        "circle-slash",
        "circle-slash-2",
        "circle-small",
        "circle-star",
        "circle-stop",
        "circle-user",
        "circle-user-round",
        "circle-x",
        "circuit-board",
        "citrus",
        "clapperboard",
        "clef-alto",
        "clef-bass",
        "clef-treble",
        "clipboard",
        "clipboard-check",
        "clipboard-clock",
        "clipboard-copy",
        "clipboard-list",
        "clipboard-minus",
        "clipboard-paste",
        "clipboard-pen",
        "clipboard-pen-line",
        "clipboard-plus",
        "clipboard-type",
        "clipboard-x",
        "clock",
        "clock-1",
        "clock-10",
        "clock-11",
        "clock-12",
        "clock-2",
        "clock-3",
        "clock-4",
        "clock-5",
        "clock-6",
        "clock-7",
        "clock-8",
        "clock-9",
        "clock-alert",
        "clock-arrow-down",
        "clock-arrow-left",
        "clock-arrow-right",
        "clock-arrow-up",
        "clock-check",
        "clock-fading",
        "clock-plus",
        "closed-caption",
        "cloud",
        "cloud-alert",
        "cloud-backup",
        "cloud-check",
        "cloud-cog",
        "cloud-download",
        "cloud-drizzle",
        "cloud-fog",
        "cloud-hail",
        "cloud-lightning",
        "cloud-moon",
        "cloud-moon-rain",
        "cloud-off",
        "cloud-rain",
        "cloud-rain-wind",
        "cloud-snow",
        "cloud-sun",
        "cloud-sun-rain",
        "cloud-sync",
        "cloud-upload",
        "cloudy",
        "clover",
        "club",
        "code",
        "code-xml",
        "coffee",
        "cog",
        "coins",
        "columns-2",
        "columns-3",
        "columns-3-cog",
        "columns-4",
        "combine",
        "command",
        "compass",
        "component",
        "computer",
        "concierge-bell",
        "cone",
        "construction",
        "contact",
        "contact-round",
        "container",
        "contrast",
        "cookie",
        "cooking-pot",
        "copy",
        "copy-check",
        "copy-minus",
        "copy-plus",
        "copy-slash",
        "copy-x",
        "copyleft",
        "corner-down-left",
        "corner-down-right",
        "corner-left-down",
        "corner-left-up",
        "corner-right-down",
        "corner-right-up",
        "corner-up-left",
        "corner-up-right",
        "cpu",
        "cpu-ai",
        "creative-commons",
        "credit-card",
        "credit-card-check",
        "credit-card-minus",
        "credit-card-plus",
        "credit-card-reader",
        "credit-card-x",
        "croissant",
        "crop",
        "cross",
        "crosshair",
        "crown",
        "cuboid",
        "cup-soda",
        "cupcake",
        "currency",
        "cylinder",
        "dam",
        "database",
        "database-arrow-down",
        "database-arrow-up",
        "database-backup",
        "database-check",
        "database-cog",
        "database-minus",
        "database-plus",
        "database-search",
        "database-x",
        "database-zap",
        "decimals-arrow-left",
        "decimals-arrow-right",
        "delete",
        "dessert",
        "diameter",
        "diamond",
        "diamond-minus",
        "diamond-percent",
        "diamond-plus",
        "dice-1",
        "dice-2",
        "dice-3",
        "dice-4",
        "dice-5",
        "dice-6",
        "dices",
        "diff",
        "disc",
        "disc-2",
        "disc-3",
        "disc-album",
        "divide",
        "dna",
        "dna-off",
        "dock",
        "dog",
        "dollar-sign",
        "dome",
        "donut",
        "door-closed",
        "door-closed-cog",
        "door-closed-locked",
        "door-closed-package",
        "door-open",
        "door-stairwell",
        "dot",
        "download",
        "drafting-compass",
        "drama",
        "drill",
        "drone",
        "droplet",
        "droplet-off",
        "droplets",
        "drum",
        "drumstick",
        "dumbbell",
        "ear",
        "ear-off",
        "earbuds",
        "earbuds-off",
        "earth",
        "earth-lock",
        "eclipse",
        "egg",
        "egg-fried",
        "egg-off",
        "eighth-note",
        "eighth-notes",
        "eject",
        "ellipse",
        "ellipsis",
        "ellipsis-vertical",
        "emirati-dirham",
        "engine",
        "equal",
        "equal-approximately",
        "equal-approximately-not",
        "equal-not",
        "eraser",
        "ethernet-port",
        "euro",
        "ev-charger",
        "expand",
        "external-link",
        "eye",
        "eye-closed",
        "eye-dashed",
        "eye-off",
        "face-angry",
        "face-expressionless",
        "face-grinning",
        "face-neutral",
        "face-slightly-frowning",
        "face-slightly-smiling",
        "face-slightly-smiling-plus",
        "factory",
        "fan",
        "fast-forward",
        "faucet",
        "feather",
        "fence",
        "ferris-wheel",
        "file",
        "file-archive",
        "file-audio",
        "file-axis-3d",
        "file-badge",
        "file-box",
        "file-braces",
        "file-braces-corner",
        "file-chart-column",
        "file-chart-column-increasing",
        "file-chart-line",
        "file-chart-pie",
        "file-check",
        "file-check-corner",
        "file-clock",
        "file-code",
        "file-code-corner",
        "file-cog",
        "file-database",
        "file-diff",
        "file-digit",
        "file-down",
        "file-exclamation-point",
        "file-headphone",
        "file-heart",
        "file-image",
        "file-input",
        "file-key",
        "file-lock",
        "file-minus",
        "file-minus-corner",
        "file-music",
        "file-output",
        "file-pen",
        "file-pen-line",
        "file-play",
        "file-plus",
        "file-plus-corner",
        "file-question-mark",
        "file-scan",
        "file-search",
        "file-search-corner",
        "file-signal",
        "file-sliders",
        "file-spreadsheet",
        "file-stack",
        "file-symlink",
        "file-terminal",
        "file-text",
        "file-type",
        "file-type-corner",
        "file-up",
        "file-user",
        "file-video-camera",
        "file-volume",
        "file-x",
        "file-x-corner",
        "files",
        "film",
        "filter",
        "fingerprint-pattern",
        "fire-extinguisher",
        "fish",
        "fish-off",
        "fish-symbol",
        "fishing-hook",
        "fishing-rod",
        "flag",
        "flag-off",
        "flag-triangle-left",
        "flag-triangle-right",
        "flame",
        "flame-kindling",
        "flashlight",
        "flashlight-off",
        "flask-conical",
        "flask-conical-off",
        "flask-round",
        "flower",
        "flower-2",
        "focus",
        "fold-horizontal",
        "fold-vertical",
        "folder",
        "folder-archive",
        "folder-bookmark",
        "folder-check",
        "folder-clock",
        "folder-closed",
        "folder-code",
        "folder-cog",
        "folder-dot",
        "folder-down",
        "folder-git",
        "folder-git-2",
        "folder-heart",
        "folder-input",
        "folder-kanban",
        "folder-key",
        "folder-lock",
        "folder-minus",
        "folder-open",
        "folder-open-dot",
        "folder-output",
        "folder-pen",
        "folder-plus",
        "folder-root",
        "folder-search",
        "folder-search-2",
        "folder-symlink",
        "folder-sync",
        "folder-tree",
        "folder-up",
        "folder-user",
        "folder-users",
        "folder-x",
        "folders",
        "footprints",
        "forklift",
        "form",
        "forward",
        "frame",
        "frown",
        "fuel",
        "fullscreen",
        "funnel",
        "funnel-plus",
        "funnel-x",
        "galaxy",
        "gallery-horizontal",
        "gallery-horizontal-end",
        "gallery-thumbnails",
        "gallery-vertical",
        "gallery-vertical-end",
        "gamepad",
        "gamepad-2",
        "gamepad-directional",
        "gap-horizontal",
        "gap-vertical",
        "gauge",
        "gavel",
        "gem",
        "georgian-lari",
        "germ",
        "germ-off",
        "ghost",
        "gift",
        "git-branch",
        "git-branch-minus",
        "git-branch-plus",
        "git-commit-horizontal",
        "git-commit-vertical",
        "git-compare",
        "git-compare-arrows",
        "git-fork",
        "git-graph",
        "git-merge",
        "git-merge-conflict",
        "git-pull-request",
        "git-pull-request-arrow",
        "git-pull-request-closed",
        "git-pull-request-create",
        "git-pull-request-create-arrow",
        "git-pull-request-draft",
        "glass-water",
        "glasses",
        "globe",
        "globe-check",
        "globe-code",
        "globe-lock",
        "globe-off",
        "globe-x",
        "goal",
        "gpu",
        "graduation-cap",
        "grape",
        "graph-hub",
        "graph-star",
        "grid-2x2",
        "grid-2x2-check",
        "grid-2x2-plus",
        "grid-2x2-x",
        "grid-3x2",
        "grid-3x3",
        "grip",
        "grip-horizontal",
        "grip-vertical",
        "groceries",
        "group",
        "guitar",
        "guitar-electric",
        "half-note",
        "ham",
        "hamburger",
        "hammer",
        "hand",
        "hand-coins",
        "hand-fist",
        "hand-grab",
        "hand-heart",
        "hand-helping",
        "hand-metal",
        "hand-platter",
        "handbag",
        "handle-bottom-right",
        "handshake",
        "hard-drive",
        "hard-drive-download",
        "hard-drive-upload",
        "hard-hat",
        "hash",
        "hat-glasses",
        "haze",
        "hd",
        "hdmi-port",
        "heading-1",
        "heading-2",
        "heading-3",
        "heading-4",
        "heading-5",
        "heading-6",
        "headphone-off",
        "headphones",
        "headset",
        "heart",
        "heart-crack",
        "heart-handshake",
        "heart-minus",
        "heart-off",
        "heart-plus",
        "heart-pulse",
        "heart-x",
        "heater",
        "helicopter",
        "hexagon",
        "highlighter",
        "hiking-stick",
        "hockey-stick",
        "hop",
        "hop-off",
        "hospital",
        "hot-air-balloon",
        "hotel",
        "hourglass",
        "hourglass-cog",
        "house",
        "house-cog",
        "house-heart",
        "house-plug",
        "house-plus",
        "house-wifi",
        "houses",
        "ice-cream-bowl",
        "ice-cream-cone",
        "id-card",
        "id-card-lanyard",
        "image",
        "image-down",
        "image-minus",
        "image-off",
        "image-play",
        "image-plus",
        "image-up",
        "image-upscale",
        "images",
        "import",
        "inbox",
        "indian-rupee",
        "infinity",
        "info",
        "inspection-panel",
        "italic",
        "iteration-ccw",
        "iteration-cw",
        "iv-bag",
        "japanese-yen",
        "joystick",
        "kanban",
        "kayak",
        "kazakh-tenge",
        "key",
        "key-round",
        "key-square",
        "keyboard",
        "keyboard-music",
        "keyboard-off",
        "lambda",
        "lamp",
        "lamp-ceiling",
        "lamp-desk",
        "lamp-floor",
        "lamp-wall-down",
        "lamp-wall-up",
        "land-plot",
        "landmark",
        "languages",
        "laptop",
        "laptop-minimal",
        "laptop-minimal-check",
        "laser",
        "lasso",
        "lasso-select",
        "layer-arrow-down",
        "layer-arrow-up",
        "layers",
        "layers-2",
        "layers-arrow-down",
        "layers-arrow-up",
        "layers-minus",
        "layers-plus",
        "layout-arrow-down",
        "layout-arrow-right",
        "layout-dashboard",
        "layout-freeform",
        "layout-grid",
        "layout-grid-circles",
        "layout-list",
        "layout-panel-left",
        "layout-panel-top",
        "layout-template",
        "leaf",
        "leafy-green",
        "lectern",
        "lens",
        "lens-concave",
        "lens-convex",
        "letter-a",
        "letter-b",
        "letter-c",
        "letter-d",
        "letter-e",
        "letter-f",
        "letter-g",
        "letter-h",
        "letter-i",
        "letter-j",
        "letter-k",
        "letter-l",
        "letter-m",
        "letter-n",
        "letter-o",
        "letter-p",
        "letter-q",
        "letter-r",
        "letter-s",
        "letter-spacing",
        "letter-t",
        "letter-u",
        "letter-v",
        "letter-w",
        "letter-x",
        "letter-y",
        "letter-z",
        "letters",
        "library",
        "library-big",
        "life-buoy",
        "ligature",
        "lightbulb",
        "lightbulb-off",
        "lighthouse",
        "line-dot-bottom-vertical",
        "line-dot-left-horizontal",
        "line-dot-right-horizontal",
        "line-dot-top-vertical",
        "line-height",
        "line-squiggle",
        "line-style",
        "link",
        "link-2",
        "link-2-off",
        "list",
        "list-check",
        "list-checks",
        "list-chevrons-down-up",
        "list-chevrons-up-down",
        "list-clock",
        "list-collapse",
        "list-end",
        "list-filter",
        "list-filter-plus",
        "list-indent-decrease",
        "list-indent-increase",
        "list-minus",
        "list-music",
        "list-ordered",
        "list-plus",
        "list-restart",
        "list-sort-ascending",
        "list-sort-descending",
        "list-start",
        "list-todo",
        "list-tree",
        "list-video",
        "list-x",
        "loader",
        "loader-circle",
        "loader-pinwheel",
        "locate",
        "locate-fixed",
        "locate-off",
        "lock",
        "lock-keyhole",
        "lock-keyhole-open",
        "lock-open",
        "log-in",
        "log-out",
        "logs",
        "lollipop",
        "luggage",
        "magnet",
        "mail",
        "mail-badge",
        "mail-check",
        "mail-clock",
        "mail-dot",
        "mail-minus",
        "mail-open",
        "mail-pen",
        "mail-plus",
        "mail-question-mark",
        "mail-search",
        "mail-warning",
        "mail-x",
        "mailbox",
        "mails",
        "map",
        "map-minus",
        "map-pin",
        "map-pin-check",
        "map-pin-check-inside",
        "map-pin-house",
        "map-pin-minus",
        "map-pin-minus-inside",
        "map-pin-off",
        "map-pin-pen",
        "map-pin-plus",
        "map-pin-plus-inside",
        "map-pin-search",
        "map-pin-x",
        "map-pin-x-inside",
        "map-pinned",
        "map-plus",
        "margin",
        "margin-bottom",
        "margin-horizontal",
        "margin-left",
        "margin-right",
        "margin-top",
        "margin-vertical",
        "mars",
        "mars-stroke",
        "martini",
        "maximize",
        "maximize-2",
        "medal",
        "megaphone",
        "megaphone-off",
        "memory-stick",
        "menu",
        "merge",
        "message-circle",
        "message-circle-check",
        "message-circle-code",
        "message-circle-dashed",
        "message-circle-dashed-check",
        "message-circle-heart",
        "message-circle-more",
        "message-circle-off",
        "message-circle-plus",
        "message-circle-question-mark",
        "message-circle-reply",
        "message-circle-text",
        "message-circle-warning",
        "message-circle-x",
        "message-square",
        "message-square-check",
        "message-square-code",
        "message-square-dashed",
        "message-square-diff",
        "message-square-dot",
        "message-square-heart",
        "message-square-lock",
        "message-square-more",
        "message-square-off",
        "message-square-plus",
        "message-square-quote",
        "message-square-reply",
        "message-square-share",
        "message-square-text",
        "message-square-warning",
        "message-square-x",
        "messages-circle",
        "messages-square",
        "metronome",
        "mic",
        "mic-audio-lines",
        "mic-off",
        "mic-signal",
        "mic-vocal",
        "microchip",
        "microscope",
        "microwave",
        "midi-port",
        "milestone",
        "milk",
        "milk-off",
        "minimize",
        "minimize-2",
        "minus",
        "mirror-rectangular",
        "mirror-round",
        "monitor",
        "monitor-activity",
        "monitor-check",
        "monitor-cloud",
        "monitor-cog",
        "monitor-dot",
        "monitor-down",
        "monitor-off",
        "monitor-pause",
        "monitor-pc",
        "monitor-play",
        "monitor-smartphone",
        "monitor-speaker",
        "monitor-stop",
        "monitor-up",
        "monitor-x",
        "moon",
        "moon-star",
        "mop",
        "mop-sparkles",
        "mosque",
        "motorbike",
        "mountain",
        "mountain-snow",
        "mouse",
        "mouse-left",
        "mouse-off",
        "mouse-pointer",
        "mouse-pointer-2",
        "mouse-pointer-2-off",
        "mouse-pointer-ban",
        "mouse-pointer-click",
        "mouse-right",
        "mouth",
        "mouth-off",
        "move",
        "move-3d",
        "move-diagonal",
        "move-diagonal-2",
        "move-down",
        "move-down-left",
        "move-down-right",
        "move-horizontal",
        "move-left",
        "move-right",
        "move-up",
        "move-up-left",
        "move-up-right",
        "move-vertical",
        "music",
        "music-2",
        "music-3",
        "music-4",
        "navigation",
        "navigation-2",
        "navigation-2-off",
        "navigation-off",
        "nepali-rupee",
        "network",
        "newspaper",
        "nfc",
        "non-binary",
        "notebook",
        "notebook-dot",
        "notebook-pen",
        "notebook-tabs",
        "notebook-text",
        "notepad-text",
        "notepad-text-dashed",
        "numbers",
        "nut",
        "nut-off",
        "octagon",
        "octagon-alert",
        "octagon-minus",
        "octagon-pause",
        "octagon-x",
        "omega",
        "option",
        "orbit",
        "origami",
        "package",
        "package-2",
        "package-check",
        "package-minus",
        "package-open",
        "package-plus",
        "package-search",
        "package-x",
        "paint-bucket",
        "paint-roller",
        "paintbrush",
        "paintbrush-vertical",
        "palette",
        "panda",
        "panel-bottom",
        "panel-bottom-close",
        "panel-bottom-dashed",
        "panel-bottom-open",
        "panel-left",
        "panel-left-close",
        "panel-left-dashed",
        "panel-left-open",
        "panel-left-right-dashed",
        "panel-right",
        "panel-right-close",
        "panel-right-dashed",
        "panel-right-open",
        "panel-top",
        "panel-top-bottom-dashed",
        "panel-top-close",
        "panel-top-dashed",
        "panel-top-open",
        "panels-left-bottom",
        "panels-right-bottom",
        "panels-top-left",
        "paper-bag",
        "paperclip",
        "parasol",
        "parentheses",
        "park",
        "parking-meter",
        "party-popper",
        "pause",
        "paw-print",
        "pc-case",
        "pen",
        "pen-line",
        "pen-off",
        "pen-tool",
        "pencil",
        "pencil-line",
        "pencil-off",
        "pencil-ruler",
        "pencil-sparkles",
        "pentagon",
        "percent",
        "perfume-bottle",
        "person-standing",
        "phi",
        "philippine-peso",
        "phone",
        "phone-call",
        "phone-forwarded",
        "phone-incoming",
        "phone-log",
        "phone-missed",
        "phone-off",
        "phone-outgoing",
        "pi",
        "piano",
        "pickaxe",
        "picture-in-picture",
        "picture-in-picture-2",
        "piggy-bank",
        "pilcrow",
        "pilcrow-left",
        "pilcrow-right",
        "pill",
        "pill-bottle",
        "pin",
        "pin-off",
        "pipette",
        "pizza",
        "plane",
        "plane-landing",
        "plane-takeoff",
        "plant-pot",
        "play",
        "play-off",
        "playing-card",
        "playing-cards",
        "playing-cards-fan",
        "plug",
        "plug-2",
        "plug-zap",
        "plus",
        "pocket-knife",
        "podcast",
        "podium",
        "pointer",
        "pointer-off",
        "popcorn",
        "popsicle",
        "pound-sterling",
        "power",
        "power-off",
        "presentation",
        "printer",
        "printer-3d",
        "printer-check",
        "printer-x",
        "projector",
        "proportions",
        "puzzle",
        "pyramid",
        "qr-code",
        "quote",
        "rabbit",
        "radar",
        "radiation",
        "radical",
        "radio",
        "radio-off",
        "radio-receiver",
        "radio-tower",
        "radius",
        "rainbow",
        "rat",
        "ratio",
        "receipt",
        "receipt-cent",
        "receipt-euro",
        "receipt-indian-rupee",
        "receipt-japanese-yen",
        "receipt-pound-sterling",
        "receipt-russian-ruble",
        "receipt-swiss-franc",
        "receipt-text",
        "receipt-turkish-lira",
        "rectangle-circle",
        "rectangle-ellipsis",
        "rectangle-goggles",
        "rectangle-horizontal",
        "rectangle-vertical",
        "recycle",
        "redo",
        "redo-2",
        "redo-dot",
        "refresh-ccw",
        "refresh-ccw-dot",
        "refresh-cw",
        "refresh-cw-off",
        "refrigerator",
        "regex",
        "remove-formatting",
        "repeat",
        "repeat-1",
        "repeat-2",
        "repeat-off",
        "replace",
        "replace-all",
        "reply",
        "reply-all",
        "rewind",
        "ribbon",
        "road",
        "robot-arm",
        "robot-vacuum",
        "rocket",
        "rocking-chair",
        "roller-coaster",
        "rose",
        "rotate-3d",
        "rotate-ccw",
        "rotate-ccw-clock",
        "rotate-ccw-key",
        "rotate-ccw-square",
        "rotate-cw",
        "rotate-cw-clock",
        "rotate-cw-fading-clock",
        "rotate-cw-square",
        "route",
        "route-off",
        "router",
        "rows-2",
        "rows-3",
        "rows-4",
        "rss",
        "rugby-ball",
        "ruler",
        "ruler-dimension-line",
        "russian-ruble",
        "sailboat",
        "salad",
        "sandwich",
        "satellite",
        "satellite-dish",
        "saudi-riyal",
        "save",
        "save-all",
        "save-check",
        "save-off",
        "save-pen",
        "save-plus",
        "scale",
        "scale-3d",
        "scaling",
        "scan",
        "scan-barcode",
        "scan-box",
        "scan-eye",
        "scan-face",
        "scan-heart",
        "scan-line",
        "scan-qr-code",
        "scan-search",
        "scan-square",
        "scan-text",
        "school",
        "scissors",
        "scissors-line-dashed",
        "scooter",
        "scratch-blocks",
        "screen-share",
        "screen-share-off",
        "screw",
        "scroll",
        "scroll-text",
        "search",
        "search-alert",
        "search-check",
        "search-code",
        "search-slash",
        "search-x",
        "section",
        "send",
        "send-horizontal",
        "send-to-back",
        "separator-horizontal",
        "separator-vertical",
        "server",
        "server-cog",
        "server-crash",
        "server-nas",
        "server-off",
        "server-plus",
        "settings",
        "settings-2",
        "shapes",
        "share",
        "share-2",
        "sheet",
        "shell",
        "shelving-unit",
        "shield",
        "shield-alert",
        "shield-ban",
        "shield-check",
        "shield-cog",
        "shield-cog-corner",
        "shield-ellipsis",
        "shield-half",
        "shield-house",
        "shield-keyhole",
        "shield-lock",
        "shield-minus",
        "shield-off",
        "shield-plus",
        "shield-question-mark",
        "shield-user",
        "shield-x",
        "ship",
        "ship-cargo",
        "ship-wheel",
        "shirt",
        "shopping-bag",
        "shopping-basket",
        "shopping-cart",
        "shopping-cart-minus",
        "shopping-cart-plus",
        "shovel",
        "shower-head",
        "shredder",
        "shrimp",
        "shrimp-off",
        "shrink",
        "shrub",
        "shuffle",
        "sigma",
        "signal",
        "signal-high",
        "signal-low",
        "signal-medium",
        "signal-zero",
        "signature",
        "signpost",
        "signpost-big",
        "siren",
        "siren-off",
        "sixteenth-notes",
        "skip-back",
        "skip-forward",
        "skull",
        "slash",
        "slice",
        "sliders-horizontal",
        "sliders-vertical",
        "smartphone",
        "smartphone-charging",
        "smartphone-nfc",
        "smartphone-user-round",
        "smile",
        "snail",
        "snowflake",
        "soap-dispenser-droplet",
        "sofa",
        "solar-panel",
        "soup",
        "space",
        "spade",
        "sparkle",
        "sparkles",
        "speaker",
        "speech",
        "spell-check",
        "spell-check-2",
        "spline",
        "spline-pointer",
        "split",
        "spool",
        "sport-shoe",
        "spotlight",
        "spray-can",
        "sprout",
        "square",
        "square-activity",
        "square-arrow-down",
        "square-arrow-down-left",
        "square-arrow-down-right",
        "square-arrow-left",
        "square-arrow-out-down-left",
        "square-arrow-out-down-right",
        "square-arrow-out-up-left",
        "square-arrow-out-up-right",
        "square-arrow-right",
        "square-arrow-right-enter",
        "square-arrow-right-exit",
        "square-arrow-up",
        "square-arrow-up-left",
        "square-arrow-up-right",
        "square-asterisk",
        "square-bookmark",
        "square-bottom-dashed-scissors",
        "square-centerline-dashed-horizontal",
        "square-centerline-dashed-vertical",
        "square-chart-gantt",
        "square-check",
        "square-check-big",
        "square-chevron-down",
        "square-chevron-left",
        "square-chevron-right",
        "square-chevron-up",
        "square-chevrons-down",
        "square-chevrons-left",
        "square-chevrons-right",
        "square-chevrons-up",
        "square-code",
        "square-dashed",
        "square-dashed-bottom",
        "square-dashed-bottom-code",
        "square-dashed-kanban",
        "square-dashed-mouse-pointer",
        "square-dashed-plus",
        "square-dashed-text",
        "square-dashed-top-solid",
        "square-dashed-x",
        "square-dashed-x-corner",
        "square-dimensions",
        "square-divide",
        "square-dot",
        "square-equal",
        "square-exclamation-point",
        "square-function",
        "square-kanban",
        "square-kanban-plus",
        "square-letter-a",
        "square-letter-b",
        "square-letter-c",
        "square-letter-d",
        "square-letter-e",
        "square-letter-f",
        "square-letter-g",
        "square-letter-h",
        "square-letter-i",
        "square-letter-j",
        "square-letter-k",
        "square-letter-l",
        "square-letter-m",
        "square-letter-n",
        "square-letter-o",
        "square-letter-p",
        "square-letter-p-off",
        "square-letter-q",
        "square-letter-r",
        "square-letter-s",
        "square-letter-t",
        "square-letter-u",
        "square-letter-v",
        "square-letter-w",
        "square-letter-x",
        "square-letter-y",
        "square-letter-z",
        "square-library",
        "square-menu",
        "square-minus",
        "square-mouse-pointer",
        "square-off",
        "square-padding",
        "square-padding-bottom",
        "square-padding-horizontal",
        "square-padding-left",
        "square-padding-right",
        "square-padding-top",
        "square-padding-vertical",
        "square-pause",
        "square-pen",
        "square-percent",
        "square-pi",
        "square-pilcrow",
        "square-play",
        "square-plus",
        "square-power",
        "square-radical",
        "square-round-corner",
        "square-scissors",
        "square-sigma",
        "square-slash",
        "square-sparkles",
        "square-split-horizontal",
        "square-split-vertical",
        "square-square",
        "square-stack",
        "square-star",
        "square-stop",
        "square-terminal",
        "square-text",
        "square-user",
        "square-user-round",
        "square-x",
        "squares-exclude",
        "squares-intersect",
        "squares-subtract",
        "squares-unite",
        "squircle",
        "squircle-dashed",
        "squirrel",
        "stamp",
        "star",
        "star-check",
        "star-half",
        "star-minus",
        "star-off",
        "star-plus",
        "star-x",
        "step-back",
        "step-forward",
        "stethoscope",
        "sticker",
        "sticky-note",
        "sticky-note-check",
        "sticky-note-minus",
        "sticky-note-off",
        "sticky-note-plus",
        "sticky-note-x",
        "sticky-notes",
        "stone",
        "store",
        "stretch-horizontal",
        "stretch-vertical",
        "strikethrough",
        "subscript",
        "summary",
        "sun",
        "sun-dim",
        "sun-medium",
        "sun-moon",
        "sun-snow",
        "sunrise",
        "sunset",
        "superscript",
        "swatch-book",
        "swiss-franc",
        "switch-camera",
        "sword",
        "swords",
        "syringe",
        "table",
        "table-2",
        "table-cells-merge",
        "table-cells-split",
        "table-columns-split",
        "table-of-contents",
        "table-properties",
        "table-rows-split",
        "tablet",
        "tablet-smartphone",
        "tablets",
        "tag",
        "tag-plus",
        "tag-x",
        "tags",
        "tally-1",
        "tally-2",
        "tally-3",
        "tally-4",
        "tally-5",
        "tangent",
        "target",
        "telescope",
        "tent",
        "tent-tree",
        "terminal",
        "test-tube",
        "test-tube-diagonal",
        "test-tubes",
        "text-align-center",
        "text-align-end",
        "text-align-justify",
        "text-align-justify-center",
        "text-align-justify-end",
        "text-align-justify-start",
        "text-align-start",
        "text-cursor",
        "text-cursor-input",
        "text-initial",
        "text-quote",
        "text-search",
        "text-wrap",
        "theater",
        "thermometer",
        "thermometer-snowflake",
        "thermometer-sun",
        "thumbs-down",
        "thumbs-up",
        "tic-tac-toe",
        "ticket",
        "ticket-check",
        "ticket-minus",
        "ticket-percent",
        "ticket-plus",
        "ticket-slash",
        "ticket-x",
        "tickets",
        "tickets-plane",
        "timeline",
        "timer",
        "timer-off",
        "timer-reset",
        "toggle-left",
        "toggle-right",
        "toilet",
        "tombstone",
        "tool-case",
        "toolbox",
        "toothbrush",
        "toothbrush-sparkles",
        "tornado",
        "torus",
        "touchpad",
        "touchpad-off",
        "towel-rack",
        "tower-control",
        "toy-blank",
        "toy-brick",
        "toy-effect",
        "toy-instrument",
        "toy-template",
        "tractor",
        "traffic-cone",
        "trailer",
        "train-front",
        "train-front-tunnel",
        "train-track",
        "tram-front",
        "transgender",
        "trash",
        "trash-2",
        "trash-off",
        "tree-deciduous",
        "tree-palm",
        "tree-pine",
        "trees",
        "trending-down",
        "trending-up",
        "trending-up-down",
        "triangle",
        "triangle-alert",
        "triangle-dashed",
        "triangle-right",
        "triangles-centerline-dashed-horizontal",
        "triangles-centerline-dashed-vertical",
        "trophy",
        "truck",
        "truck-electric",
        "tube-lotion",
        "turkish-lira",
        "turntable",
        "turtle",
        "tv",
        "tv-minimal",
        "tv-minimal-play",
        "type",
        "type-outline",
        "umbrella",
        "umbrella-off",
        "underline",
        "undo",
        "undo-2",
        "undo-dot",
        "unfold-horizontal",
        "unfold-vertical",
        "ungroup",
        "university",
        "unlink",
        "unlink-2",
        "unplug",
        "upload",
        "usb",
        "usb-c-port",
        "user",
        "user-check",
        "user-cog",
        "user-group",
        "user-key",
        "user-lock",
        "user-minus",
        "user-pen",
        "user-plus",
        "user-round",
        "user-round-arrow-left",
        "user-round-check",
        "user-round-cog",
        "user-round-group",
        "user-round-key",
        "user-round-minus",
        "user-round-pen",
        "user-round-plus",
        "user-round-search",
        "user-round-shield",
        "user-round-star",
        "user-round-x",
        "user-search",
        "user-shield",
        "user-star",
        "user-x",
        "users",
        "users-collaboration",
        "users-round",
        "users-round-collaboration",
        "utensils",
        "utensils-crossed",
        "utility-pole",
        "van",
        "variable",
        "vault",
        "vector-polygon",
        "vector-square",
        "vegan",
        "venetian-mask",
        "venus",
        "venus-and-mars",
        "vibrate",
        "vibrate-off",
        "video",
        "video-off",
        "videotape",
        "view",
        "virus",
        "virus-off",
        "voicemail",
        "volleyball",
        "volume",
        "volume-1",
        "volume-2",
        "volume-off",
        "volume-x",
        "vote",
        "wallet",
        "wallet-cards",
        "wallet-minimal",
        "wallpaper",
        "wand",
        "wand-sparkles",
        "warehouse",
        "washing-machine",
        "watch",
        "waves",
        "waves-arrow-down",
        "waves-arrow-up",
        "waves-horizontal",
        "waves-ladder",
        "waves-vertical",
        "waypoints",
        "webcam",
        "webcam-off",
        "webhook",
        "webhook-off",
        "weight",
        "weight-tilde",
        "wheat",
        "wheat-off",
        "whistle",
        "whole-word",
        "wifi",
        "wifi-cog",
        "wifi-high",
        "wifi-lock",
        "wifi-low",
        "wifi-off",
        "wifi-pen",
        "wifi-sync",
        "wifi-zero",
        "wind",
        "wind-arrow-down",
        "wind-arrow-up",
        "wine",
        "wine-off",
        "workflow",
        "worm",
        "wrench",
        "wrench-off",
        "x",
        "x-line-top",
        "zap",
        "zap-off",
        "zodiac-aquarius",
        "zodiac-aries",
        "zodiac-cancer",
        "zodiac-capricorn",
        "zodiac-gemini",
        "zodiac-leo",
        "zodiac-libra",
        "zodiac-ophiuchus",
        "zodiac-pisces",
        "zodiac-sagittarius",
        "zodiac-scorpio",
        "zodiac-taurus",
        "zodiac-virgo",
        "zoom-in",
        "zoom-out"
      ]
    },
    "LayerFolder": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 128 },
        "parent": {
          "type": "string",
          "pattern": "^[a-z][a-z0-9_-]{0,63}$",
          "not": { "enum": ["constructor", "prototype"] }
        },
        "zIndex": { "type": "integer", "minimum": 0, "maximum": 1023 },
        "hidden": { "type": "boolean" },
        "locked": { "type": "boolean" }
      },
      "required": ["name", "zIndex"]
    },
    "Tuning": {
      "description": "How instruments map MIDI notes to pitch, and what a Tuner set to Toy measures against: a preset from packages/node-catalog/tunings.json, or custom cents and a period. The semantic validator requires exactly one of the two, and custom degrees that start at 0, ascend and stay below the period. Absent means 12-TET at A4 = 440 Hz.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "preset": {
          "enum": [
            "12-tet",
            "19-edo",
            "22-edo",
            "24-edo",
            "31-edo",
            "53-edo",
            "just",
            "pythagorean",
            "bohlen-pierce"
          ]
        },
        "cents": {
          "description": "Custom degrees in cents above the root: 0 first, ascending.",
          "type": "array",
          "minItems": 1,
          "maxItems": 128,
          "items": { "type": "number", "minimum": 0, "maximum": 9600 }
        },
        "period": {
          "description": "Custom period in cents: 1200 for an octave, about 1901.955 for a tritave.",
          "type": "number",
          "minimum": 1,
          "maximum": 9600
        },
        "root": {
          "description": "Tonic pitch class, C = 0, of root-anchored tunings; MIDI note 60 + root plays it at its 12-TET pitch from reference.",
          "type": "integer",
          "minimum": 0,
          "maximum": 11
        },
        "reference": {
          "description": "Frequency of A4 in Hz.",
          "type": "number",
          "minimum": 400,
          "maximum": 480
        }
      },
      "required": ["root", "reference"]
    },
    "Transport": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "bpm": { "type": "number", "minimum": 20, "maximum": 400 },
        "numerator": { "type": "integer", "minimum": 1, "maximum": 32 },
        "denominator": { "enum": [1, 2, 4, 8, 16] }
      },
      "required": ["bpm", "numerator", "denominator"]
    },
    "Modulation": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "shape": { "enum": ["sine", "triangle"] },
        "mode": { "enum": ["add", "replace"] },
        "rateHz": { "type": "number", "minimum": 0.01, "maximum": 40 },
        "depth": { "type": "number", "minimum": -1, "maximum": 1 },
        "beats": { "type": "number", "minimum": 0.0625, "maximum": 64 }
      },
      "required": ["shape", "mode", "rateHz", "depth"]
    },
    "MidiBinding": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "channel": { "type": "integer", "minimum": 1, "maximum": 16 },
        "cc": { "type": "integer", "minimum": 0, "maximum": 119 }
      },
      "required": ["channel", "cc"]
    },
    "Preset": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 128 },
        "values": {
          "type": "object",
          "maxProperties": 128,
          "propertyNames": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_-]{0,63}$",
            "not": { "enum": ["constructor", "prototype"] }
          },
          "additionalProperties": { "type": "number" },
          "minProperties": 1
        }
      },
      "required": ["name", "values"]
    },
    "AppearanceStyle": {
      "description": "Reusable visual values. Geometry, layer depth, bindings and content belong to each element.",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "color": { "$ref": "#/$defs/WidgetStyle/properties/color" },
        "background": { "$ref": "#/$defs/WidgetStyle/properties/background" },
        "accent": { "$ref": "#/$defs/WidgetStyle/properties/accent" },
        "borderColor": { "$ref": "#/$defs/WidgetStyle/properties/borderColor" },
        "fontFamily": { "$ref": "#/$defs/WidgetStyle/properties/fontFamily" },
        "fontSize": { "$ref": "#/$defs/WidgetStyle/properties/fontSize" },
        "fontWeight": { "$ref": "#/$defs/WidgetStyle/properties/fontWeight" },
        "letterSpacing": {
          "$ref": "#/$defs/WidgetStyle/properties/letterSpacing"
        },
        "textAlign": { "$ref": "#/$defs/WidgetStyle/properties/textAlign" },
        "borderWidth": { "$ref": "#/$defs/WidgetStyle/properties/borderWidth" },
        "borderRadius": {
          "$ref": "#/$defs/WidgetStyle/properties/borderRadius"
        },
        "opacity": { "$ref": "#/$defs/WidgetStyle/properties/opacity" }
      }
    },
    "ReusableStyle": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "name": { "type": "string", "minLength": 1, "maxLength": 128 },
        "kind": { "type": "string", "enum": ["text", "control"] },
        "values": { "$ref": "#/$defs/AppearanceStyle" }
      },
      "required": ["name", "kind", "values"]
    },
    "AudioConfiguration": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "channels": { "type": "integer", "minimum": 1, "maximum": 32 },
        "policy": { "enum": ["strict", "broadcast", "pad", "repeat"] },
        "firstChannel": { "type": "integer", "minimum": 1, "maximum": 32 },
        "routes": {
          "type": "array",
          "maxItems": 256,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "from": { "type": "integer", "minimum": 1, "maximum": 32 },
              "to": { "type": "integer", "minimum": 1, "maximum": 32 },
              "gain": { "type": "number", "minimum": -8, "maximum": 8 }
            },
            "required": ["from", "to", "gain"]
          }
        }
      }
    },
    "IconAppearance": {
      "type": "object",
      "additionalProperties": false,
      "description": "Optional portable SVG paints and stroke width. Missing values preserve bundled geometry defaults.",
      "properties": {
        "fill": { "$ref": "#/$defs/IconPaint" },
        "stroke": { "$ref": "#/$defs/IconPaint" },
        "strokeWidth": { "type": "number", "minimum": 0, "maximum": 4 }
      }
    },
    "IconPaint": {
      "type": "string",
      "pattern": "^(none|currentColor|#[0-9a-fA-F]{6})$"
    },
    "ResponsiveLayout": {
      "type": "object",
      "additionalProperties": false,
      "description": "Responsive viewport limits. Absent layout preserves fixed Frame scaling.",
      "properties": {
        "minWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "maxWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "minHeight": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "maxHeight": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        }
      }
    },
    "LayoutConstraints": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "horizontal": {
          "enum": ["start", "end", "center", "stretch", "scale"]
        },
        "vertical": { "enum": ["start", "end", "center", "stretch", "scale"] },
        "minWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "maxWidth": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "minHeight": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        },
        "maxHeight": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 8192
        }
      }
    }
  }
}
