use std::collections::HashSet;
use std::sync::OnceLock;

// 1. Define a global, static OnceLock to hold your HashSet
static SUPPORTED_LANGS: OnceLock<HashSet<&'static str>> = OnceLock::new();

pub fn supported_langs() -> &'static HashSet<&'static str> {
    SUPPORTED_LANGS.get_or_init(|| {
        HashSet::from([
            "ASharp_DotNet",
            "ASharp_Axiom",
            "A-0_System",
            "APlus",
            "APlusPlus",
            "ABAP",
            "ABC",
            "ABC_ALGOL",
            "ABLE",
            "ABSET",
            "ABSYS",
            "ACC",
            "Accent",
            "Ace_DASL",
            "ACL2",
            "ACT-III",
            "Action",
            "ActionScript",
            "Ada",
            "Adenine",
            "Agda",
            "Agilent_VEE",
            "Agora",
            "AIMMS",
            "Alef",
            "ALF",
            "ALGOL_58",
            "ALGOL_60",
            "ALGOL_68",
            "ALGOL_W",
            "Alice",
            "Alma-0",
            "AmbientTalk",
            "Amiga_E",
            "AMOS",
            "AMPL",
            "APL",
            "AppleScript",
            "Arc",
            "ARexx",
            "Argus",
            "AspectJ",
            "Assembly_language",
            "ATS",
            "Ateji_PX",
            "AutoHotkey",
            "Autocoder",
            "AutoIt",
            "AutoLISP_Visual_LISP",
            "Averest",
            "AWK",
            "Axum",
            "B",
            "Babbage",
            "Bash",
            "BASIC",
            "bc",
            "BCPL",
            "BeanShell",
            "Batch_Windows_Dos",
            "Bertrand",
            "BETA",
            "Bigwig",
            "Bistro",
            "BitC",
            "BLISS",
            "Blue",
            "Bon",
            "Boo",
            "Boomerang",
            "Bourne_shell",
            "bash",
            "ksh",
            "BREW",
            "BPEL",
            "C",
            "CMinusMinus",
            "CPlusPlus",
            "CSharp",
            "C_AL",
            "Cache_ObjectScript",
            "C_Shell",
            "Caml",
            "Candle",
            "Cayenne",
            "CDuce",
            "Cecil",
            "Cel",
            "Cesil",
            "Ceylon",
            "CFEngine",
            "CFML",
            "Cg",
            "Ch",
            "Chapel",
            "CHAIN",
            "Charity",
            "Charm",
            "Chef",
            "CHILL",
            "CHIP-8",
            "chomski",
            "ChucK",
            "CICS",
            "Cilk",
            "CL",
            "Claire",
            "Clarion",
            "Clean",
            "Clipper",
            "CLIST",
            "Clojure",
            "ClojureScript",
            "CLU",
            "CMS-2",
            "COBOL",
            "Cobra",
            "CODE",
            "CoffeeScript",
            "Cola",
            "ColdC",
            "ColdFusion",
            "COMAL",
            "Combined_Programming_Language",
            "COMIT",
            "Common_Intermediate_Language",
            "Common_Lisp",
            "COMPASS",
            "Component_Pascal",
            "Constraint_Handling_Rules",
            "Converge",
            "Cool",
            "Coq",
            "Coral_66",
            "Corn",
            "CorVision",
            "COWSEL",
            "CPL",
            "csh",
            "CSP",
            "Csound",
            "CUDA",
            "Curl",
            "Curry",
            "Cyclone",
            "Cython",
            "D",
            "DASL",
            "Dart",
            "DataFlex",
            "Datalog",
            "DATATRIEVE",
            "dBase",
            "dc",
            "DCL",
            "Deesel",
            "Delphi",
            "DinkC",
            "DIBOL",
            "Dog",
            "Draco",
            "DRAKON",
            "Dylan",
            "DYNAMO",
            "E",
            "ESharp",
            "Ease",
            "Easy_PL_I",
            "Easy_Programming_Language",
            "EASYTRIEVE_PLUS",
            "ECMAScript",
            "Edinburgh_IMP",
            "EGL",
            "Eiffel",
            "ELAN",
            "Elixir",
            "Elm",
            "Emacs_Lisp",
            "Emerald",
            "Epigram",
            "EPL",
            "Erlang",
            "es",
            "Escapade",
            "Escher",
            "ESPOL",
            "Esterel",
            "Etoys",
            "Euclid",
            "Euler",
            "Euphoria",
            "EusLisp_Robot_Programming_Language",
            "CMS_EXEC",
            "EXEC_2",
            "Executable_UML",
            "F",
            "FSharp",
            "Factor",
            "Falcon",
            "Fancy",
            "Fantom",
            "FAUST",
            "Felix",
            "Ferite",
            "FFP",
            "Fjolnir",
            "FL",
            "Flavors",
            "Flex",
            "FLOW-MATIC",
            "FOCAL",
            "FOCUS",
            "FOIL",
            "FORMAC",
            "AtFormula",
            "Forth",
            "Fortran",
            "Fortress",
            "FoxBase",
            "FoxPro",
            "FP",
            "FPr",
            "Franz_Lisp",
            "Frege",
            "F-Script",
            "FSProg",
            "G",
            "Google_Apps_Script",
            "Game_Maker_Language",
            "GameMonkey_Script",
            "GAMS",
            "GAP",
            "G-code",
            "Genie",
            "GDL",
            "Gibiane",
            "GJ",
            "GEORGE",
            "GLSL",
            "GNU_E",
            "GM",
            "Go",
            "GOAL",
            "Godel",
            "Godiva",
            "GOM_Good_Old_Mad",
            "Goo",
            "Gosu",
            "GOTRAN",
            "GPSS",
            "GraphTalk",
            "GRASS",
            "Groovy",
            "Hack_programming_language",
            "HAL_S",
            "Hamilton_C_shell",
            "Harbour",
            "Hartmann_pipelines",
            "Haskell",
            "Haxe",
            "High_Level_Assembly",
            "HLSL",
            "Hop",
            "Hope",
            "Hugo",
            "Hume",
            "HyperTalk",
            "IBM_Basic_assembly_language",
            "IBM_HAScript",
            "IBM_Informix-4GL",
            "IBM_RPG",
            "ICI",
            "Icon",
            "Id",
            "IDL",
            "Idris",
            "IMP",
            "Inform",
            "Io",
            "Ioke",
            "IPL",
            "IPTSCRAE",
            "ISLISP",
            "ISPF",
            "ISWIM",
            "J",
            "JSharp",
            "JPlusPlus",
            "JADE",
            "Jako",
            "JAL",
            "Janus",
            "JASS",
            "Java",
            "JavaScript",
            "JCL",
            "JEAN",
            "Join_Java",
            "JOSS",
            "Joule",
            "JOVIAL",
            "Joy",
            "JScript",
            "JScript_DotNet",
            "JavaFX_Script",
            "Julia",
            "Jython",
            "K",
            "Kaleidoscope",
            "Karel",
            "KarelPlusPlus",
            "KEE",
            "Kixtart",
            "KIF",
            "Kojo",
            "Kotlin",
            "KRC",
            "KRL",
            "KUKA",
            "KRYPTON",
            "L",
            "LSharp_DotNet",
            "LabVIEW",
            "Ladder",
            "Lagoona",
            "LANSA",
            "Lasso",
            "LaTeX",
            "Lava",
            "LC-3",
            "Leda",
            "Legoscript",
            "LIL",
            "LilyPond",
            "Limbo",
            "Limnor",
            "LINC",
            "Lingo",
            "Linoleum",
            "LIS",
            "LISA",
            "Lisaac",
            "Lisp",
            "Lite-C",
            "Lithe",
            "Little_b",
            "Logo",
            "Logtalk",
            "LPC",
            "LSE",
            "LSL",
            "LiveCode",
            "LiveScript",
            "Lua",
            "Lucid",
            "Lustre",
            "LYaPAS",
            "Lynx",
            "M2001",
            "M4",
            "Machine_code",
            "MAD",
            "MAD_I",
            "Magik",
            "Magma",
            "make",
            "Maple",
            "MAPPER",
            "MARK-IV",
            "Mary",
            "MASM_Microsoft_Assembly_x86",
            "Mathematica",
            "MATLAB",
            "Maxima",
            "Macsyma",
            "Max",
            "MaxScript",
            "Maya_MEL",
            "MDL",
            "Mercury",
            "Mesa",
            "Metacard",
            "Metafont",
            "MetaL",
            "Microcode",
            "MicroScript",
            "MIIS",
            "MillScript",
            "MIMIC",
            "Mirah",
            "Miranda",
            "MIVA_Script",
            "ML",
            "Moby",
            "Model_204",
            "Modelica",
            "Modula",
            "Modula-2",
            "Modula-3",
            "Mohol",
            "MOO",
            "Mortran",
            "Mouse",
            "MPD",
            "CIL",
            "MSL",
            "MUMPS",
            "NASM",
            "NATURAL",
            "Napier88",
            "Neko",
            "Nemerle",
            "nesC",
            "NESL",
            "NetDotData",
            "NetLogo",
            "NetRexx",
            "NewLISP",
            "NEWP",
            "Newspeak",
            "NewtonScript",
            "NGL",
            "Nial",
            "Nice",
            "Nickle",
            "Nim",
            "NPL",
            "Not_eXactly_C",
            "Not_Quite_C",
            "NSIS",
            "Nu",
            "NWScript",
            "NXT-G",
            "o_XML",
            "Oak",
            "Oberon",
            "Obix",
            "OBJ2",
            "Object_Lisp",
            "ObjectLOGO",
            "Object_REXX",
            "Object_Pascal",
            "Objective-C",
            "Objective-J",
            "Obliq",
            "Obol",
            "OCaml",
            "occam",
            "occam-pi",
            "Octave",
            "OmniMark",
            "Onyx",
            "Opa",
            "Opal",
            "OpenCL",
            "OpenEdge_ABL",
            "OPL",
            "OPS5",
            "OptimJ",
            "Orc",
            "ORCA_Modula-2",
            "Oriel",
            "Orwell",
            "Oxygene",
            "Oz",
            "PSharp",
            "ParaSail_programming_language",
            "PARI_GP",
            "Pascal",
            "Pawn",
            "PCASTL",
            "PCF",
            "PEARL",
            "PeopleCode",
            "Perl",
            "PDL",
            "PHP",
            "Phrogram",
            "Pico",
            "Picolisp",
            "Pict",
            "Pike",
            "PIKT",
            "PILOT",
            "Pipelines",
            "Pizza",
            "PL-11",
            "PL_0",
            "PL_B",
            "PL_C",
            "PL_I",
            "PL_M",
            "PL_P",
            "PL_SQL",
            "PL360",
            "PLANC",
            "Plankalkul",
            "Planner",
            "PLEX",
            "PLEXIL",
            "Plus",
            "POP-11",
            "PostScript",
            "PortablE",
            "Powerhouse",
            "PowerBuilder",
            "PowerShell",
            "PPL",
            "Processing",
            "ProcessingDotJs",
            "Prograph",
            "PROIV",
            "Prolog",
            "PROMAL",
            "Promela",
            "PROSE_modeling_language",
            "PROTEL",
            "ProvideX",
            "ProStarC",
            "Pure",
            "Python",
            "Q_equational_programming_language",
            "Q_programming_language_from_Kx_Systems",
            "Qalb",
            "QtScript",
            "QuakeC",
            "QPL",
            "R",
            "RPlusPlus",
            "Racket",
            "RAPID",
            "Rapira",
            "Ratfiv",
            "Ratfor",
            "rc",
            "REBOL",
            "Red",
            "Redcode",
            "REFAL",
            "Reia",
            "Revolution",
            "rex",
            "REXX",
            "Rlab",
            "RobotC",
            "ROOP",
            "RPG",
            "RPL",
            "RSL",
            "RTL_2",
            "Ruby",
            "RuneScript",
            "Rust",
            "S",
            "S2",
            "S3",
            "S-Lang",
            "S-PLUS",
            "SA-C",
            "SabreTalk",
            "SAIL",
            "SALSA",
            "SAM76",
            "SAS",
            "SASL",
            "Sather",
            "Sawzall",
            "SBL",
            "Scala",
            "Scheme",
            "Scilab",
            "Scratch",
            "Script_DotNet",
            "Sed",
            "Seed7",
            "Self",
            "SenseTalk",
            "SequenceL",
            "SETL",
            "Shift_Script",
            "SIMPOL",
            "SIGNAL",
            "SiMPLE",
            "SIMSCRIPT",
            "Simula",
            "Simulink",
            "SISAL",
            "SLIP",
            "SMALL",
            "Smalltalk",
            "Small_Basic",
            "SML",
            "Snap",
            "SNOBOL",
            "SPITBOL",
            "Snowball",
            "SOL",
            "Span",
            "SPARK",
            "Speedcode",
            "SPIN",
            "SP_k",
            "SPS",
            "Squeak",
            "Squirrel",
            "SR",
            "S_SL",
            "Stackless_Python",
            "Starlogo",
            "Strand",
            "Stata",
            "Stateflow",
            "Subtext",
            "SuperCollider",
            "SuperTalk",
            "Swift_Apple_programming_language",
            "Swift_parallel_scripting_language",
            "SYMPL",
            "SyncCharts",
            "SystemVerilog",
            "T",
            "TACL",
            "TACPOL",
            "TADS",
            "TAL",
            "Tcl",
            "Tea",
            "TECO",
            "TELCOMP",
            "TeX",
            "TEX",
            "TIE",
            "Timber",
            "TMG",
            "Tom",
            "TOM",
            "Topspeed",
            "TPU",
            "Trac",
            "TTM",
            "T-SQL",
            "TTCN",
            "Turing",
            "TUTOR",
            "TXL",
            "TypeScript",
            "Turbo_CPlusPlus",
            "Ubercode",
            "UCSD_Pascal",
            "Umple",
            "Unicon",
            "Uniface",
            "UNITY",
            "Unix_shell",
            "UnrealScript",
            "Vala",
            "VBA",
            "VBScript",
            "Verilog",
            "VHDL",
            "Visual_Basic",
            "Visual_Basic_DotNet",
            "Visual_DataFlex",
            "Visual_DialogScript",
            "Visual_Fortran",
            "Visual_FoxPro",
            "Visual_JPlusPlus",
            "Visual_JSharp",
            "Visual_Objects",
            "Visual_Prolog",
            "VSXu",
            "Vvvv",
            "WATFIV_WATFOR",
            "WebDNA",
            "WebQL",
            "Windows_PowerShell",
            "Winbatch",
            "Wolfram",
            "Wyvern",
            "XPlusPlus",
            "XSharp",
            "X10",
            "XBL",
            "XC",
            "XMOS_architecture",
            "xHarbour",
            "XL",
            "Xojo",
            "XOTcl",
            "XPL",
            "XPL0",
            "XQuery",
            "XSB",
            "XSLT",
            "XPath",
            "Xtend",
            "Yorick",
            "YQL",
            "Z_notation",
            "Zig",
            "Zeno",
            "ZOPL",
            "ZPL",
        ])
    })
}
