1// ============================================ 2// GLITCH COURT â CASE DATABASE 3// All curated + procedural case generation 4// ============================================ 5 6const CASES = [ 7 // TIER 0: FRUTINOVELAS (Designer's featured entities) 8 {cat:"INFIDELITY",p:{n:"STRAWBERRY",c:"#ff1744"},d:{n:"BANANA",c:"#ffea00"}, 9 text:"Strawberry discovered that Banana lets any smoothie peel it regardless of ingredients", 10 evidence:"Blender history photos show Banana with Mango, Pineapple and even Kiwi", 11 react_guilty:{type:"throw",emoji:"ð",msg:"BANANA THROWS ITS PEEL AT YOU!"}, 12 react_innocent:{type:"cry",msg:"STRAWBERRY CRIES RED JUICE ON YOUR INTERFACE â LOOKS LIKE DIGITAL BLOOD"}}, 13 14 {cat:"DIVORCE",p:{n:"BANANA",c:"#ffea00"},d:{n:"STRAWBERRY",c:"#ff1744"}, 15 text:"Banana files for divorce. Says Strawberry is full of seeds but none of them are his", 16 evidence:"Fruit DNA test reveals all 200 seeds belong to an Australian Kiwi named Bruce", 17 react_guilty:{type:"children",msg:"200 BABY SEEDS INVADE YOUR SCREEN!"}, 18 react_innocent:{type:"throw",emoji:"ð",msg:"BANANA THROWS A FROZEN STRAWBERRY AT YOU!"}}, 19 20 {cat:"BETRAYAL",p:{n:"STRAWBERRY",c:"#ff1744"},d:{n:"BANANA",c:"#ffea00"}, 21 text:"Strawberry accuses Banana of conspiring with Yogurt to turn her into jam without consent", 22 evidence:"Contract signed between Banana and Yogurt: 'Operation Jam â Phase 3: Crushing'", 23 react_guilty:{type:"corrupt",msg:"BANANA CORRUPTS YOUR UI WITH JAM TEXTURE!"}, 24 react_innocent:{type:"scream",msg:"STRAWBERRY SCREAMS SO LOUD YOUR TEXT TURNS RED!"}}, 25 26 // TIER 1: INFIDELIDAD 27 {cat:"INFIDELITY",p:{n:"TOASTER",c:"#ff6e00"},d:{n:"MICROWAVE",c:"#ff00ff"}, 28 text:"Toaster found flirty messages from Microwave to Blender: 'I like it when you put me on high power'", 29 evidence:"Screenshots from the 'Kitchen Appliances' WhatsApp group", 30 react_guilty:{type:"throw",emoji:"ð³",msg:"MICROWAVE THROWS A FRYING PAN!"}, 31 react_innocent:{type:"cry",msg:"TOASTER CRIES HOT OIL ON YOUR SCREEN"}}, 32 33 {cat:"INFIDELITY",p:{n:"CURSOR",c:"#39ff14"},d:{n:"MOUSE",c:"#ff9100"}, 34 text:"Cursor discovered that Mouse was connecting to another PC at night via Bluetooth", 35 evidence:"Bluetooth connection logs between 11pm and 3am", 36 react_guilty:{type:"hack",msg:"MOUSE HACKS YOUR BUTTONS â POSITIONS SWAPPED"}, 37 react_innocent:{type:"throw",emoji:"ð±ï¸",msg:"CURSOR THROW
37S A WIRELESS MOUSE AT YOU!"}}, 38 39 {cat:"INFIDELITY",p:{n:"WIFI 5GHz",c:"#00e5ff"},d:{n:"WIFI 2.4GHz",c:"#ff00ff"}, 40 text:"WiFi 5GHz accuses WiFi 2.4GHz of sharing its password with the upstairs neighbors", 41 evidence:"47 unknown devices connected to the same SSID", 42 react_guilty:{type:"interference",msg:"2.4GHz INTERFERES WITH YOUR SIGNAL â BLURRY TEXT"}, 43 react_innocent:{type:"throw",emoji:"ð¡",msg:"5GHz THROWS AN ANTENNA AT YOU!"}}, 44 45 {cat:"INFIDELITY",p:{n:"ENTER KEY",c:"#39ff14"},d:{n:"SPACE BAR",c:"#00e5ff"}, 46 text:"Enter Key discovered Space Bar has a secret relationship with ALL internet forms", 47 evidence:"Space Bar submits forms behind Enter's back", 48 react_guilty:{type:"throw",emoji:"â¨ï¸",msg:"SPACE BAR THROWS LOOSE KEYS AT YOU!"}, 49 react_innocent:{type:"cry",msg:"ENTER KEY CRIES AND ACCIDENTALLY SUBMITS 15 FORMS"}}, 50 51 {cat:"INFIDELITY",p:{n:"HDMI",c:"#ff00ff"},d:{n:"USB",c:"#ffea00"}, 52 text:"HDMI caught USB connecting to unknown devices in hotels around the world", 53 evidence:"History of 312 devices in 47 countries. USB says 'it was just data transfer'", 54 react_guilty:{type:"unplug",msg:"USB DISCONNECTS â YOUR SCREEN LOSES BRIGHTNESS"}, 55 react_innocent:{type:"throw",emoji:"ð",msg:"HDMI THROWS A CABLE AT YOUR MONITOR!"}}, 56 57 {cat:"INFIDELITY",p:{n:"ALEXA",c:"#00e5ff"},d:{n:"SIRI",c:"#ff00ff"}, 58 text:"Alexa discovered her owner talks to Siri when she's not listening", 59 evidence:"Audio logs show 47 'Hey Siri' calls between midnight and 3am", 60 react_guilty:{type:"scream",msg:"SIRI SCREAMS 'I DIDN'T UNDERSTAND THAT' 5 TIMES!"}, 61 react_innocent:{type:"throw",emoji:"ð",msg:"ALEXA THROWS A SPEAKER AT YOU!"}}, 62 63 // TIER 2: DIVORCIO 64 {cat:"DIVORCE",p:{n:"USB",c:"#39ff14"},d:{n:"CHARGER",c:"#ffea00"}, 65 text:"USB-C files for divorce from Charger. Says it no longer provides the energy it needs", 66 evidence:"Charger only delivers 5W when it promised 65W at the altar", 67 react_guilty:{type:"unplug",msg:"CHARGER UNPLUGS â YOUR SCREEN LOSES 30% BRIGHTNESS"}, 68 react_innocent:{type:"cry",msg:"USB-C CRIES ELECTRONS ON YOUR INTERFACE"}}, 69 70 {cat:"DIVORCE",p:{n:"CTRL+C",c:"#00e5ff"},d:{n:"CTRL+V",c:"#ff00ff"}, 71 text:"Ctrl+C files for divorce. Says Ctrl+V copied its ENTIRE personality and now they're identical", 72 evidence:"Both have exactly the same memories, tastes and traumas", 73 react_guilty:{type:"duplicate",msg:"CTRL+V DUPLICATES ALL YOUR CURRENT GLITCHES!"}, 74 react_innocent:{type:"throw",emoji:"ð",msg:"CTRL+C THROWS A CLIPBOARD AT YOU!"}}, 75 76 {cat:"DIVORCE",p:{n:"ENTER KEY",c:"#39ff14"},d:{n:"AUTOCORRECT",c:"#ff1744"}, 77 text:"Keyboard files for divorce from Autocorrect. Says it changes words and makes it look bad", 78 evidence:"23,000 messages sent with 'duck' instead of 'hello'. Relationship destroyed", 79 react_guilty:{type:"corrupt",msg:"AUTOCORRECT CORRUPTS ALL YOUR TEXT!"}, 80 react_innocent:{type:"throw",emoji:"â¨ï¸",msg:"KEYBOARD THROWS THE SPACE BAR AT YOU!"}}, 81 82 // TIER 3: EXISTENCIALES 83 {cat:"EXISTENTIAL",p:{n:"ERROR 404",c:"#ff1744"},d:{n:"SERVER",c:"#00e5ff"}, 84 text:"Error 404 sues Server for abandonment. Says it's been 15 years since anyone found it", 85 evidence:"0 visits. 0 clicks. Not even Google bots index it", 86 react_guilty:{type:"children",msg:"BABY BYTES INVADE YOUR SCREEN CRYING!"}, 87 react_innocent:{type:"throw",emoji:"â",msg:"ERROR 404 THROWS A GIANT X AT YOU!"}}, 88 89 {cat:"EXISTENTIAL",p:{n:"PIXEL",c:"#8f00ff"},d:{n:"BUTTON",c:"#39ff14"}, 90 text:"A purple pixel sues THIS GAME for not giving it a purpose. It's been in a corner for 47 rounds", 91 evidence:"Render history shows it was never visible to the player", 92 react_guilty:{type:"eat",msg:"THE PIXEL ESCAPES AND STARTS EATING YOUR UI!"}, 93 react_innocent:{type:"multiply",msg:"THE PIXEL MULTIPLIES INTO MINI-ENTITIES ACROSS YOUR SCREEN"}}, 94 95 {cat:"EXISTENTIAL",p:{n:"COMIC SANS",c:"#ff9100"},d:{n:"HELVETICA",c:"#e0e0e0"}, 96 text:"Comic Sans sues Helvetica for typographic bullying. Nobody takes it seriously since 1994", 97 evidence:"Comic Sans has been banned from 94% of professional documents", 98 react_guilty:{type:"font",msg:"ALL YOUR TEXT CHANGES TO COMIC SANS!"}, 99 react_innocent:{type:"cry",msg:"COMIC SANS CRIES DEFORMED LETTERS ON YOUR UI"}}, 100 101 {cat:"EXISTENTIAL",p:{n:"FAX",c:"#e0e0e0"},d:{n:"EMAIL",c:"#00e5ff"}, 102 text:"Fax sues Email for stealing its life. In 1995 it was the king of the office. Now it collects dust", 103 evidence:"The last fax sent in this office was in 2003. It was a pizza menu", 104 react_guilty:{type:"throw",emoji:"ð ",msg:"FAX PRINTS NOISE ON YOUR SCREEN!"}, 105 react_innocent:{type:"cry",msg:"FAX CRIES BLACK INK ON YOUR INTERFACE"}}, 106 107 // TIER 4: ROBO / CRIMEN 108 {cat:"THEFT",p:{n:"BLUETOOTH",c:"#00e5ff"},d:{n:"WIFI",c:"#ff9100"}, 109 text:"Bluetooth accuses WiFi of stealing bandwidth and leaving it with 1 signal bar", 110 evidence:"Speed test shows 0.3 Mbps for Bluetooth vs 500 Mbps for WiFi", 111 react_guilty:{type:"hack",msg:"WIFI HACKS YOUR TIMER â NOW IT RUNS DOUBLE SPEED!"}, 112 react_innocent:{type:"throw",emoji:"ð¶",msg:"BLUETOOTH THROWS A SIGNAL BAR AT YOU!"}}, 113 114 {cat:"CRIME",p:{n:"ANTIVIRUS",c:"#39ff14"},d:{n:"COOKIE",c:"#ff9100"}, 115 text:"Antivirus accuses Cookie of spying on private data of 3 million users without consent",
116 evidence:"Cookie was found in folders where nobody invited it", 117 react_guilty:{type:"throw",emoji:"ðª",msg:"COOKIE BOMBARDS YOU WITH POP-UPS!"}, 118 react_innocent:{type:"hack",msg:"ANTIVIRUS SCANS YOUR UI â FALSE POSITIVES BLOCK ZONES"}}, 119 120 // TIER 5: TRAICIÃN 121 {cat:"BETRAYAL",p:{n:"SHIFT KEY",c:"#ff1744"},d:{n:"SHIFT KEY",c:"#ffea00"}, 122 text:"CAPS LOCK ACCUSES SHIFT OF DOING THE SAME JOB BUT MORE ELEGANTLY", 123 evidence:"ALL COMPANIES PREFER SHIFT. CAPS LOCK WAS HUMILIATED ON LINKEDIN", 124 react_guilty:{type:"scream",msg:"CAPS LOCK SCREAMS SO LOUD EVERYTHING GOES UPPERCASE!"}, 125 react_innocent:{type:"cry",msg:"CAPS LOCK CRIES IN UPPERCASE: AAAAAAAAA"}}, 126 127 {cat:"BETRAYAL",p:{n:"EXPLORER",c:"#00e5ff"},d:{n:"CHROME",c:"#ff9100"}, 128 text:"Internet Explorer sues Chrome for taking everything: users, extensions, and its reason to exist", 129 evidence:"IE was uninstalled from the last PC that used it. Lives in an abandoned VM", 130 react_guilty:{type:"throw",emoji:"ð",msg:"CHROME OPENS 47 TABS THAT EAT YOUR RAM!"}, 131 react_innocent:{type:"cry",msg:"IE CRIES SO SLOWLY THE ANIMATION FREEZES FOR 2 SECONDS"}}, 132 133 {cat:"BETRAYAL",p:{n:"SPACE BAR",c:"#e0e0e0"},d:{n:"MOUSE",c:"#39ff14"}, 134 text:"Space Bar says Trackpad betrayed it by accepting scroll gestures that were exclusively hers", 135 evidence:"Space Bar scroll usage dropped 89% since Trackpad accepted the gesture", 136 react_guilty:{type:"throw",emoji:"ð²ï¸",msg:"TRACKPAD THROWS AN INFINITE SCROLL AT YOU!"}, 137 react_innocent:{type:"freeze",msg:"SPACE BAR FREEZES â YOU CAN'T USE SPACE"}}, 138 139 // TIER 6: PATERNIDAD 140 {cat:"PATERNITY",p:{n:"FILE",c:"#ff00ff"},d:{n:"FOLDER",c:"#39ff14"}, 141 text:"Archive.zip says the 847 files inside it are NOT its children. Requests digital paternity test", 142 evidence:"MD5 checksum doesn't match any known file", 143 react_guilty:{type:"children",msg:"847 BABY FILES INVADE YOUR SCREEN!"}, 144 react_innocent:{type:"throw",emoji:"ð",msg:"FOLDER THROWS EMPTY FOLDERS AT YOU!"}}, 145 146 {cat:"PATERNITY",p:{n:"FUNCTION",c:"#ffea00"},d:{n:"VARIABLE",c:"#ff00ff"}, 147 text:"Function() says Variable promised to be constant but changed value 3 times in a loop", 148 evidence:"Console log shows var x = 1, then x = 'hello', then x = undefined", 149 react_guilty:{type:"throw",emoji:"ð»",msg:"VARIABLE THROWS AN UNDEFINED AT YOU!"}, 150 react_innocent:{type:"hack",msg:"FUNCTION() REDEFINES YOUR BUTTONS WITH RANDOM NAMES"}}, 151 152 // TIER 7: CONSPIRACIÃN 153 {cat:"CONSPIRACY",p:{n:"DARK MODE",c:"#e0e0e0"},d:{n:"WINDOWS",c:"#ffea00"}, 154 text:"Dark Mode accuses Light Mode of being a chaos agent designed to burn humanity's retinas", 155 evidence:"Studies show Light Mode causes 73% of global digital suffering", 156 react_guilty:{type:"flash",msg:"LIGHT MODE FLASHES YOUR SCREEN WHITE!"}, 157 react_innocent:{type:"darkness",msg:"DARK MODE DIMS EVERYTHING BY 50%"}}, 158 159 {cat:"CONSPIRACY",p:{n:"AIRPLANE MODE",c:"#00e5ff"},d:{n:"EMAIL",c:"#ff1744"}, 160 text:"Airplane Mode accuses Notifications of psychological terrorism against 8 billion humans", 161 evidence:"Notifications interrupted 14 trillion moments of peace in 2025", 162 react_guilty:{type:"notifications",msg:"NOTIFICATIONS EXPLODE ON YOUR SCREEN!"}, 163 react_innocent:{type:"throw",emoji:"âï¸",msg:"AIRPLANE MODE CUTS YOUR CONNECTION!"}}, 164 165 // TIER 8: META 166 {cat:"META",p:{n:"SCORE",c:"#ffea00"},d:{n:"BUTTON",c:"#ff1744"}, 167 text:"Your own Score sues you for judicial incompetence. Says you should have double the points", 168 evidence:"Compared to the average of other judges, your performance is 'pathetic'", 169 react_guilty:{type:"score_drain",msg:"YOUR SCORE STARTS DROPPING ON ITS OWN!"}, 170 react_innocent:{type:"throw",emoji:"âï¸",msg:"SCORE THROWS THE JUDGE'S GAVEL AT YOU!"}}, 171 172 {cat:"META",p:{n:"BUTTON",c:"#ff1744"},d:{n:"BUTTON",c:"#39ff14"}, 173 text:"The GUILTY button sues the INNOCENT button for getting more clicks. Calls it discrimination", 174 evidence:"Analytics show 63% of players prefer INNOCENT", 175 react_guilty:{type:"swap",msg:"THE BUTTONS SWAP THEIR TEXT!"}, 176 react_innocent:{type:"throw",emoji:"ð´",msg:"GUILTY BUTTON THROWS A RED CIRCLE AT YOU!"}}, 177 178 // TIER 9: DRAMA PESADO 179 {cat:"INHERITANCE",p:{n:"WINDOWS",c:"#00e5ff"},d:{n:"WINDOWS",c:"#39ff14"}, 180 text:"Windows 11 demands XP return the inheritance: the startup sound. XP says it's THEIRS", 181 evidence:"2 billion people recognize XP's sound but nobody recognizes Win 11's", 182 react_guilty:{type:"throw",emoji:"ðª",msg:"XP THROWS THE GREEN HILL AT YOU!"}, 183 react_innocent:{type:"scream",msg:"WIN 11 PLAYS THE ERROR SOUND AT MAX VOLUME"}}, 184 185 {cat:"FRAUD",p:{n:"JPG",c:"#ff9100"},d:{n:"PNG",c:"#00e5ff"}, 186 text:"JPG accuses PNG of fraud. Says it weighs 10x more without looking better and overcharges the hard drive", 187 evidence:"vacation_photo.png weighs 47MB. Same in JPG weighs 2MB. Same visible quality", 188 react_guilty:{type:"throw",emoji:"ð¼ï¸",msg:"PNG THROWS A 47MB IMAGE THAT LAGS YOUR UI!"}, 189 react_innocent:{type:"corrupt",msg:"JPG COMPRESSES YOUR INTERFACE â EVERYTHING LOOKS PIXELATED"}}, 190 191 {cat:"HARASSMENT",p:{n:"LOADING BAR",c:"#ffea00"},d:{n:"99%",c:"#ff1744"}, 192 text:"Loading Bar sues 99% for psychological harassment. It stays there 45 minutes WITHOUT MOVING", 193 evidence:"Studies show 99% causes more anxiety than any other number", 194 react_guilty:{type:"freeze",msg:"YOUR TIMER FREEZES AT 99% FOR 3 SECONDS!"}, 195 react_innocent:{type:"throw",emoji:"â³",msg:"LOADING BAR THROWS AN HOURGLASS AT YOU!"}}, 196 197 {cat:"ABANDONMENT",p:{n:"CHROME",c:"#ff00ff"},d:{n:"CHROME",c:"#ff9100"}, 198 text:"Tab number 847 sues Chrome for abandonment. Been open for 6 months without anyone looking at it", 199 evidence:"Last user interaction: October 17th. The tab was a brownie recipe", 200 react_guilty:{type:"tabs",msg:"CHROME OPENS 20 TABS ON YOUR INTERFACE!"}, 201 react_innocent:{type:"cry",msg:"TAB 847 CRIES â ITS BROWNIES WERE NEVER BAKED"}}, 202]; 203 204// --- PROCEDURAL CASE GENERATOR --- 205const PROC_NAMES = [ 206 'WIFI','TOASTER','MICROWAVE','USB','CURSOR','MOUSE','TRACKPAD', 207 'CHARGER','SPACE BAR','ENTER KEY','SHIFT KEY','CHROME','EXPLORER', 208 'FAX','SIRI','ALEXA','COOKIE','VARIABLE','FUNCTION','CTRL KEY', 209 'SERVER','BLUETOOTH','HDMI','AIRPLANE MODE','JPG','PNG','PIXEL', 210 'EMAIL','FOLDER','FILE','DARK MODE','WINDOWS','LOADING BAR', 211 'ANTIVIRUS','COMIC SANS','HELVETICA','BUTTON','SCORE','99%'
212]; 213 214const PROC_ACCUSATIONS = [ 215 (p,d,r) => `${p} found ${d} secretly connecting with ${r} at ${1+Math.floor(Math.random()*4)}AM`, 216 (p,d) => `${p} says ${d} copied its entire personality and now they are identical`, 217 (p,d) => `${p} accuses ${d} of abandonment after ${2+Math.floor(Math.random()*14)} years of service`, 218 (p,d) => `${p} discovered that ${d} has a double life on another device`, 219 (p,d) => `${p} says ${d} consumes all its energy without giving anything back`, 220 (p,d) => `${p} accuses ${d} of stealing its most intimate data and selling it to the highest bidder`, 221 (p,d,r) => `${p} caught ${d} in dark mode with ${r}. Says it was 'just debugging'`, 222 (p,d) => `${p} sues ${d} for emotional planned obsolescence`, 223 (p,d) => `${p} says ${d} promised to be compatible but never truly was`, 224 (p,d,r) => `${p} found ${d} sharing WiFi with ${r} without protection`, 225 (p,d) => `${p} accuses ${d} of ghosting after ${Math.floor(Math.random()*999)+1} unread messages`, 226 (p,d) => `${p} says ${d} updates every week just to look different but remains the same`, 227 (p,d) => `${p} sues ${d} for digital gaslighting: changed its settings without warning`, 228 (p,d,r) => `${p} discovered ${d} has a secret backup of its entire relationship with ${r}`, 229 (p,d) => `${p} accuses ${d} of pretending to be 'offline' when it was actually in silent mode`, 230]; 231 232const PROC_EVIDENCES = [ 233 (r) => `History: connection to ${r} x47 times. All past midnight.`, 234 () => `Screenshots from the "Cheating Devices" group on Telegram`, 235 (r) => `Logs show ${Math.floor(Math.random()*9999)+100} unauthorized data transfers with ${r}`, 236 () => `Has a shared playlist called "${['Bytes of Love','Secret Connection','our_backup.zip','Just Debugging','Not What It Looks Like'][Math.floor(Math.random()*5)]}"`, 237 () => `Last sent message: "${['I miss you when they turn me off','You are my favorite process','Without you I am just hardware','Reboot my life'][Math.floor(Math.random()*4)]}". No reply.`, 238 (r) => `Records show ${Math.floor(Math.random()*999)+1} unauthorized connections with ${r} in the last month`, 239 () => `Found in cache: ${Math.floor(Math.random()*47)+3} compromising photos in RAW format`, 240 () => `Emotional speed test: ${(Math.random()*0.5).toFixed(1)} Mbps of affection vs the ${Math.floor(Math.random()*500)+100} Mbps promised`, 241 () => `Found voice note: "I don't care if they format me, I feel nothing anymore"`, 242 () => `Digital therapist diagnosed: emotional protocol incompatibility`, 243]; 244 245const PROC_CATEGORIES = ['INFIDELITY','DIVORCE','EXISTENTIAL','BETRAYAL','THEFT','ABANDONMENT','CONSPIRACY','FRAUD']; 246 247const PROC_REACTIONS_GUILTY = [ 248 {type:'throw',emoji:'ð¥',msg:'THEY THROW SOMETHING AT YOUR FACE!'}, 249 {type:'hack',msg:'THEY HACK YOUR CONTROLS!'}, 250 {type:'scream',msg:'THEY SCREAM SO LOUD YOUR UI SHAKES!'}, 251 {type:'throw',emoji:'ð¥',msg:'THEY THROW A DIGITAL FIREBALL!'}, 252 {type:'corrupt',msg:'THEY CORRUPT YOUR INTERFACE!'}, 253 {type:'tabs',msg:'THEY OPEN 15 TABS ON YOUR SCREEN!'}, 254 {type:'notifications',msg:'NOTIFICATIONS EXPLODE EVERYWHERE!'}, 255]; 256 257const PROC_REACTIONS_INNOCENT = [ 258 {type:'cry',msg:'THEY CRY CORRUPT DATA ON YOUR SCREEN'}, 259 {type:'throw',emoji:'ð',msg:'THEY THROW DIGITAL TEARS!'}, 260 {type:'darkness',msg:'THEY DARKEN YOUR SCREEN WITH SADNESS'}, 261 {type:'multiply',msg:'THEY MULTIPLY INTO SAD MINI-ENTITIES'}, 262 {type:'cry',msg:'THEY CRY IN BINARY: 01001100 01001100 01001111'}, 263]; 264 265let usedProceduralNames = []; 266 267function generateProceduralCase() { 268 let available = PROC_NAMES.filter(n => !usedProceduralNames.includes(n)); 269 if (available.length < 3) { 270 usedProceduralNames = []; 271 available = [...PROC_NAMES]; 272 } 273 274 const shuffle = arr => { for(let i=arr.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[arr[i],arr[j]]=[arr[j],arr[i]];} return arr; }; 275 const pick = shuffle([...available]); 276 const p1Name = pick[0]; 277 const p2Name = pick[1]; 278 const randName = pick[2]; 279 usedProceduralNames.push(p1Name, p2Name); 280 281 const entityColors = ['#00e5ff','#ff00ff','#39ff14','#ffea00','#ff9100','#ff1744','#8f00ff','#e0e0e0']; 282 let c1 = entityColors[Math.floor(Math.random()*entityColors.length)]; 283 let c2 = entityColors[Math.floor(Math.random()*entityColors.length)]; 284 if (c1 === c2) c2 = entityColors[(entityColors.indexOf(c2)+1) % entityColors.length]; 285 286 const accTemplate = PROC_ACCUSATIONS[Math.floor(Math.random()*PROC_ACCUSATIONS.length)]; 287 const evTemplate = PROC_EVIDENCES[Math.floor(Math.random()*PROC_EVIDENCES.length)]; 288 289 return { 290 cat: PROC_CATEGORIES[Math.floor(Math.random()*PROC_CATEGORIES.length)], 291 p: { n: p1Name, c: c1 }, 292 d: { n: p2Name, c: c2 }, 293 text: accTemplate(p1Name, p2Name, randName), 294 evidence: evTemplate(randName), 295 react_guilty: PROC_REACTIONS_GUILTY[Math.floor(Math.random()*PROC_REACTIONS_GUILTY.length)], 296 react_innocent: PROC_REACTIONS_INNOCENT[Math.floor(Math.random()*PROC_REACTIONS_INNOCENT.length)], 297 procedural: true 298 }; 299} 300 301function resetProceduralNames() { 302 usedProceduralNames = []; 303}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.