diff --git a/assets/js/system-core.js b/assets/js/system-core.js
index 80a919c..3ce4e96 100644
--- a/assets/js/system-core.js
+++ b/assets/js/system-core.js
@@ -88,24 +88,25 @@
}
}
- window.openOperationModal = (opId) => {
- const uc = window.globalIntel ? window.globalIntel.unitcommander : null;
- if (!uc || !uc.campaigns) return;
- const op = uc.campaigns.find((c) => c.id === opId);
- if (!op) return;
-
- const modal = document.getElementById('operation-modal');
- if (!modal) return;
-
- const img = document.getElementById('modal-op-image');
+ function updateModalContent(op) {
const title = document.getElementById('modal-op-title');
const date = document.getElementById('modal-op-date');
const brief = document.getElementById('modal-op-brief');
const map = document.getElementById('modal-op-map');
+ const img = document.getElementById('modal-op-image');
if (title) title.innerText = op.campaignName;
- if (date)
- date.innerText = `COMMENCED: ${new Date(op.created_at).toLocaleDateString('en-GB', { day: '2-digit', month: 'long', year: 'numeric' }).toUpperCase()}`;
+ if (date) {
+ const formattedDate = new Date(op.created_at).toLocaleDateString(
+ 'en-GB',
+ {
+ day: '2-digit',
+ month: 'long',
+ year: 'numeric',
+ },
+ );
+ date.innerText = `COMMENCED: ${formattedDate.toUpperCase()}`;
+ }
if (brief) brief.innerText = op.brief || 'NO_DATA_RECOVERED';
if (map) map.innerText = `THEATER: ${op.map || 'CLASSIFIED'}`;
@@ -117,6 +118,18 @@
img.classList.add('hidden');
}
}
+ }
+
+ window.openOperationModal = (opId) => {
+ const uc = window.globalIntel ? window.globalIntel.unitcommander : null;
+ if (!uc || !uc.campaigns) return;
+ const op = uc.campaigns.find((c) => c.id === opId);
+ if (!op) return;
+
+ const modal = document.getElementById('operation-modal');
+ if (!modal) return;
+
+ updateModalContent(op);
modal.classList.remove('hidden');
document.body.style.overflow = 'hidden';
@@ -132,33 +145,41 @@
if (e.key === 'Escape') window.closeOperationModal();
});
- function updateBattlemetricsUI() {
+ function updateStatusIndicator(source, maxCapacity) {
const statusText = document.getElementById('status-text');
const statusIndicator = document.getElementById('status-indicator');
const playerCount = document.getElementById('player-count');
- const source = window.globalIntel ? window.globalIntel.arma : null;
- const maxCapacity = source ? source.maxPlayers || 40 : 40;
+ if (!statusText) return;
- if (statusText) {
- if (source && source.status === 'online') {
- statusText.innerText = 'STATION_ACTIVE';
- statusText.className =
- 'text-[8px] font-black text-mod-green tracking-widest uppercase font-mono';
- if (statusIndicator)
- statusIndicator.className = `w-1.5 h-1.5 bg-green-500 rounded-full animate-pulse shadow-[0_0_8px_rgba(34,197,94,0.4)]`;
- if (playerCount)
- playerCount.innerText = `${source.players}/${maxCapacity} DEPLOYED`;
- } else {
- statusText.innerText = 'LINK_SEVERED';
- statusText.className =
- 'text-[8px] font-black text-red-600 tracking-widest uppercase font-mono';
- if (statusIndicator)
- statusIndicator.className =
- 'w-1.5 h-1.5 bg-red-600 rounded-full opacity-40';
- if (playerCount) playerCount.innerText = 'OFFLINE';
+ if (source && source.status === 'online') {
+ statusText.innerText = 'STATION_ACTIVE';
+ statusText.className =
+ 'text-[8px] font-black text-mod-green tracking-widest uppercase font-mono';
+ if (statusIndicator) {
+ statusIndicator.className =
+ 'w-1.5 h-1.5 bg-green-500 rounded-full animate-pulse shadow-[0_0_8px_rgba(34,197,94,0.4)]';
+ }
+ if (playerCount) {
+ playerCount.innerText = `${source.players}/${maxCapacity} DEPLOYED`;
+ }
+ } else {
+ statusText.innerText = 'LINK_SEVERED';
+ statusText.className =
+ 'text-[8px] font-black text-red-600 tracking-widest uppercase font-mono';
+ if (statusIndicator) {
+ statusIndicator.className =
+ 'w-1.5 h-1.5 bg-red-600 rounded-full opacity-40';
}
+ if (playerCount) playerCount.innerText = 'OFFLINE';
}
+ }
+
+ function updateBattlemetricsUI() {
+ const source = window.globalIntel ? window.globalIntel.arma : null;
+ const maxCapacity = source ? source.maxPlayers || 40 : 40;
+
+ updateStatusIndicator(source, maxCapacity);
const containers = document.querySelectorAll('#battlemetrics-graph');
if (containers.length > 0) {
@@ -188,17 +209,36 @@
}
}
+ function getGraphData(data, startTime, safeMax, height, width, timeRange) {
+ const points = data
+ .map((d) => ({
+ v: d.attributes.value === 255 ? 0 : d.attributes.value,
+ t: d.attributes.timestamp,
+ }))
+ .filter((p) => p.v < 500 && new Date(p.t).getTime() >= startTime);
+
+ points.sort((a, b) => new Date(a.t) - new Date(b.t));
+
+ const getX = (t) => {
+ if (timeRange === 0) return 0;
+ const x = ((new Date(t).getTime() - startTime) / timeRange) * width;
+ return Math.max(0, Math.min(width, x));
+ };
+
+ const getY = (v) => {
+ const y = height - 4 - (v / safeMax) * (height - 8);
+ return Math.max(2, Math.min(height - 2, y + 2));
+ };
+
+ return { points, getX, getY };
+ }
+
function renderBattlemetricsGraph(data, container, maxVal = 40) {
if (!container) return;
const width = container.clientWidth;
const height = container.clientHeight || 100;
- const safeMax = Math.max(maxVal, 10);
-
- if (width === 0) {
- // Avoid infinite recursion if container is hidden
- return;
- }
+ if (width === 0) return;
const range = window.currentBattlemetricsRange || 'today';
const nowTime = Date.now();
@@ -209,43 +249,24 @@
? 7 * 24 * 3600000
: 24 * 3600000;
const startTime = nowTime - lookback;
- const endTime = nowTime;
- const timeRange = endTime - startTime;
-
- const getX = (t) => {
- if (timeRange === 0) return 0;
- const x = ((new Date(t).getTime() - startTime) / timeRange) * width;
- return Math.max(0, Math.min(width, x));
- };
-
- const getY = (v) => {
- const y = height - 4 - (v / safeMax) * (height - 8);
- return Math.max(2, Math.min(height - 2, y + 2));
- };
+ const timeRange = nowTime - startTime;
+ const safeMax = Math.max(maxVal, 10);
- let points = [];
- if (data && data.length > 0) {
- points = data
- .map((d) => ({
- v: d.attributes.value === 255 ? 0 : d.attributes.value,
- t: d.attributes.timestamp,
- }))
- .filter((p) => p.v < 500 && new Date(p.t).getTime() >= startTime);
-
- points.sort((a, b) => new Date(a.t) - new Date(b.t));
- }
+ const { points, getX, getY } = getGraphData(
+ data,
+ startTime,
+ safeMax,
+ height,
+ width,
+ timeRange,
+ );
if (points.length === 0) {
- container.innerHTML = `
No_Telemetry_Detected
`;
+ container.innerHTML =
+ 'No_Telemetry_Detected
';
return;
}
- const firstX = getX(points[0].t);
- const firstY = getY(points[0].v);
-
- let pathData = `M ${firstX} ${firstY}`;
- let areaPath = `M ${firstX} ${height} L ${firstX} ${firstY}`;
-
const baselineY = getY(0);
const maxGap =
range === 'month'
@@ -254,32 +275,29 @@
? 3 * 3600000
: 65 * 60000;
+ let pathData = `M ${getX(points[0].t)} ${getY(points[0].v)}`;
+ let areaPath = `M ${getX(points[0].t)} ${height} L ${getX(points[0].t)} ${getY(points[0].v)}`;
+
points.forEach((p, index) => {
+ if (index === 0) return;
const curX = getX(p.t);
const curY = getY(p.v);
+ const prevP = points[index - 1];
- if (index > 0) {
- const prevP = points[index - 1];
- const timeDiff = new Date(p.t).getTime() - new Date(prevP.t).getTime();
-
- if (timeDiff > maxGap) {
- pathData += ` L ${getX(prevP.t)} ${baselineY} M ${getX(p.t)} ${baselineY} L ${curX} ${curY}`;
- areaPath += ` L ${getX(prevP.t)} ${baselineY} L ${getX(p.t)} ${baselineY} L ${curX} ${curY}`;
- } else {
- pathData += ` L ${curX} ${curY}`;
- areaPath += ` L ${curX} ${curY}`;
- }
+ if (new Date(p.t).getTime() - new Date(prevP.t).getTime() > maxGap) {
+ pathData += ` L ${getX(prevP.t)} ${baselineY} M ${getX(p.t)} ${baselineY} L ${curX} ${curY}`;
+ areaPath += ` L ${getX(prevP.t)} ${baselineY} L ${getX(p.t)} ${baselineY} L ${curX} ${curY}`;
+ } else {
+ pathData += ` L ${curX} ${curY}`;
+ areaPath += ` L ${curX} ${curY}`;
}
});
const lastP = points[points.length - 1];
- const lastY = getY(lastP.v);
-
- if (endTime - new Date(lastP.t).getTime() > 10 * 60000) {
- pathData += ` L ${width} ${lastY}`;
- areaPath += ` L ${width} ${lastY}`;
+ if (nowTime - new Date(lastP.t).getTime() > 10 * 60000) {
+ pathData += ` L ${width} ${getY(lastP.v)}`;
+ areaPath += ` L ${width} ${getY(lastP.v)}`;
}
-
areaPath += ` L ${width} ${height} Z`;
container.innerHTML = `
diff --git a/scripts/fetch-external-data.js b/scripts/fetch-external-data.js
index ee48208..b63d8c0 100644
--- a/scripts/fetch-external-data.js
+++ b/scripts/fetch-external-data.js
@@ -1,6 +1,6 @@
import fs from 'node:fs';
-import path from 'node:path';
import https from 'node:https';
+import path from 'node:path';
import { fileURLToPath } from 'node:url';
import { GameDig as Gamedig } from 'gamedig';
import 'dotenv/config';
diff --git a/scripts/generate-stats.js b/scripts/generate-stats.js
index 9d26920..511f36c 100644
--- a/scripts/generate-stats.js
+++ b/scripts/generate-stats.js
@@ -1,6 +1,6 @@
+import { execSync } from 'node:child_process';
import fs from 'node:fs';
import path from 'node:path';
-import { execSync } from 'node:child_process';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
diff --git a/static/archives.json b/static/archives.json
new file mode 100644
index 0000000..81ecd37
--- /dev/null
+++ b/static/archives.json
@@ -0,0 +1,4922 @@
+{
+ "campaigns": [
+ {
+ "id": 430,
+ "campaignName": "Operation Restore",
+ "map": "Afghanistan",
+ "brief": "The United States has decided to re-enter Afghanistan in an attempt to re instate a legitimate NATO backed government as such the rest of NATO will be joining this counter insurgency effort.\n\nTask Force Alpha is being sent to Helmand province to try and liberate the area, we will begin with the outlying rural areas and slowly move into the urban enemy strongholds over the course of this campaign. The objective is to seek, destroy and engage the Taliban and Taliban backed forces while minimising civilian casualties and destruction to civilian property.\n\nThere is a significant IED, VBIED and PBIED risk as such all soldiers sailors and airmen of TFA will be taught the use of mine detecting equipment and the engineers will specify in defusal efforts.\n\nPlease keep an eye on your individual CoCs for new SOPs that relate to you.\n\nCmdr. J. Shaw (RN)\nNaval Intelligence",
+ "image": {
+ "id": 24762,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OP_Restore.png1744839634777.png",
+ "created_at": "2025-04-16 21:40:34",
+ "updated_at": "2025-04-16 21:40:34"
+ },
+ "created_at": "2025-02-18 19:40:16",
+ "updated_at": "2025-04-16 21:40:34",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 1976,
+ "name": "Operation Restore Part 2",
+ "dateTime": "2025-02-19 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-02-19",
+ "locked": false,
+ "discordChannel": "1341466255101788232",
+ "discordPingable": "1327421406245290116",
+ "discordMessage": "1341494682709917818",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 457,
+ "campaignName": "Operation Black Sheep",
+ "map": "Ruha",
+ "brief": "Militia forces backed up by Russia have seized the border with Estonia and Latvia near the area of Ruha. They have shot down multiple drones and a cargo plane owned by NATO Forces. Due to the AA threat and the unknown situation HQ have ordered UKSF Taskforce Alpha do go deep into the territory to scout out the current situation.",
+ "image": {
+ "id": 24763,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Op_Black_sheep.jpeg1744839650906.jpeg",
+ "created_at": "2025-04-16 21:40:50",
+ "updated_at": "2025-04-16 21:40:50"
+ },
+ "created_at": "2025-04-08 12:49:50",
+ "updated_at": "2025-04-16 21:40:50",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2156,
+ "name": "OP Black sheep 3",
+ "dateTime": "2025-04-11 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-04-11",
+ "locked": true,
+ "discordChannel": null,
+ "discordPingable": null,
+ "discordMessage": null,
+ "discordPingSent": false
+ },
+ {
+ "id": 2171,
+ "name": "Op Black Sheep 4",
+ "dateTime": "2025-04-18 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-04-18",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1360767012699373790",
+ "discordPingSent": false
+ },
+ {
+ "id": 2198,
+ "name": "Op Black Sheep 5",
+ "dateTime": "2025-04-25 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-04-25",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1363900450067447985",
+ "discordPingSent": false
+ },
+ {
+ "id": 2217,
+ "name": "Op Black Sheep 6",
+ "dateTime": "2025-05-02 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-05-02",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1366103810811891763",
+ "discordPingSent": false
+ },
+ {
+ "id": 2242,
+ "name": "Op Black Sheep 7",
+ "dateTime": "2025-05-09 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-05-09",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1368935953334538313",
+ "discordPingSent": false
+ }
+ ]
+ },
+ {
+ "id": 460,
+ "campaignName": "Operation Breezer",
+ "map": "G.O.S - Fjord",
+ "brief": "An uprising has been happening in the Murmansk area '' Russia '' the last couple of months. They want to declare a own state outside Russia. Meanwhile presumably armed men from the Russian Army stationed in this area have been supporting this new regime. While Russia is busy in Ukraine fighting their 3 day '' special operation '' armed men have set up roadblocks and destroying the important road '' E105/P-21 '' down South towards the rest of Russia.\nThe important military harbors in the area have been seized by this new regime as well as other military installations.\n\nAt the same time the British Government has received a request from NATO HQ to reinforce the area together with other NATO Allies.\nOur mission is to reinforce the area, protect the local population, secure Norwegian NATO ground and it's natural resources.\n\nThe Norwegian border area has a high rich of minerals, oil and gold in the ground. High mountain terrains, small roads and a couple of ports and a low population are in our area of operations.\n\nWelcome to the Norwegian Fjords.",
+ "image": {
+ "id": 24764,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Operation_Brezzer.png1744839662383.png",
+ "created_at": "2025-04-16 21:41:02",
+ "updated_at": "2025-04-16 21:41:02"
+ },
+ "created_at": "2025-04-13 00:02:50",
+ "updated_at": "2026-01-31 17:41:34",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2172,
+ "name": "Op Breezer 1",
+ "dateTime": "2025-04-16 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-04-16",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1360767322444529716",
+ "discordPingSent": false
+ },
+ {
+ "id": 2197,
+ "name": "Op Breezer 2",
+ "dateTime": "2025-04-23 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-04-23",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1363900192864206919",
+ "discordPingSent": false
+ },
+ {
+ "id": 2216,
+ "name": "Op Breezer 3",
+ "dateTime": "2025-04-30 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-04-30",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1366103586756497571",
+ "discordPingSent": false
+ },
+ {
+ "id": 2241,
+ "name": "Op Breezer 4",
+ "dateTime": "2025-05-07 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-05-07",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1368935722983227465",
+ "discordPingSent": false
+ },
+ {
+ "id": 2267,
+ "name": "OP Breezer 5",
+ "dateTime": "2025-05-14 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-05-14",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1371820443610382336",
+ "discordPingSent": false
+ },
+ {
+ "id": 2296,
+ "name": "OP Breezer 6",
+ "dateTime": "2025-05-21 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-05-21",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1374268380638609460",
+ "discordPingSent": false
+ },
+ {
+ "id": 2309,
+ "name": "OP Breezer 7",
+ "dateTime": "2025-05-28 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-05-28",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1376657485422661723",
+ "discordPingSent": false
+ },
+ {
+ "id": 2338,
+ "name": "OP Breezer 8",
+ "dateTime": "2025-06-04 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-06-04",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1379657702074224781",
+ "discordPingSent": false
+ },
+ {
+ "id": 2364,
+ "name": "OP Breezer 9",
+ "dateTime": "2025-06-11 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-06-11",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1381740183937880084",
+ "discordPingSent": false
+ }
+ ]
+ },
+ {
+ "id": 484,
+ "campaignName": "Operation Sahel",
+ "map": "G.O.S N'Djenahoud",
+ "brief": "The Sahel region:\n\nThe Sahel has a hot semi-arid climate and stretches across the southernmost latitudes of North Africa between the Atlantic Ocean and the Red Sea. Traditionally, most of the people in the Sahel have been semi-nomads, farming and raising livestock in a system of transhumance.\nFrench is spoken widely in the Sahel, as many of its nations are former French colonies, with two adopting French as an official language and many more using it colloquially.\nThe Sahel includes parts of Senegal, Mauritania, Burkina Faso, Mali, Niger, Nigeria, Chad, Sudan and Eritrea, where French is employed to varying degrees.\n\nIn the wake of the Libyan Crisis beginning in 2011, terrorist organizations operating in the Sahel, including Boko Haram, Islamic State and al-Qaeda in the Islamic Maghreb (AQIM), have greatly exacerbated the violence, extremism and instability of the region. As of 2024, a wave of new military juntas in Africa, favoring Russian mercenaries over Western forces and UN peacekeepers, has intensified violence.\n\nThe British Government has received a request from NATO HQ to reinforce the area together with other NATO Allies.\n\nOur mission will be to bring stability to some parts of the region, provide aid to civilians, gather intel and fight terrorist groups together with other NATO Allies stationed in the region.\n",
+ "image": {
+ "id": 25511,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Schermafbeelding_2025-05-08_150916.png1747137994354.png",
+ "created_at": "2025-05-13 12:06:34",
+ "updated_at": "2025-05-13 12:06:34"
+ },
+ "created_at": "2025-05-13 12:06:34",
+ "updated_at": "2025-05-13 12:06:34",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2297,
+ "name": "OP Sahel 1",
+ "dateTime": "2025-05-23 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-05-23",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1374268523823497338",
+ "discordPingSent": false
+ },
+ {
+ "id": 2310,
+ "name": "OP Sahel 2",
+ "dateTime": "2025-05-30 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-05-30",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1376657669560991764",
+ "discordPingSent": false
+ },
+ {
+ "id": 2339,
+ "name": "OP Sahel 3",
+ "dateTime": "2025-06-06 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-06-06",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1379657823180296276",
+ "discordPingSent": false
+ }
+ ]
+ },
+ {
+ "id": 508,
+ "campaignName": "Operation Sparrow",
+ "map": "Isla Pera",
+ "brief": "Isla Pera, a lush, tropical archipelago in the Caribbean Sea. With Bocachica as its main city is founded and conquered by the United Kingdom in 1672. From 1680, the other islands were colonized by the United Kingdom, but pirates remained active in the region throughout the 17th and 18th centuries. Later in 1736, French claims were granted and the archipelago was split up. \nIn 1960, Isla Pera became an official independent British and French colony, gaining limited autonomy in 1967. Till this day some parts of the internal islands are under control of both the British and French governments.\n\nWith an abundance of oil, sugar cane plantations and minerals the Islands are exporting a lot. Fruit growing was important until the 1970s, but has since been restricted to internal consumption. Fishing continues to play an important role. After 1999 tourisme is playing a big part of the economy.\n\nCurrently, pirates and drug traffickers are active around the islands and hurricanes in the region are more severe due to climate change. Different factions on the Islands wants to have a change and are anti-British/French and they want to claim their Islands back.\n\nOur mission is to reinforce the area in the Caribbean Sea, protect the local population from attacks on and around the Islands, secure it's natural resources and work together with our American and French Allies. Furthermore support IDAP and the local government in their struggles.\n",
+ "image": {
+ "id": 26279,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Schermafbeelding_2025-06-16_093638.png1750060034770.png",
+ "created_at": "2025-06-16 07:47:14",
+ "updated_at": "2025-06-16 07:47:14"
+ },
+ "created_at": "2025-06-16 07:37:14",
+ "updated_at": "2025-06-16 07:47:14",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2400,
+ "name": "OP Sparrow 1",
+ "dateTime": "2025-06-18 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-06-18",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1384074866772279430",
+ "discordPingSent": false
+ },
+ {
+ "id": 2423,
+ "name": "OP Sparrow 2",
+ "dateTime": "2025-06-25 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-06-25",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1386923434709221487",
+ "discordPingSent": false
+ },
+ {
+ "id": 2434,
+ "name": "OP Sparrow 3",
+ "dateTime": "2025-07-02 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-07-02",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1388969841108586526",
+ "discordPingSent": false
+ },
+ {
+ "id": 2457,
+ "name": "OP Sparrow 4",
+ "dateTime": "2025-07-09 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-07-09",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1391763799815487549",
+ "discordPingSent": false
+ },
+ {
+ "id": 2483,
+ "name": "OP Sparrow 5",
+ "dateTime": "2025-07-16 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-07-16",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1394324958485680239",
+ "discordPingSent": false
+ }
+ ]
+ },
+ {
+ "id": 522,
+ "campaignName": "Pre Deployment Ops",
+ "map": "Dagger Island Training Complex",
+ "brief": "Pre Deployment Training Ops for the next campaign or Unit training",
+ "image": {
+ "id": 28036,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/uksf-tfa-patch2-1.png1753735320783.png",
+ "created_at": "2025-07-28 20:42:00",
+ "updated_at": "2025-07-28 20:42:00"
+ },
+ "created_at": "2025-07-28 20:41:26",
+ "updated_at": "2025-11-04 19:23:05",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2529,
+ "name": "Reorbat final training Op",
+ "dateTime": "2025-07-30 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-07-30",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1399492398005878944",
+ "discordPingSent": true
+ },
+ {
+ "id": 3155,
+ "name": "Pre-Deployment Training",
+ "dateTime": "2025-11-05 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-11-05",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1435348420754935900",
+ "discordPingSent": true
+ },
+ {
+ "id": 3244,
+ "name": "Pre Deployment Training + Mini Op",
+ "dateTime": "2025-12-10 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-12-10",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1446712938475028562",
+ "discordPingSent": true
+ },
+ {
+ "id": 3289,
+ "name": "Welcome Back + Pre-Deployment Training",
+ "dateTime": "2026-01-07 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-07",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1457139465633005722",
+ "discordPingSent": true
+ },
+ {
+ "id": 3473,
+ "name": "Unit Restructure",
+ "dateTime": "2026-02-11 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-02-11",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1470526921791242250",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 551,
+ "campaignName": "Operation Reaction",
+ "map": "Farabad ( Persian Gulf )",
+ "brief": "Focussed around the capital city of Al-Jatar, A nation on the Persian Gulf. This semi-mountainous region rich in natural resources is home to many mines and oil fields. However these resources have left instability and conflict in the region for decades. Thunder run through the wide open valleys around the Jazira oil fields, traverse a rocky mountain pass, or move deep into the dense alleyways and streets of Farabad, a huge city at the center of the province.\n\nA military coup made the region even more unstable. Different factions are in fight with eachother to gain control. The British Government has received a request from NATO HQ to evacuate any British embassy personnel and civilians out of the area, to gain intel and to work with our NATO partners and the previous regime.",
+ "image": {
+ "id": 28399,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/EjtzWdt3.jpg1755002735864.jpg",
+ "created_at": "2025-08-12 12:45:35",
+ "updated_at": "2025-08-12 12:45:35"
+ },
+ "created_at": "2025-08-12 12:45:35",
+ "updated_at": "2025-08-12 12:45:35",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 2645,
+ "name": "OP Reaction 1",
+ "dateTime": "2025-08-13 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-08-13",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1404808287907610677",
+ "discordPingSent": false
+ },
+ {
+ "id": 2847,
+ "name": "OP Reaction 2",
+ "dateTime": "2025-08-20 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-08-20",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1407070695783141456",
+ "discordPingSent": false
+ },
+ {
+ "id": 2874,
+ "name": "OP Reaction 3",
+ "dateTime": "2025-08-27 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-08-27",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1409581245599584366",
+ "discordPingSent": false
+ },
+ {
+ "id": 2901,
+ "name": "OP Reaction 4",
+ "dateTime": "2025-09-03 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-09-03",
+ "locked": true,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1412125605838983241",
+ "discordPingSent": false
+ },
+ {
+ "id": 2954,
+ "name": "Op Reaction 5",
+ "dateTime": "2025-09-17 18:00:00",
+ "time": "19:00:00",
+ "date": "2025-09-17",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1417590622042460180",
+ "discordPingSent": true
+ },
+ {
+ "id": 2983,
+ "name": "OP Reaction 6",
+ "dateTime": "2025-09-24 18:00:00",
+ "time": "20:00:00",
+ "date": "2025-09-24",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": null,
+ "discordMessage": "1419759266708852811",
+ "discordPingSent": false
+ }
+ ]
+ },
+ {
+ "id": 618,
+ "campaignName": "Operation Dune Vengance",
+ "map": "Al-Katbah District, Western Sahatra (Former Iran)",
+ "brief": "\nCAMPAIGN BRIEF;\n\n1. SITUATION:\nIn the power vacuum left by Iran's collapse, the province of Western Sahatra is now a failed state. A ruthless paramilitary faction, the Black Rose, has seized control of the region's oil wealth and now threatens to destabilize the entire Middle East.\n\n2. THE ENEMY:\nThe Black Rose is a well-funded and disciplined force, but their strategic command rests with a secretive \"Council of 13.\" This council is our primary target. As long as they remain, the Black Rose will continue to be a threat.\n\n3. THE OBJECTIVE:\nThis campaign has one ultimate goal: the complete dismantlement of the Black Rose leadership. Over a series of sequential operations, UKSF Task Force Alpha will hunt down and eliminate every member of the Council of 13.\n\n4. THE WORLD:\nThe AO is not empty. Other factions, from nationalist militias to opportunistic warlords, also operate in the region. How we interact with them—whether we fight them, avoid them, or use them—will be critical to our success.\n\nWelcome to Sahatra.",
+ "image": {
+ "id": 30540,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/download.jpeg1760451669872.jpeg",
+ "created_at": "2025-10-14 14:21:09",
+ "updated_at": "2025-10-14 14:21:09"
+ },
+ "created_at": "2025-10-14 14:18:35",
+ "updated_at": "2025-10-26 15:59:14",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3058,
+ "name": "Op Ironclad",
+ "dateTime": "2025-10-15 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-10-15",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321236261553573928",
+ "discordMessage": "1427662714913816626",
+ "discordPingSent": true
+ },
+ {
+ "id": 3095,
+ "name": "Op Nightglass",
+ "dateTime": "2025-10-22 18:00:00",
+ "time": "18:00:00",
+ "date": "2025-10-22",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1430092273000910910",
+ "discordPingSent": true
+ },
+ {
+ "id": 3122,
+ "name": "Op Venoms Nest",
+ "dateTime": "2025-10-29 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-10-29",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1432030744355672065",
+ "discordPingSent": true
+ },
+ {
+ "id": 3132,
+ "name": "Op Venoms Nest | Part 2",
+ "dateTime": "2025-10-30 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-10-30",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1433223802464243765",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 637,
+ "campaignName": "Operation Jungle Cobra",
+ "map": "Northern Colombia",
+ "brief": "SITUATION:\nFollowing the successful disruption of their command in Sahatra, the remnants of the Black Rose have fled to the remote, dense jungles of Colombia. Intelligence confirms they are now establishing chemical weapon production facilities, utilising local Cartel networks and resources. This represents a critical escalation: the Black Rose is transitioning from a regional threat to a global proliferator of WMDs.\n\nTHE ENEMY:\nThe last three remaining members of the Council of 13 are believed to be overseeing these production\noperations. They are highly dangerous, desperate, and will be protected by well-armed local Cartel forces and PMC elements.\n\nTHE OBJECTIVE:\nThis campaign's ultimate goal is the complete and permanent neutralisation of the Black Rose's chemical weapon production capability. This will involve hunting down and eliminating the remaining Council members, destroying all production facilities, and interdicting their supply lines.\n\nTHE TERRAIN:\nExpect extreme environmental challenges: dense jungle, high humidity, difficult terrain, and a complex human terrain dominated by powerful Cartel networks and insurgent groups.\n\nTHE STAKES:\nFailure is not an option. The proliferation of chemical weapons by the Black Rose would have catastrophic global consequences.",
+ "image": {
+ "id": 31629,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/download.jpeg1762721389767.jpeg",
+ "created_at": "2025-11-09 20:49:49",
+ "updated_at": "2025-11-09 20:49:49"
+ },
+ "created_at": "2025-11-09 20:49:49",
+ "updated_at": "2025-11-09 20:57:58",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3167,
+ "name": "Op Piranha Strike",
+ "dateTime": "2025-11-12 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-11-12",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1437452184533991567",
+ "discordPingSent": true
+ },
+ {
+ "id": 3197,
+ "name": "Op Jungle Cobra 2",
+ "dateTime": "2025-11-19 21:00:00",
+ "time": "21:00:00",
+ "date": "2025-11-19",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1440326102747971604",
+ "discordPingSent": true
+ },
+ {
+ "id": 3217,
+ "name": "Op Unseen Cargo",
+ "dateTime": "2025-11-26 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-11-26",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1442626283946250342",
+ "discordPingSent": true
+ },
+ {
+ "id": 3234,
+ "name": "Op Unseen Cargo | Part 2",
+ "dateTime": "2025-12-03 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-12-03",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1445457594020790474",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 675,
+ "campaignName": "Operation Iron Retribution",
+ "map": "Lythium",
+ "brief": "Situation:\nFollowing the \"Day of Ashes\" mass-casualty terrorist attack on UK soil, intelligence has identified the perpetrator as Al-Khaima Front (AKF), a transnational terrorist organization. AKF operates a sophisticated and compartmentalized network spanning the UK and a foreign sanctuary known as \"Lythium.\"\n\nThe network's cross-border finance, logistics, and international coordination are controlled by a single high-value individual codenamed 'THE FERRYMAN'.\n\nMission:\nUKSF has been tasked with conducting phased counter-terrorism operations to locate, disrupt, and dismantle the AKF leadership and infrastructure, neutralizing their capability to conduct further attacks against the UK and it's allies.",
+ "image": {
+ "id": 33434,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/images.steamusercontent.jpg1768170071430.jpg",
+ "created_at": "2026-01-11 22:21:11",
+ "updated_at": "2026-01-11 22:21:11"
+ },
+ "created_at": "2026-01-11 22:21:11",
+ "updated_at": "2026-01-11 22:21:11",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3331,
+ "name": "Op Iron Retribution 2",
+ "dateTime": "2026-01-14 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-14",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1460036293118525584",
+ "discordPingSent": false
+ },
+ {
+ "id": 3363,
+ "name": "Op Iron Retribution 3",
+ "dateTime": "2026-01-21 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-21",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1462759999867588747",
+ "discordPingSent": true
+ },
+ {
+ "id": 3391,
+ "name": "Op Iron Retribution 4",
+ "dateTime": "2026-01-28 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-28",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1465296559267909766",
+ "discordPingSent": true
+ },
+ {
+ "id": 3421,
+ "name": "Op Iron Retribution 5",
+ "dateTime": "2026-02-04 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-02-04",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1467142027677270167",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 677,
+ "campaignName": "Operation Retrieving Gold ",
+ "map": "Chernarus Redux",
+ "brief": "Situation:\nThe year is 2018, 30 years after Day 0.\nWe are the first expeditionary forces to set foot outside of the UK. We've been tasked with reconnaissance of the surrounding terrain of Chernarus, setting up a fixed FOB and possible retrieval of technology.\n\nWe are in unknown territory, we have little information about the area that surrounds us and we are effectively the first new faces in this terrain. We are under-equipped until the rest of our convoy reaches our location.\n\nMission:\nUKSF has been tasked with reconnaissance of Chernarus, finding a suitable location to settle a permanent FOB and possibly retrieving old technology that is otherwise in working order, or can be restored to working order.\n\nToday, we got a little headsup that might help us.",
+ "image": {
+ "id": 33755,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/image.png1769635425047.png",
+ "created_at": "2026-01-28 21:23:45",
+ "updated_at": "2026-01-28 21:23:45"
+ },
+ "created_at": "2026-01-14 23:53:53",
+ "updated_at": "2026-02-12 23:42:18",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3348,
+ "name": "Op Thumb Sucking",
+ "dateTime": "2026-01-16 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-16",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1461147334292410481",
+ "discordPingSent": true
+ },
+ {
+ "id": 3403,
+ "name": "Op Nightcrawler",
+ "dateTime": "2026-01-30 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-30",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1466182377544880169",
+ "discordPingSent": true
+ },
+ {
+ "id": 3484,
+ "name": "Op Nostalgia",
+ "dateTime": "2026-02-13 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-02-13",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1471652763858501633",
+ "discordPingSent": true
+ }
+ ]
+ }
+ ],
+ "standalone": [
+ {
+ "id": 2775,
+ "name": "SF Training Operation for new ORBAT",
+ "description": "Training night in your new teams under the new ORBAT",
+ "image": null,
+ "map": "Bovington",
+ "dateTime": "2025-07-23 18:00:00",
+ "date": "2025-07-23",
+ "time": "19:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1396896524704813259",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 2857,
+ "name": "Op Hunter",
+ "description": "**Classified** **TOP SECRET**",
+ "image": null,
+ "map": "Classified ",
+ "dateTime": "2025-08-06 17:00:00",
+ "date": "2025-08-06",
+ "time": "19:00:00",
+ "locked": true,
+ "locked_at": "2025-09-08 15:49:27",
+ "status": "ARCHIVED",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1402399543202418819",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3003,
+ "name": "Op Snatcher ",
+ "description": "Classified ",
+ "image": null,
+ "map": "Classified ",
+ "dateTime": "2025-09-10 18:00:00",
+ "date": "2025-09-10",
+ "time": "19:00:00",
+ "locked": true,
+ "locked_at": "2025-09-11 12:44:01",
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1414638960558215208",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3346,
+ "name": "Mini Operation",
+ "description": "Following the conclusion of the scheduled CQB training, a mini-operation will be conducted. -\n\nAttendance for the mini-operation is entirely voluntary. All participants are encouraged to join for what is anticipated to be a valuable and enjoyable exercise.",
+ "image": {
+ "id": 32125,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/sas.jpg1764264729670.jpg",
+ "created_at": "2025-11-27 17:32:09",
+ "updated_at": "2025-11-27 17:32:09"
+ },
+ "map": "Northern Colombia",
+ "dateTime": "2025-11-27 20:00:00",
+ "date": "2025-11-27",
+ "time": "20:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1443655655717208084",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3422,
+ "name": "Operation Satan's Slay",
+ "description": "Objective: Rescue Santa Claus from an unknown threat and Secure Christmas by ensuring the timely delivery of all presents.\n\nSituation: Intelligence confirms that Santa Claus has been compromised and is currently detained/missing. The North Pole operation is in chaos, and the global gift-delivery schedule is at severe risk. Failure is not an option—billions of units of goodwill are at stake.\n\nImmediate Task: Locate, extract, and ensure the safe return of Santa Claus to his command center. Simultaneously, you must secure the gift inventory and prepare the sleigh for immediate launch on schedule.\n\nRequired Assets: Speed, stealth, unwavering festive spirit, and absolute adherence to the Nice List.",
+ "image": {
+ "id": 32604,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OIP-3986261552.jpg1765908460608.jpg",
+ "created_at": "2025-12-16 18:07:40",
+ "updated_at": "2025-12-16 18:07:40"
+ },
+ "map": "Napf Island - Winter",
+ "dateTime": "2025-12-17 19:00:00",
+ "date": "2025-12-17",
+ "time": "19:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1450549962407542914",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ }
+ ],
+ "profiles": [
+ {
+ "id": 11259,
+ "communityId": 722,
+ "alias": "Ross Buh",
+ "created_at": "2025-02-18 16:39:50",
+ "updated_at": "2025-02-18 17:29:11",
+ "status": "LOA",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9781,
+ "avatar": {
+ "id": 23449,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Arma_3_19_02_2025_21_13_58.png1740000799069.png",
+ "created_at": "2025-02-19 21:33:19",
+ "updated_at": "2025-02-19 21:33:19"
+ },
+ "rank": {
+ "id": 3977,
+ "name": "Major",
+ "abbreviation": "Maj.",
+ "description": "A Major is either OC of a Company or 2IC of a unit",
+ "groupId": 988,
+ "displayOrder": 2,
+ "created_at": "2025-02-18 16:47:13",
+ "updated_at": "2025-04-09 08:04:30",
+ "imageId": 24427,
+ "image": {
+ "id": 24427,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-maj_patch_co.png1744185870693.png",
+ "created_at": "2025-04-09 08:04:30",
+ "updated_at": "2025-04-09 08:04:30"
+ }
+ },
+ "position": {
+ "id": 4003,
+ "name": "Officer Commanding",
+ "description": "Commanding Officer of Taskforce Alpha",
+ "groupId": 1040,
+ "displayOrder": 0,
+ "created_at": "2025-02-20 20:12:17",
+ "updated_at": "2025-07-21 16:23:49"
+ },
+ "unit": {
+ "id": 3580,
+ "name": "TFHQ",
+ "callsign": "0-",
+ "leaderId": 11259,
+ "groupId": 1218,
+ "image": {
+ "id": 24520,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/UKSF-TFA_Unit_Emblem.png1744315262677.png",
+ "created_at": "2025-04-10 20:01:02",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ "displayOrder": 0,
+ "created_at": "2025-02-18 17:10:28",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11261,
+ "communityId": 722,
+ "alias": "N. Hodge",
+ "created_at": "2025-02-18 17:54:16",
+ "updated_at": "2025-02-18 18:15:45",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9783,
+ "avatar": {
+ "id": 24767,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/me.jpg1744840296250.jpg",
+ "created_at": "2025-04-16 21:51:36",
+ "updated_at": "2025-04-16 21:51:36"
+ },
+ "rank": {
+ "id": 4105,
+ "name": "Warrant Officer Class 2",
+ "abbreviation": "WO2",
+ "description": "Royal Navy Warrant Officer Class 2",
+ "groupId": 989,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 18:13:14",
+ "updated_at": "2025-04-10 18:13:14",
+ "imageId": 24491,
+ "image": {
+ "id": 24491,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-WO2_patch_co.png1744308794924.png",
+ "created_at": "2025-04-10 18:13:14",
+ "updated_at": "2025-04-10 18:13:14"
+ }
+ },
+ "position": {
+ "id": 4010,
+ "name": "SSM",
+ "description": "33",
+ "groupId": 1040,
+ "displayOrder": 2,
+ "created_at": "2025-02-23 12:14:52",
+ "updated_at": "2025-07-21 16:25:38"
+ },
+ "unit": {
+ "id": 3580,
+ "name": "TFHQ",
+ "callsign": "0-",
+ "leaderId": 11259,
+ "groupId": 1218,
+ "image": {
+ "id": 24520,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/UKSF-TFA_Unit_Emblem.png1744315262677.png",
+ "created_at": "2025-04-10 20:01:02",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ "displayOrder": 0,
+ "created_at": "2025-02-18 17:10:28",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11264,
+ "communityId": 722,
+ "alias": "M. Barker - [AWOL] ",
+ "created_at": "2025-02-18 18:04:31",
+ "updated_at": "2025-09-17 17:06:18",
+ "status": "DISCHARGED",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9138,
+ "avatar": {
+ "id": 23451,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/10000157032.png1740001695268.png",
+ "created_at": "2025-02-19 21:48:15",
+ "updated_at": "2025-02-19 21:48:15"
+ },
+ "rank": {
+ "id": 3987,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "Sgt",
+ "groupId": 990,
+ "displayOrder": 7,
+ "created_at": "2025-02-18 17:04:03",
+ "updated_at": "2025-04-10 20:53:02",
+ "imageId": 23447,
+ "image": {
+ "id": 23447,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_SGT.png1739991088670.png",
+ "created_at": "2025-02-19 18:51:28",
+ "updated_at": "2025-02-19 18:51:28"
+ }
+ },
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11266,
+ "communityId": 722,
+ "alias": "Grip",
+ "created_at": "2025-02-18 18:32:50",
+ "updated_at": "2025-04-10 17:44:14",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9785,
+ "avatar": {
+ "id": 24483,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/grip.png1744307196015.png",
+ "created_at": "2025-04-10 17:46:36",
+ "updated_at": "2025-04-10 17:46:36"
+ },
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11280,
+ "communityId": 722,
+ "alias": "Mirai",
+ "created_at": "2025-02-19 21:57:17",
+ "updated_at": "2025-02-19 21:57:17",
+ "status": "DISCHARGED",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9795,
+ "avatar": {
+ "id": 23454,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/IMG_1600.jpg1740003040507.jpg",
+ "created_at": "2025-02-19 22:10:40",
+ "updated_at": "2025-02-19 22:10:40"
+ },
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4407,
+ "name": "SF Explosives Expert",
+ "description": "SF Explosives Expert",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:17:39",
+ "updated_at": "2025-07-08 22:17:39"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11281,
+ "communityId": 722,
+ "alias": "J. Shaw",
+ "created_at": "2025-02-19 21:57:28",
+ "updated_at": "2025-02-19 21:57:28",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 2716,
+ "avatar": null,
+ "rank": {
+ "id": 3993,
+ "name": "Commander",
+ "abbreviation": "Cmdr.",
+ "description": "commander",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-02-19 22:10:38",
+ "updated_at": "2025-04-10 17:54:17",
+ "imageId": 24485,
+ "image": {
+ "id": 24485,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-CDR_patch_co.png1744307657261.png",
+ "created_at": "2025-04-10 17:54:17",
+ "updated_at": "2025-04-10 17:54:17"
+ }
+ },
+ "position": {
+ "id": 4011,
+ "name": "Operations Officer",
+ "description": "gg",
+ "groupId": 1040,
+ "displayOrder": 3,
+ "created_at": "2025-02-23 12:15:30",
+ "updated_at": "2025-02-23 12:15:30"
+ },
+ "unit": {
+ "id": 3604,
+ "name": "Intelligence Cell",
+ "callsign": "--",
+ "leaderId": 11281,
+ "groupId": 1218,
+ "image": {
+ "id": 27257,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/raf,360x360,075,t,fafafa_ca443f4786.u1.jpg1752014402433.jpg",
+ "created_at": "2025-07-08 22:40:02",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ "displayOrder": 6,
+ "created_at": "2025-02-23 12:02:04",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11282,
+ "communityId": 722,
+ "alias": "C.Quack",
+ "created_at": "2025-02-19 21:57:33",
+ "updated_at": "2025-02-19 21:57:33",
+ "status": "DISCHARGED",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9796,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11839,
+ "communityId": 722,
+ "alias": "Coburn",
+ "created_at": "2025-03-27 19:58:24",
+ "updated_at": "2025-03-27 20:14:21",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10252,
+ "avatar": null,
+ "rank": {
+ "id": 3989,
+ "name": "Lance Corporal",
+ "abbreviation": "LCpl",
+ "description": "Lcpl",
+ "groupId": 991,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:04:55",
+ "updated_at": "2025-04-10 20:54:08",
+ "imageId": 23446,
+ "image": {
+ "id": 23446,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_LCPL.png1739991043064.png",
+ "created_at": "2025-02-19 18:50:43",
+ "updated_at": "2025-02-19 18:50:43"
+ }
+ },
+ "position": {
+ "id": 4406,
+ "name": "SF Gunner",
+ "description": "SF Gunner",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:17:15",
+ "updated_at": "2025-07-08 22:17:15"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11841,
+ "communityId": 722,
+ "alias": "M. Müller",
+ "created_at": "2025-03-27 20:07:04",
+ "updated_at": "2025-03-27 20:07:04",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10255,
+ "avatar": null,
+ "rank": {
+ "id": 4096,
+ "name": "Flight Lieutenant",
+ "abbreviation": "Flt Lt.",
+ "description": "RAF Flight Lt",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:17:45",
+ "updated_at": "2025-04-10 17:25:55",
+ "imageId": 24474,
+ "image": {
+ "id": 24474,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FlLt_patch_co.png1744305955625.png",
+ "created_at": "2025-04-10 17:25:55",
+ "updated_at": "2025-04-10 17:25:55"
+ }
+ },
+ "position": {
+ "id": 4056,
+ "name": "JSFAW Commander",
+ "description": "Officer in Charge of JSFAW",
+ "groupId": 1056,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:07:49",
+ "updated_at": "2025-04-08 12:07:49"
+ },
+ "unit": {
+ "id": 3591,
+ "name": "JSFAW HQ",
+ "callsign": "Guardian 2-0",
+ "leaderId": 11282,
+ "groupId": 1220,
+ "image": {
+ "id": 24523,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Photoroom-20250109_105457.png1744319093056.png",
+ "created_at": "2025-04-10 21:04:53",
+ "updated_at": "2025-04-10 21:04:53"
+ },
+ "displayOrder": 20,
+ "created_at": "2025-02-18 17:19:31",
+ "updated_at": "2025-04-10 21:08:21"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11977,
+ "communityId": 722,
+ "alias": "S.Lewis",
+ "created_at": "2025-04-08 11:48:41",
+ "updated_at": "2025-04-08 11:48:41",
+ "status": "RESERVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10369,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4406,
+ "name": "SF Gunner",
+ "description": "SF Gunner",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:17:15",
+ "updated_at": "2025-07-08 22:17:15"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11979,
+ "communityId": 722,
+ "alias": "Crane",
+ "created_at": "2025-04-08 13:46:54",
+ "updated_at": "2025-04-08 13:46:54",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10371,
+ "avatar": null,
+ "rank": {
+ "id": 3990,
+ "name": "Private",
+ "abbreviation": "Pte",
+ "description": "Army Private",
+ "groupId": 992,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:05:49",
+ "updated_at": "2025-04-10 20:55:12",
+ "imageId": 24479,
+ "image": {
+ "id": 24479,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306247458.png",
+ "created_at": "2025-04-10 17:30:47",
+ "updated_at": "2025-04-10 17:30:47"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 11982,
+ "communityId": 722,
+ "alias": "Wolf",
+ "created_at": "2025-04-08 20:36:38",
+ "updated_at": "2025-04-08 20:39:18",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10254,
+ "avatar": null,
+ "rank": {
+ "id": 3987,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "Sgt",
+ "groupId": 990,
+ "displayOrder": 7,
+ "created_at": "2025-02-18 17:04:03",
+ "updated_at": "2025-04-10 20:53:02",
+ "imageId": 23447,
+ "image": {
+ "id": 23447,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_SGT.png1739991088670.png",
+ "created_at": "2025-02-19 18:51:28",
+ "updated_at": "2025-02-19 18:51:28"
+ }
+ },
+ "position": {
+ "id": 4395,
+ "name": "Alpha Team Leader",
+ "description": "Alpha Team Leader",
+ "groupId": 1058,
+ "displayOrder": 6,
+ "created_at": "2025-07-08 22:04:53",
+ "updated_at": "2025-07-08 22:12:17"
+ },
+ "unit": {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12143,
+ "communityId": 722,
+ "alias": "L. Hjelm [GC.]",
+ "created_at": "2025-04-18 13:44:39",
+ "updated_at": "2026-01-27 20:19:44",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10507,
+ "avatar": null,
+ "rank": {
+ "id": 3987,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "Sgt",
+ "groupId": 990,
+ "displayOrder": 7,
+ "created_at": "2025-02-18 17:04:03",
+ "updated_at": "2025-04-10 20:53:02",
+ "imageId": 23447,
+ "image": {
+ "id": 23447,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_SGT.png1739991088670.png",
+ "created_at": "2025-02-19 18:51:28",
+ "updated_at": "2025-02-19 18:51:28"
+ }
+ },
+ "position": {
+ "id": 3993,
+ "name": "CMT Class 2 Medic",
+ "description": "An intermediate-level field medic responsible for providing effective battlefield triage, stabilization, and casualty evacuation under fire. Operators holding this qualification are trusted to operate independently within a fireteam or section and deliver essential combat medical care.\n\nCore Responsibilities:\n- Provide immediate life-saving interventions.\n- Stabilize and monitor casualties for CASEVAC/MEDEVAC.\n- Maintain medical supply discipline and manage team-level medical assets.\n\nRequires CMT Class 2 qualification.",
+ "groupId": 1153,
+ "displayOrder": 17,
+ "created_at": "2025-02-20 19:52:57",
+ "updated_at": "2025-07-08 22:30:04"
+ },
+ "unit": {
+ "id": 3952,
+ "name": "SRR Team Alpha",
+ "callsign": "Raven 5-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 210,
+ "created_at": "2025-07-08 21:56:49",
+ "updated_at": "2025-07-08 21:56:49"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12221,
+ "communityId": 722,
+ "alias": "Parkie",
+ "created_at": "2025-04-23 17:14:48",
+ "updated_at": "2025-04-23 17:14:48",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10573,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4404,
+ "name": "SF Medic",
+ "description": "The most senior field medic role, you are trained to lead medical efforts in high-intensity operations. This qualification signifies full competence in all aspects of battlefield medicine. You are trusted to manage medical assets at the platoon level or higher, make critical care decisions, and serve as advisors to command on casualty management and evacuation planning and to provide training for recruits doing Basic Training.\n\nCore responsibilities:\n- Serve as Section Medical Lead.\n- Advise command on medical planning and operational health readiness.\n- Provide basic medical training to recruits.\n- Perform advanced medical interventions, including surgical stabilization.\n- Liaise with command regarding casualty estimates, MEDEVAC timing, and asset readiness.\n\nRequires CMT Class 1 qualification and Having Passed SF Selection",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:16:36",
+ "updated_at": "2025-07-08 22:31:13"
+ },
+ "unit": {
+ "id": 3952,
+ "name": "SRR Team Alpha",
+ "callsign": "Raven 5-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 210,
+ "created_at": "2025-07-08 21:56:49",
+ "updated_at": "2025-07-08 21:56:49"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12294,
+ "communityId": 722,
+ "alias": "Arbo",
+ "created_at": "2025-04-27 20:13:29",
+ "updated_at": "2025-04-27 23:06:05",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10628,
+ "avatar": null,
+ "rank": {
+ "id": 3987,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "Sgt",
+ "groupId": 990,
+ "displayOrder": 7,
+ "created_at": "2025-02-18 17:04:03",
+ "updated_at": "2025-04-10 20:53:02",
+ "imageId": 23447,
+ "image": {
+ "id": 23447,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_SGT.png1739991088670.png",
+ "created_at": "2025-02-19 18:51:28",
+ "updated_at": "2025-02-19 18:51:28"
+ }
+ },
+ "position": {
+ "id": 4395,
+ "name": "Alpha Team Leader",
+ "description": "Alpha Team Leader",
+ "groupId": 1058,
+ "displayOrder": 6,
+ "created_at": "2025-07-08 22:04:53",
+ "updated_at": "2025-07-08 22:12:17"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12297,
+ "communityId": 722,
+ "alias": "Shane",
+ "created_at": "2025-04-27 22:44:08",
+ "updated_at": "2025-08-19 17:37:00",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10631,
+ "avatar": null,
+ "rank": {
+ "id": 4113,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "RAF Corporal",
+ "groupId": 991,
+ "displayOrder": 2,
+ "created_at": "2025-04-10 18:33:12",
+ "updated_at": "2025-04-10 20:53:52",
+ "imageId": 24499,
+ "image": {
+ "id": 24499,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-CPL_patch_co.png1744309992102.png",
+ "created_at": "2025-04-10 18:33:12",
+ "updated_at": "2025-04-10 18:33:12"
+ }
+ },
+ "position": {
+ "id": 4902,
+ "name": "JTAC",
+ "description": "A crucial role coordinating air strikes (Close Air Support) for ground troops, acting as the eyes in the sky or on the ground to guide pilots, mark targets with smoke/flares, and ensure friendly forces' safety, preventing friendly fire, using specialized aircraft or ground posts to direct jets, helicopters, and drones in real-time.",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-12-21 22:35:20",
+ "updated_at": "2025-12-21 22:35:20"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12339,
+ "communityId": 722,
+ "alias": "FOZZ",
+ "created_at": "2025-04-30 17:56:37",
+ "updated_at": "2025-09-17 21:00:07",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10670,
+ "avatar": null,
+ "rank": {
+ "id": 3988,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "Cpl",
+ "groupId": 991,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 17:04:31",
+ "updated_at": "2025-04-10 20:53:33",
+ "imageId": 23445,
+ "image": {
+ "id": 23445,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/1._Rank_Patch_-_CPL.png1739987323818.png",
+ "created_at": "2025-02-19 17:48:43",
+ "updated_at": "2025-02-19 17:48:43"
+ }
+ },
+ "position": {
+ "id": 4055,
+ "name": "Rotary Pilot (Attack)",
+ "description": "Qualified to Fly Apache, Armed Rotary Craft",
+ "groupId": 1056,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:07:17",
+ "updated_at": "2025-04-08 12:07:17"
+ },
+ "unit": {
+ "id": 3940,
+ "name": "JSFAW",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-07 16:51:45",
+ "updated_at": "2025-07-07 16:51:45"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12340,
+ "communityId": 722,
+ "alias": "Brooks",
+ "created_at": "2025-04-30 18:01:54",
+ "updated_at": "2025-04-30 18:01:54",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10671,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4429,
+ "name": "SF Recce/Sniper",
+ "description": "SRR Qualifed",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-21 16:37:19",
+ "updated_at": "2025-07-21 16:37:19"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12533,
+ "communityId": 722,
+ "alias": "Hans",
+ "created_at": "2025-05-13 12:56:09",
+ "updated_at": "2025-07-22 19:57:48",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10835,
+ "avatar": {
+ "id": 25512,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/lettre-h-du-feu-de-lumière-br-lante-de-flamme-83919218-1949736079.jpg1747141934427.jpg",
+ "created_at": "2025-05-13 13:12:14",
+ "updated_at": "2025-05-13 13:12:14"
+ },
+ "rank": {
+ "id": 4097,
+ "name": "Flying Officer",
+ "abbreviation": "FgOff",
+ "description": "Flying Officer RAF",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:18:31",
+ "updated_at": "2025-04-10 18:06:04",
+ "imageId": 24475,
+ "image": {
+ "id": 24475,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FlOff_patch_co.png1744305979136.png",
+ "created_at": "2025-04-10 17:26:19",
+ "updated_at": "2025-04-10 17:26:19"
+ }
+ },
+ "position": {
+ "id": 4055,
+ "name": "Rotary Pilot (Attack)",
+ "description": "Qualified to Fly Apache, Armed Rotary Craft",
+ "groupId": 1056,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:07:17",
+ "updated_at": "2025-04-08 12:07:17"
+ },
+ "unit": {
+ "id": 3593,
+ "name": "JSFAW Rotary",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-02-18 17:20:01",
+ "updated_at": "2025-04-08 12:24:50"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 12807,
+ "communityId": 722,
+ "alias": "Nyuu.exe",
+ "created_at": "2025-06-04 12:35:35",
+ "updated_at": "2025-06-04 12:35:35",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10970,
+ "avatar": null,
+ "rank": {
+ "id": 3990,
+ "name": "Private",
+ "abbreviation": "Pte",
+ "description": "Army Private",
+ "groupId": 992,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:05:49",
+ "updated_at": "2025-04-10 20:55:12",
+ "imageId": 24479,
+ "image": {
+ "id": 24479,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306247458.png",
+ "created_at": "2025-04-10 17:30:47",
+ "updated_at": "2025-04-10 17:30:47"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13053,
+ "communityId": 722,
+ "alias": "M. Barker [MC.] ",
+ "created_at": "2025-06-25 11:27:20",
+ "updated_at": "2025-09-17 17:06:55",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9779,
+ "avatar": {
+ "id": 29772,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Winston-Metal.png1758128937874.png",
+ "created_at": "2025-09-17 17:08:57",
+ "updated_at": "2025-09-17 17:08:57"
+ },
+ "rank": {
+ "id": 4098,
+ "name": "Staff Sergeant ",
+ "abbreviation": "SSgt",
+ "description": "SSGT",
+ "groupId": 990,
+ "displayOrder": 3,
+ "created_at": "2025-04-08 12:43:15",
+ "updated_at": "2025-04-10 20:52:39",
+ "imageId": 24421,
+ "image": {
+ "id": 24421,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_SSGT.png1744185597066.png",
+ "created_at": "2025-04-09 07:59:57",
+ "updated_at": "2025-04-09 07:59:57"
+ }
+ },
+ "position": {
+ "id": 4062,
+ "name": "SRR Tp Ldr",
+ "description": "SRR Troop Leader",
+ "groupId": 1058,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 20:14:01",
+ "updated_at": "2025-07-08 22:03:07"
+ },
+ "unit": {
+ "id": 3741,
+ "name": "SRR Troop HQ",
+ "callsign": "Raven 5-0",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": {
+ "id": 24432,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Special_Reconnaissance_Regiment_badge.svg.png1744186499264.png",
+ "created_at": "2025-04-09 08:14:59",
+ "updated_at": "2025-04-09 08:14:59"
+ },
+ "displayOrder": 29,
+ "created_at": "2025-04-09 08:14:59",
+ "updated_at": "2025-07-08 21:59:07"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13147,
+ "communityId": 722,
+ "alias": "Hans [3rd ID]",
+ "created_at": "2025-07-02 05:45:30",
+ "updated_at": "2025-07-02 05:45:30",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11312,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13391,
+ "communityId": 722,
+ "alias": "J. Smout",
+ "created_at": "2025-07-21 17:45:34",
+ "updated_at": "2025-07-21 17:45:34",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11476,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4429,
+ "name": "SF Recce/Sniper",
+ "description": "SRR Qualifed",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-21 16:37:19",
+ "updated_at": "2025-07-21 16:37:19"
+ },
+ "unit": {
+ "id": 3952,
+ "name": "SRR Team Alpha",
+ "callsign": "Raven 5-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 210,
+ "created_at": "2025-07-08 21:56:49",
+ "updated_at": "2025-07-08 21:56:49"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13412,
+ "communityId": 722,
+ "alias": "A. Scott",
+ "created_at": "2025-07-23 20:30:08",
+ "updated_at": "2025-07-23 20:30:08",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 2359,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13423,
+ "communityId": 722,
+ "alias": "R. Holding",
+ "created_at": "2025-07-24 21:24:25",
+ "updated_at": "2025-07-24 21:28:16",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 3486,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13424,
+ "communityId": 722,
+ "alias": "C. Agnew",
+ "created_at": "2025-07-24 21:26:11",
+ "updated_at": "2025-07-24 21:26:11",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11499,
+ "avatar": null,
+ "rank": {
+ "id": 3982,
+ "name": "Second Lieutenant",
+ "abbreviation": "2Lt.",
+ "description": "2 Lt.",
+ "groupId": 988,
+ "displayOrder": 6,
+ "created_at": "2025-02-18 16:57:44",
+ "updated_at": "2025-04-10 20:51:54",
+ "imageId": 24424,
+ "image": {
+ "id": 24424,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-2lt_patch_co.png1744185672618.png",
+ "created_at": "2025-04-09 08:01:12",
+ "updated_at": "2025-04-09 08:01:12"
+ }
+ },
+ "position": {
+ "id": 3988,
+ "name": "Intelligence Officer",
+ "description": "N/A",
+ "groupId": 1040,
+ "displayOrder": 4,
+ "created_at": "2025-02-20 19:43:44",
+ "updated_at": "2025-02-23 12:12:41"
+ },
+ "unit": {
+ "id": 3604,
+ "name": "Intelligence Cell",
+ "callsign": "--",
+ "leaderId": 11281,
+ "groupId": 1218,
+ "image": {
+ "id": 27257,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/raf,360x360,075,t,fafafa_ca443f4786.u1.jpg1752014402433.jpg",
+ "created_at": "2025-07-08 22:40:02",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ "displayOrder": 6,
+ "created_at": "2025-02-23 12:02:04",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13433,
+ "communityId": 722,
+ "alias": "Astro",
+ "created_at": "2025-07-25 16:40:44",
+ "updated_at": "2025-07-25 16:40:44",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11506,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13631,
+ "communityId": 722,
+ "alias": "Kaybee",
+ "created_at": "2025-08-10 20:09:36",
+ "updated_at": "2025-08-10 20:10:45",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9642,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13693,
+ "communityId": 722,
+ "alias": "Sophie",
+ "created_at": "2025-08-18 21:15:06",
+ "updated_at": "2025-08-18 21:15:06",
+ "status": "RESERVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11711,
+ "avatar": {
+ "id": 33527,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/download.jpg1768511734392.jpg",
+ "created_at": "2026-01-15 21:15:34",
+ "updated_at": "2026-01-15 21:15:34"
+ },
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 3993,
+ "name": "CMT Class 2 Medic",
+ "description": "An intermediate-level field medic responsible for providing effective battlefield triage, stabilization, and casualty evacuation under fire. Operators holding this qualification are trusted to operate independently within a fireteam or section and deliver essential combat medical care.\n\nCore Responsibilities:\n- Provide immediate life-saving interventions.\n- Stabilize and monitor casualties for CASEVAC/MEDEVAC.\n- Maintain medical supply discipline and manage team-level medical assets.\n\nRequires CMT Class 2 qualification.",
+ "groupId": 1153,
+ "displayOrder": 17,
+ "created_at": "2025-02-20 19:52:57",
+ "updated_at": "2025-07-08 22:30:04"
+ },
+ "unit": {
+ "id": 3956,
+ "name": "Medical Det",
+ "callsign": "Bulldog 15",
+ "leaderId": null,
+ "groupId": 1377,
+ "image": null,
+ "displayOrder": 31,
+ "created_at": "2025-07-08 22:22:46",
+ "updated_at": "2025-07-08 22:22:46"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13695,
+ "communityId": 722,
+ "alias": "Aidan",
+ "created_at": "2025-08-18 21:24:35",
+ "updated_at": "2025-08-18 21:27:39",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11713,
+ "avatar": null,
+ "rank": {
+ "id": 3988,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "Cpl",
+ "groupId": 991,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 17:04:31",
+ "updated_at": "2025-04-10 20:53:33",
+ "imageId": 23445,
+ "image": {
+ "id": 23445,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/1._Rank_Patch_-_CPL.png1739987323818.png",
+ "created_at": "2025-02-19 17:48:43",
+ "updated_at": "2025-02-19 17:48:43"
+ }
+ },
+ "position": {
+ "id": 4396,
+ "name": "Alpha Team 2IC",
+ "description": "Alpha Team 2IC",
+ "groupId": 1058,
+ "displayOrder": 9,
+ "created_at": "2025-07-08 22:05:11",
+ "updated_at": "2025-07-08 22:13:21"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13696,
+ "communityId": 722,
+ "alias": "Derry",
+ "created_at": "2025-08-18 22:54:51",
+ "updated_at": "2025-08-19 13:07:31",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11712,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4429,
+ "name": "SF Recce/Sniper",
+ "description": "SRR Qualifed",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-21 16:37:19",
+ "updated_at": "2025-07-21 16:37:19"
+ },
+ "unit": {
+ "id": 3952,
+ "name": "SRR Team Alpha",
+ "callsign": "Raven 5-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 210,
+ "created_at": "2025-07-08 21:56:49",
+ "updated_at": "2025-07-08 21:56:49"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13705,
+ "communityId": 722,
+ "alias": "Splinter ",
+ "created_at": "2025-08-19 21:12:06",
+ "updated_at": "2025-08-19 21:12:45",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 5857,
+ "avatar": null,
+ "rank": {
+ "id": 3989,
+ "name": "Lance Corporal",
+ "abbreviation": "LCpl",
+ "description": "Lcpl",
+ "groupId": 991,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:04:55",
+ "updated_at": "2025-04-10 20:54:08",
+ "imageId": 23446,
+ "image": {
+ "id": 23446,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_LCPL.png1739991043064.png",
+ "created_at": "2025-02-19 18:50:43",
+ "updated_at": "2025-02-19 18:50:43"
+ }
+ },
+ "position": {
+ "id": 4405,
+ "name": "SF Breacher",
+ "description": "SF Breacher",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:16:51",
+ "updated_at": "2025-07-08 22:16:51"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13709,
+ "communityId": 722,
+ "alias": "Omega",
+ "created_at": "2025-08-20 05:18:39",
+ "updated_at": "2025-08-20 05:18:39",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11724,
+ "avatar": {
+ "id": 30916,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Cretin.jpg1761723678900.jpg",
+ "created_at": "2025-10-29 07:41:18",
+ "updated_at": "2025-10-29 07:41:18"
+ },
+ "rank": {
+ "id": 3988,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "Cpl",
+ "groupId": 991,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 17:04:31",
+ "updated_at": "2025-04-10 20:53:33",
+ "imageId": 23445,
+ "image": {
+ "id": 23445,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/1._Rank_Patch_-_CPL.png1739987323818.png",
+ "created_at": "2025-02-19 17:48:43",
+ "updated_at": "2025-02-19 17:48:43"
+ }
+ },
+ "position": {
+ "id": 4407,
+ "name": "SF Explosives Expert",
+ "description": "SF Explosives Expert",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:17:39",
+ "updated_at": "2025-07-08 22:17:39"
+ },
+ "unit": {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13712,
+ "communityId": 722,
+ "alias": "Chris",
+ "created_at": "2025-08-20 16:27:37",
+ "updated_at": "2025-08-20 16:27:37",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11498,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13714,
+ "communityId": 722,
+ "alias": "Wraith",
+ "created_at": "2025-08-20 21:24:29",
+ "updated_at": "2025-08-20 21:25:14",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11726,
+ "avatar": null,
+ "rank": {
+ "id": 3989,
+ "name": "Lance Corporal",
+ "abbreviation": "LCpl",
+ "description": "Lcpl",
+ "groupId": 991,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:04:55",
+ "updated_at": "2025-04-10 20:54:08",
+ "imageId": 23446,
+ "image": {
+ "id": 23446,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_LCPL.png1739991043064.png",
+ "created_at": "2025-02-19 18:50:43",
+ "updated_at": "2025-02-19 18:50:43"
+ }
+ },
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13727,
+ "communityId": 722,
+ "alias": "Brett",
+ "created_at": "2025-08-21 15:57:59",
+ "updated_at": "2025-08-21 19:25:51",
+ "status": "RESERVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11734,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13734,
+ "communityId": 722,
+ "alias": "Toni",
+ "created_at": "2025-08-22 10:40:12",
+ "updated_at": "2025-08-22 10:48:19",
+ "status": "DISCHARGED",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11739,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 4429,
+ "name": "SF Recce/Sniper",
+ "description": "SRR Qualifed",
+ "groupId": 1058,
+ "displayOrder": 0,
+ "created_at": "2025-07-21 16:37:19",
+ "updated_at": "2025-07-21 16:37:19"
+ },
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13789,
+ "communityId": 722,
+ "alias": "M. Müller",
+ "created_at": "2025-08-26 20:00:14",
+ "updated_at": "2025-08-26 20:00:14",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10253,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 13905,
+ "communityId": 722,
+ "alias": "M. Schaal",
+ "created_at": "2025-09-04 15:53:40",
+ "updated_at": "2025-09-04 15:55:31",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10669,
+ "avatar": null,
+ "rank": {
+ "id": 4109,
+ "name": "Flight Sergeant",
+ "abbreviation": "FS",
+ "description": "RAF Flight Sergeant",
+ "groupId": 990,
+ "displayOrder": 5,
+ "created_at": "2025-04-10 18:24:03",
+ "updated_at": "2025-04-10 18:24:03",
+ "imageId": 24495,
+ "image": {
+ "id": 24495,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FSGT_patch_co.png1744309443718.png",
+ "created_at": "2025-04-10 18:24:03",
+ "updated_at": "2025-04-10 18:24:03"
+ }
+ },
+ "position": {
+ "id": 4055,
+ "name": "Rotary Pilot (Attack)",
+ "description": "Qualified to Fly Apache, Armed Rotary Craft",
+ "groupId": 1056,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:07:17",
+ "updated_at": "2025-04-08 12:07:17"
+ },
+ "unit": {
+ "id": 3940,
+ "name": "JSFAW",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-07 16:51:45",
+ "updated_at": "2025-07-07 16:51:45"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14057,
+ "communityId": 722,
+ "alias": "Chris H.",
+ "created_at": "2025-09-10 15:08:06",
+ "updated_at": "2025-09-11 12:42:16",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11972,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14062,
+ "communityId": 722,
+ "alias": "BAKES982",
+ "created_at": "2025-09-11 13:07:28",
+ "updated_at": "2025-09-11 13:07:28",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11975,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14125,
+ "communityId": 722,
+ "alias": "maxischaa@gmail.com",
+ "created_at": "2025-09-16 14:31:04",
+ "updated_at": "2025-09-16 14:31:04",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 11865,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14146,
+ "communityId": 722,
+ "alias": "der_echte_deutsche",
+ "created_at": "2025-09-17 14:39:48",
+ "updated_at": "2025-09-17 14:39:48",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12041,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14152,
+ "communityId": 722,
+ "alias": "Coburn",
+ "created_at": "2025-09-17 20:18:41",
+ "updated_at": "2025-09-17 20:18:41",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10248,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14865,
+ "communityId": 722,
+ "alias": "sensquaredgaming",
+ "created_at": "2025-11-04 19:43:49",
+ "updated_at": "2025-11-04 19:43:49",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9790,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 14999,
+ "communityId": 722,
+ "alias": "Noble",
+ "created_at": "2025-11-12 18:00:08",
+ "updated_at": "2025-11-12 18:01:21",
+ "status": "DISCHARGED",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12544,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15038,
+ "communityId": 722,
+ "alias": "Amy",
+ "created_at": "2025-11-14 23:45:09",
+ "updated_at": "2025-11-14 23:45:09",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12750,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15185,
+ "communityId": 722,
+ "alias": "jaruto7@wp.pl",
+ "created_at": "2025-11-25 21:07:20",
+ "updated_at": "2025-11-25 21:07:20",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12851,
+ "avatar": null,
+ "rank": null,
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15330,
+ "communityId": 722,
+ "alias": "Odin",
+ "created_at": "2025-12-09 15:24:32",
+ "updated_at": "2025-12-09 15:24:32",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12954,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15332,
+ "communityId": 722,
+ "alias": "J. Smith",
+ "created_at": "2025-12-09 17:27:49",
+ "updated_at": "2025-12-09 17:27:49",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12956,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15333,
+ "communityId": 722,
+ "alias": "G.Mockett",
+ "created_at": "2025-12-09 17:28:00",
+ "updated_at": "2025-12-09 17:28:00",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 12957,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": null,
+ "unit": null,
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15508,
+ "communityId": 722,
+ "alias": "notkongou",
+ "created_at": "2025-12-23 23:55:34",
+ "updated_at": "2025-12-23 23:55:34",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 4804,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15670,
+ "communityId": 722,
+ "alias": "alforceone",
+ "created_at": "2026-01-03 16:27:20",
+ "updated_at": "2026-01-03 16:27:20",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 10416,
+ "avatar": null,
+ "rank": {
+ "id": 4111,
+ "name": "Sergeant Aircrew",
+ "abbreviation": "SACr",
+ "description": "An RAF Aircrew Sergeant",
+ "groupId": 990,
+ "displayOrder": 8,
+ "created_at": "2025-04-10 18:28:17",
+ "updated_at": "2025-04-10 18:28:17",
+ "imageId": 24497,
+ "image": {
+ "id": 24497,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-SACR_patch_co.png1744309697665.png",
+ "created_at": "2025-04-10 18:28:17",
+ "updated_at": "2025-04-10 18:28:17"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3940,
+ "name": "JSFAW",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-07 16:51:45",
+ "updated_at": "2025-07-07 16:51:45"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15671,
+ "communityId": 722,
+ "alias": "jambojay.",
+ "created_at": "2026-01-03 17:48:36",
+ "updated_at": "2026-01-03 17:48:36",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 9507,
+ "avatar": null,
+ "rank": {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15960,
+ "communityId": 722,
+ "alias": "C. Fiadh",
+ "created_at": "2026-01-25 18:33:04",
+ "updated_at": "2026-01-28 12:14:46",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 670,
+ "avatar": null,
+ "rank": {
+ "id": 3990,
+ "name": "Private",
+ "abbreviation": "Pte",
+ "description": "Army Private",
+ "groupId": 992,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:05:49",
+ "updated_at": "2025-04-10 20:55:12",
+ "imageId": 24479,
+ "image": {
+ "id": 24479,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306247458.png",
+ "created_at": "2025-04-10 17:30:47",
+ "updated_at": "2025-04-10 17:30:47"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 15991,
+ "communityId": 722,
+ "alias": "biddlesminch",
+ "created_at": "2026-01-27 19:33:27",
+ "updated_at": "2026-01-27 19:33:27",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 13438,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": null,
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 16041,
+ "communityId": 722,
+ "alias": "K.Stevie",
+ "created_at": "2026-01-30 16:12:27",
+ "updated_at": "2026-01-30 16:12:27",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 13473,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ },
+ {
+ "id": 16211,
+ "communityId": 722,
+ "alias": "Jones",
+ "created_at": "2026-02-08 10:53:33",
+ "updated_at": "2026-02-09 23:46:09",
+ "status": "ACTIVE",
+ "discharged": false,
+ "dischargedDate": null,
+ "playerId": 13572,
+ "avatar": null,
+ "rank": {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ "position": {
+ "id": 3989,
+ "name": "Rifleman",
+ "description": "N/A",
+ "groupId": 1043,
+ "displayOrder": 14,
+ "created_at": "2025-02-20 19:43:59",
+ "updated_at": "2025-02-20 19:48:39"
+ },
+ "unit": {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ "roles": null,
+ "notes": null
+ }
+ ],
+ "units": [
+ {
+ "id": 3580,
+ "name": "TFHQ",
+ "callsign": "0-",
+ "leaderId": 11259,
+ "groupId": 1218,
+ "image": {
+ "id": 24520,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/UKSF-TFA_Unit_Emblem.png1744315262677.png",
+ "created_at": "2025-04-10 20:01:02",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ "displayOrder": 0,
+ "created_at": "2025-02-18 17:10:28",
+ "updated_at": "2025-04-10 20:01:02"
+ },
+ {
+ "id": 3581,
+ "name": "OC",
+ "callsign": "0A",
+ "leaderId": 11259,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 17:11:57",
+ "updated_at": "2025-07-21 16:25:00"
+ },
+ {
+ "id": 3582,
+ "name": "2IC",
+ "callsign": "0B",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 2,
+ "created_at": "2025-02-18 17:12:17",
+ "updated_at": "2025-02-18 17:12:17"
+ },
+ {
+ "id": 3583,
+ "name": "SSM",
+ "callsign": "0C",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:13:01",
+ "updated_at": "2025-07-21 16:23:26"
+ },
+ {
+ "id": 3584,
+ "name": "Operations Officer",
+ "callsign": "0D",
+ "leaderId": 11281,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 4,
+ "created_at": "2025-02-18 17:13:39",
+ "updated_at": "2025-02-23 12:24:09"
+ },
+ {
+ "id": 3585,
+ "name": "QM",
+ "callsign": "0E",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:13:57",
+ "updated_at": "2025-02-18 17:13:57"
+ },
+ {
+ "id": 3591,
+ "name": "JSFAW HQ",
+ "callsign": "Guardian 2-0",
+ "leaderId": 11282,
+ "groupId": 1220,
+ "image": {
+ "id": 24523,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Photoroom-20250109_105457.png1744319093056.png",
+ "created_at": "2025-04-10 21:04:53",
+ "updated_at": "2025-04-10 21:04:53"
+ },
+ "displayOrder": 20,
+ "created_at": "2025-02-18 17:19:31",
+ "updated_at": "2025-04-10 21:08:21"
+ },
+ {
+ "id": 3592,
+ "name": "JSFAW Fixed Wing",
+ "callsign": "21",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 21,
+ "created_at": "2025-02-18 17:19:45",
+ "updated_at": "2025-04-08 12:25:06"
+ },
+ {
+ "id": 3593,
+ "name": "JSFAW Rotary",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-02-18 17:20:01",
+ "updated_at": "2025-04-08 12:24:50"
+ },
+ {
+ "id": 3600,
+ "name": "Taskforce Training Regiment",
+ "callsign": "--",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 9,
+ "created_at": "2025-02-21 13:20:19",
+ "updated_at": "2025-04-10 21:32:15"
+ },
+ {
+ "id": 3604,
+ "name": "Intelligence Cell",
+ "callsign": "--",
+ "leaderId": 11281,
+ "groupId": 1218,
+ "image": {
+ "id": 27257,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/raf,360x360,075,t,fafafa_ca443f4786.u1.jpg1752014402433.jpg",
+ "created_at": "2025-07-08 22:40:02",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ "displayOrder": 6,
+ "created_at": "2025-02-23 12:02:04",
+ "updated_at": "2025-07-08 22:40:02"
+ },
+ {
+ "id": 3734,
+ "name": "Press Team",
+ "callsign": "--",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 7,
+ "created_at": "2025-04-08 12:25:59",
+ "updated_at": "2025-04-08 12:25:59"
+ },
+ {
+ "id": 3735,
+ "name": "QM's Dept",
+ "callsign": "0E",
+ "leaderId": null,
+ "groupId": 1218,
+ "image": null,
+ "displayOrder": 8,
+ "created_at": "2025-04-08 12:45:44",
+ "updated_at": "2025-04-10 21:11:15"
+ },
+ {
+ "id": 3736,
+ "name": "QM",
+ "callsign": "0E",
+ "leaderId": 11259,
+ "groupId": 1288,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:47:32",
+ "updated_at": "2025-04-10 21:11:51"
+ },
+ {
+ "id": 3737,
+ "name": "QM's Personel",
+ "callsign": "0F",
+ "leaderId": null,
+ "groupId": 1288,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:47:57",
+ "updated_at": "2025-04-08 12:48:48"
+ },
+ {
+ "id": 3739,
+ "name": "SAS Troop HQ",
+ "callsign": "Sabre 3-0",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": {
+ "id": 24430,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/UK_SAS_(badge).svg.png1744186353389.png",
+ "created_at": "2025-04-09 08:12:33",
+ "updated_at": "2025-04-09 08:12:33"
+ },
+ "displayOrder": 21,
+ "created_at": "2025-04-09 08:12:33",
+ "updated_at": "2025-07-08 21:54:29"
+ },
+ {
+ "id": 3740,
+ "name": "SBS Troop HQ",
+ "callsign": "Trident 4-0",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": {
+ "id": 24431,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Insigne_Special_Boat_Service_(SBS).svg.png1744186437516.png",
+ "created_at": "2025-04-09 08:13:57",
+ "updated_at": "2025-04-09 08:13:57"
+ },
+ "displayOrder": 25,
+ "created_at": "2025-04-09 08:13:57",
+ "updated_at": "2025-07-08 21:55:38"
+ },
+ {
+ "id": 3741,
+ "name": "SRR Troop HQ",
+ "callsign": "Raven 5-0",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": {
+ "id": 24432,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Special_Reconnaissance_Regiment_badge.svg.png1744186499264.png",
+ "created_at": "2025-04-09 08:14:59",
+ "updated_at": "2025-04-09 08:14:59"
+ },
+ "displayOrder": 29,
+ "created_at": "2025-04-09 08:14:59",
+ "updated_at": "2025-07-08 21:59:07"
+ },
+ {
+ "id": 3742,
+ "name": "UKSF ",
+ "callsign": "--",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": {
+ "id": 24524,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/MinistryofDefence.svg.png1744319884163.png",
+ "created_at": "2025-04-10 21:18:04",
+ "updated_at": "2025-04-10 21:18:04"
+ },
+ "displayOrder": 20,
+ "created_at": "2025-04-10 21:18:04",
+ "updated_at": "2025-07-07 16:55:24"
+ },
+ {
+ "id": 3940,
+ "name": "JSFAW",
+ "callsign": "22",
+ "leaderId": null,
+ "groupId": 1220,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-07 16:51:45",
+ "updated_at": "2025-07-07 16:51:45"
+ },
+ {
+ "id": 3946,
+ "name": "SAS Team Alpha",
+ "callsign": "Sabre 3-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 22,
+ "created_at": "2025-07-08 21:52:01",
+ "updated_at": "2025-07-08 21:52:01"
+ },
+ {
+ "id": 3947,
+ "name": "SAS Team Bravo",
+ "callsign": "Sabre 3-2",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 23,
+ "created_at": "2025-07-08 21:52:57",
+ "updated_at": "2025-07-08 21:52:57"
+ },
+ {
+ "id": 3948,
+ "name": "SAS Team Charlie",
+ "callsign": "Sabre 3-3",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 24,
+ "created_at": "2025-07-08 21:53:26",
+ "updated_at": "2025-07-08 21:53:26"
+ },
+ {
+ "id": 3949,
+ "name": "SBS Team Alpha",
+ "callsign": "Trident 4-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 26,
+ "created_at": "2025-07-08 21:54:48",
+ "updated_at": "2025-07-08 21:54:48"
+ },
+ {
+ "id": 3950,
+ "name": "SBS Team Bravo",
+ "callsign": "Trident 4-2",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 27,
+ "created_at": "2025-07-08 21:55:06",
+ "updated_at": "2025-07-08 21:55:06"
+ },
+ {
+ "id": 3951,
+ "name": "SBS Team Charlie",
+ "callsign": "Trident 4-3",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 28,
+ "created_at": "2025-07-08 21:55:26",
+ "updated_at": "2025-07-08 21:55:26"
+ },
+ {
+ "id": 3952,
+ "name": "SRR Team Alpha",
+ "callsign": "Raven 5-1",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 210,
+ "created_at": "2025-07-08 21:56:49",
+ "updated_at": "2025-07-08 21:56:49"
+ },
+ {
+ "id": 3953,
+ "name": "SRR Team Bravo",
+ "callsign": "Raven 5-2",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 211,
+ "created_at": "2025-07-08 21:57:05",
+ "updated_at": "2025-07-08 21:57:05"
+ },
+ {
+ "id": 3954,
+ "name": "SRR Team Charlie",
+ "callsign": "Raven 5-3",
+ "leaderId": null,
+ "groupId": 1289,
+ "image": null,
+ "displayOrder": 212,
+ "created_at": "2025-07-08 21:57:18",
+ "updated_at": "2025-07-08 21:57:18"
+ },
+ {
+ "id": 3955,
+ "name": "Med Det HQ",
+ "callsign": "Bulldog 15",
+ "leaderId": null,
+ "groupId": 1377,
+ "image": {
+ "id": 27254,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/meddet.png1744999940169.png1752013327506.png",
+ "created_at": "2025-07-08 22:22:07",
+ "updated_at": "2025-07-08 22:22:07"
+ },
+ "displayOrder": 30,
+ "created_at": "2025-07-08 22:22:07",
+ "updated_at": "2025-07-08 22:22:07"
+ },
+ {
+ "id": 3956,
+ "name": "Medical Det",
+ "callsign": "Bulldog 15",
+ "leaderId": null,
+ "groupId": 1377,
+ "image": null,
+ "displayOrder": 31,
+ "created_at": "2025-07-08 22:22:46",
+ "updated_at": "2025-07-08 22:22:46"
+ },
+ {
+ "id": 3957,
+ "name": "SFSG Training Plt HQ",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": {
+ "id": 27255,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Insigne_du_Special_Forces_Support_Group_(SFSG).svg.png1744316920677.png1752013431620.png",
+ "created_at": "2025-07-08 22:23:51",
+ "updated_at": "2025-07-08 22:23:51"
+ },
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:23:51",
+ "updated_at": "2025-07-08 22:23:51"
+ },
+ {
+ "id": 3958,
+ "name": "SFSG Training Plt",
+ "callsign": "Bulldog 10",
+ "leaderId": null,
+ "groupId": 1378,
+ "image": null,
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:24:19",
+ "updated_at": "2025-07-08 22:24:19"
+ },
+ {
+ "id": 3959,
+ "name": "1 Troop RAC",
+ "callsign": "Panzer 14",
+ "leaderId": null,
+ "groupId": 1379,
+ "image": {
+ "id": 27256,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/images.png1752014336768.png",
+ "created_at": "2025-07-08 22:38:56",
+ "updated_at": "2025-07-08 22:38:56"
+ },
+ "displayOrder": 0,
+ "created_at": "2025-07-08 22:37:28",
+ "updated_at": "2025-07-08 22:38:56"
+ }
+ ],
+ "ranks": [
+ {
+ "id": 3976,
+ "name": "Lieutenant Colonel",
+ "abbreviation": "Lt. Col",
+ "description": "Commanding Officer of UKSF Taskforce Alpha",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-02-18 16:46:23",
+ "updated_at": "2025-04-09 08:05:07",
+ "imageId": 24428,
+ "image": {
+ "id": 24428,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-ltcol_patch_co.png1744185907305.png",
+ "created_at": "2025-04-09 08:05:07",
+ "updated_at": "2025-04-09 08:05:07"
+ }
+ },
+ {
+ "id": 3977,
+ "name": "Major",
+ "abbreviation": "Maj.",
+ "description": "A Major is either OC of a Company or 2IC of a unit",
+ "groupId": 988,
+ "displayOrder": 2,
+ "created_at": "2025-02-18 16:47:13",
+ "updated_at": "2025-04-09 08:04:30",
+ "imageId": 24427,
+ "image": {
+ "id": 24427,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-maj_patch_co.png1744185870693.png",
+ "created_at": "2025-04-09 08:04:30",
+ "updated_at": "2025-04-09 08:04:30"
+ }
+ },
+ {
+ "id": 3978,
+ "name": "Lieutenant Commander",
+ "abbreviation": "Lt. Cmdr.",
+ "description": "LT Cmdr",
+ "groupId": 988,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 16:50:37",
+ "updated_at": "2025-04-10 17:19:11",
+ "imageId": 24473,
+ "image": {
+ "id": 24473,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-LTCDR_patch_co.png1744305551871.png",
+ "created_at": "2025-04-10 17:19:11",
+ "updated_at": "2025-04-10 17:19:11"
+ }
+ },
+ {
+ "id": 3979,
+ "name": "Squadron Leader",
+ "abbreviation": "Sqn. Ldr",
+ "description": "Squadron Leader RAF",
+ "groupId": 988,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 16:54:39",
+ "updated_at": "2025-04-10 17:26:43",
+ "imageId": 24476,
+ "image": {
+ "id": 24476,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-SQNLdr_patch_co.png1744306003985.png",
+ "created_at": "2025-04-10 17:26:43",
+ "updated_at": "2025-04-10 17:26:43"
+ }
+ },
+ {
+ "id": 3980,
+ "name": "Captain",
+ "abbreviation": "Capt.",
+ "description": "captain",
+ "groupId": 988,
+ "displayOrder": 4,
+ "created_at": "2025-02-18 16:55:00",
+ "updated_at": "2025-04-09 08:03:47",
+ "imageId": 24426,
+ "image": {
+ "id": 24426,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-capt_patch_co.png1744185827133.png",
+ "created_at": "2025-04-09 08:03:47",
+ "updated_at": "2025-04-09 08:03:47"
+ }
+ },
+ {
+ "id": 3981,
+ "name": "Lieutenant",
+ "abbreviation": "Lt.",
+ "description": "lt.",
+ "groupId": 988,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 16:57:12",
+ "updated_at": "2025-04-10 20:51:34",
+ "imageId": 24425,
+ "image": {
+ "id": 24425,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-lt_patch_co.png1744185711146.png",
+ "created_at": "2025-04-09 08:01:51",
+ "updated_at": "2025-04-09 08:01:51"
+ }
+ },
+ {
+ "id": 3982,
+ "name": "Second Lieutenant",
+ "abbreviation": "2Lt.",
+ "description": "2 Lt.",
+ "groupId": 988,
+ "displayOrder": 6,
+ "created_at": "2025-02-18 16:57:44",
+ "updated_at": "2025-04-10 20:51:54",
+ "imageId": 24424,
+ "image": {
+ "id": 24424,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-2lt_patch_co.png1744185672618.png",
+ "created_at": "2025-04-09 08:01:12",
+ "updated_at": "2025-04-09 08:01:12"
+ }
+ },
+ {
+ "id": 3983,
+ "name": "Warrant Officer Class 1",
+ "abbreviation": "WO1, RSM",
+ "description": "WO1 ARMY",
+ "groupId": 989,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 16:58:56",
+ "updated_at": "2025-04-10 18:09:08",
+ "imageId": 24477,
+ "image": {
+ "id": 24477,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-wo1_patch_co.png1744306101859.png",
+ "created_at": "2025-04-10 17:28:21",
+ "updated_at": "2025-04-10 17:28:21"
+ }
+ },
+ {
+ "id": 3984,
+ "name": "Warrant Officer Class 2",
+ "abbreviation": "WO2, CSM",
+ "description": "Company Sergeant Major",
+ "groupId": 989,
+ "displayOrder": 6,
+ "created_at": "2025-02-18 17:01:23",
+ "updated_at": "2025-04-10 18:11:00",
+ "imageId": 24422,
+ "image": {
+ "id": 24422,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-ARMY-wo2_patch_co.png1744185626501.png",
+ "created_at": "2025-04-09 08:00:26",
+ "updated_at": "2025-04-09 08:00:26"
+ }
+ },
+ {
+ "id": 3985,
+ "name": "Warrant Officer Class 2",
+ "abbreviation": "RQMS, WO2",
+ "description": "Regimental Quartermaster Sergeant",
+ "groupId": 989,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:02:04",
+ "updated_at": "2025-04-10 18:10:32",
+ "imageId": 24478,
+ "image": {
+ "id": 24478,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-WO2_patch_co.png1744306193504.png",
+ "created_at": "2025-04-10 17:29:53",
+ "updated_at": "2025-04-10 17:29:53"
+ }
+ },
+ {
+ "id": 3986,
+ "name": "Colour Sergeant",
+ "abbreviation": "CSgt",
+ "description": "CSGT is a infantry name\nSSGT is a Other arms name",
+ "groupId": 990,
+ "displayOrder": 2,
+ "created_at": "2025-02-18 17:03:38",
+ "updated_at": "2025-04-10 20:52:20",
+ "imageId": 23448,
+ "image": {
+ "id": 23448,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/1._Rank_Patch_-_SSGT.png1739991117304.png",
+ "created_at": "2025-02-19 18:51:57",
+ "updated_at": "2025-02-19 18:51:57"
+ }
+ },
+ {
+ "id": 3987,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "Sgt",
+ "groupId": 990,
+ "displayOrder": 7,
+ "created_at": "2025-02-18 17:04:03",
+ "updated_at": "2025-04-10 20:53:02",
+ "imageId": 23447,
+ "image": {
+ "id": 23447,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_SGT.png1739991088670.png",
+ "created_at": "2025-02-19 18:51:28",
+ "updated_at": "2025-02-19 18:51:28"
+ }
+ },
+ {
+ "id": 3988,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "Cpl",
+ "groupId": 991,
+ "displayOrder": 1,
+ "created_at": "2025-02-18 17:04:31",
+ "updated_at": "2025-04-10 20:53:33",
+ "imageId": 23445,
+ "image": {
+ "id": 23445,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/1._Rank_Patch_-_CPL.png1739987323818.png",
+ "created_at": "2025-02-19 17:48:43",
+ "updated_at": "2025-02-19 17:48:43"
+ }
+ },
+ {
+ "id": 3989,
+ "name": "Lance Corporal",
+ "abbreviation": "LCpl",
+ "description": "Lcpl",
+ "groupId": 991,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:04:55",
+ "updated_at": "2025-04-10 20:54:08",
+ "imageId": 23446,
+ "image": {
+ "id": 23446,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/2._Rank_Patch_-_LCPL.png1739991043064.png",
+ "created_at": "2025-02-19 18:50:43",
+ "updated_at": "2025-02-19 18:50:43"
+ }
+ },
+ {
+ "id": 3990,
+ "name": "Private",
+ "abbreviation": "Pte",
+ "description": "Army Private",
+ "groupId": 992,
+ "displayOrder": 3,
+ "created_at": "2025-02-18 17:05:49",
+ "updated_at": "2025-04-10 20:55:12",
+ "imageId": 24479,
+ "image": {
+ "id": 24479,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306247458.png",
+ "created_at": "2025-04-10 17:30:47",
+ "updated_at": "2025-04-10 17:30:47"
+ }
+ },
+ {
+ "id": 3991,
+ "name": "Recruit",
+ "abbreviation": "Rct",
+ "description": "Recruit",
+ "groupId": 992,
+ "displayOrder": 5,
+ "created_at": "2025-02-18 17:06:10",
+ "updated_at": "2025-04-10 20:55:26",
+ "imageId": 24480,
+ "image": {
+ "id": 24480,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744306264606.png",
+ "created_at": "2025-04-10 17:31:04",
+ "updated_at": "2025-04-10 17:31:04"
+ }
+ },
+ {
+ "id": 3992,
+ "name": "Trooper",
+ "abbreviation": "Tpr",
+ "description": "Private Soldier - **SAS, SBS & SRR Only**",
+ "groupId": 992,
+ "displayOrder": 1,
+ "created_at": "2025-02-19 17:16:40",
+ "updated_at": "2025-04-10 20:54:49",
+ "imageId": 23441,
+ "image": {
+ "id": 23441,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_Pte.png1739986929005.png",
+ "created_at": "2025-02-19 17:42:09",
+ "updated_at": "2025-02-19 17:42:09"
+ }
+ },
+ {
+ "id": 3993,
+ "name": "Commander",
+ "abbreviation": "Cmdr.",
+ "description": "commander",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-02-19 22:10:38",
+ "updated_at": "2025-04-10 17:54:17",
+ "imageId": 24485,
+ "image": {
+ "id": 24485,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-CDR_patch_co.png1744307657261.png",
+ "created_at": "2025-04-10 17:54:17",
+ "updated_at": "2025-04-10 17:54:17"
+ }
+ },
+ {
+ "id": 4096,
+ "name": "Flight Lieutenant",
+ "abbreviation": "Flt Lt.",
+ "description": "RAF Flight Lt",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:17:45",
+ "updated_at": "2025-04-10 17:25:55",
+ "imageId": 24474,
+ "image": {
+ "id": 24474,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FlLt_patch_co.png1744305955625.png",
+ "created_at": "2025-04-10 17:25:55",
+ "updated_at": "2025-04-10 17:25:55"
+ }
+ },
+ {
+ "id": 4097,
+ "name": "Flying Officer",
+ "abbreviation": "FgOff",
+ "description": "Flying Officer RAF",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-08 12:18:31",
+ "updated_at": "2025-04-10 18:06:04",
+ "imageId": 24475,
+ "image": {
+ "id": 24475,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FlOff_patch_co.png1744305979136.png",
+ "created_at": "2025-04-10 17:26:19",
+ "updated_at": "2025-04-10 17:26:19"
+ }
+ },
+ {
+ "id": 4098,
+ "name": "Staff Sergeant ",
+ "abbreviation": "SSgt",
+ "description": "SSGT",
+ "groupId": 990,
+ "displayOrder": 3,
+ "created_at": "2025-04-08 12:43:15",
+ "updated_at": "2025-04-10 20:52:39",
+ "imageId": 24421,
+ "image": {
+ "id": 24421,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Rank_Patch_-_SSGT.png1744185597066.png",
+ "created_at": "2025-04-09 07:59:57",
+ "updated_at": "2025-04-09 07:59:57"
+ }
+ },
+ {
+ "id": 4100,
+ "name": "Lieutenant",
+ "abbreviation": "Lt",
+ "description": "Royal Navy Lieutenant Rank",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:02:13",
+ "updated_at": "2025-04-10 18:02:13",
+ "imageId": 24486,
+ "image": {
+ "id": 24486,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-LT_patch_co.png1744308133816.png",
+ "created_at": "2025-04-10 18:02:13",
+ "updated_at": "2025-04-10 18:02:13"
+ }
+ },
+ {
+ "id": 4101,
+ "name": "Sub Lieutenant",
+ "abbreviation": "SLt",
+ "description": "Royal Navy equivalent rank to Second Lieutenant",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:03:45",
+ "updated_at": "2025-04-10 18:03:45",
+ "imageId": 24487,
+ "image": {
+ "id": 24487,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-SLT_patch_co.png1744308225081.png",
+ "created_at": "2025-04-10 18:03:45",
+ "updated_at": "2025-04-10 18:03:45"
+ }
+ },
+ {
+ "id": 4102,
+ "name": "Pilot Officer",
+ "abbreviation": "PltOff",
+ "description": "Lowest RAF Commissioned Officer",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:04:29",
+ "updated_at": "2025-04-10 18:04:29",
+ "imageId": 24488,
+ "image": {
+ "id": 24488,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-PltOff_patch_co.png1744308269399.png",
+ "created_at": "2025-04-10 18:04:29",
+ "updated_at": "2025-04-10 18:04:29"
+ }
+ },
+ {
+ "id": 4103,
+ "name": "Wing Commander",
+ "abbreviation": "Wg Cdr",
+ "description": "RAF High Command Rank",
+ "groupId": 988,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:05:41",
+ "updated_at": "2025-04-10 18:05:41",
+ "imageId": 24489,
+ "image": {
+ "id": 24489,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-WCdr_patch_co.png1744308341046.png",
+ "created_at": "2025-04-10 18:05:41",
+ "updated_at": "2025-04-10 18:05:41"
+ }
+ },
+ {
+ "id": 4104,
+ "name": "Warrant Officer Class 1",
+ "abbreviation": "WO1",
+ "description": "Royal Navy Warrant Officer",
+ "groupId": 989,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:12:29",
+ "updated_at": "2025-04-10 18:12:29",
+ "imageId": 24490,
+ "image": {
+ "id": 24490,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-WO1_patch_co.png1744308749854.png",
+ "created_at": "2025-04-10 18:12:29",
+ "updated_at": "2025-04-10 18:12:29"
+ }
+ },
+ {
+ "id": 4105,
+ "name": "Warrant Officer Class 2",
+ "abbreviation": "WO2",
+ "description": "Royal Navy Warrant Officer Class 2",
+ "groupId": 989,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 18:13:14",
+ "updated_at": "2025-04-10 18:13:14",
+ "imageId": 24491,
+ "image": {
+ "id": 24491,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-WO2_patch_co.png1744308794924.png",
+ "created_at": "2025-04-10 18:13:14",
+ "updated_at": "2025-04-10 18:13:14"
+ }
+ },
+ {
+ "id": 4106,
+ "name": "Petty Officer",
+ "abbreviation": "PO",
+ "description": "Royal Navy Senior NCO",
+ "groupId": 990,
+ "displayOrder": 1,
+ "created_at": "2025-04-10 18:18:15",
+ "updated_at": "2025-04-10 18:18:15",
+ "imageId": 24492,
+ "image": {
+ "id": 24492,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-PO_patch_co.png1744309095289.png",
+ "created_at": "2025-04-10 18:18:15",
+ "updated_at": "2025-04-10 18:18:15"
+ }
+ },
+ {
+ "id": 4107,
+ "name": "Chief Petty Officer",
+ "abbreviation": "CPO",
+ "description": "The most Senior NCO in the Royal Navy",
+ "groupId": 990,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:18:59",
+ "updated_at": "2025-04-10 18:18:59",
+ "imageId": 24493,
+ "image": {
+ "id": 24493,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-CPO_patch_co.png1744309139623.png",
+ "created_at": "2025-04-10 18:18:59",
+ "updated_at": "2025-04-10 18:18:59"
+ }
+ },
+ {
+ "id": 4108,
+ "name": "Sergeant",
+ "abbreviation": "Sgt",
+ "description": "RAF Sergeant",
+ "groupId": 990,
+ "displayOrder": 9,
+ "created_at": "2025-04-10 18:22:40",
+ "updated_at": "2025-04-10 20:53:15",
+ "imageId": 24494,
+ "image": {
+ "id": 24494,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-SGT_patch_co.png1744309360795.png",
+ "created_at": "2025-04-10 18:22:40",
+ "updated_at": "2025-04-10 18:22:40"
+ }
+ },
+ {
+ "id": 4109,
+ "name": "Flight Sergeant",
+ "abbreviation": "FS",
+ "description": "RAF Flight Sergeant",
+ "groupId": 990,
+ "displayOrder": 5,
+ "created_at": "2025-04-10 18:24:03",
+ "updated_at": "2025-04-10 18:24:03",
+ "imageId": 24495,
+ "image": {
+ "id": 24495,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FSGT_patch_co.png1744309443718.png",
+ "created_at": "2025-04-10 18:24:03",
+ "updated_at": "2025-04-10 18:24:03"
+ }
+ },
+ {
+ "id": 4110,
+ "name": "Chief Technician",
+ "abbreviation": "Chf Tech",
+ "description": "RAF Chief Technician",
+ "groupId": 990,
+ "displayOrder": 6,
+ "created_at": "2025-04-10 18:24:56",
+ "updated_at": "2025-04-10 18:24:56",
+ "imageId": 24496,
+ "image": {
+ "id": 24496,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-CTECH_patch_co.png1744309496674.png",
+ "created_at": "2025-04-10 18:24:56",
+ "updated_at": "2025-04-10 18:24:56"
+ }
+ },
+ {
+ "id": 4111,
+ "name": "Sergeant Aircrew",
+ "abbreviation": "SACr",
+ "description": "An RAF Aircrew Sergeant",
+ "groupId": 990,
+ "displayOrder": 8,
+ "created_at": "2025-04-10 18:28:17",
+ "updated_at": "2025-04-10 18:28:17",
+ "imageId": 24497,
+ "image": {
+ "id": 24497,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-SACR_patch_co.png1744309697665.png",
+ "created_at": "2025-04-10 18:28:17",
+ "updated_at": "2025-04-10 18:28:17"
+ }
+ },
+ {
+ "id": 4112,
+ "name": "Flight Sergeant Aircrew",
+ "abbreviation": "FSACr",
+ "description": "RAF Flight Sergeant Aircrew",
+ "groupId": 990,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 18:30:17",
+ "updated_at": "2025-04-10 18:30:17",
+ "imageId": 24498,
+ "image": {
+ "id": 24498,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-FSACR_patch_co.png1744309817021.png",
+ "created_at": "2025-04-10 18:30:17",
+ "updated_at": "2025-04-10 18:30:17"
+ }
+ },
+ {
+ "id": 4113,
+ "name": "Corporal",
+ "abbreviation": "Cpl",
+ "description": "RAF Corporal",
+ "groupId": 991,
+ "displayOrder": 2,
+ "created_at": "2025-04-10 18:33:12",
+ "updated_at": "2025-04-10 20:53:52",
+ "imageId": 24499,
+ "image": {
+ "id": 24499,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-CPL_patch_co.png1744309992102.png",
+ "created_at": "2025-04-10 18:33:12",
+ "updated_at": "2025-04-10 18:33:12"
+ }
+ },
+ {
+ "id": 4114,
+ "name": "Lance Corporal",
+ "abbreviation": "LCpl",
+ "description": "RAF Regiment Only!",
+ "groupId": 991,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 18:34:06",
+ "updated_at": "2025-04-10 20:54:26",
+ "imageId": 24500,
+ "image": {
+ "id": 24500,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-LCPL_patch_co.png1744310046886.png",
+ "created_at": "2025-04-10 18:34:06",
+ "updated_at": "2025-04-10 18:34:06"
+ }
+ },
+ {
+ "id": 4115,
+ "name": "Air Specialist Class 1 Technician",
+ "abbreviation": "AS1(T)",
+ "description": "RAF Senior Technical JNCO",
+ "groupId": 991,
+ "displayOrder": 5,
+ "created_at": "2025-04-10 18:35:35",
+ "updated_at": "2025-04-10 18:35:35",
+ "imageId": 24501,
+ "image": {
+ "id": 24501,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-AS1T_patch_co.png1744310135706.png",
+ "created_at": "2025-04-10 18:35:35",
+ "updated_at": "2025-04-10 18:35:35"
+ }
+ },
+ {
+ "id": 4116,
+ "name": "Air Specialist Class 1",
+ "abbreviation": "AS1",
+ "description": "An RAF Senior JNCO",
+ "groupId": 991,
+ "displayOrder": 6,
+ "created_at": "2025-04-10 18:36:54",
+ "updated_at": "2025-04-10 18:36:54",
+ "imageId": 24502,
+ "image": {
+ "id": 24502,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-AS1_patch_co.png1744310214186.png",
+ "created_at": "2025-04-10 18:36:54",
+ "updated_at": "2025-04-10 18:36:54"
+ }
+ },
+ {
+ "id": 4117,
+ "name": "Air Specialist Class 2",
+ "abbreviation": "AS2",
+ "description": "An RAF Senior OR",
+ "groupId": 992,
+ "displayOrder": 2,
+ "created_at": "2025-04-10 18:39:16",
+ "updated_at": "2025-04-10 18:39:16",
+ "imageId": 24503,
+ "image": {
+ "id": 24503,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-AS2_patch_co.png1744310356090.png",
+ "created_at": "2025-04-10 18:39:16",
+ "updated_at": "2025-04-10 18:39:16"
+ }
+ },
+ {
+ "id": 4118,
+ "name": "Airman",
+ "abbreviation": "AM",
+ "description": "Lowest OR in the RAF",
+ "groupId": 992,
+ "displayOrder": 4,
+ "created_at": "2025-04-10 18:42:29",
+ "updated_at": "2025-04-10 18:42:29",
+ "imageId": 24504,
+ "image": {
+ "id": 24504,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/RankPatchPteA_co.png1744310549946.png",
+ "created_at": "2025-04-10 18:42:29",
+ "updated_at": "2025-04-10 18:42:29"
+ }
+ },
+ {
+ "id": 4120,
+ "name": "Able Rating",
+ "abbreviation": "AB",
+ "description": "Lowest Rank in the Royal Navy",
+ "groupId": 992,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:46:01",
+ "updated_at": "2025-04-10 18:46:01",
+ "imageId": 24506,
+ "image": {
+ "id": 24506,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-AB_patch_co.png1744310761709.png",
+ "created_at": "2025-04-10 18:46:01",
+ "updated_at": "2025-04-10 18:46:01"
+ }
+ },
+ {
+ "id": 4121,
+ "name": "Warrant Officer of the Air Force",
+ "abbreviation": "WORAF",
+ "description": "Highest non-commissioned officer in the RAF",
+ "groupId": 989,
+ "displayOrder": 2,
+ "created_at": "2025-04-10 18:50:25",
+ "updated_at": "2025-04-10 18:50:25",
+ "imageId": 24507,
+ "image": {
+ "id": 24507,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-WOAF_patch_co.png1744311025891.png",
+ "created_at": "2025-04-10 18:50:25",
+ "updated_at": "2025-04-10 18:50:25"
+ }
+ },
+ {
+ "id": 4122,
+ "name": "Master Aircrew",
+ "abbreviation": "MACr",
+ "description": "Warrant Officer RAF",
+ "groupId": 989,
+ "displayOrder": 3,
+ "created_at": "2025-04-10 18:52:05",
+ "updated_at": "2025-04-10 18:52:05",
+ "imageId": 24508,
+ "image": {
+ "id": 24508,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-MACR_patch_co.png1744311125056.png",
+ "created_at": "2025-04-10 18:52:05",
+ "updated_at": "2025-04-10 18:52:05"
+ }
+ },
+ {
+ "id": 4123,
+ "name": "Warrant Officer",
+ "abbreviation": "WO",
+ "description": "RAF Warrant Officer",
+ "groupId": 989,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:53:40",
+ "updated_at": "2025-04-10 18:53:40",
+ "imageId": 24509,
+ "image": {
+ "id": 24509,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-RAF-WO_patch_co.png1744311220438.png",
+ "created_at": "2025-04-10 18:53:40",
+ "updated_at": "2025-04-10 18:53:40"
+ }
+ },
+ {
+ "id": 4124,
+ "name": "Leading Hand",
+ "abbreviation": "LH",
+ "description": "A JNCO of the Royal Navy",
+ "groupId": 991,
+ "displayOrder": 0,
+ "created_at": "2025-04-10 18:57:03",
+ "updated_at": "2025-04-10 18:57:03",
+ "imageId": 24510,
+ "image": {
+ "id": 24510,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TFA-NAVY-LH_patch_co.png1744311423933.png",
+ "created_at": "2025-04-10 18:57:03",
+ "updated_at": "2025-04-10 18:57:03"
+ }
+ }
+ ],
+ "awards": [
+ {
+ "id": 3234,
+ "name": "Operation Restore",
+ "description": "For those who have participated within our operation restore missions",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 17:38:55",
+ "updated_at": "2025-04-16 17:38:55",
+ "imageId": 24740,
+ "image": {
+ "id": 24740,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OP_Restore.png1744825135816.png",
+ "created_at": "2025-04-16 17:38:55",
+ "updated_at": "2025-04-16 17:38:55"
+ },
+ "profileCount": 12
+ },
+ {
+ "id": 3235,
+ "name": "Military Cross ",
+ "description": " British military award granted for acts of exemplary gallantry during active operations against the enemy on land",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:52:37",
+ "updated_at": "2025-09-24 22:01:10",
+ "imageId": 30006,
+ "image": {
+ "id": 30006,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/militarycross_(2).png1758751270844.png",
+ "created_at": "2025-09-24 22:01:10",
+ "updated_at": "2025-09-24 22:01:10"
+ },
+ "profileCount": 2
+ },
+ {
+ "id": 3236,
+ "name": "George Cross ",
+ "description": "a British award, equal in precedence to the Victoria Cross, bestowed for non-operational gallantry or gallantry not in the presence of an enemy",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:53:03",
+ "updated_at": "2025-09-24 21:57:22",
+ "imageId": 30005,
+ "image": {
+ "id": 30005,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/George_cross-min.png1758751042134.png",
+ "created_at": "2025-09-24 21:57:22",
+ "updated_at": "2025-09-24 21:57:22"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3237,
+ "name": "Victoria Cross ",
+ "description": "Britain's highest military award for gallantry, recognized for acts of extreme bravery in the presence of the enemy",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:54:35",
+ "updated_at": "2025-09-24 22:04:02",
+ "imageId": 30007,
+ "image": {
+ "id": 30007,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/VictoriaCross-min.png1758751442290.png",
+ "created_at": "2025-09-24 22:04:02",
+ "updated_at": "2025-09-24 22:04:02"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3238,
+ "name": "Operation Black Sheep ",
+ "description": "Awarded for time served dueing operation balck sheep ",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:56:15",
+ "updated_at": "2025-04-16 20:56:15",
+ "imageId": 24747,
+ "image": {
+ "id": 24747,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Op_Black_sheep.jpeg1744836975565.jpeg",
+ "created_at": "2025-04-16 20:56:15",
+ "updated_at": "2025-04-16 20:56:15"
+ },
+ "profileCount": 4
+ },
+ {
+ "id": 3239,
+ "name": "Distinguished flying cross",
+ "description": "a military decoration awarded for acts of valor, courage, or devotion to duty while flying in active operations against the enemy",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:57:58",
+ "updated_at": "2025-04-16 20:57:58",
+ "imageId": 24748,
+ "image": {
+ "id": 24748,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/United_Kingdom_Distinguished_Flying_Cross_ribbon.svg.png1744837078046.png",
+ "created_at": "2025-04-16 20:57:58",
+ "updated_at": "2025-04-16 20:57:58"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3240,
+ "name": "Royal Red Cross ",
+ "description": "military decoration awarded in the United Kingdom and Commonwealth for exceptional services in military nursing",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 20:59:40",
+ "updated_at": "2025-04-16 20:59:40",
+ "imageId": 24749,
+ "image": {
+ "id": 24749,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Royal_Red_Cross_(UK)_ribbon.png1744837180728.png",
+ "created_at": "2025-04-16 20:59:40",
+ "updated_at": "2025-04-16 20:59:40"
+ },
+ "profileCount": 4
+ },
+ {
+ "id": 3241,
+ "name": "Operation Breezer ",
+ "description": "Awarded to personel who served on OP Breezer ",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:01:26",
+ "updated_at": "2025-04-16 21:01:26",
+ "imageId": 24750,
+ "image": {
+ "id": 24750,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Operation_Brezzer.png1744837286472.png",
+ "created_at": "2025-04-16 21:01:26",
+ "updated_at": "2025-04-16 21:01:26"
+ },
+ "profileCount": 22
+ },
+ {
+ "id": 3242,
+ "name": "Royal Air Force Long service and good conduct Award ",
+ "description": "as title ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:05:16",
+ "updated_at": "2025-04-16 21:05:16",
+ "imageId": 24751,
+ "image": {
+ "id": 24751,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Ribbon_-_Royal_Air_Force_Long_Service_and_Good_Conduct_Medal.png1744837516419.png",
+ "created_at": "2025-04-16 21:05:16",
+ "updated_at": "2025-04-16 21:05:16"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3243,
+ "name": "Medal for Long Service and Good Conduct_(Military)",
+ "description": "as title ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:05:50",
+ "updated_at": "2025-04-16 21:05:50",
+ "imageId": 24752,
+ "image": {
+ "id": 24752,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Ribbon_-_Medal_for_Long_Service_and_Good_Conduct_(Military).png1744837550019.png",
+ "created_at": "2025-04-16 21:05:50",
+ "updated_at": "2025-04-16 21:05:50"
+ },
+ "profileCount": 8
+ },
+ {
+ "id": 3244,
+ "name": "Accumulated Campaign Service Medal ",
+ "description": "Awarded to soldiers who have done over 720 days service in a combat zone ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:06:39",
+ "updated_at": "2025-04-16 21:06:39",
+ "imageId": 24753,
+ "image": {
+ "id": 24753,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Accumulated_Campaign_Service_Medal_2011_BAR.svg.png1744837599121.png",
+ "created_at": "2025-04-16 21:06:39",
+ "updated_at": "2025-04-16 21:06:39"
+ },
+ "profileCount": 6
+ },
+ {
+ "id": 3245,
+ "name": "Accumulated Campaign Service Medal second award",
+ "description": "Issued to soldiers who have been awarded Accumulated Campaign Service Medal previously and have been awarded it a second time ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:07:45",
+ "updated_at": "2025-04-16 21:07:45",
+ "imageId": 24754,
+ "image": {
+ "id": 24754,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Accumulated_Campaign_Service_Medal_second_award_bar.png1744837665717.png",
+ "created_at": "2025-04-16 21:07:45",
+ "updated_at": "2025-04-16 21:07:45"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3247,
+ "name": "Elizabeth Cross ",
+ "description": "Awarded for being Injured greatly in an Operation ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:12:49",
+ "updated_at": "2025-04-16 21:12:49",
+ "imageId": 24756,
+ "image": {
+ "id": 24756,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Elizabeth_Cross__solo.jpg1744837969610.jpg",
+ "created_at": "2025-04-16 21:12:49",
+ "updated_at": "2025-04-16 21:12:49"
+ },
+ "profileCount": 1
+ },
+ {
+ "id": 3248,
+ "name": "Veteran Badge ",
+ "description": "This confirms people in the Unit that have servered in the UK armed forces in real life ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-04-16 21:14:10",
+ "updated_at": "2025-04-16 21:14:10",
+ "imageId": 24758,
+ "image": {
+ "id": 24758,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/Veterans_Badge.jpg1744838050738.jpg",
+ "created_at": "2025-04-16 21:14:10",
+ "updated_at": "2025-04-16 21:14:10"
+ },
+ "profileCount": 5
+ },
+ {
+ "id": 3347,
+ "name": "Operation Sparrow ",
+ "description": "Awarded for those who participated in the operation ",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-06-18 21:12:25",
+ "updated_at": "2025-08-19 20:13:56",
+ "imageId": 26401,
+ "image": {
+ "id": 26401,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OP_sparrow.png1750281145566.png",
+ "created_at": "2025-06-18 21:12:25",
+ "updated_at": "2025-06-18 21:12:25"
+ },
+ "profileCount": 13
+ },
+ {
+ "id": 3466,
+ "name": "TSS",
+ "description": "Awarded to those who merged over from TSS Pmc",
+ "groupId": 688,
+ "displayOrder": 0,
+ "created_at": "2025-08-19 17:16:01",
+ "updated_at": "2025-08-19 17:16:01",
+ "imageId": 28555,
+ "image": {
+ "id": 28555,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/TSS_Logo_White.png1755623761175.png",
+ "created_at": "2025-08-19 17:16:01",
+ "updated_at": "2025-08-19 17:16:01"
+ },
+ "profileCount": 11
+ },
+ {
+ "id": 3468,
+ "name": "Operation Reaction ",
+ "description": "Awarded to those who where deployed to OP Reaction for a certain time period ",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-08-19 20:11:23",
+ "updated_at": "2025-08-19 20:33:58",
+ "imageId": 28578,
+ "image": {
+ "id": 28578,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OperationReaction.png1755635638928.png",
+ "created_at": "2025-08-19 20:33:58",
+ "updated_at": "2025-08-19 20:33:58"
+ },
+ "profileCount": 20
+ },
+ {
+ "id": 3578,
+ "name": "Operation Op Snatcher ",
+ "description": "Awarded to the brave men and women of the British special forces who depolyed on the specified operation ",
+ "groupId": 634,
+ "displayOrder": 0,
+ "created_at": "2025-09-17 17:06:42",
+ "updated_at": "2025-09-17 17:06:42",
+ "imageId": 29771,
+ "image": {
+ "id": 29771,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OP_Snatcherr-min.png1758128802635.png",
+ "created_at": "2025-09-17 17:06:42",
+ "updated_at": "2025-09-17 17:06:42"
+ },
+ "profileCount": 21
+ },
+ {
+ "id": 3580,
+ "name": "OP Sahel ",
+ "description": "award of deployment to Op Sahel ",
+ "groupId": 633,
+ "displayOrder": 0,
+ "created_at": "2025-09-24 18:02:02",
+ "updated_at": "2025-09-24 18:02:02",
+ "imageId": 29995,
+ "image": {
+ "id": 29995,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OPSahel.png1758736922138.png",
+ "created_at": "2025-09-24 18:02:02",
+ "updated_at": "2025-09-24 18:02:02"
+ },
+ "profileCount": 12
+ }
+ ]
+}
\ No newline at end of file
diff --git a/static/data/external.json b/static/data/external.json
new file mode 100644
index 0000000..4669788
--- /dev/null
+++ b/static/data/external.json
@@ -0,0 +1,14 @@
+{
+ "steam": {
+ "current_players": 12,
+ "max_players": 100,
+ "server_name": "UKSF Official | Milsim",
+ "map": "Chernarus",
+ "status": "ACTIVE"
+ },
+ "battlemetrics": {
+ "rank": 420,
+ "uptime": "99.9%",
+ "activity_30d": [10, 15, 8, 12, 25, 30, 22]
+ }
+}
diff --git a/static/data/roster.json b/static/data/roster.json
new file mode 100644
index 0000000..6c2706d
--- /dev/null
+++ b/static/data/roster.json
@@ -0,0 +1,46 @@
+{
+ "unit": "UKSF Directorate",
+ "branches": {
+ "sas": {
+ "name": "Special Air Service",
+ "motto": "Who Dares Wins",
+ "hq": "Stirling Lines, Hereford"
+ },
+ "sbs": {
+ "name": "Special Boat Service",
+ "motto": "By Strength and Guile",
+ "hq": "RM Poole, Dorset"
+ },
+ "srr": {
+ "name": "Special Reconnaissance Regiment",
+ "motto": "Excelemus",
+ "hq": "Stirling Lines, Hereford"
+ },
+ "18sig": {
+ "name": "18 (UKSF) Signal Regiment",
+ "motto": "Colloquendo Imperamus",
+ "hq": "Stirling Lines, Hereford"
+ },
+ "sfsg": {
+ "name": "Special Forces Support Group",
+ "motto": "Ad Unum Omnes",
+ "hq": "St Athan, Wales"
+ },
+ "jac": {
+ "name": "Joint Aviation Command",
+ "motto": "Vigilo",
+ "hq": "Marlborough Lines, Andover"
+ },
+ "asob": {
+ "name": "Army Special Operations Brigade",
+ "motto": "Seek Out",
+ "hq": "Aldershot"
+ },
+ "ramc": {
+ "name": "Royal Army Medical Corps",
+ "motto": "In Arduis Fidelis",
+ "hq": "Sandhurst"
+ }
+ },
+ "personnel": []
+}
diff --git a/static/data/server_stats.json b/static/data/server_stats.json
new file mode 100644
index 0000000..c232138
--- /dev/null
+++ b/static/data/server_stats.json
@@ -0,0 +1,7 @@
+{
+ "current_players": 12,
+ "max_players": 100,
+ "server_name": "UKSF Official | Milsim",
+ "map": "Chernarus",
+ "status": "ACTIVE"
+}
diff --git a/static/intel.json b/static/intel.json
new file mode 100644
index 0000000..5600495
--- /dev/null
+++ b/static/intel.json
@@ -0,0 +1,324 @@
+{
+ "timestamp": 1771007047722,
+ "arma": {
+ "name": "UKSF Taskforce Alpha Ops Server V2",
+ "map": "chernarusredux",
+ "players": 4,
+ "maxPlayers": 40,
+ "status": "online",
+ "manifest": [
+ {
+ "name": "Chris"
+ },
+ {
+ "name": "shane"
+ },
+ {
+ "name": "Flt Lt. \"Mayday\" Müller"
+ },
+ {
+ "name": "Cpl. Omega"
+ }
+ ]
+ },
+ "unitcommander": {
+ "campaigns": [
+ {
+ "id": 677,
+ "campaignName": "Operation Retrieving Gold ",
+ "map": "Chernarus Redux",
+ "brief": "Situation:\nThe year is 2018, 30 years after Day 0.\nWe are the first expeditionary forces to set foot outside of the UK. We've been tasked with reconnaissance of the surrounding terrain of Chernarus, setting up a fixed FOB and possible retrieval of technology.\n\nWe are in unknown territory, we have little information about the area that surrounds us and we are effectively the first new faces in this terrain. We are under-equipped until the rest of our convoy reaches our location.\n\nMission:\nUKSF has been tasked with reconnaissance of Chernarus, finding a suitable location to settle a permanent FOB and possibly retrieving old technology that is otherwise in working order, or can be restored to working order.\n\nToday, we got a little headsup that might help us.",
+ "image": {
+ "id": 33755,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/image.png1769635425047.png",
+ "created_at": "2026-01-28 21:23:45",
+ "updated_at": "2026-01-28 21:23:45"
+ },
+ "created_at": "2026-01-14 23:53:53",
+ "updated_at": "2026-02-12 23:42:18",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3348,
+ "name": "Op Thumb Sucking",
+ "dateTime": "2026-01-16 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-16",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1461147334292410481",
+ "discordPingSent": true
+ },
+ {
+ "id": 3403,
+ "name": "Op Nightcrawler",
+ "dateTime": "2026-01-30 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-30",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1466182377544880169",
+ "discordPingSent": true
+ },
+ {
+ "id": 3484,
+ "name": "Op Nostalgia",
+ "dateTime": "2026-02-13 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-02-13",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1471652763858501633",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 675,
+ "campaignName": "Operation Iron Retribution",
+ "map": "Lythium",
+ "brief": "Situation:\nFollowing the \"Day of Ashes\" mass-casualty terrorist attack on UK soil, intelligence has identified the perpetrator as Al-Khaima Front (AKF), a transnational terrorist organization. AKF operates a sophisticated and compartmentalized network spanning the UK and a foreign sanctuary known as \"Lythium.\"\n\nThe network's cross-border finance, logistics, and international coordination are controlled by a single high-value individual codenamed 'THE FERRYMAN'.\n\nMission:\nUKSF has been tasked with conducting phased counter-terrorism operations to locate, disrupt, and dismantle the AKF leadership and infrastructure, neutralizing their capability to conduct further attacks against the UK and it's allies.",
+ "image": {
+ "id": 33434,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/images.steamusercontent.jpg1768170071430.jpg",
+ "created_at": "2026-01-11 22:21:11",
+ "updated_at": "2026-01-11 22:21:11"
+ },
+ "created_at": "2026-01-11 22:21:11",
+ "updated_at": "2026-01-11 22:21:11",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3331,
+ "name": "Op Iron Retribution 2",
+ "dateTime": "2026-01-14 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-14",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1460036293118525584",
+ "discordPingSent": false
+ },
+ {
+ "id": 3363,
+ "name": "Op Iron Retribution 3",
+ "dateTime": "2026-01-21 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-21",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1462759999867588747",
+ "discordPingSent": true
+ },
+ {
+ "id": 3391,
+ "name": "Op Iron Retribution 4",
+ "dateTime": "2026-01-28 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-01-28",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1465296559267909766",
+ "discordPingSent": true
+ },
+ {
+ "id": 3421,
+ "name": "Op Iron Retribution 5",
+ "dateTime": "2026-02-04 19:00:00",
+ "time": "19:00:00",
+ "date": "2026-02-04",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1467142027677270167",
+ "discordPingSent": true
+ }
+ ]
+ },
+ {
+ "id": 637,
+ "campaignName": "Operation Jungle Cobra",
+ "map": "Northern Colombia",
+ "brief": "SITUATION:\nFollowing the successful disruption of their command in Sahatra, the remnants of the Black Rose have fled to the remote, dense jungles of Colombia. Intelligence confirms they are now establishing chemical weapon production facilities, utilising local Cartel networks and resources. This represents a critical escalation: the Black Rose is transitioning from a regional threat to a global proliferator of WMDs.\n\nTHE ENEMY:\nThe last three remaining members of the Council of 13 are believed to be overseeing these production\noperations. They are highly dangerous, desperate, and will be protected by well-armed local Cartel forces and PMC elements.\n\nTHE OBJECTIVE:\nThis campaign's ultimate goal is the complete and permanent neutralisation of the Black Rose's chemical weapon production capability. This will involve hunting down and eliminating the remaining Council members, destroying all production facilities, and interdicting their supply lines.\n\nTHE TERRAIN:\nExpect extreme environmental challenges: dense jungle, high humidity, difficult terrain, and a complex human terrain dominated by powerful Cartel networks and insurgent groups.\n\nTHE STAKES:\nFailure is not an option. The proliferation of chemical weapons by the Black Rose would have catastrophic global consequences.",
+ "image": {
+ "id": 31629,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/download.jpeg1762721389767.jpeg",
+ "created_at": "2025-11-09 20:49:49",
+ "updated_at": "2025-11-09 20:49:49"
+ },
+ "created_at": "2025-11-09 20:49:49",
+ "updated_at": "2025-11-09 20:57:58",
+ "status": "ACTIVE",
+ "events": [
+ {
+ "id": 3167,
+ "name": "Op Piranha Strike",
+ "dateTime": "2025-11-12 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-11-12",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1437452184533991567",
+ "discordPingSent": true
+ },
+ {
+ "id": 3197,
+ "name": "Op Jungle Cobra 2",
+ "dateTime": "2025-11-19 21:00:00",
+ "time": "21:00:00",
+ "date": "2025-11-19",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1440326102747971604",
+ "discordPingSent": true
+ },
+ {
+ "id": 3217,
+ "name": "Op Unseen Cargo",
+ "dateTime": "2025-11-26 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-11-26",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1442626283946250342",
+ "discordPingSent": true
+ },
+ {
+ "id": 3234,
+ "name": "Op Unseen Cargo | Part 2",
+ "dateTime": "2025-12-03 19:00:00",
+ "time": "19:00:00",
+ "date": "2025-12-03",
+ "locked": false,
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1445457594020790474",
+ "discordPingSent": true
+ }
+ ]
+ }
+ ],
+ "standalone": [
+ {
+ "id": 2775,
+ "name": "SF Training Operation for new ORBAT",
+ "description": "Training night in your new teams under the new ORBAT",
+ "image": null,
+ "map": "Bovington",
+ "dateTime": "2025-07-23 18:00:00",
+ "date": "2025-07-23",
+ "time": "19:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1396896524704813259",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 2857,
+ "name": "Op Hunter",
+ "description": "**Classified** **TOP SECRET**",
+ "image": null,
+ "map": "Classified ",
+ "dateTime": "2025-08-06 17:00:00",
+ "date": "2025-08-06",
+ "time": "19:00:00",
+ "locked": true,
+ "locked_at": "2025-09-08 15:49:27",
+ "status": "ARCHIVED",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1402399543202418819",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3003,
+ "name": "Op Snatcher ",
+ "description": "Classified ",
+ "image": null,
+ "map": "Classified ",
+ "dateTime": "2025-09-10 18:00:00",
+ "date": "2025-09-10",
+ "time": "19:00:00",
+ "locked": true,
+ "locked_at": "2025-09-11 12:44:01",
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1414638960558215208",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3346,
+ "name": "Mini Operation",
+ "description": "Following the conclusion of the scheduled CQB training, a mini-operation will be conducted. -\n\nAttendance for the mini-operation is entirely voluntary. All participants are encouraged to join for what is anticipated to be a valuable and enjoyable exercise.",
+ "image": {
+ "id": 32125,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/sas.jpg1764264729670.jpg",
+ "created_at": "2025-11-27 17:32:09",
+ "updated_at": "2025-11-27 17:32:09"
+ },
+ "map": "Northern Colombia",
+ "dateTime": "2025-11-27 20:00:00",
+ "date": "2025-11-27",
+ "time": "20:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1443655655717208084",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ },
+ {
+ "id": 3422,
+ "name": "Operation Satan's Slay",
+ "description": "Objective: Rescue Santa Claus from an unknown threat and Secure Christmas by ensuring the timely delivery of all presents.\n\nSituation: Intelligence confirms that Santa Claus has been compromised and is currently detained/missing. The North Pole operation is in chaos, and the global gift-delivery schedule is at severe risk. Failure is not an option—billions of units of goodwill are at stake.\n\nImmediate Task: Locate, extract, and ensure the safe return of Santa Claus to his command center. Simultaneously, you must secure the gift inventory and prepare the sleigh for immediate launch on schedule.\n\nRequired Assets: Speed, stealth, unwavering festive spirit, and absolute adherence to the Nice List.",
+ "image": {
+ "id": 32604,
+ "path": "https://cdn.unitcommander.co.uk:9000/community/722/OIP-3986261552.jpg1765908460608.jpg",
+ "created_at": "2025-12-16 18:07:40",
+ "updated_at": "2025-12-16 18:07:40"
+ },
+ "map": "Napf Island - Winter",
+ "dateTime": "2025-12-17 19:00:00",
+ "date": "2025-12-17",
+ "time": "19:00:00",
+ "locked": false,
+ "locked_at": null,
+ "status": "ACTIVE",
+ "discordChannel": "1321236262065274987",
+ "discordPingable": "1321642508161122304",
+ "discordMessage": "1450549962407542914",
+ "discordPingSent": false,
+ "frequency": null,
+ "recurringUntil": null,
+ "processedForRecurrence": false
+ }
+ ]
+ },
+ "status": "STABLE"
+}
\ No newline at end of file
diff --git a/static/telemetry.json b/static/telemetry.json
new file mode 100644
index 0000000..f0a8f1c
--- /dev/null
+++ b/static/telemetry.json
@@ -0,0 +1,574 @@
+{
+ "timestamp": 1771007050523,
+ "today": [
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-13T17:30:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T22:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T21:30:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T21:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T20:30:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T18:30:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T18:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ }
+ ],
+ "week": [
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-13T17:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T22:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T21:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T20:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T19:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T18:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T17:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T16:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T15:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T14:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T02:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T01:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-12T00:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T23:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T22:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T21:00:00.000Z",
+ "max": 17,
+ "value": 4,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T20:00:00.000Z",
+ "max": 17,
+ "value": 17,
+ "min": 17
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T19:00:00.000Z",
+ "max": 18,
+ "value": 17,
+ "min": 16
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T18:00:00.000Z",
+ "max": 14,
+ "value": 6,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T17:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T15:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T14:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T13:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-11T00:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T23:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T22:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T19:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T18:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T17:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T16:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T15:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-10T00:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T23:00:00.000Z",
+ "max": 2,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T22:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T21:00:00.000Z",
+ "max": 4,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T20:00:00.000Z",
+ "max": 4,
+ "value": 4,
+ "min": 4
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T19:00:00.000Z",
+ "max": 4,
+ "value": 4,
+ "min": 4
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T18:00:00.000Z",
+ "max": 4,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-09T17:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T23:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T22:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T21:00:00.000Z",
+ "max": 7,
+ "value": 5,
+ "min": 3
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T20:00:00.000Z",
+ "max": 6,
+ "value": 6,
+ "min": 6
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T19:00:00.000Z",
+ "max": 10,
+ "value": 7,
+ "min": 2
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T18:00:00.000Z",
+ "max": 2,
+ "value": 2,
+ "min": 2
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T17:00:00.000Z",
+ "max": 2,
+ "value": 2,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T16:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T15:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T01:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-08T00:00:00.000Z",
+ "max": 1,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-07T23:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-07T18:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 1
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-07T17:00:00.000Z",
+ "max": 1,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-07T16:00:00.000Z",
+ "max": 2,
+ "value": 1,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-07T15:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ },
+ {
+ "type": "dataPoint",
+ "attributes": {
+ "timestamp": "2026-02-06T18:00:00.000Z",
+ "max": 0,
+ "value": 0,
+ "min": 0
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tests/accessibility.spec.js b/tests/accessibility.spec.js
index 387707e..39a23c6 100644
--- a/tests/accessibility.spec.js
+++ b/tests/accessibility.spec.js
@@ -1,26 +1,33 @@
-import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
+import { expect, test } from '@playwright/test';
test.describe('MOD.UK Accessibility Audit', () => {
test.beforeEach(async ({ page }) => {
await page.addInitScript(() => {
- window.localStorage.setItem('moduk_theme', 'dark');
- window.localStorage.setItem('uksf_auth', 'authorized');
+ window.localStorage.setItem('moduk_theme', 'dark');
+ window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
- document.documentElement.classList.add('dark');
+ window.localStorage.setItem('dev_access', 'granted');
+ document.documentElement.classList.add('dark');
});
});
test('homepage should meet WCAG 2.2 AA standards', async ({ page }) => {
await page.goto('/');
await page.evaluate(() => document.documentElement.classList.add('dark'));
-
+
// Wait for dynamic content (Battlemetrics, etc.) to settle
await page.waitForTimeout(2000);
const accessibilityScanResults = await new AxeBuilder({ page })
- .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa'])
+ .withTags([
+ 'wcag2a',
+ 'wcag2aa',
+ 'wcag21a',
+ 'wcag21aa',
+ 'wcag22a',
+ 'wcag22aa',
+ ])
.exclude('#battlemetrics-graph')
.exclude('#cookie-consent-banner')
.analyze();
@@ -28,12 +35,21 @@ test.describe('MOD.UK Accessibility Audit', () => {
expect(accessibilityScanResults.violations).toEqual([]);
});
- test('registry portal should meet WCAG 2.2 AA standards', async ({ page }) => {
+ test('registry portal should meet WCAG 2.2 AA standards', async ({
+ page,
+ }) => {
await page.goto('/registry/gate/');
await page.evaluate(() => document.documentElement.classList.add('dark'));
-
+
const accessibilityScanResults = await new AxeBuilder({ page })
- .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa', 'wcag22a', 'wcag22aa'])
+ .withTags([
+ 'wcag2a',
+ 'wcag2aa',
+ 'wcag21a',
+ 'wcag21aa',
+ 'wcag22a',
+ 'wcag22aa',
+ ])
.exclude('#battlemetrics-graph')
.exclude('#cookie-consent-banner')
.analyze();
diff --git a/tests/aesthetic.spec.js b/tests/aesthetic.spec.js
index d88299f..ea7eeaa 100644
--- a/tests/aesthetic.spec.js
+++ b/tests/aesthetic.spec.js
@@ -1,4 +1,4 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Institutional Aesthetic & Layout Verification', () => {
test.beforeEach(async ({ page }) => {
@@ -6,7 +6,7 @@ test.describe('Institutional Aesthetic & Layout Verification', () => {
await page.addInitScript(() => {
window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
+ window.localStorage.setItem('dev_access', 'granted');
});
await page.goto('/');
@@ -14,53 +14,73 @@ test.describe('Institutional Aesthetic & Layout Verification', () => {
await page.waitForTimeout(2000);
});
- test('Homepage sections should not have horizontal overflow', async ({ page }) => {
+ test('Homepage sections should not have horizontal overflow', async ({
+ page,
+ }) => {
const sections = await page.locator('section');
const count = await sections.count();
const viewportSize = page.viewportSize();
-
- if (!viewportSize) throw new Error("Viewport size not found");
+
+ if (!viewportSize) throw new Error('Viewport size not found');
for (let i = 0; i < count; i++) {
const section = sections.nth(i);
const box = await section.boundingBox();
- const id = await section.getAttribute('id') || `section-${i}`;
-
+ const id = (await section.getAttribute('id')) || `section-${i}`;
+
if (box) {
// Check for horizontal overflow
- expect(box.width, `Section ${id} width is overflowing`).toBeLessThanOrEqual(viewportSize.width);
-
+ expect(
+ box.width,
+ `Section ${id} width is overflowing`,
+ ).toBeLessThanOrEqual(viewportSize.width);
+
// Take a screenshot of each section for visual debugging
await section.screenshot({ path: `test-results/section-${id}.png` });
}
}
});
- test('Main scroll container should not have horizontal overflow', async ({ page }) => {
- const scrollWidth = await page.evaluate(() => document.documentElement.scrollWidth);
- const clientWidth = await page.evaluate(() => document.documentElement.clientWidth);
- expect(scrollWidth, `Horizontal scroll detected: ${scrollWidth} > ${clientWidth}`).toBeLessThanOrEqual(clientWidth);
+ test('Main scroll container should not have horizontal overflow', async ({
+ page,
+ }) => {
+ const scrollWidth = await page.evaluate(
+ () => document.documentElement.scrollWidth,
+ );
+ const clientWidth = await page.evaluate(
+ () => document.documentElement.clientWidth,
+ );
+ expect(
+ scrollWidth,
+ `Horizontal scroll detected: ${scrollWidth} > ${clientWidth}`,
+ ).toBeLessThanOrEqual(clientWidth);
});
- test('Battlemetrics graph should be rendered on homepage', async ({ page }) => {
+ test('Battlemetrics graph should be rendered on homepage', async ({
+ page,
+ }) => {
const graph = page.locator('#battlemetrics-graph');
await expect(graph).toBeVisible();
-
+
// Wait for potential deferred rendering
await page.waitForTimeout(2000);
-
+
// Check if it contains an SVG or the "No Telemetry" message
- const hasSvg = await graph.locator('svg').count() > 0;
- const hasNoDataMessage = await page.getByText('No_Telemetry_Detected').count() > 0;
-
- expect(hasSvg || hasNoDataMessage, 'Graph should either have an SVG or a "No Telemetry" message').toBeTruthy();
-
+ const hasSvg = (await graph.locator('svg').count()) > 0;
+ const hasNoDataMessage =
+ (await page.getByText('No_Telemetry_Detected').count()) > 0;
+
+ expect(
+ hasSvg || hasNoDataMessage,
+ 'Graph should either have an SVG or a "No Telemetry" message',
+ ).toBeTruthy();
+
if (hasSvg) {
- console.log("Battlemetrics SVG detected successfully.");
+ console.log('Battlemetrics SVG detected successfully.');
} else {
- console.log("Battlemetrics reported No_Telemetry_Detected.");
+ console.log('Battlemetrics reported No_Telemetry_Detected.');
}
-
+
// Test range switching
const weekBtn = page.locator('button:has-text("7D")').first();
if (await weekBtn.isVisible()) {
@@ -71,36 +91,48 @@ test.describe('Institutional Aesthetic & Layout Verification', () => {
expect(pointsAfterSwitch).toBeGreaterThan(0);
}
- await graph.screenshot({ path: 'test-results/battlemetrics-graph-home.png' });
+ await graph.screenshot({
+ path: 'test-results/battlemetrics-graph-home.png',
+ });
});
- test('Battlemetrics graph should be rendered on covert page', async ({ page }) => {
+ test('Battlemetrics graph should be rendered on covert page', async ({
+ page,
+ }) => {
// 1. Bypass auth gate
await page.addInitScript(() => {
window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
+ window.localStorage.setItem('dev_access', 'granted');
});
await page.goto('/registry/archive-covert/');
const graph = page.locator('#battlemetrics-graph');
await expect(graph).toBeVisible();
-
+
// Wait for potential deferred rendering
await page.waitForTimeout(2000);
-
+
// Check if it contains an SVG or the "No Telemetry" message
- const hasSvg = await graph.locator('svg').count() > 0;
- const hasNoDataMessage = await page.getByText('No_Telemetry_Detected').count() > 0;
-
- expect(hasSvg || hasNoDataMessage, 'Graph should either have an SVG or a "No Telemetry" message').toBeTruthy();
-
+ const hasSvg = (await graph.locator('svg').count()) > 0;
+ const hasNoDataMessage =
+ (await page.getByText('No_Telemetry_Detected').count()) > 0;
+
+ expect(
+ hasSvg || hasNoDataMessage,
+ 'Graph should either have an SVG or a "No Telemetry" message',
+ ).toBeTruthy();
+
if (hasSvg) {
- console.log("Battlemetrics SVG detected on covert page.");
+ console.log('Battlemetrics SVG detected on covert page.');
} else {
- console.log("Battlemetrics reported No_Telemetry_Detected on covert page.");
+ console.log(
+ 'Battlemetrics reported No_Telemetry_Detected on covert page.',
+ );
}
-
- await graph.screenshot({ path: 'test-results/battlemetrics-graph-covert.png' });
+
+ await graph.screenshot({
+ path: 'test-results/battlemetrics-graph-covert.png',
+ });
});
});
diff --git a/tests/console.spec.js b/tests/console.spec.js
index 74354ec..1a170c6 100644
--- a/tests/console.spec.js
+++ b/tests/console.spec.js
@@ -1,8 +1,10 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('C2 Console', () => {
- test('should display uplink status', async ({ page }) => {
- await page.goto('/registry/console/?disable_consent=true');
- await expect(page.locator('#connection-status')).toContainText('UPLINK_ACTIVE');
- });
+ test('should display uplink status', async ({ page }) => {
+ await page.goto('/registry/console/?disable_consent=true');
+ await expect(page.locator('#connection-status')).toContainText(
+ 'UPLINK_ACTIVE',
+ );
+ });
});
diff --git a/tests/filing.spec.js b/tests/filing.spec.js
index e0fd360..07d6001 100644
--- a/tests/filing.spec.js
+++ b/tests/filing.spec.js
@@ -1,22 +1,24 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Filing Terminal', () => {
- test.beforeEach(async ({ page }) => {
- await page.addInitScript(() => {
- window.localStorage.setItem('uksf_auth', 'authorized');
+ test.beforeEach(async ({ page }) => {
+ await page.addInitScript(() => {
+ window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('uksf_hq_auth', 'true');
- });
+ window.localStorage.setItem('dev_access', 'granted');
+ window.localStorage.setItem('uksf_hq_auth', 'true');
});
+ });
- test('should show induction briefing for new users', async ({ page }) => {
- await page.addInitScript(() => {
- window.localStorage.removeItem('uksfta_vault_tutorial_seen');
- });
- await page.goto('/registry/filing/?disable_consent=true');
- const onboarding = page.locator('#vault-onboarding');
- await expect(onboarding).toHaveAttribute('data-visible', 'true');
- await expect(page.locator('#onboarding-content')).toContainText('Welcome to the RSIS Vault');
+ test('should show induction briefing for new users', async ({ page }) => {
+ await page.addInitScript(() => {
+ window.localStorage.removeItem('uksfta_vault_tutorial_seen');
});
+ await page.goto('/registry/filing/?disable_consent=true');
+ const onboarding = page.locator('#vault-onboarding');
+ await expect(onboarding).toHaveAttribute('data-visible', 'true');
+ await expect(page.locator('#onboarding-content')).toContainText(
+ 'Welcome to the RSIS Vault',
+ );
+ });
});
diff --git a/tests/header-footer.spec.js b/tests/header-footer.spec.js
index 7677ba9..5836ed4 100644
--- a/tests/header-footer.spec.js
+++ b/tests/header-footer.spec.js
@@ -1,7 +1,6 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Global Infrastructure: Header, Banner & Footer', () => {
-
test.beforeEach(async ({ page }) => {
await page.addInitScript(() => {
window.localStorage.setItem('dev_access', 'granted');
@@ -9,23 +8,29 @@ test.describe('Global Infrastructure: Header, Banner & Footer', () => {
await page.goto('/');
});
- test('Superior Rule (HMG Standard) should be perfectly rendered', async ({ page }) => {
+ test('Superior Rule (HMG Standard) should be perfectly rendered', async ({
+ page,
+ }) => {
const superiorRule = page.locator('.superior-rule');
await expect(superiorRule).toBeVisible();
await expect(superiorRule).toContainText('UKSF Taskforce Alpha');
await expect(superiorRule).toContainText('Private Milsim Site');
await expect(superiorRule).toContainText('Non-Official');
-
+
// Check toggle button
- const toggleBtn = superiorRule.locator('button:has-text("Toggle Interface")');
+ const toggleBtn = superiorRule.locator(
+ 'button:has-text("Toggle Interface")',
+ );
await expect(toggleBtn).toBeVisible();
await expect(toggleBtn).toHaveCSS('text-transform', 'uppercase');
});
- test('Main Navigation Bar should contain all core unit links', async ({ page }) => {
+ test('Main Navigation Bar should contain all core unit links', async ({
+ page,
+ }) => {
const nav = page.locator('nav[aria-label="Main navigation"]');
await expect(nav).toBeVisible();
-
+
// Check Logo
const logo = nav.locator('img[alt="UKSF Taskforce Alpha - Milsim Logo"]');
await expect(logo).toBeVisible();
@@ -33,10 +38,21 @@ test.describe('Global Infrastructure: Header, Banner & Footer', () => {
expect(logoSrc).not.toBeNull();
// Check Navigation Links (Explicitly)
- const expectedLinks = ['SAS', 'SBS', 'ASOB', 'SFSG', 'JSFAW', 'RAMC', 'Registry'];
+ const expectedLinks = [
+ 'SAS',
+ 'SBS',
+ 'ASOB',
+ 'SFSG',
+ 'JSFAW',
+ 'RAMC',
+ 'Registry',
+ ];
for (const linkText of expectedLinks) {
const link = nav.locator(`a:has-text("${linkText}")`);
- await expect(link, `Link "${linkText}" missing from header`).toBeVisible();
+ await expect(
+ link,
+ `Link "${linkText}" missing from header`,
+ ).toBeVisible();
}
// Check CTA
@@ -69,7 +85,9 @@ test.describe('Global Infrastructure: Header, Banner & Footer', () => {
// Verify Column 3: Resources
await expect(footer).toContainText('Institutional Links');
- await expect(footer.locator('a:has-text("Selection Gateway")')).toBeVisible();
+ await expect(
+ footer.locator('a:has-text("Selection Gateway")'),
+ ).toBeVisible();
await expect(footer.locator('a:has-text("Deployment Logs")')).toBeVisible();
// Verify Column 4: Signal Center
@@ -78,6 +96,8 @@ test.describe('Global Infrastructure: Header, Banner & Footer', () => {
// Verify Disclaimer
await expect(footer).toContainText('Unofficial community project');
- await expect(footer).toContainText('No affiliation with the UK Ministry of Defence');
+ await expect(footer).toContainText(
+ 'No affiliation with the UK Ministry of Defence',
+ );
});
});
diff --git a/tests/homepage-blocks.spec.js b/tests/homepage-blocks.spec.js
index f997bc8..210c3d3 100644
--- a/tests/homepage-blocks.spec.js
+++ b/tests/homepage-blocks.spec.js
@@ -1,7 +1,6 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Homepage Architecture: Block-by-Block Verification', () => {
-
test.beforeEach(async ({ page }) => {
await page.goto('/');
});
@@ -10,11 +9,15 @@ test.describe('Homepage Architecture: Block-by-Block Verification', () => {
await page.waitForTimeout(2000); // Allow for hydration
const hero = page.locator('section').nth(0);
await expect(hero.locator('h1')).toContainText('Always A Little Further');
- await expect(hero.locator('p')).toContainText('Taskforce Alpha coordinates elite special operations');
-
+ await expect(hero.locator('p')).toContainText(
+ 'Taskforce Alpha coordinates elite special operations',
+ );
+
// CTAs
await expect(hero.locator('a:has-text("Start Selection")')).toBeVisible();
- await expect(hero.locator('a:has-text("Explore Capability")')).toBeVisible();
+ await expect(
+ hero.locator('a:has-text("Explore Capability")'),
+ ).toBeVisible();
});
test('Section 2: Mission Directive Block', async ({ page }) => {
@@ -26,7 +29,7 @@ test.describe('Homepage Architecture: Block-by-Block Verification', () => {
test('Section 3: Unit Directory Block', async ({ page }) => {
const units = page.locator('section').nth(2);
await expect(units.locator('h2')).toContainText('Taskforce Units');
-
+
// Check for specific unit cards
const unitCards = ['SAS', 'SBS', 'ASOB', 'SFSG', 'JSFAW', 'RAMC'];
for (const unit of unitCards) {
@@ -38,14 +41,18 @@ test.describe('Homepage Architecture: Block-by-Block Verification', () => {
await page.waitForTimeout(2000); // Allow for widgets to load
const aor = page.locator('section').nth(3);
// Explicitly target the section h2, not nested widget h2s
- await expect(aor.locator('> .moduk-width-container h2').first()).toContainText('AOR Control');
- await expect(aor.locator('.bg-mod-green.shadow-lg')).toContainText('STATION_ACTIVE');
-
+ await expect(
+ aor.locator('> .moduk-width-container h2').first(),
+ ).toContainText('AOR Control');
+ await expect(aor.locator('.bg-mod-green.shadow-lg')).toContainText(
+ 'STATION_ACTIVE',
+ );
+
// Map Check
const map = aor.locator('.tactical-map-container');
await expect(map).toBeVisible();
await expect(map.locator('.unit-node').first()).toBeVisible();
-
+
// Comms Hub Check
await expect(aor.locator('.live-ops-feed-container').first()).toBeVisible();
});
@@ -53,6 +60,8 @@ test.describe('Homepage Architecture: Block-by-Block Verification', () => {
test('Section 5: Final Selection Gateway', async ({ page }) => {
const gateway = page.locator('section').nth(4);
await expect(gateway.locator('h2')).toContainText('Strategic Enlistment');
- await expect(gateway.locator('a:has-text("Apply for Selection")')).toBeVisible();
+ await expect(
+ gateway.locator('a:has-text("Apply for Selection")'),
+ ).toBeVisible();
});
});
diff --git a/tests/maintenance.spec.js b/tests/maintenance.spec.js
index 5c8f133..0dba22d 100644
--- a/tests/maintenance.spec.js
+++ b/tests/maintenance.spec.js
@@ -1,31 +1,52 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Maintenance Page Layout Verification', () => {
- test('Maintenance page should be strictly full screen with no scrolling', async ({ page }) => {
+ test('Maintenance page should be strictly full screen with no scrolling', async ({
+ page,
+ }) => {
// Clear dev_access to ensure we hit the maintenance page
await page.addInitScript(() => {
window.localStorage.removeItem('dev_access');
});
await page.goto('/maintenance/');
-
+
// 1. Verify URL and content
await expect(page).toHaveURL(/\/maintenance\//);
await expect(page.locator('h1')).toContainText('System Deployment');
// 2. Check for scrolling
- const scrollHeight = await page.evaluate(() => document.documentElement.scrollHeight);
- const clientHeight = await page.evaluate(() => document.documentElement.clientHeight);
- const scrollWidth = await page.evaluate(() => document.documentElement.scrollWidth);
- const clientWidth = await page.evaluate(() => document.documentElement.clientWidth);
+ const scrollHeight = await page.evaluate(
+ () => document.documentElement.scrollHeight,
+ );
+ const clientHeight = await page.evaluate(
+ () => document.documentElement.clientHeight,
+ );
+ const scrollWidth = await page.evaluate(
+ () => document.documentElement.scrollWidth,
+ );
+ const clientWidth = await page.evaluate(
+ () => document.documentElement.clientWidth,
+ );
- expect(scrollHeight, `Vertical scroll detected: ${scrollHeight} > ${clientHeight}`).toBeLessThanOrEqual(clientHeight);
- expect(scrollWidth, `Horizontal scroll detected: ${scrollWidth} > ${clientWidth}`).toBeLessThanOrEqual(clientWidth);
+ expect(
+ scrollHeight,
+ `Vertical scroll detected: ${scrollHeight} > ${clientHeight}`,
+ ).toBeLessThanOrEqual(clientHeight);
+ expect(
+ scrollWidth,
+ `Horizontal scroll detected: ${scrollWidth} > ${clientWidth}`,
+ ).toBeLessThanOrEqual(clientWidth);
// 3. Verify body style
- const overflow = await page.evaluate(() => window.getComputedStyle(document.body).overflow);
+ const overflow = await page.evaluate(
+ () => window.getComputedStyle(document.body).overflow,
+ );
expect(overflow).toBe('hidden');
- await page.screenshot({ path: 'test-results/maintenance-page-fitting.png', fullPage: true });
+ await page.screenshot({
+ path: 'test-results/maintenance-page-fitting.png',
+ fullPage: true,
+ });
});
});
diff --git a/tests/media-integrity.spec.js b/tests/media-integrity.spec.js
index 0fd21da..3411e99 100644
--- a/tests/media-integrity.spec.js
+++ b/tests/media-integrity.spec.js
@@ -1,12 +1,14 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Media & Asset Integrity: Zero Broken Images', () => {
-
test('All critical unit icons and maps should load', async ({ page }) => {
// Collect all image requests
const brokenImages = [];
- page.on('response', response => {
- if (response.request().resourceType() === 'image' && response.status() >= 400) {
+ page.on('response', (response) => {
+ if (
+ response.request().resourceType() === 'image' &&
+ response.status() >= 400
+ ) {
brokenImages.push(`${response.url()} (${response.status()})`);
}
});
@@ -20,14 +22,17 @@ test.describe('Media & Asset Integrity: Zero Broken Images', () => {
await page.goto('/registry/orbat/');
await page.waitForTimeout(1000);
- expect(brokenImages, `Found broken images: ${brokenImages.join(', ')}`).toHaveLength(0);
+ expect(
+ brokenImages,
+ `Found broken images: ${brokenImages.join(', ')}`,
+ ).toHaveLength(0);
});
test('Tactical Map Asset verification', async ({ page }) => {
await page.goto('/');
const map = page.locator('.tactical-map-container');
await expect(map).toBeVisible();
-
+
// Check bounding box to ensure it's not a collapsed 0x0 container
const box = await map.boundingBox();
expect(box.width).toBeGreaterThan(0);
@@ -38,8 +43,8 @@ test.describe('Media & Asset Integrity: Zero Broken Images', () => {
await page.goto('/');
const logo = page.locator('nav img[alt="UKSF Taskforce Alpha"]');
await expect(logo).toBeVisible();
-
- const naturalWidth = await logo.evaluate(img => img.naturalWidth);
+
+ const naturalWidth = await logo.evaluate((img) => img.naturalWidth);
expect(naturalWidth).toBeGreaterThan(0);
});
});
diff --git a/tests/mobile-tactical.spec.js b/tests/mobile-tactical.spec.js
index 92dbe20..6c94cc3 100644
--- a/tests/mobile-tactical.spec.js
+++ b/tests/mobile-tactical.spec.js
@@ -1,36 +1,43 @@
-import { test, expect, devices } from '@playwright/test';
+import { devices, expect, test } from '@playwright/test';
// Use iPhone 13 as standard mobile reference
test.use({ ...devices['iPhone 13'] });
test.describe('Mobile Tactical Interface', () => {
-
- test('Mobile Homepage should be responsive and fit screen', async ({ page }) => {
+ test('Mobile Homepage should be responsive and fit screen', async ({
+ page,
+ }) => {
await page.goto('/');
-
+
// Check for horizontal overflow
- const scrollWidth = await page.evaluate(() => document.documentElement.scrollWidth);
- const clientWidth = await page.evaluate(() => document.documentElement.clientWidth);
+ const scrollWidth = await page.evaluate(
+ () => document.documentElement.scrollWidth,
+ );
+ const clientWidth = await page.evaluate(
+ () => document.documentElement.clientWidth,
+ );
expect(scrollWidth).toBeLessThanOrEqual(clientWidth);
// Verify header components stack or hide
const superiorRule = page.locator('.superior-rule');
await expect(superiorRule).toBeVisible();
-
+
// Check if "Private Milsim Site" hides on small screens (per our header.html class 'hidden sm:block')
- const sensitiveTag = superiorRule.locator('span:has-text("Private Milsim Site")');
+ const sensitiveTag = superiorRule.locator(
+ 'span:has-text("Private Milsim Site")',
+ );
await expect(sensitiveTag).not.toBeVisible();
});
test('Mobile Navigation interaction', async ({ page }) => {
await page.goto('/');
-
+
// Check if main desktop links are hidden
const sasLink = page.locator('nav a:has-text("SAS")');
- // Depending on tailwind config, 'lg:flex' means hidden below 1024px.
+ // Depending on tailwind config, 'lg:flex' means hidden below 1024px.
// Since we are on iPhone (390px), it should be hidden.
await expect(sasLink).not.toBeVisible();
-
+
// Check if the secure access button remains (per our header.html it is 'hidden sm:flex', so on mobile it might hide)
const secureAccess = page.locator('a:has-text("Secure Access")');
await expect(secureAccess).not.toBeVisible();
@@ -38,16 +45,16 @@ test.describe('Mobile Tactical Interface', () => {
test('Mobile Section Stacking', async ({ page }) => {
await page.goto('/');
-
+
// Unit cards should stack vertically (1 column)
const unitsSection = page.locator('section').nth(2);
const cards = unitsSection.locator('.group');
const count = await cards.count();
-
+
if (count > 1) {
const box1 = await cards.nth(0).boundingBox();
const box2 = await cards.nth(1).boundingBox();
-
+
if (box1 && box2) {
// In stacking mode, X coordinates should be similar, Y should be different
expect(Math.abs(box1.x - box2.x)).toBeLessThan(10);
diff --git a/tests/orbat.spec.js b/tests/orbat.spec.js
index e557197..93eb451 100644
--- a/tests/orbat.spec.js
+++ b/tests/orbat.spec.js
@@ -1,4 +1,4 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('ORBAT Interactivity Verification', () => {
test.beforeEach(async ({ page }) => {
@@ -6,23 +6,27 @@ test.describe('ORBAT Interactivity Verification', () => {
await page.addInitScript(() => {
window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
+ window.localStorage.setItem('dev_access', 'granted');
});
-
+
await page.goto('/registry/orbat/?disable_consent=true');
// Wait for dynamic content to load and center view
await page.waitForTimeout(2000);
});
- test('Should be able to toggle edit mode and edit node text', async ({ page }) => {
+ test('Should be able to toggle edit mode and edit node text', async ({
+ page,
+ }) => {
// 1. Enable Edit Mode
const editBtn = page.locator('#edit-mode-btn');
await editBtn.click();
await expect(page.locator('#hq-admin-bar')).toHaveClass(/edit-active/);
// 2. Locate a node and its name field
- const firstNodeName = page.locator('.orbat-node-wrapper .editable-field[data-key="name"]').first();
-
+ const firstNodeName = page
+ .locator('.orbat-node-wrapper .editable-field[data-key="name"]')
+ .first();
+
// 3. Verify it is contenteditable
const isEditable = await firstNodeName.getAttribute('contenteditable');
expect(isEditable).toBe('true');
@@ -30,7 +34,7 @@ test.describe('ORBAT Interactivity Verification', () => {
// 4. Click and Type
await firstNodeName.click();
await page.keyboard.type('TEST_UNIT_NAME');
-
+
// 5. Verify the text changed
const text = await firstNodeName.innerText();
expect(text).toContain('TEST_UNIT_NAME');
@@ -43,7 +47,7 @@ test.describe('ORBAT Interactivity Verification', () => {
// 2. Locate a node
const node = page.locator('.orbat-node-wrapper').first();
const initialPos = await node.boundingBox();
- if (!initialPos) throw new Error("Node box not found");
+ if (!initialPos) throw new Error('Node box not found');
// 3. Drag the node
await node.hover();
@@ -53,8 +57,8 @@ test.describe('ORBAT Interactivity Verification', () => {
// 4. Verify position changed
const finalPos = await node.boundingBox();
- if (!finalPos) throw new Error("Node box not found after drag");
+ if (!finalPos) throw new Error('Node box not found after drag');
expect(finalPos.x).not.toBe(initialPos.x);
expect(finalPos.y).not.toBe(initialPos.y);
});
-});
\ No newline at end of file
+});
diff --git a/tests/security-gating.spec.js b/tests/security-gating.spec.js
index 994f1b5..ff4b469 100644
--- a/tests/security-gating.spec.js
+++ b/tests/security-gating.spec.js
@@ -1,8 +1,9 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('RSIS Security Gating & Authentication', () => {
-
- test('Unauthenticated users should be redirected to Gate from ORBAT', async ({ page }) => {
+ test('Unauthenticated users should be redirected to Gate from ORBAT', async ({
+ page,
+ }) => {
// Clear any existing auth
await page.addInitScript(() => {
window.localStorage.removeItem('uksf_auth');
@@ -10,13 +11,15 @@ test.describe('RSIS Security Gating & Authentication', () => {
await page.goto('/registry/orbat/');
await page.waitForTimeout(5000); // Wait for SVG/Data fragments
-
+
// Should be redirected to /registry/gate/ per baseof.html logic
await expect(page).toHaveURL(/\/registry\/gate\//);
await expect(page.locator('h1')).toContainText('Authorization');
});
- test('Unauthenticated users should be redirected to Gate from Console', async ({ page }) => {
+ test('Unauthenticated users should be redirected to Gate from Console', async ({
+ page,
+ }) => {
await page.addInitScript(() => {
window.localStorage.removeItem('uksf_auth');
});
@@ -25,9 +28,11 @@ test.describe('RSIS Security Gating & Authentication', () => {
await expect(page).toHaveURL(/\/registry\/gate\//);
});
- test('Successful authentication should unlock the workstation', async ({ page }) => {
+ test('Successful authentication should unlock the workstation', async ({
+ page,
+ }) => {
await page.goto('/registry/gate/');
-
+
// Simulate manual auth injection (simulating the CTF result)
await page.evaluate(() => {
localStorage.setItem('uksf_auth', 'authorized');
diff --git a/tests/ui-patterns.spec.js b/tests/ui-patterns.spec.js
index 55c8c62..09c8fe5 100644
--- a/tests/ui-patterns.spec.js
+++ b/tests/ui-patterns.spec.js
@@ -1,20 +1,22 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('MOD.UK Tactical UI Verification', () => {
test('should apply Regimental Skins correctly', async ({ page }) => {
const units = [
- { path: '/sas/', skinClass: 'unit-sas', brandTint: 'rgb(21, 62, 53)' }, // Army Green
- { path: '/sbs/', skinClass: 'unit-sbs', brandTint: 'rgb(19, 40, 76)' }, // Navy Blue
+ { path: '/sas/', skinClass: 'unit-sas', brandTint: 'rgb(21, 62, 53)' }, // Army Green
+ { path: '/sbs/', skinClass: 'unit-sbs', brandTint: 'rgb(19, 40, 76)' }, // Navy Blue
];
for (const unit of units) {
- await page.goto(unit.path);
- const body = page.locator('body');
- await expect(body).toHaveClass(new RegExp(unit.skinClass));
-
- // Verify CSS Variable inheritance
- const tint = await body.evaluate(el => getComputedStyle(el).getPropertyValue('--brand-tint').trim());
- expect(tint).not.toBe('#532a45');
+ await page.goto(unit.path);
+ const body = page.locator('body');
+ await expect(body).toHaveClass(new RegExp(unit.skinClass));
+
+ // Verify CSS Variable inheritance
+ const tint = await body.evaluate((el) =>
+ getComputedStyle(el).getPropertyValue('--brand-tint').trim(),
+ );
+ expect(tint).not.toBe('#532a45');
}
});
-});
\ No newline at end of file
+});
diff --git a/tests/visual-audit.spec.js b/tests/visual-audit.spec.js
index 448ad90..b55b495 100644
--- a/tests/visual-audit.spec.js
+++ b/tests/visual-audit.spec.js
@@ -1,4 +1,4 @@
-import { test, expect } from '@playwright/test';
+import { expect, test } from '@playwright/test';
test.describe('Visual & Layout Integrity Audit', () => {
test.beforeEach(async ({ page }) => {
@@ -6,100 +6,122 @@ test.describe('Visual & Layout Integrity Audit', () => {
await page.addInitScript(() => {
window.localStorage.setItem('uksf_auth', 'authorized');
localStorage.setItem('dev_access', 'granted');
- window.localStorage.setItem('dev_access', 'granted');
+ window.localStorage.setItem('dev_access', 'granted');
});
});
test('Homepage Blocks Fitting Check', async ({ page }) => {
await page.goto('/');
await page.waitForTimeout(2000);
-
+
const sections = page.locator('section');
const count = await sections.count();
-
+
for (let i = 0; i < count; i++) {
const section = sections.nth(i);
const box = await section.boundingBox();
const viewport = page.viewportSize();
-
+
console.log(`Section ${i} box:`, box);
-
+
// Ensure section is at least as tall as the viewport minus header (approximately)
if (box && viewport) {
- expect(box.height).toBeGreaterThanOrEqual(viewport.height * 0.5);
+ expect(box.height).toBeGreaterThanOrEqual(viewport.height * 0.5);
}
-
+
// Check for horizontal overflow within the section
- const hasOverflow = await section.evaluate(el => el.scrollWidth > el.clientWidth);
+ const hasOverflow = await section.evaluate(
+ (el) => el.scrollWidth > el.clientWidth,
+ );
expect(hasOverflow, `Section ${i} has horizontal overflow`).toBeFalsy();
// Check for vertical overflow within the section (content should fit in 100vh)
- const hasVerticalOverflow = await section.evaluate(el => el.scrollHeight > el.clientHeight);
+ const hasVerticalOverflow = await section.evaluate(
+ (el) => el.scrollHeight > el.clientHeight,
+ );
if (hasVerticalOverflow) {
- console.warn(`WARNING: Section ${i} has vertical content overflow!`);
+ console.warn(`WARNING: Section ${i} has vertical content overflow!`);
}
- expect(hasVerticalOverflow, `Section ${i} has vertical content overflow`).toBeFalsy();
+ expect(
+ hasVerticalOverflow,
+ `Section ${i} has vertical content overflow`,
+ ).toBeFalsy();
// Check if any image inside is inverted (unless it's a specific icon)
const images = section.locator('img:not(.icon-invert)');
const imgCount = await images.count();
for (let j = 0; j < imgCount; j++) {
- const filter = await images.nth(j).evaluate(el => window.getComputedStyle(el).filter);
- expect(filter, `Image in section ${i} is inverted`).not.toContain('invert');
+ const filter = await images
+ .nth(j)
+ .evaluate((el) => window.getComputedStyle(el).filter);
+ expect(filter, `Image in section ${i} is inverted`).not.toContain(
+ 'invert',
+ );
}
}
-
- await page.screenshot({ path: 'test-results/visual-audit-home-final.png', fullPage: true });
+
+ await page.screenshot({
+ path: 'test-results/visual-audit-home-final.png',
+ fullPage: true,
+ });
});
test('Workstation Fitting: ORBAT', async ({ page }) => {
await page.goto('/registry/orbat/');
await page.waitForTimeout(2000);
-
+
const viewport = page.locator('.workstation-container');
await expect(viewport).toBeVisible();
-
+
// Ensure viewport doesn't have a vertical scrollbar (it should be fixed height)
- const hasScroll = await viewport.evaluate(el => el.scrollHeight > el.clientHeight);
+ const hasScroll = await viewport.evaluate(
+ (el) => el.scrollHeight > el.clientHeight,
+ );
console.log('ORBAT Viewport has scroll:', hasScroll);
-
- await page.screenshot({ path: 'test-results/visual-audit-orbat-final.png' });
+
+ await page.screenshot({
+ path: 'test-results/visual-audit-orbat-final.png',
+ });
});
test('Workstation Fitting: Console', async ({ page }) => {
await page.goto('/registry/console/');
await page.waitForTimeout(2000);
-
+
const terminal = page.locator('#terminal-output');
await expect(terminal).toBeVisible();
-
+
// Ensure the terminal output is scrollable if content exceeds height
- const isScrollable = await terminal.evaluate(el => {
- const style = window.getComputedStyle(el);
- return style.overflowY === 'auto' || style.overflowY === 'scroll';
+ const isScrollable = await terminal.evaluate((el) => {
+ const style = window.getComputedStyle(el);
+ return style.overflowY === 'auto' || style.overflowY === 'scroll';
});
expect(isScrollable, 'Terminal output should be scrollable').toBeTruthy();
-
- await page.screenshot({ path: 'test-results/visual-audit-console-final.png' });
+
+ await page.screenshot({
+ path: 'test-results/visual-audit-console-final.png',
+ });
});
test('Workstation Fitting: Filing', async ({ page }) => {
await page.goto('/registry/filing/');
await page.waitForTimeout(2000);
-
+
const sidebar = page.locator('aside');
const workspace = page.locator('.workstation-container');
-
+
await expect(sidebar).toBeVisible();
await expect(workspace).toBeVisible();
-
+
// Check if the overall container is correctly sized (it should be the direct child of #main-content)
const container = page.locator('#main-content > div').first();
- if (await container.count() > 0) {
- const box = await container.boundingBox();
- console.log('Filing container box:', box);
+ if ((await container.count()) > 0) {
+ const box = await container.boundingBox();
+ console.log('Filing container box:', box);
}
-
- await page.screenshot({ path: 'test-results/visual-audit-filing-final.png' });
+
+ await page.screenshot({
+ path: 'test-results/visual-audit-filing-final.png',
+ });
});
-});
\ No newline at end of file
+});
diff --git a/themes/uksf-mod-theme/.prettierrc b/themes/uksf-mod-theme/.prettierrc
new file mode 100644
index 0000000..ccf5622
--- /dev/null
+++ b/themes/uksf-mod-theme/.prettierrc
@@ -0,0 +1,16 @@
+{
+ "semi": true,
+ "singleQuote": true,
+ "tabWidth": 2,
+ "trailingComma": "es5",
+ "printWidth": 100,
+ "plugins": ["prettier-plugin-go-template"],
+ "overrides": [
+ {
+ "files": ["layouts/**/*.html", "assets/**/*.html"],
+ "options": {
+ "parser": "go-template"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/themes/uksf-mod-theme/codeql-db/codeql-database.yml b/themes/uksf-mod-theme/codeql-db/codeql-database.yml
new file mode 100644
index 0000000..ad22614
--- /dev/null
+++ b/themes/uksf-mod-theme/codeql-db/codeql-database.yml
@@ -0,0 +1,13 @@
+---
+sourceLocationPrefix: /home/matt/Development/themes/uksf-mod-theme
+baselineLinesOfCode: 2716
+unicodeNewlines: true
+columnKind: utf16
+primaryLanguage: javascript
+creationMetadata:
+ sha: a6a204ce802861d39ec5512e9a0b4bf447c1f29c
+ cliVersion: 2.23.8
+ creationTime: 2026-02-02T13:34:22.506503167Z
+overlayBaseDatabase: false
+overlayDatabase: false
+finalised: true
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel b/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel
new file mode 100644
index 0000000..d7ad111
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel.meta b/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel.meta
new file mode 100644
index 0000000..b46d41c
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/array_size.rel.meta differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel b/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel
new file mode 100644
index 0000000..f5b49a6
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel.meta b/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel.meta
new file mode 100644
index 0000000..5b3bced
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/bind.rel.meta differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/.lock b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/.lock
new file mode 100644
index 0000000..e69de29
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/info b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/info
new file mode 100644
index 0000000..6b434ae
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/info differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/page-000000 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/page-000000
new file mode 100644
index 0000000..08d6422
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/buckets/page-000000 differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/info b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/info
new file mode 100644
index 0000000..44b414c
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/info differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/page-000000 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/page-000000
new file mode 100644
index 0000000..00a46f6
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/ids2/page-000000 differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/info b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/info
new file mode 100644
index 0000000..7418f07
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/info differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/page-000000 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/page-000000
new file mode 100644
index 0000000..5561190
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/indices2/page-000000 differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/info b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/info
new file mode 100644
index 0000000..14bfd6c
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/info differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/info b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/info
new file mode 100644
index 0000000..981f654
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/info differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/page-000000 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/page-000000
new file mode 100644
index 0000000..b33ce95
Binary files /dev/null and b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/metadata/page-000000 differ
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/pageDump/page-000000000 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/pageDump/page-000000000
new file mode 100644
index 0000000..f0f9f35
--- /dev/null
+++ b/themes/uksf-mod-theme/codeql-db/db-javascript/default/cache/cached-strings/pools/0/pageDump/page-000000000
@@ -0,0 +1,170 @@
+dependabot.ymldependabotyml.githubgithubuksf-mod-themethemesDevelopmentmatthugo.ymlworkflowsmain.jsindex.htmladmindocscovertconopoperation-black-sheepsitrep-01operation-breezeroperation-dune-venganceoperation-iron-retributionoperation-jungle-cobraoperation-reactionoperation-restoreoperation-retrieving-goldoperation-saheloperation-sparrowpre-deployment-opsfilingintelligencemain.min.91f46d8180b1b015e8849272db680298c319344daa121a5ba3719b3c2b4bc92c.jsmain.min.91f46d8180b1b015e8849272db680298c319344daa121a5ba3719b3c2b4bc92corbat-canvas.jsrecruitmentgateregistryorbatrestrictedcommunicatormedicarctic-readinessbattle-of-tora-borabravo-two-zeromct-trialsmount-sinjarnad-e-alinave-andromedaoperation-africaoperation-barrasoperation-liddardoperation-mikadooperation-nimrodoperation-toraloperation-trentpebble-islandqala-i-jangisahel-persistenceeslint.config.jseslint.configadmin.html_defaultlayoutsarchive-covert.htmlarchive-covertarchive.htmlarchives.htmlconsole.htmldossier.htmldossierfiling.htmlgate.htmlintelligence.htmlorbat.htmlregister.htmlrestricted.htmlbaseof.htmlbaseofcampaign.htmlcampaignlist.htmlreport.htmlpage.htmlhero.htmlheropartialsblocks.htmlcookie-consent.htmlcookie-consentfooter.htmlcss.htmljs.htmlskin.htmlskinhead.htmlheader.htmlmenu.htmlmenuphase-banner.htmlphase-bannerrecruitment-form.htmlrecruitment-formcapability-matrix.htmlcapability-matrixshortcodesterms.htmltermscomms-hub.htmlcomms-hubwidgetsdiscord.htmlorbat-node.htmlorbat-nodeunitcommander.htmlsection.htmlbattlemetrics.htmlcapability-spec.htmlcapability-specmandate.htmlmandatetaxonomy.htmltaxonomyterm.htmltermpackage.jsonpackageplaywright-reportplaywright.config.jsplaywright.configpostcss.config.cjspostcss.configcjscheck-runners.jscheck-runnersfetch-intel.jsfetch-intelgenerate-stats.jsgenerate-statsgh-issue-sync.jsgh-issue-syncsecurity-history-check.jssecurity-history-checksecurity-scan.jssecurity-scansync-orbat.jssync-orbattest.jsrcon-bridge.jsrcon-bridgeservicesregistry-service.jsregistry-servicetailwind.config.cjstailwind.configconsole.spec.jsconsole.specfiling.spec.jsfiling.speclighthouse.spec.jslighthouse.specorbat.spec.jsorbat.speces2016.jses2016toolscodeqles2017.jses2017es3.jses3es5.jses5es6.jses6es6_collections.jses6_collectionsintl.jsintlproxy.jsbdd.jsbddlibjquery-3.2.jsjquery-3.2should.jsvows.jsvowsassert.jsnodejsassert_legacy.jsassert_legacybuffer.jschild_process.jscluster.jsconsole.jsconstants.jscrypto.jsdgram.jsdns.jsdomain.jsevents.jsfs.jsglobals.jshttp.jshttps.jsmodule.jsnet.jsos.jspath.jsprocess.jspunycode.jsquerystring.jsreadline.jsrepl.jsstream.jsstring_decoder.jssys.jstimers.jstls.jstty.jsurl.jsutil.jsv8.jsvm.jszlib.jsjsshell.jsjsshellrhino.jsrhinospidermonkey.jsspidermonkeychrome.jswebfetchapi.jsfetchapifileapi.jsfileapiflash.jsgecko_css.jsgecko_cssgecko_dom.jsgecko_domgecko_event.jsgecko_eventgecko_ext.jsgecko_extgecko_xml.jsgecko_xmlhtml5.jshtml5ie_css.jsie_cssie_dom.jsie_domie_event.jsie_eventie_vml.jsie_vmliphone.jsiphonemediasource.jsmediasourcepage_visibility.jspage_visibilitystreamsapi.jsstreamsapiw3c_anim_timing.jsw3c_anim_timingw3c_batterystatus.jsw3c_batterystatusw3c_css.jsw3c_cssw3c_css3d.jsw3c_css3dw3c_device_sensor_event.jsw3c_device_sensor_eventw3c_dom1.jsw3c_dom1w3c_dom2.jsw3c_dom2w3c_dom3.jsw3c_dom3w3c_dom4.jsw3c_dom4w3c_elementtraversal.jsw3c_elementtraversalw3c_encoding.jsw3c_encodingw3c_event.jsw3c_eventw3c_event3.jsw3c_event3w3c_gamepad.jsw3c_gamepadw3c_geolocation.jsw3c_geolocationw3c_indexeddb.jsw3c_indexeddbw3c_midi.jsw3c_midiw3c_navigation_timing.jsw3c_navigation_timingw3c_permissions.jsw3c_permissionsw3c_pointer_events.jsw3c_pointer_eventsw3c_range.jsw3c_rangew3c_requestidlecallback.jsw3c_requestidlecallbackw3c_rtc.jsw3c_rtcw3c_screen_orientation.jsw3c_screen_orientationw3c_selectors.jsw3c_selectorsw3c_serviceworker.jsw3c_serviceworkerw3c_touch_event.jsw3c_touch_eventw3c_webcrypto.jsw3c_webcryptow3c_xml.jsw3c_xmlwebgl.jswebglwebkit_css.jswebkit_csswebkit_dom.jswebkit_domwebkit_event.jswebkit_eventwebkit_notifications.jswebkit_notificationswebkit_usercontent.jswebkit_usercontentwebstorage.jswebstoragewhatwg_encoding.jswhatwg_encodingwindow.jsheapPromisePropsasync-raw-returnfor-of-map-keyfor-of-map-value$setElement$$arrayElement$$iteratorElement$$routeProvider$log$aria$route$scope$swipe$animate$compile$cookies$provide$timeout$injector$interval$resource$sanitize$rootScope$animateCss$controller$rootRouter$cookieStore$httpBackend$routeParams$ariaProvider$cacheFactory$cookiesProvider$exceptionHandler$resourceProvider$sanitizeProvider$componentController$routerRootComponent$exceptionHandlerProvider$anchorScrollProvider$animateProvider$compileProvider$controllerProvider$filterProvider$httpProvider$interpolateProvider$locationProvider$logProvider$parseProvider$provider$qProvider$rootScopeProvider$sceDelegateProvider$sceProvider$templateRequestProvider$anchorScroll$document$filter$http$httpParamSerializer$httpParamSerializerJQLike$interpolate$jsonpCallbacks$locale$location$parse$q$rootElement$sce$sceDelegate$templateCache$templateRequest$window$xhrFactoryasync.IteratorCall(callbackArgIndex=1)async.IteratorCall(callbackArgIndex=2)async.IteratorCall(callbackArgIndex=3)Array#flat(1)Array#flat(2)Array#flat(3)ArrayCopyingPackageArrayCoercionPackageArrayFlatteningPackageArray method with flow into callbackArray#reverse / Array#toReversedArray#reduce / Array#reduceRightArray#values / Map#values / Set#valuesString#splitArray#concat / String#concat / Buffer.concatPromise#then() with 2 argumentsArray#sort / Array#toSortedArray#forEach / Map#forEach / Set#forEachArray#find / Array#findLastArray#keys / Map#keys / Set#keysPromise#then() with 1 argumentArray#push / Array#unshiftArray#slice / String#sliceIterator#nextArray#joinMap#setSet#addArray#at / String#atArray#flatMapPromise#catch()Array#spliceArray#filterArray#shiftArray#popArray#mapTypedArray#subarrayObject#toString / Array#toStringSet constructorMap constructorArray.from(arg)String#fromCharCodeglobal.NodeJS.EventEmitter;_.map_.tapMap#get_.flatMap_.groupByArray#fillArray#withMap#groupBy_.each-like_.mapObject_.partitionasync.sortByPromise.all()Promise.try()_.flatMapDeep_.reduce-like_.sortBy-likenew Promise()TypedArray#setArray#toSplicedArray#copyWithinPromise.reject()Array constructorPromise#finally()_.minBy / _.maxByTextDecoder#decodebluebird.mapSeriesArrayBuffer#transferException propagatorPromise.allSettled()TypedArray constructorPromise.withResolvers()new Promise() workaroundString#split with '#' or '?'query-string stringificationnew Promise() reject callbacknew Promise() resolve callbackPromise.any() or Promise.race()Array.from(arg, callback, [thisArg])'array.prototype.find' / 'array-find'Array#entries / Map#entries / Set#entriesString#replace / String#replaceAll (with wildcard pattern)String#replace / String#replaceAll (without wildcard pattern)global.NodeJS.EventEmitterMember[addListener,off,on,once,prependListener,prependOnceListener,removeAllListeners,removeListener,setMaxListeners].ReturnValueMaD:1144[dynamic parameter array] JSON.stringify[dynamic parameter array] URL[dynamic parameter array] URLSearchParams[dynamic parameter array] Promise.resolve()[dynamic parameter array] Array.of[dynamic parameter array] getAll[dynamic parameter array] async.IteratorCall(callbackArgIndex=1)[dynamic parameter array] async.IteratorCall(callbackArgIndex=2)[dynamic parameter array] async.IteratorCall(callbackArgIndex=3)[dynamic parameter array] Array#flat(1)[dynamic parameter array] Array#flat(2)[dynamic parameter array] Array#flat(3)[dynamic parameter array] ArrayCopyingPackage[dynamic parameter array] ArrayCoercionPackage[dynamic parameter array] ArrayFlatteningPackage[dynamic parameter array] Array method with flow into callback[dynamic parameter array] Array#reverse / Array#toReversed[dynamic parameter array] Array#reduce / Array#reduceRight[dynamic parameter array] Array#values / Map#values / Set#values[dynamic parameter array] String#split[dynamic parameter array] Array#concat / String#concat / Buffer.concat[dynamic parameter array] Promise#then() with 2 arguments[dynamic parameter array] Array#sort / Array#toSorted[dynamic parameter array] Array#forEach / Map#forEach / Set#forEach[dynamic parameter array] Array#find / Array#findLast[dynamic parameter array] Array#keys / Map#keys / Set#keys[dynamic parameter array] Promise#then() with 1 argument[dynamic parameter array] Array#push / Array#unshift[dynamic parameter array] Array#slice / String#slice[dynamic parameter array] Iterator#next[dynamic parameter array] Array#join[dynamic parameter array] Map#set[dynamic parameter array] Set#add[dynamic parameter array] Array#at / String#at[dynamic parameter array] Array#flatMap[dynamic parameter array] Promise#catch()[dynamic parameter array] Array#splice[dynamic parameter array] Array#filter[dynamic parameter array] Array#shift[dynamic parameter array] Array#pop[dynamic parameter array] Array#map[dynamic parameter array] TypedArray#subarray[dynamic parameter array] Object#toString / Array#toString[dynamic parameter array] Set constructor[dynamic parameter array] Map constructor[dynamic parameter array] Array.from(arg)[dynamic parameter array] String#fromCharCode[dynamic parameter array] global.NodeJS.EventEmitter;[dynamic parameter array] _.map[dynamic parameter array] _.tap[dynamic parameter array] Map#get[dynamic parameter array] _.flatMap[dynamic parameter array] _.groupBy[dynamic parameter array] Array#fill[dynamic parameter array] Array#with[dynamic parameter array] Map#groupBy[dynamic parameter array] _.each-like[dynamic parameter array] _.mapObject[dynamic parameter array] _.partition[dynamic parameter array] async.sortBy[dynamic parameter array] Promise.all()[dynamic parameter array] Promise.try()[dynamic parameter array] _.flatMapDeep[dynamic parameter array] _.reduce-like[dynamic parameter array] _.sortBy-like[dynamic parameter array] new Promise()[dynamic parameter array] TypedArray#set[dynamic parameter array] Array#toSpliced[dynamic parameter array] Array#copyWithin[dynamic parameter array] Promise.reject()[dynamic parameter array] Array constructor[dynamic parameter array] Promise#finally()[dynamic parameter array] _.minBy / _.maxBy[dynamic parameter array] TextDecoder#decode[dynamic parameter array] bluebird.mapSeries[dynamic parameter array] ArrayBuffer#transfer[dynamic parameter array] Exception propagator[dynamic parameter array] Promise.allSettled()[dynamic parameter array] TypedArray constructor[dynamic parameter array] Promise.withResolvers()[dynamic parameter array] new Promise() workaround[dynamic parameter array] String#split with '#' or '?'[dynamic parameter array] query-string stringification[dynamic parameter array] new Promise() reject callback[dynamic parameter array] new Promise() resolve callback[dynamic parameter array] Promise.any() or Promise.race()[dynamic parameter array] Array.from(arg, callback, [thisArg])[dynamic parameter array] 'array.prototype.find' / 'array-find'[dynamic parameter array] Array#entries / Map#entries / Set#entries[dynamic parameter array] String#replace / String#replaceAll (with wildcard pattern)[dynamic parameter array] String#replace / String#replaceAll (without wildcard pattern)split-url-suffixsplit-url-suffix-presplit-url-suffix-postClientfindByIdAndUpdate_idopenApppromiseseachAsyncleanorFailpopulatetoConstructor_mongooseOptionscountDocumentsdistinctfindOneAndUpdatefindOnegetOptionsgetUpdateprojectionreplaceOnesetUpdatediscriminatorpluginonLost$cn$configreceivepgp$wheredeleteManydeleteOneestimatedDocumentCountupdateManyupdateOnenorfindByIdAndDeletefindOneAndDeletefindOneAndRemovesetOptionssetQuerygetFiltergetQuery$and$nor$or$pop$shiftforeignFieldlocalField$currentDate$inc$max$min$mul$pull$pullAll$push$set$setOnInsert$unsettasktransactreject-valueresolve-valueArrayElementPromiseErrorPromiseValueIteratorErrorIteratorElementSetElementMapValueMapKeyMapValue[run]MapValue[unit]MapValue[q]MapValue[anchor]MapValue[testId][ssa-use] navLinks[ssa-use] link[ssa-use] arguments[ssa-use] e[ssa-use] t[ssa-use] n[ssa-use] s[ssa-use] i[ssa-use] a[ssa-use] r[ssa-use] c[ssa-use] o[ssa-use] l[ssa-use] d[ssa-use] h[ssa-use] m[ssa-use] f[ssa-use] group[ssa-use] sourceId[ssa-use] sSide[ssa-use] targetId[ssa-use] tSide[ssa-use] p1[ssa-use] p2[ssa-use] p[ssa-use] nodeId[ssa-use] el[ssa-use] side[ssa-use] x[ssa-use] w[ssa-use] y[ssa-use] dist[ssa-use] s1[ssa-use] cp1[ssa-use] cpDist[ssa-use] s2[ssa-use] cp2[ssa-use] target[ssa-use] vW[ssa-use] nX[ssa-use] vH[ssa-use] nY[ssa-use] rect[ssa-use] cx[ssa-use] cy[ssa-use] amount[ssa-use] mouseX[ssa-use] mouseY[ssa-use] factor[ssa-use] newScale[ssa-use] x0[ssa-use] y0[ssa-use] clientX[ssa-use] clientY[ssa-use] underMouse[ssa-use] isClickingUI[ssa-use] resizeTarget[ssa-use] coords[ssa-use] nodeWrapper[ssa-use] nW[ssa-use] nH[ssa-use] sides[ssa-use] linkGroup[ssa-use] node[ssa-use] currentX[ssa-use] currentY[ssa-use] width[ssa-use] height[ssa-use] left[ssa-use] top[ssa-use] newW[ssa-use] dx[ssa-use] newH[ssa-use] dy[ssa-use] potentialW[ssa-use] newX[ssa-use] potentialH[ssa-use] newY[ssa-use] targets[ssa-use] startPos[ssa-use] rawX[ssa-use] rawY[ssa-use] nodeRect[ssa-use] visual[ssa-use] pathLen[ssa-use] mid[ssa-use] midX[ssa-use] midY[ssa-use] desc[ssa-use] name[ssa-use] state[ssa-use] description[ssa-use] drawer[ssa-use] index[ssa-use] wasLatest[ssa-use] revIdx[ssa-use] item[ssa-use] entry[ssa-use] personnelEl[ssa-use] nodes[ssa-use] edges[ssa-use] card[ssa-use] inner[ssa-use] naturalH[ssa-use] currentH[ssa-use] requiredH[ssa-use] finalH[ssa-use] editMode[ssa-use] type[ssa-use] message[ssa-use] targetEl[ssa-use] isLink[ssa-use] count[ssa-use] deleteTitle[ssa-use] midPoint[ssa-use] iconTitle[ssa-use] adminBar[ssa-use] btn[ssa-use] id[ssa-use] nodeCount[ssa-use] linkCount[ssa-use] confirmMsg[ssa-use] assets[ssa-use] input[ssa-use] file[ssa-use] reader[ssa-use] container[ssa-use] imgDiv[ssa-use] img[ssa-use] source[ssa-use] eid[ssa-use] hitArea[ssa-use] visualPath[ssa-use] sName[ssa-use] tName[ssa-use] savedData[ssa-use] data[ssa-use] newId[ssa-use] newNodeData[ssa-use] newNode[ssa-use] this[ssa-use] consent[ssa-use] response[ssa-use] uc[ssa-use] b[ssa-use] logs[ssa-use] op[ssa-use] slug[ssa-use] date[ssa-use] briefSnippet[ssa-use] title[ssa-use] brief[ssa-use] map[ssa-use] modal[ssa-use] statusText[ssa-use] overlay[ssa-use] statusIndicator[ssa-use] playerCount[ssa-use] maxCapacity[ssa-use] graphContainer[ssa-use] range[ssa-use] dataPoints[ssa-use] maxVal[ssa-use] nowTime[ssa-use] lookback[ssa-use] endTime[ssa-use] v[ssa-use] curX[ssa-use] curY[ssa-use] prevP[ssa-use] timeDiff[ssa-use] vEl[ssa-use] val[ssa-use] time[ssa-use] tEl[ssa-use] feeds[ssa-use] allCandidates[ssa-use] events[ssa-use] opTime[ssa-use] eventTimes[ssa-use] ev[ssa-use] evTime[ssa-use] latestOp[ssa-use] today[ssa-use] createdDate[ssa-use] dateStr[ssa-use] durationStr[ssa-use] opTitle[ssa-use] cleanLocation[ssa-use] onlineCounts[ssa-use] SERVER_ID[ssa-use] startTime[ssa-use] latency[ssa-use] signalStrengths[ssa-use] timeHex[ssa-use] linkIds[ssa-use] error[ssa-use] btns[ssa-use] updateDiscordStatus[ssa-use] clock[ssa-use] now[ssa-use] updateClock[ssa-use] preferences[ssa-use] stored[ssa-use] getConsent[ssa-use] currentConsent[ssa-use] prefs[ssa-use] js[ssa-use] globals[ssa-use] end[ssa-use] $activeOps[ssa-use] $intIcon[ssa-use] $mapIntel[ssa-use] $mapUksf[ssa-use] $id[ssa-use] $icon[ssa-use] mapIntel[ssa-use] mapUksf[ssa-use] btnIntel[ssa-use] btnUksf[ssa-use] statusId[ssa-use] statusGrid[ssa-use] $unit[ssa-use] res[ssa-use] countEl[ssa-use] campaigns[ssa-use] err[ssa-use] editor[ssa-use] text[ssa-use] msgUint8[ssa-use] hashBuffer[ssa-use] hashArray[ssa-use] urlParams[ssa-use] isAuthenticated[ssa-use] opt[ssa-use] targetUnit[ssa-use] selector[ssa-use] site[ssa-use] $tfa_logo[ssa-use] len[ssa-use] $map[ssa-use] $b[ssa-use] $primary[ssa-use] $name[ssa-use] $label[ssa-use] $node[ssa-use] visible[ssa-use] u[ssa-use] zA[ssa-use] P[ssa-use] N[ssa-use] S[ssa-use] A[ssa-use] E[ssa-use] K[ssa-use] k[ssa-use] J[ssa-use] _[ssa-use] j[ssa-use] H[ssa-use] U[ssa-use] D[ssa-use] it[ssa-use] st[ssa-use] $[ssa-use] Z[ssa-use] F[ssa-use] R[ssa-use] O[ssa-use] B[ssa-use] X[ssa-use] nt[ssa-use] ht[ssa-use] W[ssa-use] tt[ssa-use] C[ssa-use] L[ssa-use] super[ssa-use] V2[ssa-use] D8[ssa-use] J2[ssa-use] F2[ssa-use] Q8[ssa-use] _2[ssa-use] z8[ssa-use] oc[ssa-use] P2[ssa-use] dc[ssa-use] args[ssa-use] fa[ssa-use] yr[ssa-use] mh[ssa-use] ph[ssa-use] Dh[ssa-use] Rh[ssa-use] Mh[ssa-use] er[ssa-use] V3[ssa-use] Z3[ssa-use] q3[ssa-use] I3[ssa-use] K3[ssa-use] k3[ssa-use] J3[ssa-use] F3[ssa-use] W3[ssa-use] _3[ssa-use] P3[ssa-use] $3[ssa-use] t5[ssa-use] e5[ssa-use] n5[ssa-use] rt[ssa-use] ot[ssa-use] Ft[ssa-use] et[ssa-use] gt[ssa-use] Qt[ssa-use] On[ssa-use] wn[ssa-use] ra[ssa-use] Ba[ssa-use] Rn[ssa-use] Qa[ssa-use] Bi[ssa-use] Ua[ssa-use] q2[ssa-use] a8[ssa-use] O3[ssa-use] w3[ssa-use] H3[ssa-use] Q3[ssa-use] z3[ssa-use] R3[ssa-use] D3[ssa-use] N3[ssa-use] B3[ssa-use] S5[ssa-use] j8[ssa-use] v3[ssa-use] UA[ssa-use] g[ssa-use] I[ssa-use] G[ssa-use] Y[ssa-use] T[ssa-use] z[ssa-use] V[ssa-use] Em[ssa-use] Mn[ssa-use] en[ssa-use] Nl[ssa-use] de[ssa-use] ha[ssa-use] Bl[ssa-use] Bc[ssa-use] Ji[ssa-use] Hm[ssa-use] Bm[ssa-use] Um[ssa-use] zm[ssa-use] Lm[ssa-use] qm[ssa-use] Km[ssa-use] km[ssa-use] Fm[ssa-use] _m[ssa-use] $m[ssa-use] Ql[ssa-use] zc[ssa-use] ho[ssa-use] Qc[ssa-use] og[ssa-use] ma[ssa-use] ga[ssa-use] Vc[ssa-use] M[ssa-use] Q[ssa-use] q[ssa-use] ut[ssa-use] lt[ssa-use] At[ssa-use] pt[ssa-use] Tt[ssa-use] St[ssa-use] $n[ssa-use] HA[ssa-use] Zo[ssa-use] ft[ssa-use] at[ssa-use] Mt[ssa-use] mu[ssa-use] Lt[ssa-use] Ss[ssa-use] Os[ssa-use] f0[ssa-use] vs[ssa-use] p0[ssa-use] E0[ssa-use] A0[ssa-use] v0[ssa-use] b0[ssa-use] h0[ssa-use] _o[ssa-use] O0[ssa-use] r0[ssa-use] w0[ssa-use] g0[ssa-use] d0[ssa-use] cf[ssa-use] sf[ssa-use] qe[ssa-use] Wg[ssa-use] _g[ssa-use] hg[ssa-use] mg[ssa-use] gg[ssa-use] oA[ssa-use] dA[ssa-use] hA[ssa-use] mA[ssa-use] gA[ssa-use] AA[ssa-use] yA[ssa-use] vA[ssa-use] EA[ssa-use] R1[ssa-use] _u[ssa-use] jA[ssa-use] G5[ssa-use] $5[ssa-use] B2[ssa-use] N5[ssa-use] Rr[ssa-use] defineConfig[ssa-use] devices[ssa-use] module[ssa-use] require[ssa-use] color[ssa-use] msg[ssa-use] rawRuns[ssa-use] runs[ssa-use] run[ssa-use] conclusion[ssa-use] checkRunnerHealth[ssa-use] envPath[ssa-use] line[ssa-use] key[ssa-use] value[ssa-use] buf[ssa-use] crc[ssa-use] crcBuf[ssa-use] payload[ssa-use] header[ssa-use] login[ssa-use] read[ssa-use] players[ssa-use] maxPlayers[ssa-use] options[ssa-use] chunk[ssa-use] url[ssa-use] result[ssa-use] prev[ssa-use] isS[ssa-use] manifest[ssa-use] staticDir[ssa-use] telemetry[ssa-use] main[ssa-use] fileURLToPath[ssa-use] __filename[ssa-use] __dirname[ssa-use] dirents[ssa-use] dirent[ssa-use] files[ssa-use] contentDir[ssa-use] acc[ssa-use] stats[ssa-use] commitHash[ssa-use] execSync[ssa-use] totalSize[ssa-use] fileCount[ssa-use] sizeMB[ssa-use] sizeKB[ssa-use] dataFile[ssa-use] filePath[ssa-use] rawIssues[ssa-use] existingIssues[ssa-use] findings[ssa-use] createOutput[ssa-use] issueNumber[ssa-use] branchName[ssa-use] envContent[ssa-use] secrets[ssa-use] secret[ssa-use] runHistoryAudit[ssa-use] runSecurityAudit[ssa-use] req[ssa-use] members[ssa-use] memberRoles[ssa-use] unitKeywords[ssa-use] match[ssa-use] unitMatch[ssa-use] topRole[ssa-use] isIC[ssa-use] is2IC[ssa-use] personnel[ssa-use] command[ssa-use] client[ssa-use] section[ssa-use] content[ssa-use] regex[ssa-use] config[ssa-use] ucId[ssa-use] ucToken[ssa-use] discordId[ssa-use] serverProcess[ssa-use] code[ssa-use] express[ssa-use] app[ssa-use] cors[ssa-use] path[ssa-use] fs[ssa-use] mdContent[ssa-use] page[ssa-use] onboarding[ssa-use] browser[ssa-use] assert[ssa-use] epsilon[ssa-use] isTrue[ssa-use] isFalse[ssa-use] isZero[ssa-use] isNotZero[ssa-use] greater[ssa-use] lesser[ssa-use] inDelta[ssa-use] include[ssa-use] notInclude[ssa-use] deepInclude[ssa-use] isEmpty[ssa-use] isNotEmpty[ssa-use] lengthOf[ssa-use] isArray[ssa-use] isObject[ssa-use] isNumber[ssa-use] isBoolean[ssa-use] isNaN[ssa-use] isNull[ssa-use] isNotNull[ssa-use] isUndefined[ssa-use] isDefined[ssa-use] isString[ssa-use] isFunction[ssa-use] typeOf[ssa-use] instanceOf[ssa-use] exports[ssa-use] internal[ssa-use] eql[ssa-use] buffer[ssa-use] BuffType[ssa-use] SlowBuffType[ssa-use] child_process[ssa-use] cluster[ssa-use] constants[ssa-use] crypto[ssa-use] RemoteInfo[ssa-use] AddressInfo[ssa-use] BindOptions[ssa-use] SocketOptions[ssa-use] dgram[ssa-use] dns[ssa-use] domain[ssa-use] Stats[ssa-use] FSWatcher[ssa-use] Constants[ssa-use] http[ssa-use] https[ssa-use] Module[ssa-use] net[ssa-use] os[ssa-use] punycode[ssa-use] ucs2[ssa-use] querystring[ssa-use] readline[ssa-use] repl[ssa-use] string_decoder[ssa-use] util[ssa-use] timers[ssa-use] tls[ssa-use] CLIENT_RENEG_WINDOW[ssa-use] CLIENT_RENEG_LIMIT[ssa-use] tty[ssa-use] HeapSpaceInfo[ssa-use] v8[ssa-use] vm[ssa-use] zlibthis [capture node]header [capture node]currentPath [capture node]e [capture node]d [capture node]s [capture node]g [capture node]l [capture node]u [capture node]o [capture node]p [capture node]c [capture node]a [capture node]i [capture node]v [capture node]n [capture node]t [capture node]path [capture node]coords [capture node]nearestSide [capture node]minDist [capture node]p2 [capture node]nearest [capture node]dx [capture node]dy [capture node]sbRect [capture node]movedNames [capture node]list [capture node]actualIndex [capture node]newNode [capture node]toast [capture node]isActive [capture node]src [capture node]affectedNames [capture node]group [capture node]opId [capture node]width [capture node]height [capture node]safeMax [capture node]startTime [capture node]timeRange [capture node]getX [capture node]getY [capture node]points [capture node]pathData [capture node]areaPath [capture node]maxGap [capture node]uc [capture node]bestOp [capture node]absoluteLatestTime [capture node]html [capture node]integrity [capture node]countStr [capture node]netId [capture node]range [capture node]prefs [capture node]london [capture node]utc [capture node]btn [capture node]originalText [capture node]code [capture node]hashHex [capture node]HQ_AUTH_KEY [capture node]CTF_KEYWORDS [capture node]filters [capture node]cards [capture node]countDisplay [capture node]updateCount [capture node]filter [capture node]f [capture node]r [capture node]h [capture node]y [capture node]A [capture node]E [capture node]S [capture node]O [capture node]X [capture node]B [capture node]b [capture node]k [capture node]Ee [capture node]F [capture node]D [capture node]N [capture node]P [capture node]ht [capture node]j [capture node]K [capture node]J [capture node]nt [capture node]st [capture node]it [capture node]H [capture node]_ [capture node]$ [capture node]L [capture node]C [capture node]rt [capture node]W [capture node]x [capture node]R [capture node]U [capture node]Z [capture node]T [capture node]z [capture node]V [capture node]I [capture node]Y [capture node]G [capture node]at [capture node]ft [capture node]Mt [capture node]M [capture node]failureCount [capture node]resolve [capture node]client [capture node]timeout [capture node]players [capture node]reject [capture node]A2S_INFO [capture node]send [capture node]msg [capture node]offset [capture node]url [capture node]headers [capture node]res [capture node]data [capture node]dir [capture node]findings [capture node]issue [capture node]finding [capture node]leaksFound [capture node]roles [capture node]m [capture node]upperRole [capture node]options [capture node]req [capture node]start [capture node]attempt [capture node]intentionalKill [capture node]command [capture node]SSA phi(s) [capture node]SSA phi(h) [capture node]SSA phi read(y) [capture node]SSA phi read(o) [capture node]SSA phi read(c) [capture node]SSA phi read(h) [capture node]SSA phi read(M) [capture node]SSA phi read(t) [capture node]SSA phi read(d) [capture node]SSA phi read(l) [capture node]SSA phi read(v) [capture node]SSA phi read(r) [capture node]SSA phi read(O) [capture node]SSA phi read(u) [capture node]SSA phi read(x) [capture node]SSA phi read(this) [capture node][ssa-synth-read] o[ssa-synth-read] t[ssa-synth-read] imgDiv[ssa-synth-read] opTime[ssa-synth-read] Z[ssa-synth-read] D[ssa-synth-read] N[ssa-synth-read] K[ssa-synth-read] k[ssa-synth-read] P[ssa-synth-read] it[ssa-synth-read] $[ssa-synth-read] B[ssa-synth-read] R[ssa-synth-read] nt[ssa-synth-read] st[ssa-synth-read] H[ssa-synth-read] _[ssa-synth-read] tt[ssa-synth-read] L[ssa-synth-read] W[ssa-synth-read] j[ssa-synth-read] J[ssa-synth-read] p[ssa-synth-read] x[ssa-synth-read] U[ssa-synth-read] F[ssa-synth-read] r[ssa-synth-read] h[ssa-synth-read] l[ssa-synth-read] O[ssa-synth-read] c[ssa-synth-read] f[ssa-synth-read] y[ssa-synth-read] A[ssa-synth-read] S[ssa-synth-read] X[ssa-synth-read] b[ssa-synth-read] u[ssa-synth-read] v[ssa-synth-read] wn[ssa-synth-read] Ba[ssa-synth-read] ot[ssa-synth-read] C[ssa-synth-read] rt[ssa-synth-read] zc[ssa-synth-read] e[ssa-synth-read] n[ssa-synth-read] a[ssa-synth-read] d[ssa-synth-read] i[ssa-synth-read] V[ssa-synth-read] s[ssa-synth-read] ut[ssa-synth-read] St[ssa-synth-read] lt[ssa-synth-read] At[ssa-synth-read] w[ssa-synth-read] Tt[ssa-synth-read] Q[ssa-synth-read] g[ssa-synth-read] I[ssa-synth-read] T[ssa-synth-read] z[ssa-synth-read] G[ssa-synth-read] ft[ssa-synth-read] Mt[ssa-synth-read] at[ssa-synth-read] M[ssa-synth-read] q[ssa-synth-read] Y[ssa-synth-read] E[ssa-synth-read] crc[ssa-synth-read] end[ssa-synth-read] gt[ssa-synth-read] this[ssa-synth-read] cpDist[ssa-synth-read] cp1[ssa-synth-read] cp2[ssa-synth-read] underMouse[ssa-synth-read] nodeWrapper[ssa-synth-read] dx[ssa-synth-read] dy[ssa-synth-read] state[ssa-synth-read] count[ssa-synth-read] linkCount[ssa-synth-read] op[ssa-synth-read] graphContainer[ssa-synth-read] source[ssa-synth-read] range[ssa-synth-read] dataPoints[ssa-synth-read] ev[ssa-synth-read] latestOp[ssa-synth-read] onlineCounts[ssa-synth-read] signalStrengths[ssa-synth-read] targetUnit[ssa-synth-read] selector[ssa-synth-read] card[ssa-synth-read] P2[ssa-synth-read] ht[ssa-synth-read] Ft[ssa-synth-read] et[ssa-synth-read] arguments[ssa-synth-read] en[ssa-synth-read] Ql[ssa-synth-read] qe[ssa-synth-read] pt[ssa-synth-read] $n[ssa-synth-read] buf[ssa-synth-read] msg[ssa-synth-read] res[ssa-synth-read] data[ssa-synth-read] isS[ssa-synth-read] result[ssa-synth-read] staticDir[ssa-synth-read] findings[ssa-synth-read] existingIssues[ssa-synth-read] is2IC[ssa-synth-read] unitKeywords[ssa-synth-read] serverProcess[summary param] 0 in JSON.stringify[summary param] 0 in URL[summary param] 0 in URLSearchParams[summary param] 0 in Promise.resolve()[summary param] 0.. in Array.of[summary param] this in getAll[summary param] 0 in async.IteratorCall(callbackArgIndex=1)[summary param] 1 in async.IteratorCall(callbackArgIndex=1)[summary param] 0 in async.IteratorCall(callbackArgIndex=2)[summary param] 2 in async.IteratorCall(callbackArgIndex=2)[summary param] 0 in async.IteratorCall(callbackArgIndex=3)[summary param] 3 in async.IteratorCall(callbackArgIndex=3)[summary param] this in Array#flat(1)[summary param] this in Array#flat(2)[summary param] this in Array#flat(3)[summary param] 0.. in ArrayCopyingPackage[summary param] 0 in ArrayCoercionPackage[summary param] 0.. in ArrayFlatteningPackage[summary param] this in Array method with flow into callback[summary param] 0 in Array method with flow into callback[summary param] 1 in Array method with flow into callback[summary param] this in Array#reverse / Array#toReversed[summary param] this in Array#reduce / Array#reduceRight[summary param] 0 in Array#reduce / Array#reduceRight[summary param] 1 in Array#reduce / Array#reduceRight[summary param] this in Array#values / Map#values / Set#values[summary param] this in String#split[summary param] this in Array#concat / String#concat / Buffer.concat[summary param] 0.. in Array#concat / String#concat / Buffer.concat[summary param] this in Promise#then() with 2 arguments[summary param] 0 in Promise#then() with 2 arguments[summary param] 1 in Promise#then() with 2 arguments[summary param] this in Array#sort / Array#toSorted[summary param] 0 in Array#sort / Array#toSorted[summary param] this in Array#forEach / Map#forEach / Set#forEach[summary param] 0 in Array#forEach / Map#forEach / Set#forEach[summary param] 1 in Array#forEach / Map#forEach / Set#forEach[summary param] this in Array#find / Array#findLast[summary param] 0 in Array#find / Array#findLast[summary param] 1 in Array#find / Array#findLast[summary param] this in Array#keys / Map#keys / Set#keys[summary param] this in Promise#then() with 1 argument[summary param] 0 in Promise#then() with 1 argument[summary param] this in Array#push / Array#unshift[summary param] 0.. in Array#push / Array#unshift[summary param] this in Array#slice / String#slice[summary param] this in Iterator#next[summary param] this in Array#join[summary param] this in Map#set[summary param] this in Set#add[summary param] 0 in Set#add[summary param] this in Array#at / String#at[summary param] this in Array#flatMap[summary param] 0 in Array#flatMap[summary param] 1 in Array#flatMap[summary param] this in Promise#catch()[summary param] 0 in Promise#catch()[summary param] this in Array#splice[summary param] 2.. in Array#splice[summary param] this in Array#filter[summary param] 0 in Array#filter[summary param] 1 in Array#filter[summary param] this in Array#shift[summary param] this in Array#pop[summary param] this in Array#map[summary param] 0 in Array#map[summary param] 1 in Array#map[summary param] this in TypedArray#subarray[summary param] this in Object#toString / Array#toString[summary param] 0 in Set constructor[summary param] 0 in Map constructor[summary param] 0 in Array.from(arg)[summary param] 0.. in String#fromCharCode[summary param] 0 in _.map[summary param] 1 in _.map[summary param] 0 in _.tap[summary param] 1 in _.tap[summary param] this in Map#get[summary param] 0 in _.flatMap[summary param] 1 in _.flatMap[summary param] 0 in _.groupBy[summary param] 1 in _.groupBy[summary param] this in Array#fill[summary param] 0.. in Array#fill[summary param] this in Array#with[summary param] 1 in Array#with[summary param] 0 in Map#groupBy[summary param] 1 in Map#groupBy[summary param] 0 in _.each-like[summary param] 1 in _.each-like[summary param] 0 in _.mapObject[summary param] 1 in _.mapObject[summary param] 0 in _.partition[summary param] 1 in _.partition[summary param] 0 in async.sortBy[summary param] 2 in async.sortBy[summary param] 0 in Promise.all()[summary param] 0 in Promise.try()[summary param] 1 in Promise.try()[summary param] 2 in Promise.try()[summary param] 3 in Promise.try()[summary param] 4 in Promise.try()[summary param] 5 in Promise.try()[summary param] 6 in Promise.try()[summary param] 7 in Promise.try()[summary param] 8 in Promise.try()[summary param] 9 in Promise.try()[summary param] 10 in Promise.try()[summary param] 11 in Promise.try()[summary param] 0 in _.flatMapDeep[summary param] 1 in _.flatMapDeep[summary param] 0 in _.reduce-like[summary param] 1 in _.reduce-like[summary param] 2 in _.reduce-like[summary param] 0 in _.sortBy-like[summary param] 1 in _.sortBy-like[summary param] 0 in new Promise()[summary param] this in TypedArray#set[summary param] 0 in TypedArray#set[summary param] this in Array#toSpliced[summary param] 2.. in Array#toSpliced[summary param] this in Array#copyWithin[summary param] 0 in Promise.reject()[summary param] 0.. in Array constructor[summary param] this in Promise#finally()[summary param] 0 in Promise#finally()[summary param] 0 in _.minBy / _.maxBy[summary param] 1 in _.minBy / _.maxBy[summary param] 0 in TextDecoder#decode[summary param] 0 in bluebird.mapSeries[summary param] 1 in bluebird.mapSeries[summary param] this in ArrayBuffer#transfer[summary param] 0.. in Exception propagator[summary param] 0 in Promise.allSettled()[summary param] 0 in TypedArray constructor[summary param] 0 in new Promise() workaround[summary param] this in String#split with '#' or '?'[summary param] 0 in query-string stringification[summary param] function in new Promise() reject callback[summary param] 0 in new Promise() reject callback[summary param] function in new Promise() resolve callback[summary param] 0 in new Promise() resolve callback[summary param] 0 in Promise.any() or Promise.race()[summary param] 0 in Array.from(arg, callback, [thisArg])[summary param] 1 in Array.from(arg, callback, [thisArg])[summary param] 2 in Array.from(arg, callback, [thisArg])[summary param] 0 in 'array.prototype.find' / 'array-find'[summary param] 1 in 'array.prototype.find' / 'array-find'[summary param] 2 in 'array.prototype.find' / 'array-find'[summary param] this in String#replace / String#replaceAll (with wildcard pattern)[summary param] 1 in String#replace / String#replaceAll (with wildcard pattern)[summary param] this in String#replace / String#replaceAll (without wildcard pattern)[summary param] 1 in String#replace / String#replaceAll (without wildcard pattern)[summary] to write: ReturnValue in JSON.stringify[summary] read: Argument[0].AnyMemberDeep in JSON.stringify[summary] to write: ReturnValue in URL[summary] to write: ReturnValue.Member[search] in URL[summary] to write: ReturnValue.Member[hash] in URL[summary] to write: ReturnValue.Member[searchParams] in URL[summary] to write: ReturnValue.Member[searchParams].MapValue in URL[summary] to write: ReturnValue.Member[searchParams].MapKey in URL[summary] to write: ReturnValue in URLSearchParams[summary] to write: ReturnValue.MapValue in URLSearchParams[summary] to write: ReturnValue.MapKey in URLSearchParams[summary] to write: ReturnValue in Promise.resolve()[summary] to write: ReturnValue.Awaited in Promise.resolve()[summary] to write: ReturnValue in Array.of[summary] to write: ReturnValue.ArrayElement in Array.of[summary] to write: ReturnValue in getAll[summary] to write: ReturnValue.ArrayElement in getAll[summary] read: Argument[this].MapValue in getAll[summary] to write: Argument[0] in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[1].Parameter[function] in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[1].Parameter[0] in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[1].Parameter[function] in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[1].Parameter[0] in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=1)[summary] read: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=1)[summary] to write: Argument[0] in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[2].Parameter[function] in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[2].Parameter[0] in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[2].Parameter[function] in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[2].Parameter[0] in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=2)[summary] read: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=2)[summary] to write: Argument[0] in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[3].Parameter[function] in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[3].Parameter[0] in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=3)[summary] to write: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[3].Parameter[function] in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[3].Parameter[0] in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[0].ArrayElement in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[0].AnyMember in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[0].IteratorElement in async.IteratorCall(callbackArgIndex=3)[summary] read: Argument[0].SetElement in async.IteratorCall(callbackArgIndex=3)[summary] to write: ReturnValue in Array#flat(1)[summary] to write: ReturnValue.ArrayElement in Array#flat(1)[summary] read: Argument[this].ArrayElement in Array#flat(1)[summary] read: Argument[this].ArrayElement.ArrayElement in Array#flat(1)[summary] to write: ReturnValue in Array#flat(2)[summary] to write: ReturnValue.ArrayElement in Array#flat(2)[summary] read: Argument[this].ArrayElement in Array#flat(2)[summary] read: Argument[this].ArrayElement.ArrayElement in Array#flat(2)[summary] read: Argument[this].ArrayElement.ArrayElement.ArrayElement in Array#flat(2)[summary] read: Argument[this].ArrayElement.ArrayElement.WithoutArrayElement in Array#flat(2)[summary] to write: ReturnValue in Array#flat(3)[summary] to write: ReturnValue.ArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement.ArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement.ArrayElement.ArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement.ArrayElement.WithoutArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement.ArrayElement.ArrayElement.ArrayElement in Array#flat(3)[summary] read: Argument[this].ArrayElement.ArrayElement.ArrayElement.WithoutArrayElement in Array#flat(3)[summary] to write: ReturnValue in ArrayCopyingPackage[summary] to write: ReturnValue.ArrayElement in ArrayCopyingPackage[summary] read: Argument[0..].ArrayElement in ArrayCopyingPackage[summary] to write: ReturnValue in ArrayCoercionPackage[summary] to write: ReturnValue.ArrayElement in ArrayCoercionPackage[summary] read: Argument[0].WithoutArrayElement in ArrayCoercionPackage[summary] read: Argument[0].WithArrayElement in ArrayCoercionPackage[summary] to write: ReturnValue in ArrayFlatteningPackage[summary] to write: Argument[this] in Array method with flow into callback[summary] to write: Argument[1] in Array method with flow into callback[summary] to write: Argument[0].Parameter[function] in Array method with flow into callback[summary] to write: Argument[0].Parameter[this] in Array method with flow into callback[summary] to write: Argument[0].Parameter[0] in Array method with flow into callback[summary] to write: Argument[this].ArrayElement in Array method with flow into callback[summary] read: Argument[0].Parameter[function] in Array method with flow into callback[summary] read: Argument[0].Parameter[this] in Array method with flow into callback[summary] read: Argument[0].Parameter[0] in Array method with flow into callback[summary] read: Argument[this].ArrayElement in Array method with flow into callback[summary] to write: ReturnValue in Array#reverse / Array#toReversed[summary] to write: ReturnValue.ArrayElement in Array#reverse / Array#toReversed[summary] read: Argument[this].ArrayElement in Array#reverse / Array#toReversed[summary] to write: Argument[this] in Array#reduce / Array#reduceRight[summary] to write: Argument[1] in Array#reduce / Array#reduceRight[summary] to write: ReturnValue in Array#reduce / Array#reduceRight[summary] to write: Argument[0].Parameter[function] in Array#reduce / Array#reduceRight[summary] to write: Argument[0].Parameter[0] in Array#reduce / Array#reduceRight[summary] to write: Argument[0].Parameter[1] in Array#reduce / Array#reduceRight[summary] to write: Argument[0].Parameter[3] in Array#reduce / Array#reduceRight[summary] to write: Argument[this].ArrayElement in Array#reduce / Array#reduceRight[summary] read: Argument[0].Parameter[function] in Array#reduce / Array#reduceRight[summary] read: Argument[0].Parameter[0] in Array#reduce / Array#reduceRight[summary] read: Argument[0].Parameter[1] in Array#reduce / Array#reduceRight[summary] read: Argument[0].Parameter[3] in Array#reduce / Array#reduceRight[summary] read: Argument[0].ReturnValue in Array#reduce / Array#reduceRight[summary] read: Argument[this].ArrayElement in Array#reduce / Array#reduceRight[summary] to write: ReturnValue in Array#values / Map#values / Set#values[summary] to write: ReturnValue.IteratorElement in Array#values / Map#values / Set#values[summary] read: Argument[this].ArrayElement in Array#values / Map#values / Set#values[summary] read: Argument[this].MapValue in Array#values / Map#values / Set#values[summary] read: Argument[this].SetElement in Array#values / Map#values / Set#values[summary] to write: ReturnValue in String#split[summary] to write: ReturnValue.ArrayElement in String#split[summary] to write: ReturnValue in Array#concat / String#concat / Buffer.concat[summary] to write: ReturnValue.ArrayElement in Array#concat / String#concat / Buffer.concat[summary] read: Argument[this].ArrayElement in Array#concat / String#concat / Buffer.concat[summary] read: Argument[0..].ArrayElement in Array#concat / String#concat / Buffer.concat[summary] to write: Argument[this] in Promise#then() with 2 arguments[summary] to write: ReturnValue in Promise#then() with 2 arguments[summary] to write: Argument[0].Parameter[function] in Promise#then() with 2 arguments[summary] to write: Argument[1].Parameter[function] in Promise#then() with 2 arguments[summary] to write: Argument[0].Parameter[0] in Promise#then() with 2 arguments[summary] to write: Argument[1].Parameter[0] in Promise#then() with 2 arguments[summary] to write: ReturnValue.Awaited in Promise#then() with 2 arguments[summary] to write: Argument[this].Awaited[error] in Promise#then() with 2 arguments[summary] to write: ReturnValue.Awaited[error] in Promise#then() with 2 arguments[summary] to write: Argument[this].Awaited[value] in Promise#then() with 2 arguments[summary] read: Argument[0].Parameter[function] in Promise#then() with 2 arguments[summary] read: Argument[1].Parameter[function] in Promise#then() with 2 arguments[summary] read: Argument[0].Parameter[0] in Promise#then() with 2 arguments[summary] read: Argument[1].Parameter[0] in Promise#then() with 2 arguments[summary] read: Argument[0].ReturnValue in Promise#then() with 2 arguments[summary] read: Argument[1].ReturnValue in Promise#then() with 2 arguments[summary] read: Argument[0].ReturnValue[exception] in Promise#then() with 2 arguments[summary] read: Argument[1].ReturnValue[exception] in Promise#then() with 2 arguments[summary] read: Argument[this].Awaited[error] in Promise#then() with 2 arguments[summary] read: Argument[this].Awaited[value] in Promise#then() with 2 arguments[summary] to write: Argument[this] in Array#sort / Array#toSorted[summary] to write: ReturnValue in Array#sort / Array#toSorted[summary] to write: Argument[0].Parameter[function] in Array#sort / Array#toSorted[summary] to write: Argument[0].Parameter[0] in Array#sort / Array#toSorted[summary] to write: Argument[0].Parameter[1] in Array#sort / Array#toSorted[summary] to write: Argument[this].ArrayElement in Array#sort / Array#toSorted[summary] to write: ReturnValue.ArrayElement in Array#sort / Array#toSorted[summary] read: Argument[0].Parameter[function] in Array#sort / Array#toSorted[summary] read: Argument[0].Parameter[0] in Array#sort / Array#toSorted[summary] read: Argument[0].Parameter[1] in Array#sort / Array#toSorted[summary] read: Argument[this].ArrayElement in Array#sort / Array#toSorted[summary] to write: Argument[this] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[1] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[0].Parameter[function] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[0].Parameter[this] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[0].Parameter[0] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[0].Parameter[1] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[0].Parameter[2] in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[this].ArrayElement in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[this].MapValue in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[this].SetElement in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[this].MapKey in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[0].Parameter[function] in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[0].Parameter[this] in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[0].Parameter[0] in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[0].Parameter[1] in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[0].Parameter[2] in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[this].ArrayElement in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[this].MapValue in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[this].SetElement in Array#forEach / Map#forEach / Set#forEach[summary] read: Argument[this].MapKey in Array#forEach / Map#forEach / Set#forEach[summary] to write: Argument[this] in Array#find / Array#findLast[summary] to write: Argument[1] in Array#find / Array#findLast[summary] to write: ReturnValue in Array#find / Array#findLast[summary] to write: Argument[0].Parameter[function] in Array#find / Array#findLast[summary] to write: Argument[0].Parameter[this] in Array#find / Array#findLast[summary] to write: Argument[0].Parameter[0] in Array#find / Array#findLast[summary] to write: Argument[this].ArrayElement in Array#find / Array#findLast[summary] read: Argument[0].Parameter[function] in Array#find / Array#findLast[summary] read: Argument[0].Parameter[this] in Array#find / Array#findLast[summary] read: Argument[0].Parameter[0] in Array#find / Array#findLast[summary] read: Argument[this].ArrayElement in Array#find / Array#findLast[summary] to write: ReturnValue in Array#keys / Map#keys / Set#keys[summary] to write: ReturnValue.IteratorElement in Array#keys / Map#keys / Set#keys[summary] read: Argument[this].SetElement in Array#keys / Map#keys / Set#keys[summary] read: Argument[this].MapKey in Array#keys / Map#keys / Set#keys[summary] to write: Argument[this] in Promise#then() with 1 argument[summary] to write: ReturnValue in Promise#then() with 1 argument[summary] to write: Argument[0].Parameter[function] in Promise#then() with 1 argument[summary] to write: Argument[0].Parameter[0] in Promise#then() with 1 argument[summary] to write: ReturnValue.Awaited in Promise#then() with 1 argument[summary] to write: ReturnValue.Awaited[error] in Promise#then() with 1 argument[summary] to write: Argument[this].Awaited[value] in Promise#then() with 1 argument[summary] read: Argument[0].Parameter[function] in Promise#then() with 1 argument[summary] read: Argument[0].Parameter[0] in Promise#then() with 1 argument[summary] read: Argument[0].ReturnValue in Promise#then() with 1 argument[summary] read: Argument[0].ReturnValue[exception] in Promise#then() with 1 argument[summary] read: Argument[this].Awaited[value] in Promise#then() with 1 argument[summary] read: Argument[this].WithAwaited[error] in Promise#then() with 1 argument[summary] to write: Argument[this] in Array#push / Array#unshift[summary] to write: Argument[this].ArrayElement in Array#push / Array#unshift[summary] to write: ReturnValue in Array#slice / String#slice[summary] to write: ReturnValue.ArrayElement in Array#slice / String#slice[summary] read: Argument[this].ArrayElement in Array#slice / String#slice[summary] to write: ReturnValue in Iterator#next[summary] to write: ReturnValue[exception] in Iterator#next[summary] to write: ReturnValue.Member[value] in Iterator#next[summary] read: Argument[this].IteratorError in Iterator#next[summary] read: Argument[this].IteratorElement in Iterator#next[summary] to write: ReturnValue in Array#join[summary] read: Argument[this].ArrayElement in Array#join[summary] to write: ReturnValue in Map#set[summary] read: Argument[this].WithMapValue in Map#set[summary] read: Argument[this].WithMapKey in Map#set[summary] to write: Argument[this] in Set#add[summary] to write: Argument[this].SetElement in Set#add[summary] to write: ReturnValue in Array#at / String#at[summary] read: Argument[this].ArrayElement in Array#at / String#at[summary] to write: Argument[this] in Array#flatMap[summary] to write: Argument[1] in Array#flatMap[summary] to write: ReturnValue in Array#flatMap[summary] to write: Argument[0].Parameter[function] in Array#flatMap[summary] to write: Argument[0].Parameter[0] in Array#flatMap[summary] to write: Argument[0].Parameter[1] in Array#flatMap[summary] to write: Argument[0].Parameter[2] in Array#flatMap[summary] to write: Argument[this].ArrayElement in Array#flatMap[summary] to write: ReturnValue.ArrayElement in Array#flatMap[summary] read: Argument[0].Parameter[function] in Array#flatMap[summary] read: Argument[0].Parameter[0] in Array#flatMap[summary] read: Argument[0].Parameter[1] in Array#flatMap[summary] read: Argument[0].Parameter[2] in Array#flatMap[summary] read: Argument[0].ReturnValue in Array#flatMap[summary] read: Argument[this].ArrayElement in Array#flatMap[summary] read: Argument[0].ReturnValue.ArrayElement in Array#flatMap[summary] read: Argument[0].ReturnValue.WithoutArrayElement in Array#flatMap[summary] to write: Argument[this] in Promise#catch()[summary] to write: ReturnValue in Promise#catch()[summary] to write: Argument[0].Parameter[function] in Promise#catch()[summary] to write: Argument[0].Parameter[0] in Promise#catch()[summary] to write: ReturnValue.Awaited in Promise#catch()[summary] to write: Argument[this].Awaited[error] in Promise#catch()[summary] to write: ReturnValue.Awaited[error] in Promise#catch()[summary] to write: ReturnValue.Awaited[value] in Promise#catch()[summary] read: Argument[0].Parameter[function] in Promise#catch()[summary] read: Argument[0].Parameter[0] in Promise#catch()[summary] read: Argument[0].ReturnValue in Promise#catch()[summary] read: Argument[0].ReturnValue[exception] in Promise#catch()[summary] read: Argument[this].Awaited[error] in Promise#catch()[summary] read: Argument[this].Awaited[value] in Promise#catch()[summary] to write: Argument[this] in Array#splice[summary] to write: ReturnValue in Array#splice[summary] to write: Argument[this].ArrayElement in Array#splice[summary] to write: ReturnValue.ArrayElement in Array#splice[summary] read: Argument[this].ArrayElement in Array#splice[summary] to write: Argument[this] in Array#filter[summary] to write: Argument[1] in Array#filter[summary] to write: ReturnValue in Array#filter[summary] to write: Argument[0].Parameter[function] in Array#filter[summary] to write: Argument[0].Parameter[this] in Array#filter[summary] to write: Argument[0].Parameter[0] in Array#filter[summary] to write: Argument[this].ArrayElement in Array#filter[summary] read: Argument[0].Parameter[function] in Array#filter[summary] read: Argument[0].Parameter[this] in Array#filter[summary] read: Argument[0].Parameter[0] in Array#filter[summary] read: Argument[this].ArrayElement in Array#filter[summary] read: Argument[this].WithArrayElement in Array#filter[summary] to write: ReturnValue in Array#shift[summary] read: Argument[this].ArrayElement[0] in Array#shift[summary] to write: ReturnValue in Array#pop[summary] read: Argument[this].ArrayElement in Array#pop[summary] to write: Argument[this] in Array#map[summary] to write: Argument[1] in Array#map[summary] to write: ReturnValue in Array#map[summary] to write: Argument[0].Parameter[function] in Array#map[summary] to write: Argument[0].Parameter[this] in Array#map[summary] to write: Argument[0].Parameter[0] in Array#map[summary] to write: Argument[0].Parameter[2] in Array#map[summary] to write: Argument[this].ArrayElement in Array#map[summary] to write: ReturnValue.ArrayElement in Array#map[summary] read: Argument[0].Parameter[function] in Array#map[summary] read: Argument[0].Parameter[this] in Array#map[summary] read: Argument[0].Parameter[0] in Array#map[summary] read: Argument[0].Parameter[2] in Array#map[summary] read: Argument[0].ReturnValue in Array#map[summary] read: Argument[this].ArrayElement in Array#map[summary] to write: ReturnValue in TypedArray#subarray[summary] to write: ReturnValue.ArrayElement in TypedArray#subarray[summary] read: Argument[this].ArrayElement in TypedArray#subarray[summary] to write: ReturnValue in Object#toString / Array#toString[summary] read: Argument[this].ArrayElementDeep in Object#toString / Array#toString[summary] to write: ReturnValue in Set constructor[summary] to write: ReturnValue.SetElement in Set constructor[summary] read: Argument[0].ArrayElement in Set constructor[summary] read: Argument[0].IteratorElement in Set constructor[summary] read: Argument[0].SetElement in Set constructor[summary] to write: ReturnValue in Map constructor[summary] read: Argument[0].WithMapValue in Map constructor[summary] read: Argument[0].WithMapKey in Map constructor[summary] to write: ReturnValue in Array.from(arg)[summary] to write: ReturnValue[exception] in Array.from(arg)[summary] to write: ReturnValue.ArrayElement in Array.from(arg)[summary] read: Argument[0].IteratorError in Array.from(arg)[summary] read: Argument[0].IteratorElement in Array.from(arg)[summary] read: Argument[0].SetElement in Array.from(arg)[summary] read: Argument[0].WithArrayElement in Array.from(arg)[summary] to write: ReturnValue in String#fromCharCode[summary] to write: Argument[0] in _.map[summary] to write: ReturnValue in _.map[summary] to write: Argument[1].Parameter[function] in _.map[summary] to write: Argument[1].Parameter[0] in _.map[summary] to write: Argument[0].ArrayElement in _.map[summary] to write: ReturnValue.ArrayElement in _.map[summary] read: Argument[1].Parameter[function] in _.map[summary] read: Argument[1].Parameter[0] in _.map[summary] read: Argument[1].ReturnValue in _.map[summary] read: Argument[0].ArrayElement in _.map[summary] to write: Argument[0] in _.tap[summary] to write: ReturnValue in _.tap[summary] to write: Argument[1].Parameter[function] in _.tap[summary] to write: Argument[1].Parameter[0] in _.tap[summary] read: Argument[1].Parameter[function] in _.tap[summary] read: Argument[1].Parameter[0] in _.tap[summary] to write: ReturnValue in Map#get[summary] read: Argument[this].MapValue in Map#get[summary] to write: Argument[0] in _.flatMap[summary] to write: ReturnValue in _.flatMap[summary] to write: Argument[1].Parameter[function] in _.flatMap[summary] to write: Argument[1].Parameter[0] in _.flatMap[summary] to write: Argument[0].ArrayElement in _.flatMap[summary] to write: ReturnValue.ArrayElement in _.flatMap[summary] read: Argument[1].Parameter[function] in _.flatMap[summary] read: Argument[1].Parameter[0] in _.flatMap[summary] read: Argument[1].ReturnValue in _.flatMap[summary] read: Argument[0].ArrayElement in _.flatMap[summary] read: Argument[1].ReturnValue.ArrayElement in _.flatMap[summary] read: Argument[1].ReturnValue.WithoutArrayElement in _.flatMap[summary] to write: ReturnValue in _.groupBy[summary] to write: Argument[1].Parameter[function] in _.groupBy[summary] to write: Argument[1].Parameter[0] in _.groupBy[summary] read: Argument[1].Parameter[function] in _.groupBy[summary] read: Argument[1].Parameter[0] in _.groupBy[summary] to write: Argument[this] in Array#fill[summary] to write: ReturnValue in Array#fill[summary] to write: Argument[this].ArrayElement in Array#fill[summary] to write: ReturnValue.ArrayElement in Array#fill[summary] to write: ReturnValue in Array#with[summary] to write: ReturnValue.ArrayElement in Array#with[summary] read: Argument[this].WithArrayElement in Array#with[summary] to write: Argument[0] in Map#groupBy[summary] to write: ReturnValue in Map#groupBy[summary] to write: Argument[1].Parameter[function] in Map#groupBy[summary] to write: Argument[1].Parameter[0] in Map#groupBy[summary] to write: Argument[0].ArrayElement in Map#groupBy[summary] to write: ReturnValue.MapValue in Map#groupBy[summary] to write: ReturnValue.MapKey in Map#groupBy[summary] to write: ReturnValue.MapValue.ArrayElement in Map#groupBy[summary] read: Argument[1].Parameter[function] in Map#groupBy[summary] read: Argument[1].Parameter[0] in Map#groupBy[summary] read: Argument[1].ReturnValue in Map#groupBy[summary] read: Argument[0].ArrayElement in Map#groupBy[summary] to write: Argument[0] in _.each-like[summary] to write: Argument[1].Parameter[function] in _.each-like[summary] to write: Argument[1].Parameter[0] in _.each-like[summary] to write: Argument[0].ArrayElement in _.each-like[summary] read: Argument[1].Parameter[function] in _.each-like[summary] read: Argument[1].Parameter[0] in _.each-like[summary] read: Argument[0].ArrayElement in _.each-like[summary] to write: Argument[0] in _.mapObject[summary] to write: ReturnValue in _.mapObject[summary] to write: Argument[1].Parameter[function] in _.mapObject[summary] to write: Argument[1].Parameter[1] in _.mapObject[summary] to write: Argument[0].AnyMember in _.mapObject[summary] to write: ReturnValue.AnyMember in _.mapObject[summary] read: Argument[1].Parameter[function] in _.mapObject[summary] read: Argument[1].Parameter[1] in _.mapObject[summary] read: Argument[1].ReturnValue in _.mapObject[summary] read: Argument[0].AnyMember in _.mapObject[summary] to write: Argument[0] in _.partition[summary] to write: ReturnValue in _.partition[summary] to write: Argument[1].Parameter[function] in _.partition[summary] to write: Argument[1].Parameter[1] in _.partition[summary] to write: Argument[0].ArrayElement in _.partition[summary] to write: ReturnValue.ArrayElement in _.partition[summary] to write: ReturnValue.ArrayElement.ArrayElement in _.partition[summary] read: Argument[1].Parameter[function] in _.partition[summary] read: Argument[1].Parameter[1] in _.partition[summary] read: Argument[0].ArrayElement in _.partition[summary] to write: Argument[2].Parameter[function] in async.sortBy[summary] to write: Argument[2].Parameter[1] in async.sortBy[summary] read: Argument[2].Parameter[function] in async.sortBy[summary] read: Argument[2].Parameter[1] in async.sortBy[summary] read: Argument[0].ArrayElement in async.sortBy[summary] read: Argument[0].AnyMember in async.sortBy[summary] read: Argument[0].IteratorElement in async.sortBy[summary] read: Argument[0].SetElement in async.sortBy[summary] to write: ReturnValue in Promise.all()[summary] to write: ReturnValue.Awaited[value] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[10..] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[?] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[2!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[9!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[1!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[0!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[7!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[3!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[5!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[4!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[8!] in Promise.all()[summary] to write: ReturnValue.Awaited[value].ArrayElement[6!] in Promise.all()[summary] read: Argument[0].ArrayElement in Promise.all()[summary] read: Argument[0].ArrayElement[10..] in Promise.all()[summary] read: Argument[0].ArrayElement[?] in Promise.all()[summary] read: Argument[0].ArrayElement[2!] in Promise.all()[summary] read: Argument[0].ArrayElement[9!] in Promise.all()[summary] read: Argument[0].ArrayElement[1!] in Promise.all()[summary] read: Argument[0].ArrayElement[0!] in Promise.all()[summary] read: Argument[0].ArrayElement[7!] in Promise.all()[summary] read: Argument[0].ArrayElement[3!] in Promise.all()[summary] read: Argument[0].ArrayElement[5!] in Promise.all()[summary] read: Argument[0].ArrayElement[4!] in Promise.all()[summary] read: Argument[0].ArrayElement[8!] in Promise.all()[summary] read: Argument[0].ArrayElement[6!] in Promise.all()[summary] read: Argument[0].ArrayElement[10..].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[?].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[2!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[9!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[1!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[0!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[7!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[3!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[5!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[4!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[8!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement[6!].Awaited in Promise.all()[summary] read: Argument[0].ArrayElement.WithAwaited[error] in Promise.all()[summary] to write: Argument[1] in Promise.try()[summary] to write: Argument[2] in Promise.try()[summary] to write: Argument[3] in Promise.try()[summary] to write: Argument[4] in Promise.try()[summary] to write: Argument[5] in Promise.try()[summary] to write: Argument[6] in Promise.try()[summary] to write: Argument[7] in Promise.try()[summary] to write: Argument[8] in Promise.try()[summary] to write: Argument[9] in Promise.try()[summary] to write: Argument[10] in Promise.try()[summary] to write: Argument[11] in Promise.try()[summary] to write: ReturnValue in Promise.try()[summary] to write: Argument[0].Parameter[function] in Promise.try()[summary] to write: Argument[0].Parameter[0] in Promise.try()[summary] to write: Argument[0].Parameter[1] in Promise.try()[summary] to write: Argument[0].Parameter[2] in Promise.try()[summary] to write: Argument[0].Parameter[3] in Promise.try()[summary] to write: Argument[0].Parameter[4] in Promise.try()[summary] to write: Argument[0].Parameter[5] in Promise.try()[summary] to write: Argument[0].Parameter[6] in Promise.try()[summary] to write: Argument[0].Parameter[7] in Promise.try()[summary] to write: Argument[0].Parameter[8] in Promise.try()[summary] to write: Argument[0].Parameter[9] in Promise.try()[summary] to write: Argument[0].Parameter[10] in Promise.try()[summary] to write: ReturnValue.Awaited in Promise.try()[summary] to write: ReturnValue.Awaited[error] in Promise.try()[summary] read: Argument[0].Parameter[function] in Promise.try()[summary] read: Argument[0].Parameter[0] in Promise.try()[summary] read: Argument[0].Parameter[1] in Promise.try()[summary] read: Argument[0].Parameter[2] in Promise.try()[summary] read: Argument[0].Parameter[3] in Promise.try()[summary] read: Argument[0].Parameter[4] in Promise.try()[summary] read: Argument[0].Parameter[5] in Promise.try()[summary] read: Argument[0].Parameter[6] in Promise.try()[summary] read: Argument[0].Parameter[7] in Promise.try()[summary] read: Argument[0].Parameter[8] in Promise.try()[summary] read: Argument[0].Parameter[9] in Promise.try()[summary] read: Argument[0].Parameter[10] in Promise.try()[summary] read: Argument[0].ReturnValue in Promise.try()[summary] read: Argument[0].ReturnValue[exception] in Promise.try()[summary] to write: Argument[0] in _.flatMapDeep[summary] to write: ReturnValue in _.flatMapDeep[summary] to write: Argument[1].Parameter[function] in _.flatMapDeep[summary] to write: Argument[1].Parameter[0] in _.flatMapDeep[summary] to write: Argument[0].ArrayElement in _.flatMapDeep[summary] to write: ReturnValue.ArrayElement in _.flatMapDeep[summary] read: Argument[1].Parameter[function] in _.flatMapDeep[summary] read: Argument[1].Parameter[0] in _.flatMapDeep[summary] read: Argument[1].ReturnValue in _.flatMapDeep[summary] read: Argument[0].ArrayElement in _.flatMapDeep[summary] read: Argument[1].ReturnValue.ArrayElementDeep in _.flatMapDeep[summary] read: Argument[1].ReturnValue.WithoutArrayElement in _.flatMapDeep[summary] to write: Argument[0] in _.reduce-like[summary] to write: Argument[2] in _.reduce-like[summary] to write: ReturnValue in _.reduce-like[summary] to write: Argument[1].Parameter[function] in _.reduce-like[summary] to write: Argument[1].Parameter[0] in _.reduce-like[summary] to write: Argument[1].Parameter[1] in _.reduce-like[summary] to write: Argument[0].ArrayElement in _.reduce-like[summary] read: Argument[1].Parameter[function] in _.reduce-like[summary] read: Argument[1].Parameter[0] in _.reduce-like[summary] read: Argument[1].Parameter[1] in _.reduce-like[summary] read: Argument[1].ReturnValue in _.reduce-like[summary] read: Argument[0].ArrayElement in _.reduce-like[summary] to write: Argument[0] in _.sortBy-like[summary] to write: ReturnValue in _.sortBy-like[summary] to write: Argument[1].Parameter[function] in _.sortBy-like[summary] to write: Argument[1].Parameter[0] in _.sortBy-like[summary] to write: Argument[0].ArrayElement in _.sortBy-like[summary] to write: ReturnValue.ArrayElement in _.sortBy-like[summary] to write: Argument[1].ArrayElement.Parameter[function] in _.sortBy-like[summary] to write: Argument[1].ArrayElement.Parameter[0] in _.sortBy-like[summary] read: Argument[1].Parameter[function] in _.sortBy-like[summary] read: Argument[1].Parameter[0] in _.sortBy-like[summary] read: Argument[0].ArrayElement in _.sortBy-like[summary] read: Argument[1].ArrayElement in _.sortBy-like[summary] read: Argument[1].ArrayElement.Parameter[function] in _.sortBy-like[summary] read: Argument[1].ArrayElement.Parameter[0] in _.sortBy-like[summary] to write: ReturnValue in new Promise()[summary] to write: Argument[0].Parameter[function] in new Promise()[summary] to write: Argument[0].Parameter[0] in new Promise()[summary] to write: Argument[0].Parameter[1] in new Promise()[summary] to write: ReturnValue.Awaited in new Promise()[summary] to write: ReturnValue.Awaited[error] in new Promise()[summary] read: Argument[0].Parameter[function] in new Promise()[summary] read: Argument[0].Parameter[0] in new Promise()[summary] read: Argument[0].Parameter[1] in new Promise()[summary] read: Argument[0].ReturnValue[exception] in new Promise()[summary] read: Argument[0].Parameter[0].Argument[0] in new Promise()[summary] read: Argument[0].Parameter[1].Argument[0] in new Promise()[summary] to write: Argument[this] in TypedArray#set[summary] to write: Argument[this].ArrayElement in TypedArray#set[summary] read: Argument[0].ArrayElement in TypedArray#set[summary] to write: ReturnValue in Array#toSpliced[summary] to write: ReturnValue.ArrayElement in Array#toSpliced[summary] read: Argument[this].ArrayElement in Array#toSpliced[summary] to write: ReturnValue in Array#copyWithin[summary] read: Argument[this].WithArrayElement in Array#copyWithin[summary] to write: ReturnValue in Promise.reject()[summary] to write: ReturnValue.Awaited[error] in Promise.reject()[summary] to write: ReturnValue in Array constructor[summary] to write: ReturnValue.ArrayElement in Array constructor[summary] to write: ReturnValue in Promise#finally()[summary] to write: Argument[0].Parameter[function] in Promise#finally()[summary] to write: ReturnValue.Awaited[error] in Promise#finally()[summary] read: Argument[0].Parameter[function] in Promise#finally()[summary] read: Argument[0].ReturnValue in Promise#finally()[summary] read: Argument[0].ReturnValue[exception] in Promise#finally()[summary] read: Argument[this].WithAwaited[error] in Promise#finally()[summary] read: Argument[this].WithAwaited[value] in Promise#finally()[summary] read: Argument[0].ReturnValue.Awaited[error] in Promise#finally()[summary] to write: Argument[0] in _.minBy / _.maxBy[summary] to write: ReturnValue in _.minBy / _.maxBy[summary] to write: Argument[1].Parameter[function] in _.minBy / _.maxBy[summary] to write: Argument[1].Parameter[1] in _.minBy / _.maxBy[summary] to write: Argument[0].ArrayElement in _.minBy / _.maxBy[summary] read: Argument[1].Parameter[function] in _.minBy / _.maxBy[summary] read: Argument[1].Parameter[1] in _.minBy / _.maxBy[summary] read: Argument[0].ArrayElement in _.minBy / _.maxBy[summary] to write: ReturnValue in TextDecoder#decode[summary] read: Argument[0].ArrayElement in TextDecoder#decode[summary] to write: Argument[0] in bluebird.mapSeries[summary] to write: ReturnValue in bluebird.mapSeries[summary] to write: Argument[1].Parameter[function] in bluebird.mapSeries[summary] to write: Argument[1].Parameter[0] in bluebird.mapSeries[summary] to write: Argument[0].Awaited in bluebird.mapSeries[summary] to write: ReturnValue.Awaited in bluebird.mapSeries[summary] to write: Argument[0].Awaited.ArrayElement in bluebird.mapSeries[summary] to write: ReturnValue.Awaited.ArrayElement in bluebird.mapSeries[summary] to write: Argument[0].Awaited.ArrayElement.Awaited in bluebird.mapSeries[summary] read: Argument[1].Parameter[function] in bluebird.mapSeries[summary] read: Argument[1].Parameter[0] in bluebird.mapSeries[summary] read: Argument[1].ReturnValue in bluebird.mapSeries[summary] read: Argument[0].Awaited in bluebird.mapSeries[summary] read: Argument[0].WithAwaited[error] in bluebird.mapSeries[summary] read: Argument[0].Awaited.ArrayElement in bluebird.mapSeries[summary] read: Argument[1].ReturnValue.Awaited in bluebird.mapSeries[summary] read: Argument[1].ReturnValue.WithAwaited[error] in bluebird.mapSeries[summary] read: Argument[0].Awaited.ArrayElement.Awaited in bluebird.mapSeries[summary] read: Argument[0].Awaited.ArrayElement.WithAwaited[error] in bluebird.mapSeries[summary] to write: ReturnValue in ArrayBuffer#transfer[summary] to write: ReturnValue.ArrayElement in ArrayBuffer#transfer[summary] read: Argument[this].ArrayElement in ArrayBuffer#transfer[summary] to write: ReturnValue[exception] in Exception propagator[summary] read: Argument[0..].ReturnValue[exception] in Exception propagator[summary] to write: ReturnValue in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[10..] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[?] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[2!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[9!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[1!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[0!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[7!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[3!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[5!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[4!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[8!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[6!] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[10..].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[?].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[2!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[9!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[1!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[0!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[7!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[3!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[5!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[4!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[8!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[6!].Member[value] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[10..].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[?].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[2!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[9!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[1!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[0!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[7!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[3!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[5!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[4!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[8!].Member[reason] in Promise.allSettled()[summary] to write: ReturnValue.Awaited[value].ArrayElement[6!].Member[reason] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[10..] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[?] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[2!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[9!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[1!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[0!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[7!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[3!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[5!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[4!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[8!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[6!] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[10..].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[?].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[2!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[9!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[1!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[0!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[7!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[3!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[5!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[4!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[8!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[6!].Awaited in Promise.allSettled()[summary] read: Argument[0].ArrayElement[10..].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[?].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[2!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[9!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[1!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[0!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[7!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[3!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[5!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[4!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[8!].Awaited[error] in Promise.allSettled()[summary] read: Argument[0].ArrayElement[6!].Awaited[error] in Promise.allSettled()[summary] to write: ReturnValue in TypedArray constructor[summary] to write: ReturnValue.ArrayElement in TypedArray constructor[summary] read: Argument[0].ArrayElement in TypedArray constructor[summary] to write: ReturnValue in Promise.withResolvers()[summary] to write: ReturnValue.Member[promise] in Promise.withResolvers()[summary] to write: ReturnValue.Member[promise].Awaited in Promise.withResolvers()[summary] to write: ReturnValue.Member[promise].Awaited[error] in Promise.withResolvers()[summary] read: ReturnValue in Promise.withResolvers()[summary] read: ReturnValue.Member[resolve] in Promise.withResolvers()[summary] read: ReturnValue.Member[reject] in Promise.withResolvers()[summary] read: ReturnValue.Member[resolve].Argument[0] in Promise.withResolvers()[summary] read: ReturnValue.Member[reject].Argument[0] in Promise.withResolvers()[summary] to write: ReturnValue in new Promise() workaround[summary] to write: Argument[0].Parameter[function] in new Promise() workaround[summary] to write: Argument[0].Parameter[0] in new Promise() workaround[summary] to write: Argument[0].Parameter[1] in new Promise() workaround[summary] to write: ReturnValue.Awaited in new Promise() workaround[summary] to write: ReturnValue.Awaited[error] in new Promise() workaround[summary] read: Argument[0].Parameter[function] in new Promise() workaround[summary] read: Argument[0].Parameter[0] in new Promise() workaround[summary] read: Argument[0].Parameter[1] in new Promise() workaround[summary] read: Argument[0].ReturnValue[exception] in new Promise() workaround[summary] read: Argument[0].Parameter[1].Member[reject-value] in new Promise() workaround[summary] read: Argument[0].Parameter[0].Member[resolve-value] in new Promise() workaround[summary] to write: ReturnValue in String#split with '#' or '?'[summary] to write: ReturnValue.ArrayElement in String#split with '#' or '?'[summary] to write: ReturnValue.ArrayElement[0] in String#split with '#' or '?'[summary] to write: ReturnValue.ArrayElement[1] in String#split with '#' or '?'[summary] read: Argument[this].OptionalBarrier[split-url-suffix] in String#split with '#' or '?'[summary] read: Argument[this].OptionalStep[split-url-suffix-pre] in String#split with '#' or '?'[summary] read: Argument[this].OptionalStep[split-url-suffix-post] in String#split with '#' or '?'[summary] to write: ReturnValue in query-string stringification[summary] read: Argument[0].AnyMemberDeep in query-string stringification[summary] to write: Argument[function] in new Promise() reject callback[summary] to write: Argument[function].Member[reject-value] in new Promise() reject callback[summary] to write: Argument[function] in new Promise() resolve callback[summary] to write: Argument[function].Member[resolve-value] in new Promise() resolve callback[summary] to write: ReturnValue in Promise.any() or Promise.race()[summary] to write: ReturnValue.Awaited in Promise.any() or Promise.race()[summary] read: Argument[0].ArrayElement in Promise.any() or Promise.race()[summary] to write: Argument[0] in Array.from(arg, callback, [thisArg])[summary] to write: Argument[2] in Array.from(arg, callback, [thisArg])[summary] to write: ReturnValue in Array.from(arg, callback, [thisArg])[summary] to write: ReturnValue[exception] in Array.from(arg, callback, [thisArg])[summary] to write: Argument[1].Parameter[function] in Array.from(arg, callback, [thisArg])[summary] to write: Argument[1].Parameter[this] in Array.from(arg, callback, [thisArg])[summary] to write: Argument[1].Parameter[0] in Array.from(arg, callback, [thisArg])[summary] to write: Argument[0].ArrayElement in Array.from(arg, callback, [thisArg])[summary] to write: ReturnValue.ArrayElement in Array.from(arg, callback, [thisArg])[summary] to write: Argument[0].IteratorElement in Array.from(arg, callback, [thisArg])[summary] to write: Argument[0].SetElement in Array.from(arg, callback, [thisArg])[summary] read: Argument[1].Parameter[function] in Array.from(arg, callback, [thisArg])[summary] read: Argument[1].Parameter[this] in Array.from(arg, callback, [thisArg])[summary] read: Argument[1].Parameter[0] in Array.from(arg, callback, [thisArg])[summary] read: Argument[1].ReturnValue in Array.from(arg, callback, [thisArg])[summary] read: Argument[0].ArrayElement in Array.from(arg, callback, [thisArg])[summary] read: Argument[0].IteratorError in Array.from(arg, callback, [thisArg])[summary] read: Argument[0].IteratorElement in Array.from(arg, callback, [thisArg])[summary] read: Argument[0].SetElement in Array.from(arg, callback, [thisArg])[summary] to write: Argument[0] in 'array.prototype.find' / 'array-find'[summary] to write: Argument[2] in 'array.prototype.find' / 'array-find'[summary] to write: ReturnValue in 'array.prototype.find' / 'array-find'[summary] to write: Argument[1].Parameter[function] in 'array.prototype.find' / 'array-find'[summary] to write: Argument[1].Parameter[this] in 'array.prototype.find' / 'array-find'[summary] to write: Argument[1].Parameter[0] in 'array.prototype.find' / 'array-find'[summary] to write: Argument[0].ArrayElement in 'array.prototype.find' / 'array-find'[summary] read: Argument[1].Parameter[function] in 'array.prototype.find' / 'array-find'[summary] read: Argument[1].Parameter[this] in 'array.prototype.find' / 'array-find'[summary] read: Argument[1].Parameter[0] in 'array.prototype.find' / 'array-find'[summary] read: Argument[0].ArrayElement in 'array.prototype.find' / 'array-find'[summary] to write: ReturnValue in String#replace / String#replaceAll (with wildcard pattern)[summary] to write: Argument[1].Parameter[function] in String#replace / String#replaceAll (with wildcard pattern)[summary] to write: Argument[1].Parameter[0] in String#replace / String#replaceAll (with wildcard pattern)[summary] read: Argument[1].Parameter[function] in String#replace / String#replaceAll (with wildcard pattern)[summary] read: Argument[1].Parameter[0] in String#replace / String#replaceAll (with wildcard pattern)[summary] read: Argument[1].ReturnValue in String#replace / String#replaceAll (with wildcard pattern)[summary] to write: ReturnValue in String#replace / String#replaceAll (without wildcard pattern)[summary] to write: Argument[1].Parameter[function] in String#replace / String#replaceAll (without wildcard pattern)[summary] read: Argument[1].Parameter[function] in String#replace / String#replaceAll (without wildcard pattern)[summary] read: Argument[1].ReturnValue in String#replace / String#replaceAll (without wildcard pattern)return of anonymous functionreturn of function gtagreturn of function checkServicesreturn of function ereturn of function sreturn of function oreturn of function treturn of function ireturn of function preturn of function areturn of function creturn of function nreturn of function rreturn of function updateInterfaceClocksreturn of function switchMapreturn of function sendBroadcastreturn of function saveFragmentreturn of function updateTimereturn of function updateTransformreturn of function updateLinksreturn of function getPointOnSidereturn of function getBezierPathreturn of function zoomAtreturn of function getCanvasCoordsreturn of function saveStatereturn of function undoreturn of function redoreturn of function updateHistoryDrawerUIreturn of function serializeCurrentStatereturn of function loadStatereturn of function snapNodeHeightreturn of function renderNodereturn of function clearSelectionreturn of function updateSelectionUIreturn of function showContextToolbarreturn of function hideContextToolbarreturn of function applyIconreturn of function stopDrawingLinkreturn of function createNewLinkreturn of function addLogreturn of function fetchIntegratedIntelreturn of function fetchTelemetryreturn of function updateOperationLogsUIreturn of function updateBattlemetricsUIreturn of function renderBattlemetricsGraphreturn of function getXreturn of function getYreturn of function updateUnitCommanderUIreturn of function renderUnitCommanderHTMLreturn of function updateDiscordStatusreturn of function updateClockreturn of function updateGoogleConsentreturn of function setConsentreturn of function getConsentreturn of function initArchivesreturn of function updateCountreturn of function BAreturn of function ynreturn of function freturn of function UAreturn of function QAreturn of function zAreturn of function Wfreturn of function vreturn of function yreturn of function WAreturn of function breturn of function _Areturn of function n8return of function ureturn of function G2return of method inflateInitreturn of method inflatereturn of method inflateEndreturn of method inflateSyncreturn of method inflateSetDictionaryreturn of method read_bytereturn of method read_bufreturn of function a8return of constructor of class i2return of constructor of anonymous classreturn of method transformreturn of method flushreturn of function Z2return of function M8return of function q2return of function nareturn of function j8return of constructor of class ccreturn of method append of class ccreturn of method get of class ccreturn of constructor of class K2return of function H8return of method concatreturn of method bitLengthreturn of method clampreturn of method partialreturn of method getPartialreturn of method _shiftRightreturn of method fromBitsreturn of method toBitsreturn of method reset of anonymous classreturn of method update of anonymous classreturn of method finalize of anonymous classreturn of method _f of anonymous classreturn of method _S of anonymous classreturn of method _block of anonymous classreturn of method encrypt of anonymous classreturn of method decrypt of anonymous classreturn of method _precompute of anonymous classreturn of method _crypt of anonymous classreturn of method getRandomValuesreturn of method incWord of anonymous classreturn of method incCounter of anonymous classreturn of method calculate of anonymous classreturn of method importKeyreturn of method pbkdf2return of method digest of anonymous classreturn of function W2return of constructor of class q8return of method startreturn of constructor of class I8return of function $2return of function K8return of function k8return of function threturn of function J8return of function F8return of function ehreturn of function hrreturn of function W8return of function Xereturn of function Oireturn of function wireturn of constructor of class _8return of constructor of class P8return of function s2return of function f2return of function nhreturn of function mrreturn of function ahreturn of function lhreturn of function r2return of constructor of class $8return of constructor of class t3return of function ihreturn of method getreturn of function uhreturn of function Snreturn of constructor of class u3return of constructor of class c3return of constructor of class zfreturn of method terminatereturn of method onTaskFinishedreturn of constructor of class s3return of function Yfreturn of function fhreturn of method runreturn of function f3return of function r3return of function o3return of function d3return of method writereturn of method closereturn of method abortreturn of function h3return of function lcreturn of function m3return of function Oreturn of function g3return of function Breturn of function A3return of function Pfreturn of function v3return of constructor of class dcreturn of method init of class dcreturn of getter method for property readable of class fareturn of method pullreturn of default constructor of class fareturn of constructor of class yrreturn of method writeUint8Array of class yrreturn of constructor of class O3return of method readUint8Array of class O3return of constructor of class w3return of method writeUint8Array of class w3return of method getData of class w3return of constructor of class Erreturn of method readUint8Array of class Erreturn of constructor of class mhreturn of method getData of class mhreturn of constructor of class R3return of constructor of class D3return of method getData of class D3return of method onloadreturn of method onerrorreturn of constructor of class M3return of method init of class M3return of method readUint8Array of class M3return of constructor of class j3return of method init of class j3return of method readUint8Array of class j3return of function ghreturn of function Ahreturn of function vhreturn of function yhreturn of function prreturn of function v2return of function y2return of function Ehreturn of function E2return of function $freturn of function trreturn of method arrayBufferreturn of constructor of class phreturn of setter method for property size of class phreturn of getter method for property size of class phreturn of method init of class phreturn of method readUint8Array of class phreturn of constructor of class H3return of constructor of class N3return of method readUint8Array of class N3return of method init of class B3return of method writeUint8Array of class B3return of method getData of class B3return of default constructor of class B3return of constructor of class brreturn of method init of class brreturn of method readUint8Array of class brreturn of constructor of class fcreturn of function Areturn of constructor of class bhreturn of constructor of class xhreturn of function U3return of function Rireturn of function Ptreturn of function L3return of function icreturn of constructor of class p2return of constructor of class Xhreturn of method getEntriesGenerator of class Xhreturn of method getEntries of class Xhreturn of method close of class Xhreturn of constructor of class S5return of constructor of class T5return of method getData of class T5return of function Vhreturn of function Zhreturn of function C5return of function S2return of function O5return of function w5return of function R5return of function D5return of function M5return of function iereturn of function j5return of function Gfreturn of function Slreturn of function $treturn of function Btreturn of function Tlreturn of function H5return of function Ytreturn of function B5return of function Xreturn of method isMountedreturn of method enqueueForceUpdatereturn of method enqueueReplaceStatereturn of method enqueueSetStatereturn of function xreturn of function Rreturn of function Ureturn of function jreturn of function Kreturn of function Jreturn of function kreturn of function ntreturn of function streturn of function itreturn of function Hreturn of function _return of function $return of method forEachreturn of method countreturn of method toArrayreturn of method onlyreturn of method creturn of function xrreturn of function U5return of function Zreturn of function Freturn of function Q5return of function z5return of method rreturn of function Y5return of function lreturn of function L5return of function hreturn of function Ereturn of function Creturn of function Lreturn of function Wreturn of function Ftreturn of function Qtreturn of function Onreturn of function rareturn of function Eereturn of function Rnreturn of method DetermineComponentFrameRootreturn of function Ireturn of method setreturn of function Qareturn of function Bireturn of function Dnreturn of function Emreturn of function oareturn of function Lireturn of function Rlreturn of function pmreturn of function Hrreturn of function vcreturn of function Dlreturn of function bmreturn of function Nrreturn of function Brreturn of function Urreturn of function ycreturn of function Ecreturn of function Qrreturn of function zrreturn of function bcreturn of function Yareturn of function Lareturn of function jlreturn of function Gareturn of function Wtreturn of function dareturn of function Xareturn of function Cmreturn of function Gireturn of function Xireturn of function $ereturn of function jereturn of function Zrreturn of function Omreturn of method getValuereturn of method setValuereturn of method stopTrackingreturn of function xcreturn of function qrreturn of function Vireturn of function Hereturn of function Screturn of function Irreturn of function Tcreturn of function Vareturn of function Krreturn of function krreturn of function Zareturn of function Jrreturn of function Frreturn of function Ccreturn of function Zireturn of function tnreturn of function wcreturn of function Wrreturn of function _rreturn of function Hlreturn of function Prreturn of function Iireturn of function Kireturn of function $rreturn of function dereturn of method preventDefaultreturn of method stopPropagationreturn of method persistreturn of method timeStampreturn of method relatedTargetreturn of method movementXreturn of method movementYreturn of method clipboardDatareturn of function Zmreturn of function Bcreturn of method keyreturn of method charCodereturn of method keyCodereturn of method whichreturn of method deltaXreturn of method deltaYreturn of function uoreturn of function coreturn of function agreturn of function lgreturn of function soreturn of function foreturn of function ugreturn of function Fireturn of function roreturn of function moreturn of function goreturn of function cgreturn of function sgreturn of function fgreturn of function rgreturn of function ogreturn of function Llreturn of function Aoreturn of function voreturn of function yoreturn of function Eoreturn of function Ycreturn of function poreturn of function mareturn of function gareturn of function qereturn of function _ireturn of function Pireturn of function qcreturn of function Aareturn of function woreturn of function $ireturn of function Agreturn of function Tereturn of function Icreturn of function nnreturn of function Roreturn of function tureturn of function vareturn of function Kcreturn of function Doreturn of function kcreturn of function Bereturn of function anreturn of function joreturn of function Jcreturn of function Fcreturn of function Horeturn of function Bnreturn of function Noreturn of function Boreturn of function $areturn of function yareturn of function _creturn of function Vlreturn of function Unreturn of function unreturn of function $creturn of function tsreturn of function tlreturn of function nureturn of function pareturn of function nereturn of function aureturn of function Uoreturn of method addEventListenerreturn of function esreturn of function Zlreturn of function pgreturn of method thenreturn of function Qoreturn of function bgreturn of function asreturn of function lureturn of function Yoreturn of function Loreturn of function Goreturn of function xareturn of function Xoreturn of function Voreturn of function cureturn of function Klreturn of function sureturn of function Zoreturn of function dreturn of function greturn of function Treturn of function zreturn of function Vreturn of function Yreturn of function Greturn of function atreturn of function ftreturn of function Mtreturn of function isreturn of function usreturn of function znreturn of function Ynreturn of function klreturn of function csreturn of function Jlreturn of function Flreturn of function Ioreturn of function Koreturn of function koreturn of function fsreturn of function rsreturn of function Lnreturn of function osreturn of function Joreturn of function Gnreturn of function Oereturn of function rureturn of function Ltreturn of function dsreturn of function hsreturn of function Foreturn of function Woreturn of function Sgreturn of function msreturn of function gsreturn of function Asreturn of function fereturn of function Vtreturn of function hureturn of function _lreturn of function mureturn of function vsreturn of function snreturn of function gureturn of function ysreturn of function Esreturn of function _oreturn of function Poreturn of function $oreturn of function t0return of function e0return of function n0return of function psreturn of function a0return of function Tgreturn of function l0return of function i0return of function u0return of function bsreturn of function c0return of function s0return of function f0return of function r0return of function o0return of function Cgreturn of function d0return of function slreturn of function h0return of function Aureturn of function vureturn of function m0return of function xsreturn of function Ogreturn of function g0return of function A0return of function v0return of function y0return of function E0return of function Ssreturn of function p0return of function b0return of function Tsreturn of function x0return of function S0return of function wgreturn of function Csreturn of function T0return of function C0return of function Osreturn of function O0return of function w0return of function Rgreturn of function Dgreturn of function R0return of function Plreturn of function wsreturn of function yureturn of function D0return of function M0return of method useCallbackreturn of method useImperativeHandlereturn of method useLayoutEffectreturn of method useInsertionEffectreturn of method useMemoreturn of method useReducerreturn of method useRefreturn of method useStatereturn of method useDeferredValuereturn of method useTransitionreturn of method useSyncExternalStorereturn of method useIdreturn of method useOptimisticreturn of method useCacheRefreshreturn of method useEffectEventreturn of function Dsreturn of function N0return of function B0return of function Oareturn of function U0return of function Q0return of function z0return of function Eureturn of function Y0return of function jsreturn of function L0return of function G0return of function Mgreturn of function aereturn of function X0return of function V0return of function Z0return of function q0return of function tireturn of function I0return of function pureturn of function K0return of function jgreturn of function bureturn of function Nsreturn of function k0return of function J0return of function F0return of function Usreturn of function Qsreturn of function W0return of function zsreturn of function xureturn of function Ysreturn of function _0return of function Lsreturn of function P0return of function fnreturn of function Gsreturn of function Hgreturn of function $0return of function rnreturn of function Xsreturn of function tdreturn of function Sureturn of function eireturn of function Ntreturn of function Ngreturn of function Bgreturn of function edreturn of function nireturn of function Xnreturn of function ndreturn of function adreturn of function aireturn of function Wereturn of function ldreturn of function Vsreturn of function idreturn of function Zsreturn of function qsreturn of function Tureturn of function udreturn of function Ugreturn of function sdreturn of function fdreturn of function dnreturn of function rdreturn of function odreturn of function ddreturn of function Qgreturn of function Cureturn of function mereturn of function hdreturn of function gereturn of function mdreturn of function hnreturn of function wareturn of function mnreturn of function Ksreturn of function ksreturn of function Kereturn of function gdreturn of function flreturn of function lireturn of function rlreturn of function Adreturn of function vdreturn of function uireturn of function ydreturn of function Oureturn of function Edreturn of method getCacheForTypereturn of method cacheSignalreturn of function Dereturn of function xdreturn of function vereturn of function Sdreturn of function Tdreturn of function Lgreturn of function Knreturn of function Mureturn of function tfreturn of function mlreturn of function Cdreturn of function Odreturn of function wdreturn of function Rdreturn of function jureturn of function efreturn of function Ggreturn of function Xgreturn of function Vgreturn of function Ddreturn of function Mdreturn of function glreturn of function Hureturn of function jdreturn of function Hdreturn of function Ndreturn of function Bdreturn of function Udreturn of function Qdreturn of function Nureturn of function zdreturn of function Ydreturn of function wtreturn of function nfreturn of function Zgreturn of function Ldreturn of function qgreturn of function Igreturn of function Kgreturn of function _ereturn of function fireturn of function kgreturn of function Gdreturn of function Xdreturn of function Vdreturn of function Zdreturn of function Jgreturn of function ufreturn of function qdreturn of function Idreturn of function Fgreturn of method listenerreturn of function Kdreturn of function ytreturn of function ffreturn of function rfreturn of function kdreturn of function ofreturn of function oireturn of function zureturn of function $greturn of function Jdreturn of function Fdreturn of function Wdreturn of function Dtreturn of function dfreturn of function lereturn of function nAreturn of function _dreturn of function aAreturn of function Yureturn of function Pdreturn of function $dreturn of function gfreturn of function lAreturn of function cAreturn of function Jnreturn of function n1return of function a1return of function vfreturn of function sAreturn of function fAreturn of function l1return of function yfreturn of function Efreturn of function rAreturn of function Lereturn of function i1return of function u1return of function c1return of function direturn of function Lureturn of function oAreturn of function dAreturn of function f1return of function hAreturn of function mAreturn of function gAreturn of function AAreturn of function vAreturn of function yAreturn of function EAreturn of function r1return of function ylreturn of function hireturn of function o1return of function pAreturn of function Elreturn of function mireturn of function d1return of function Gureturn of function bfreturn of function xfreturn of function h1return of function m1return of function bAreturn of function g1return of function xAreturn of function SAreturn of function Vureturn of function qureturn of function TAreturn of function CAreturn of function A1return of function v1return of function y1return of function E1return of function Tfreturn of function p1return of function b1return of function OAreturn of function wAreturn of function Cfreturn of function Ofreturn of function wfreturn of function x1return of function S1return of function yireturn of function DAreturn of function T1return of function kureturn of function C1return of function MAreturn of function Jureturn of function O1return of function plreturn of function w1return of method handlerreturn of function Dfreturn of function Wureturn of function G5return of constructor of class rcreturn of method empty of class rcreturn of method parse of class rcreturn of method tokenize of class rcreturn of method matches of class rcreturn of function V5return of function Nareturn of function N2return of function q5return of function I5return of function Nireturn of function Clreturn of function qhreturn of function Ihreturn of function Khreturn of function khreturn of function Jhreturn of function K5return of function k5return of function J5return of function F5return of function W5return of function _5return of function Fhreturn of function Srreturn of function P5return of function Whreturn of function urreturn of function _hreturn of constructor of class $5return of method getString of class $5return of method setString of class $5return of method getObject of class $5return of method setObject of class $5return of function Zereturn of function evreturn of function Direturn of function nvreturn of function avreturn of function Olreturn of function lvreturn of function Vereturn of function Phreturn of function $hreturn of function ivreturn of function careturn of function Kfreturn of function Tnreturn of method onClickreturn of function Trreturn of function uvreturn of function ncreturn of function tmreturn of function sereturn of function cvreturn of function svreturn of function nmreturn of function Crreturn of function rvreturn of function Sireturn of function Cnreturn of function hcreturn of function ovreturn of function dvreturn of function gvreturn of function crreturn of function srreturn of function vvreturn of function yvreturn of function Orreturn of function Evreturn of method onSubmitreturn of method onChangereturn of function pvreturn of function acreturn of function bvreturn of method requestClosereturn of function xvreturn of function Svreturn of function imreturn of function kereturn of function Tvreturn of function Ovreturn of function Rvreturn of method onPaneMouseUpreturn of method onPaneMouseMovereturn of method onMouseDownreturn of function kfreturn of function umreturn of function Dvreturn of method setOffsetsreturn of function Enreturn of function Mvreturn of function jvreturn of function Hvreturn of function wrreturn of function Nvreturn of function Bvreturn of function Uvreturn of function zvreturn of function Jfreturn of function Lvreturn of function Gvreturn of method buildCodeFramereturn of function Xvreturn of function cmreturn of function Vvreturn of method renderreturn of method setSelectedTabreturn of function z2return of function Zvreturn of function smreturn of function qvreturn of function Ivreturn of constructor of class Kvreturn of method componentDidCatch of class Kvreturn of method render of class Kvreturn of function kvreturn of function Jvreturn of function Fvreturn of function Wvreturn of function _vreturn of function Pvreturn of method isFileExpandedreturn of method setFileExpandedreturn of function Y2return of function rmreturn of function $vreturn of function tyreturn of function eyreturn of function nyreturn of function ayreturn of function lyreturn of function iyreturn of function uyreturn of method toggleMetadataVisiblereturn of function cyreturn of function syreturn of function fyreturn of function ryreturn of function oyreturn of function hyreturn of constructor of class myreturn of method load of class myreturn of method json of class myreturn of method entry of class myreturn of function logreturn of function checkRunnerHealthreturn of function crc32return of function createBePacketreturn of function fetchRconPlayersreturn of function queryArmaServerreturn of function sendreturn of function readreturn of function requestreturn of function fetchBMreturn of function fetchUCreturn of function compressreturn of function isSreturn of function mainreturn of function getFilesreturn of function parseCodeQLreturn of function syncIssuesreturn of function runHistoryAuditreturn of function runSecurityAuditreturn of function discordRequestreturn of function runCommandreturn of function checkUrlreturn of function checkServerreturn of function attemptreturn of function getHugoParamreturn of function Symbolreturn of function IIterableResultreturn of function Iterablereturn of function Iteratorreturn of function IteratorIterablereturn of function IObjectreturn of function IArrayLikereturn of function Argumentsreturn of function decodeURIreturn of function decodeURIComponentreturn of function encodeURIreturn of function encodeURIComponentreturn of function escapereturn of function unescapereturn of function isFinitereturn of function isNaNreturn of function parseFloatreturn of function parseIntreturn of function evalreturn of function Objectreturn of function Functionreturn of function Arrayreturn of function Booleanreturn of function Numberreturn of function Datereturn of function Stringreturn of function RegExpreturn of function Errorreturn of function EvalErrorreturn of function RangeErrorreturn of function ReferenceErrorreturn of function SyntaxErrorreturn of function TypeErrorreturn of function URIErrorreturn of function ActiveXObjectreturn of function ScriptEnginereturn of function ScriptEngineMajorVersionreturn of function ScriptEngineMinorVersionreturn of function ScriptEngineBuildVersionreturn of function ObjectPropertyDescriptorreturn of function Generatorreturn of function ITemplateArrayreturn of function Transferablereturn of function ArrayBufferreturn of function ArrayBufferViewreturn of function TypedArrayreturn of function Int8Arrayreturn of function Uint8Arrayreturn of function Uint8ClampedArrayreturn of function Int16Arrayreturn of function Uint16Arrayreturn of function Int32Arrayreturn of function Uint32Arrayreturn of function Float32Arrayreturn of function Float64Arrayreturn of function DataViewreturn of function IThenablereturn of function Promisereturn of function Mapreturn of function WeakMapreturn of function Setreturn of function WeakSetreturn of function Proxyreturn of function afterreturn of function afterAllreturn of function afterEachreturn of function assertreturn of function beforereturn of function beforeAllreturn of function beforeEachreturn of function contextreturn of function describereturn of function expectreturn of function fdescribereturn of function fitreturn of function pendingreturn of function setupreturn of function specifyreturn of function spyOnreturn of function suitereturn of function suiteSetupreturn of function suiteTeardownreturn of function teardownreturn of function testreturn of function xdescribereturn of function xitreturn of function jQueryAjaxSettingsreturn of function jQueryAjaxSettingsExtrareturn of function jQueryAjaxTransportreturn of function jQueryreturn of function jQuerySupportreturn of function shouldreturn of method assertreturn of method failreturn of getter for property notreturn of getter for property anyreturn of getter for property anreturn of getter for property ofreturn of getter for property areturn of getter for property andreturn of getter for property bereturn of getter for property hasreturn of getter for property havereturn of getter for property withreturn of getter for property isreturn of getter for property whichreturn of getter for property thereturn of getter for property itreturn of method truereturn of method Truereturn of method falsereturn of method Falsereturn of method okreturn of method NaNreturn of method Infinityreturn of method withinreturn of method approximatelyreturn of method abovereturn of method belowreturn of method greaterThanreturn of method lessThanreturn of method eqlreturn of method equalreturn of method exactlyreturn of method Numberreturn of method argumentsreturn of method Argumentsreturn of method typereturn of method instanceofreturn of method instanceOfreturn of method Functionreturn of method Objectreturn of method Stringreturn of method Arrayreturn of method Booleanreturn of method Errorreturn of method nullreturn of method Nullreturn of method classreturn of method Classreturn of method undefinedreturn of method Undefinedreturn of method iterablereturn of method iteratorreturn of method generatorreturn of method startWithreturn of method endWithreturn of method propertyWithDescriptorreturn of method enumerablereturn of method enumerablesreturn of method propertyreturn of method propertiesreturn of method lengthreturn of method lengthOfreturn of method ownPropertyreturn of method hasOwnPropertyreturn of method emptyreturn of method keysreturn of method propertyByPathreturn of method throwreturn of method throwErrorreturn of method matchreturn of method matchEachreturn of method matchAnyreturn of method matchSomereturn of method matchEveryreturn of method containEqlreturn of method containDeepOrderedreturn of method containDeepreturn of function epsilonreturn of function matchreturn of function isTruereturn of function isFalsereturn of function isZeroreturn of function isNotZeroreturn of function greaterreturn of function lesserreturn of function inDeltareturn of function includereturn of function notIncludereturn of function deepIncludereturn of function isEmptyreturn of function isNotEmptyreturn of function lengthOfreturn of function isArrayreturn of function isObjectreturn of function isNumberreturn of function isBooleanreturn of function isNullreturn of function isNotNullreturn of function isUndefinedreturn of function isDefinedreturn of function isStringreturn of function isFunctionreturn of function typeOfreturn of function instanceOfreturn of function internalreturn of function eqlreturn of function BuffTypereturn of function SlowBuffTypereturn of function RemoteInforeturn of function AddressInforeturn of function BindOptionsreturn of function SocketOptionsreturn of function eventsreturn of function Statsreturn of function FSWatcherreturn of function Constantsreturn of function ErrorConstructorreturn of function MapConstructorreturn of function WeakMapConstructorreturn of function SetConstructorreturn of function WeakSetConstructorreturn of function setTimeoutreturn of function clearTimeoutreturn of function setIntervalreturn of function clearIntervalreturn of function setImmediatereturn of function clearImmediatereturn of function NodeRequireFunctionreturn of function NodeRequirereturn of function NodeModulereturn of function SlowBufferreturn of function Bufferreturn of function IterableIteratorreturn of function NodeBufferreturn of function Consolereturn of function Modulereturn of function ucs2return of function HeapSpaceInforeturn of function Filereturn of function Reflectreturn of function versionreturn of function revertVersionreturn of function optionsreturn of function loadreturn of function loadRelativeToScriptreturn of function evaluatereturn of function runreturn of function readlinereturn of function printreturn of function printErrreturn of function putstrreturn of function dateNowreturn of function helpreturn of function quitreturn of function assertEqreturn of function assertJitreturn of function gcreturn of function gcstatsreturn of function gcparamreturn of function countHeapreturn of function makeFinalizeObserverreturn of function finalizeCountreturn of function gczealreturn of function setDebugreturn of function setDebuggerHandlerreturn of function setThrowHookreturn of function trapreturn of function untrapreturn of function line2pcreturn of function pc2linereturn of function stackQuotareturn of function stringsAreUTF8return of function testUTF8return of function dumpHeapreturn of function dumpObjectreturn of function tracingreturn of function statsreturn of function buildreturn of function clearreturn of function clonereturn of function getpdareturn of function toint32return of function evalInFramereturn of function snarfreturn of function timeoutreturn of function parentreturn of function wrapreturn of function serializereturn of function deserializereturn of function mjitstatsreturn of function stringstatsreturn of function setGCCallbackreturn of function startTimingMutatorreturn of function stopTimingMutatorreturn of function throwErrorreturn of function disassemblereturn of function disreturn of function disfilereturn of function dissrcreturn of function notesreturn of function stackDumpreturn of function internreturn of function getslxreturn of function evalcxreturn of function evalInWorkerreturn of function getSharedArrayBufferreturn of function setSharedArrayBufferreturn of function shapeOfreturn of function arrayInforeturn of function sleepreturn of function compilereturn of function parsereturn of function syntaxParsereturn of function offThreadCompileScriptreturn of function runOffThreadScriptreturn of function interruptIfreturn of function invokeInterruptCallbackreturn of function setInterruptCallbackreturn of function enableLastWarningreturn of function disableLastWarningreturn of function getLastWarningreturn of function clearLastWarningreturn of function elapsedreturn of function decompileFunctionreturn of function decompileBodyreturn of function decompileThisreturn of function thisFilenamereturn of function newGlobalreturn of function createMappedArrayBufferreturn of function getMaxArgsreturn of function objectEmulatingUndefinedreturn of function isCachingEnabledreturn of function setCachingEnabledreturn of function cacheEntryreturn of function printProfilerEventsreturn of function enableSingleStepProfilingreturn of function disableSingleStepProfilingreturn of function isLatin1return of function stackPointerInforeturn of function entryPointsreturn of function sealreturn of function defineClassreturn of function loadClassreturn of function readFilereturn of function readUrlreturn of function spawnreturn of function syncreturn of function CallSitereturn of function Portreturn of function ChromeEventreturn of function ChromeStringEventreturn of function ChromeBooleanEventreturn of function ChromeNumberEventreturn of function ChromeObjectEventreturn of function ChromeStringArrayEventreturn of function ChromeStringStringEventreturn of function MessageSenderreturn of function MutedInforeturn of function Tabreturn of function ChromeLoadTimesreturn of function ChromeCsiInforeturn of function Headersreturn of function Bodyreturn of function Requestreturn of function RequestInitreturn of function Responsereturn of function ResponseInitreturn of function fetchreturn of function Blobreturn of function BlobBuilderreturn of function WebKitBlobBuilderreturn of function FileSystemFlagsreturn of function DirectoryEntryreturn of function DirectoryReaderreturn of function Entryreturn of function FileEntryreturn of function FileErrorreturn of function FileReaderreturn of function FileSaverreturn of function FileSystemreturn of function FileWriterreturn of function LocalFileSystemreturn of function Metadatareturn of function requestFileSystemreturn of function resolveLocalFileSystemURIreturn of function webkitRequestFileSystemreturn of function webkitResolveLocalFileSystemURIreturn of function createObjectURLreturn of function revokeObjectURLreturn of function webkitURLreturn of function StorageInforeturn of function StorageQuotareturn of function HTMLSpanElementreturn of function atobreturn of function btoareturn of function Selectionreturn of function BoxObjectreturn of function getComputedStylereturn of function nsIDOMPageTransitionEventreturn of function XMLHttpRequestreturn of function XMLSerializerreturn of function DOMParserreturn of function HTMLCanvasElementreturn of function CanvasPathMethodsreturn of function CanvasRenderingContext2Dreturn of function CanvasGradientreturn of function CanvasPatternreturn of function TextMetricsreturn of function ImageDatareturn of function ClientInformationreturn of function Databasereturn of function DatabaseCallbackreturn of function SQLErrorreturn of function SQLTransactionreturn of function SQLResultSetreturn of function SQLResultSetRowListreturn of function openDatabasereturn of function postMessagereturn of function DOMApplicationCachereturn of function importScriptsreturn of function WebWorkerreturn of function Workerreturn of function SharedWorkerreturn of function WorkerLocationreturn of function WorkerGlobalScopereturn of function DedicatedWorkerGlobalScopereturn of function SharedWorkerGlobalScopereturn of function HTMLMediaElementreturn of function TextTrackListreturn of function TextTrackreturn of function TextTrackCueListreturn of function TextTrackCuereturn of function VTTCuereturn of function HTMLAudioElementreturn of function HTMLVideoElementreturn of function MediaErrorreturn of function MessageChannelreturn of function MessagePortreturn of function MessageEventreturn of function BroadcastChannelreturn of function DataTransferreturn of function WheelEventInitreturn of function WheelEventreturn of function DataTransferItemreturn of function DataTransferItemListreturn of function DragEventInitreturn of function DragEventreturn of function ProgressEventInitreturn of function ProgressEventreturn of function TimeRangesreturn of function WebSocketreturn of function Historyreturn of function PopStateEventreturn of function HashChangeEventreturn of function PageTransitionEventreturn of function FileListreturn of function XMLHttpRequestEventTargetreturn of function XMLHttpRequestUploadreturn of function Imagereturn of function DOMTokenListreturn of function ValidityStatereturn of function HTMLEmbedElementreturn of function MutationRecordreturn of function MutationObserverreturn of function ShadowRootreturn of function HTMLContentElementreturn of function HTMLShadowElementreturn of function ErrorEventreturn of function ErrorEventInitreturn of function HTMLPictureElementreturn of function HTMLSourceElementreturn of function HTMLDetailsElementreturn of function HTMLMenuItemElementreturn of function RelatedEventreturn of function HTMLDialogElementreturn of function HTMLTemplateElementreturn of function RadioNodeListreturn of function HTMLDataListElementreturn of function HTMLOutputElementreturn of function HTMLProgressElementreturn of function HTMLTrackElementreturn of function HTMLMeterElementreturn of function Navigatorreturn of function PluginArrayreturn of function MimeTypeArrayreturn of function MimeTypereturn of function Pluginreturn of function XMLDOMDocumentreturn of function ClipboardDatareturn of function ControlRangereturn of function TextRangereturn of function controlRangereturn of function HTMLFiltersCollectionreturn of function HTMLFilterreturn of function AlphaFilterreturn of function AlphaImageLoaderFilterreturn of function Locationreturn of function RuntimeObjectreturn of function XDomainRequestreturn of function MSPointerPointreturn of function MSPointerEventreturn of function MSGesturereturn of function MSGestureEventreturn of function GestureEventreturn of function MediaSourcereturn of function SourceBufferreturn of function TransformStreamreturn of function PipeOptionsreturn of function ReadableStreamSourcereturn of function ReadableStreamreturn of function ReadableStreamDefaultReaderreturn of function ReadableStreamBYOBReaderreturn of function ReadableStreamDefaultControllerreturn of function ReadableByteStreamControllerreturn of function ReadableStreamBYOBRequestreturn of function WritableStreamSinkreturn of function WritableStreamreturn of function WritableStreamDefaultWriterreturn of function WritableStreamDefaultControllerreturn of function ByteLengthQueuingStrategyreturn of function CountQueuingStrategyreturn of function URLSearchParamsreturn of function URLreturn of function requestAnimationFramereturn of function cancelRequestAnimationFramereturn of function cancelAnimationFramereturn of function webkitRequestAnimationFramereturn of function webkitCancelRequestAnimationFramereturn of function webkitCancelAnimationFramereturn of function mozRequestAnimationFramereturn of function mozCancelRequestAnimationFramereturn of function mozCancelAnimationFramereturn of function msRequestAnimationFramereturn of function msCancelRequestAnimationFramereturn of function msCancelAnimationFramereturn of function oRequestAnimationFramereturn of function oCancelRequestAnimationFramereturn of function oCancelAnimationFramereturn of function BatteryManagerreturn of function StyleSheetreturn of function StyleSheetListreturn of function MediaListreturn of function LinkStylereturn of function DocumentStylereturn of function CSSStyleSheetreturn of function CSSRuleListreturn of function CSSRulereturn of function CSSStyleRulereturn of function CSSMediaRulereturn of function CSSFontFaceRulereturn of function CSSPageRulereturn of function CSSImportRulereturn of function CSSCharsetRulereturn of function CSSUnknownRulereturn of function CSSStyleDeclarationreturn of function CSSValuereturn of function CSSPrimitiveValuereturn of function CSSValueListreturn of function RGBColorreturn of function Rectreturn of function Counterreturn of function ViewCSSreturn of function DocumentCSSreturn of function DOMImplementationCSSreturn of function ElementCSSInlineStylereturn of function CSSPropertiesreturn of function MediaQueryListreturn of function Screenreturn of function CaretPositionreturn of function ClientRectListreturn of function ClientRectreturn of function CSSInterfacereturn of function FontFacereturn of function FontFaceSetreturn of function CSSMatrixreturn of function WebKitCSSMatrixreturn of function MSCSSMatrixreturn of function DeviceOrientationEventreturn of function DeviceAccelerationreturn of function DeviceRotationRatereturn of function DeviceMotionEventreturn of function DOMExceptionreturn of function ExceptionCodereturn of function DOMImplementationreturn of function Nodereturn of function DocumentFragmentreturn of function Documentreturn of function NodeListreturn of function NamedNodeMapreturn of function CharacterDatareturn of function Attrreturn of function Elementreturn of function Textreturn of function Commentreturn of function CDATASectionreturn of function DocumentTypereturn of function Notationreturn of function Entityreturn of function EntityReferencereturn of function ProcessingInstructionreturn of function Windowreturn of function HTMLCollectionreturn of function HTMLOptionsCollectionreturn of function HTMLDocumentreturn of function NodeFilterreturn of function NodeIteratorreturn of function TreeWalkerreturn of function HTMLElementreturn of function HTMLHtmlElementreturn of function HTMLHeadElementreturn of function HTMLLinkElementreturn of function HTMLTitleElementreturn of function HTMLMetaElementreturn of function HTMLBaseElementreturn of function HTMLIsIndexElementreturn of function HTMLStyleElementreturn of function HTMLBodyElementreturn of function HTMLFormControlsCollectionreturn of function HTMLFormElementreturn of function HTMLSelectElementreturn of function HTMLOptGroupElementreturn of function HTMLOptionElementreturn of function HTMLInputElementreturn of function HTMLTextAreaElementreturn of function HTMLButtonElementreturn of function HTMLLabelElementreturn of function HTMLFieldSetElementreturn of function HTMLLegendElementreturn of function HTMLUListElementreturn of function HTMLOListElementreturn of function HTMLDListElementreturn of function HTMLDirectoryElementreturn of function HTMLMenuElementreturn of function HTMLLIElementreturn of function HTMLDivElementreturn of function HTMLParagraphElementreturn of function HTMLHeadingElementreturn of function HTMLQuoteElementreturn of function HTMLPreElementreturn of function HTMLBRElementreturn of function HTMLBaseFontElementreturn of function HTMLFontElementreturn of function HTMLHRElementreturn of function HTMLModElementreturn of function HTMLAnchorElementreturn of function HTMLImageElementreturn of function HTMLObjectElementreturn of function HTMLParamElementreturn of function HTMLAppletElementreturn of function HTMLMapElementreturn of function HTMLAreaElementreturn of function HTMLScriptElementreturn of function HTMLTableElementreturn of function HTMLTableCaptionElementreturn of function HTMLTableColElementreturn of function HTMLTableSectionElementreturn of function HTMLTableRowElementreturn of function HTMLTableCellElementreturn of function HTMLFrameSetElementreturn of function HTMLFrameElementreturn of function HTMLIFrameElementreturn of function DOMStringListreturn of function NameListreturn of function DOMImplementationListreturn of function DOMImplementationSourcereturn of function TypeInforeturn of function UserDataHandlerreturn of function DOMErrorreturn of function DOMErrorHandlerreturn of function DOMLocatorreturn of function DOMConfigurationreturn of function TextDecoderreturn of function decodereturn of function TextEncoderreturn of function EventTargetreturn of function EventListenerreturn of function EventInitreturn of function Eventreturn of function CustomEventInitreturn of function CustomEventreturn of function DocumentEventreturn of function UIEventInitreturn of function UIEventreturn of function EventModifierInitreturn of function MouseEventInitreturn of function MouseEventreturn of function MutationEventreturn of function KeyboardEventInitreturn of function KeyboardEventreturn of function FocusEventInitreturn of function FocusEventreturn of function EventListenerOptionsreturn of function AddEventListenerOptionsreturn of function InputEventInitreturn of function InputEventreturn of function Gamepadreturn of function GamepadButtonreturn of function Geolocationreturn of function GeolocationCoordinatesreturn of function GeolocationPositionreturn of function GeolocationPositionOptionsreturn of function GeolocationPositionErrorreturn of function IDBFactoryreturn of function IDBDatabaseExceptionreturn of function webkitIDBDatabaseExceptionreturn of function IDBRequestreturn of function webkitIDBRequestreturn of function IDBOpenDBRequestreturn of function IDBDatabasereturn of function IDBObjectStorereturn of function IDBIndexreturn of function IDBCursorreturn of function webkitIDBCursorreturn of function IDBCursorWithValuereturn of function IDBTransactionreturn of function webkitIDBTransactionreturn of function IDBKeyRangereturn of function webkitIDBKeyRangereturn of function IDBVersionChangeEventreturn of function webkitIDBVersionChangeEventreturn of function MIDIInputMapreturn of function MIDIOutputMapreturn of function MIDIAccessreturn of function MIDIPortreturn of function MIDIInputreturn of function MIDIOutputreturn of function MIDIMessageEventreturn of function MIDIMessageEventInitreturn of function MIDIConnectionEventreturn of function MIDIConnectionEventInitreturn of function PerformanceTimingreturn of function PerformanceEntryreturn of function PerformanceResourceTimingreturn of function PerformanceNavigationreturn of function PerformanceMemoryreturn of function Performancereturn of function PermissionStatusreturn of function Permissionsreturn of function PointerEventInitreturn of function PointerEventreturn of function Rangereturn of function DocumentRangereturn of function RangeExceptionreturn of function requestIdleCallbackreturn of function cancelIdleCallbackreturn of function IdleDeadlinereturn of function SourceInforeturn of function MediaSettingsRangereturn of function MediaTrackCapabilitiesreturn of function MediaTrackSettingsreturn of function MediaTrackSupportedConstraintsreturn of function MediaStreamTrackreturn of function MediaStreamTrackEventreturn of function MediaStreamreturn of function RTCDTMFToneChangeEventreturn of function RTCDTMFSenderreturn of function RTCRtpSenderreturn of function RTCRtpContributingSourcereturn of function RTCRtpReceiverreturn of function RTCRtpTransceiverInitreturn of function RTCRtpEncodingParametersreturn of function RTCRtpTransceiverreturn of function LongRangereturn of function DoubleRangereturn of function ConstrainBooleanParametersreturn of function ConstrainDOMStringParametersreturn of function ConstrainDoubleRangereturn of function ConstrainLongRangereturn of function MediaTrackConstraintSetreturn of function MediaTrackConstraintsreturn of function MediaStreamConstraintsreturn of function NavigatorUserMediaErrorreturn of function MediaStreamEventreturn of function MediaRecorderOptionsreturn of function MediaRecorderreturn of function PhotoSettingsreturn of function PhotoCapabilitiesreturn of function ImageCapturereturn of function RTCTrackEventreturn of function MediaDeviceInforeturn of function MediaDevicesreturn of function RTCSessionDescriptionreturn of function IceCandidatereturn of function RTCIceCandidateInitreturn of function RTCIceCandidatereturn of function RTCIceServerInterface_return of function RTCConfigurationInterface_return of function RTCPeerConnectionIceEventreturn of function RTCStatsReportreturn of function RTCStatsResponsereturn of function MediaConstraintSetInterface_return of function MediaConstraintsInterface_return of function RTCDataChannelreturn of function RTCDataChannelEventreturn of function RTCDataChannelInitInterface_return of function RTCPeerConnectionreturn of function RTCIceTransportreturn of function RTCIceGathererreturn of function RTCDtlsTransportreturn of function ScreenOrientationreturn of function ServiceWorkerreturn of function PushSubscriptionreturn of function PushManagerreturn of function PushMessageDatareturn of function PushEventreturn of function ServiceWorkerRegistrationreturn of function ServiceWorkerContainerreturn of function ServiceWorkerGlobalScopereturn of function ServiceWorkerClientreturn of function ServiceWorkerClientsreturn of function Cachereturn of function CacheStoragereturn of function ExtendableEventreturn of function InstallEventreturn of function FetchEventreturn of function Touchreturn of function TouchListreturn of function TouchEventInitreturn of function TouchEventreturn of function XPathExceptionreturn of function XPathEvaluatorreturn of function XPathExpressionreturn of function XPathNSResolverreturn of function XPathResultreturn of function XPathNamespacereturn of function FormDatareturn of function WebGLRenderingContextreturn of function WebGLContextAttributesreturn of function WebGLContextEventreturn of function WebGLShaderPrecisionFormatreturn of function WebGLObjectreturn of function WebGLBufferreturn of function WebGLFramebufferreturn of function WebGLProgramreturn of function WebGLRenderbufferreturn of function WebGLShaderreturn of function WebGLTexturereturn of function WebGLActiveInforeturn of function WebGLUniformLocationreturn of function OES_texture_floatreturn of function OES_texture_half_floatreturn of function WEBGL_lose_contextreturn of function OES_standard_derivativesreturn of function WebGLVertexArrayObjectOESreturn of function OES_vertex_array_objectreturn of function WEBGL_debug_renderer_inforeturn of function WEBGL_debug_shadersreturn of function WEBGL_compressed_texture_s3tcreturn of function OES_depth_texturereturn of function OES_element_index_uintreturn of function EXT_texture_filter_anisotropicreturn of function WEBGL_draw_buffersreturn of function ANGLE_instanced_arraysreturn of function WebKitPointreturn of function MemoryInforeturn of function ScriptProfileNodereturn of function ScriptProfilereturn of function WebKitAnimationEventreturn of function NotificationOptionsInterface_return of function Notificationreturn of function NotificationCenterreturn of function NotificationEventreturn of function WebKitNamespacereturn of function UserMessageHandlersNamespacereturn of function UserMessageHandlerreturn of function Storagereturn of function WindowSessionStoragereturn of function WindowLocalStoragereturn of function StorageEventreturn of function alertreturn of function confirmreturn of function dumpreturn of function promptreturn of function hasOwnPropertyreflective call...valueglobal access path[post update] documen ... istener[post update] document[post update] 'DOMContentLoaded'[post update] () => { ... e;");\n}[post update] documen ... elector[post update] '.nav-header'[post update] window. ... istener[post update] window[post update] 'scroll'[post update] () => { ... }\n }[post update] header.style[post update] header[post update] 'rgba(0 ... 0.95)'[post update] 'blur(30px)'[post update] '80px'[post update] header.classList.add[post update] header.classList[post update] 'shadow-2xl'[post update] 'rgba(0, 0, 0, 0.9)'[post update] 'blur(20px)'[post update] '100px'[post update] header. ... .remove[post update] documen ... ctorAll[post update] '.nav-link'[post update] window.location[post update] navLinks.forEach[post update] navLinks[post update] link => ... }\n }[post update] link.getAttribute[post update] link[post update] 'href'[post update] link.classList.add[post update] link.classList[post update] 'active'[post update] console.log[post update] console[post update] "%c[JSF ... MPLETE"[post update] "color: ... space;"[post update] window.dataLayer||[][post update] functio ... ments)}[post update] dataLayer.push[post update] dataLayer[post update] arguments[post update] localStorage.getItem[post update] localStorage[post update] "uksfta_consent"[post update] JSON.parse[post update] JSON[post update] localSt ... nsent")[post update] gtag[post update] "consent"[post update] "default"[post update] {ad_sto ... enied"}[post update] e[post update] console.error[post update] "CONSEN ... AILURE"[post update] async f ... LINE"}}[post update] fetch(" ... lp"})})[post update] fetch[post update] "http:/ ... ommand"[post update] {method ... elp"})}[post update] JSON.stringify[post update] {command:"help"}[post update] documen ... entById[post update] "status-rcon"[post update] t[post update] e.ok?"t ... t-bold"[post update] e.ok?"O ... FFLINE"[post update] documen ... -rcon")[post update] "OFFLINE"[post update] fetch(" ... "GET"})[post update] "http:/ ... i/file"[post update] {method:"GET"}[post update] "status-registry"[post update] e.statu ... t-bold"[post update] e.statu ... FFLINE"[post update] documen ... istry")[post update] setInterval[post update] checkServices[post update] 3e4[post update] documen ... .remove[post update] documen ... assList[post update] documen ... modal")[post update] "cookie-modal"[post update] "hidden"[post update] (functi ... ld;")})[post update] functio ... old;")}[post update] "[JSFC_ ... ted..."[post update] null[post update] "today"[post update] async f ... :",e)}}[post update] "[JSFC_ ... ion..."[post update] fetch(" ... .now())[post update] "/intel ... e.now()[post update] Date.now[post update] Date[post update] n[post update] Error[post update] `HTTP_${n.status}`[post update] n.json()[post update] n.json[post update] a[post update] e.unitcommander[post update] o[post update] "[JSFC_ ... ilure:"[post update] "[JSFC_ ... ard..."[post update] "/telem ... e.now()[post update] e.json()[post update] e.json[post update] functio ... in("")}[post update] ".opera ... tainer"[post update] [...e.c ... ).slice[post update] [...e.c ... ed_at))[post update] [...e.c ... s].sort[post update] [...e.campaigns][post update] (e,t)=> ... ted_at)[post update] t.created_at[post update] e.created_at[post update] 0[post update] 2[post update] n.map(e ... oin("")[post update] n.map(e ... }).join[post update] n.map(e ... `})[post update] n.map[post update] e=>{con ... `}[post update] new Dat ... eString[post update] new Dat ... ted_at)[post update] "en-GB"[post update] {day:"2 ... digit"}[post update] e.brief ... replace[post update] e.brief ... g(0,80)[post update] e.brief.substring[post update] e.brief[post update] 80[post update] /\n/g[post update] " "[post update] e.campa ... replace[post update] e.campa ... /g,"-")[post update] e.campa ... rCase()[post update] e.campa ... werCase[post update] e.campaignName[post update] /[^a-z0-9]+/g[post update] "-"[post update] /(^-|-$)/g[post update] ""[post update] e=>{con ... idden"}[post update] window.globalIntel[post update] n.campaigns.find[post update] n.campaigns[post update] t=>t.id==e[post update] "operation-modal"[post update] "modal-op-image"[post update] "modal-op-title"[post update] "modal-op-date"[post update] "modal-op-brief"[post update] "modal-op-map"[post update] i[post update] t.campaignName[post update] `COMMEN ... ase()}`[post update] new Dat ... perCase[post update] new Dat ... eric"})[post update] {day:"2 ... meric"}[post update] r[post update] t.brief ... OVERED"[post update] c[post update] `LOCATI ... FIED"}`[post update] t.image[post update] s[post update] t.image.path[post update] s.classList.remove[post update] s.classList[post update] s.classList.add[post update] o.classList.remove[post update] o.classList[post update] document.body.style[post update] document.body[post update] ()=>{do ... low=""}[post update] documen ... ist.add[post update] "keydown"[post update] e=>{e.k ... odal()}[post update] closeOperationModal[post update] functio ... a,c,d)}[post update] "status-text"[post update] "status-indicator"[post update] "player-count"[post update] "battle ... -graph"[post update] "bm-overlay"[post update] l.classList.add[post update] l.classList[post update] l[post update] "STATION_ACTIVE"[post update] "text-[ ... ercase"[post update] `w-1.5 ... ,0.6)]`[post update] `${e.pl ... CTIVES`[post update] "LINK_SEVERED"[post update] "w-1.5 ... d-full"[post update] "STATION_OFFLINE"[post update] window. ... lemetry[post update] a.unshift[post update] {attrib ... ing()}}[post update] (new Da ... OString[post update] (new Date)[post update] d[post update] functio ... `}[post update] Math.max[post update] Math[post update] 10[post update] e=>u=== ... -l)/u*d[post update] new Date(e).getTime[post update] new Date(e)[post update] e=>s-e/g*s[post update] e.map(e ... reverse[post update] e.map(e ... e()>=l)[post update] e.map(e ... .filter[post update] e.map(e ... tamp}))[post update] e.map[post update] e=>({v: ... stamp})[post update] e.attributes[post update] e=>e.v< ... me()>=l[post update] new Dat ... getTime[post update] new Date(e.t)[post update] e.t[post update] c.forEach[post update] (e,t)=> ... {r}`)}}[post update] p[post update] e.v[post update] new Date(l.t)[post update] l.t[post update] `\n ... `[post update] c.map(( ... `).join[post update] c.map(( ... `)[post update] c.map[post update] (e)=>`\n ... `[post update] (e,t)=> ... git"})}[post update] "graph-tooltip"[post update] "tooltip-val"[post update] "tooltip-time"[post update] n.style[post update] "1"[post update] `${e} EFFECTIVES`[post update] isNaN(s ... igit"})[post update] isNaN[post update] s.toLocaleTimeString[post update] {hour:" ... digit"}[post update] ()=>{co ... y="0")}[post update] e.style[post update] "0"[post update] functio ... c(n,t)}[post update] ".live- ... tainer"[post update] "[JSFC_ ... eed..."[post update] o.forEach[post update] s=>{con ... e:!1})}[post update] e.campaignEvents[post update] new Dat ... _at||0)[post update] s.updat ... d_at||0[post update] i.map[post update] e=>new ... tTime()[post update] e.start ... ated_at[post update] ...e[post update] e.standalone.forEach[post update] e.standalone[post update] e=>{con ... IVE"})}[post update] functio ... TML=l)}[post update] Math.floor[post update] Math.ab ... *60*24)[post update] Math.abs[post update] i-n[post update] (e.map| ... perCase[post update] (e.map| ... .trim()[post update] (e.map| ... 0].trim[post update] (e.map| ... "(")[0][post update] (e.map| ... it("(")[post update] (e.map| ... ).split[post update] (e.map| ... IFIED")[post update] "("[post update] e.updat ... ated_at[post update] {day:"2 ... short"}[post update] n.toLoc ... perCase[post update] n.toLoc ... igit"})[post update] n.toLocaleDateString[post update] e=>e.innerHTML=l[post update] async f ... OST")}}[post update] ".disco ... -count"[post update] ".signal-strength"[post update] ".link-id"[post update] performance.now[post update] performance[post update] fetch(` ... .json`)[post update] `https: ... t.json`[post update] r.json()[post update] r.json[post update] 20[post update] Math.mi ... 0)/10))[post update] Math.min[post update] 100[post update] 100-Mat ... 50)/10)[post update] (c-50)/10[post update] Math.random()*5[post update] Math.random[post update] a.prese ... adStart[post update] a.prese ... tring()[post update] a.prese ... oString[post update] a.presence_count[post update] t.forEach[post update] e=>{e.i ... -900")}[post update] e.classList.remove[post update] e.classList[post update] "text-red-900"[post update] n.forEach[post update] e=>{e.i ... white"}[post update] `LINK_I ... ${i}%`[post update] i<50?"# ... "white"[post update] Math.fl ... .substr[post update] Math.fl ... rCase()[post update] Math.fl ... perCase[post update] Math.fl ... ing(16)[post update] Math.fl ... oString[post update] Math.fl ... ()/1e3)[post update] Date.now()/1e3[post update] 16[post update] -4[post update] e.substr[post update] s.forEach[post update] e=>{e.innerText=c}[post update] `[JSFC_ ... ctive.`[post update] "??"[post update] e.classList.add[post update] e=>e.in ... K_LOST"[post update] "LINK_LOST"[post update] n=>{con ... }):e()}[post update] ".bm-range-btn"[post update] e=>{e.c ... )===n)}[post update] e.classList.toggle[post update] "active"[post update] e.getAt ... e")===n[post update] e.getAttribute[post update] "data-range"[post update] window. ... ics||{}[post update] 3e5[post update] 6e4[post update] console.warn[post update] "[JSFC_ ... bited."[post update] functio ... "0")}`}[post update] "clock"[post update] `${Stri ... ,"0")}`[post update] String( ... adStart[post update] String( ... ours())[post update] String[post update] e.getUTCHours()[post update] e.getUTCHours[post update] String( ... utes())[post update] e.getUTCMinutes()[post update] e.getUTCMinutes[post update] String( ... onds())[post update] e.getUTCSeconds()[post update] e.getUTCSeconds[post update] 1e3[post update] "%c[UKS ... TECTED"[post update] "color: ... bold;"[post update] (functi ... ())})})[post update] functio ... s())})}[post update] "cookie ... banner"[post update] ".cookie-toggle"[post update] functio ... l:e}))}[post update] "update"[post update] window.dispatchEvent[post update] new Cus ... ail:e})[post update] CustomEvent[post update] "cookie ... pdated"[post update] {detail:e}[post update] functio ... dden")}[post update] localStorage.setItem[post update] JSON.stringify(n)[post update] "translate-y-full"[post update] setTimeout[post update] ()=>e.c ... idden")[post update] 700[post update] t.classList.add[post update] t.classList[post update] functio ... ):null}[post update] ()=>e.c ... -full")[post update] {ad_sto ... te:500}[post update] documen ... t-all")[post update] "cookie-accept-all"[post update] ()=>{co ... };n(e)}[post update] "cookie-reject-all"[post update] documen ... s-btn")[post update] "cookie ... gs-btn"[post update] ()=>t.c ... idden")[post update] t.classList.remove[post update] "close-cookie-modal"[post update] documen ... tings")[post update] "save-c ... ttings"[post update] ()=>{co ... ),n(e)}[post update] r.forEach[post update] t=>{e[t ... hecked}[post update] t.checked[post update] e=>{e.d ... nts())}[post update] e.detail[post update] "[PRIVA ... feeds."[post update] updateServerStatus[post update] updateDiscordStatus[post update] fetchEvents[post update] "uksf_auth"[post update] "/restricted"[post update] functio ... ext=n)}[post update] new Int ... .format[post update] new Int ... ndon"})[post update] Intl.DateTimeFormat[post update] Intl[post update] {hour:" ... ondon"}[post update] new Int ... "UTC"})[post update] {hour:" ... :"UTC"}[post update] documen ... forEach[post update] documen ... ondon")[post update] ".clock-london"[post update] e=>e.innerText=t[post update] documen ... k-utc")[post update] ".clock-utc"[post update] e=>e.innerText=n[post update] updateI ... eClocks[post update] switchMap[post update] "intel"[post update] "uksf"[post update] functio ... den"))}[post update] "map-intel"[post update] "map-uksf"[post update] "btn-intel"[post update] "btn-uksf"[post update] "map-status-id"[post update] "map-status-grid"[post update] "opacity-0"[post update] "pointe ... s-none"[post update] o.classList.add[post update] "text-white"[post update] "border ... mary)]"[post update] "text-gray-600"[post update] "border-transparent"[post update] n.classList.add[post update] n.classList[post update] n.classList.remove[post update] i.classList.remove[post update] i.classList[post update] a.classList.add[post update] a.classList[post update] i.classList.add[post update] a.classList.remove[post update] sendBroadcast[post update] async f ... lue=""}[post update] "broadcast-msg"[post update] fetch(" ... e}`})})[post update] {method ... ue}`})}[post update] {comman ... alue}`}[post update] saveFragment[post update] async f ... ,2e3)}}[post update] "vault-editor"[post update] 'button ... nt()"]'[post update] "SYNCING..."[post update] fetch(" ... lue})})[post update] {method ... alue})}[post update] {slug:" ... .value}[post update] "SYNC_COMPLETE"[post update] ()=>e.innerText=t[post update] 2e3[post update] "Sync Failed"[post update] "OFFLINE_MODE"[post update] "text-red-500"[post update] ()=>{e. ... -500")}[post update] functio ... =t+"Z"}[post update] e.toLocaleTimeString[post update] {timeZo ... r12:!1}[post update] documen ... -time")[post update] "zulu-time"[post update] t+"Z"[post update] updateTime[post update] "DOMContentLoaded"[post update] ()=>{co ... ace;")}[post update] ".nav-header"[post update] "scroll"[post update] ()=>{if ... 2xl"))}[post update] "rgba(0 ... 0.95)"[post update] "blur(30px)"[post update] "80px"[post update] "shadow-2xl"[post update] "rgba(0, 0, 0, 0.9)"[post update] "blur(20px)"[post update] "100px"[post update] ".nav-link"[post update] e=>{e.g ... tive")}[post update] "href"[post update] 'orbat-canvas'[post update] 'canvas-content'[post update] 'zoom-level'[post update] 'orbat-connectors'[post update] 'temp-link'[post update] 'toast-container'[post update] 'icon-modal'[post update] 'icon-grid'[post update] Set[post update] Map[post update] functio ... ar();\n}[post update] content.style[post update] content[post update] `transl ... cale})`[post update] zoomDisplay[post update] `Zoom: ... 100)}%`[post update] Math.round[post update] scale * 100[post update] updateLinks[post update] selectedNodes[post update] selectedLinks[post update] showContextToolbar[post update] hideContextToolbar[post update] functio ... });\n}[post update] documen ... group')[post update] '.orbat-link-group'[post update] group = ... ;\n }[post update] group.getAttribute[post update] group[post update] 'data-source'[post update] 'data-target'[post update] 'data-from-side'[post update] 'data-to-side'[post update] getPointOnSide[post update] sourceId[post update] sSide[post update] targetId[post update] tSide[post update] getBezierPath[post update] p1[post update] p2[post update] group.q ... forEach[post update] group.q ... 'path')[post update] group.q ... ctorAll[post update] 'path'[post update] p => p. ... , path)[post update] p.setAttribute[post update] 'd'[post update] path[post update] functio ... }\n}[post update] `node-${nodeId}`[post update] parseFloat[post update] el.getA ... ata-x')[post update] el.getAttribute[post update] el[post update] 'data-x'[post update] el.getA ... ata-y')[post update] 'data-y'[post update] el.getA ... ata-w')[post update] 'data-w'[post update] el.getA ... ata-h')[post update] 'data-h'[post update] functio ... .y}`;\n}[post update] Math.hypot[post update] p2.x - p1.x[post update] p2.y - p1.y[post update] dist / 2[post update] 150[post update] cp1[post update] cpDist[post update] cp2[post update] 'node-tfhq'[post update] '.orbat ... rapper'[post update] target. ... ata-x')[post update] target.getAttribute[post update] target[post update] target. ... ata-y')[post update] updateTransform[post update] (amount ... 0.9);\n}[post update] canvas. ... entRect[post update] canvas[post update] rect[post update] zoomAt[post update] cx[post update] cy[post update] amount ... 1 : 0.9[post update] functio ... rm();\n}[post update] Math.ma ... factor)[post update] 0.1[post update] scale * factor[post update] 3[post update] () => w ... rView()[post update] window.centerView[post update] functio ... le };\n}[post update] canvas. ... istener[post update] 'mousedown'[post update] (e) => ... }\n}[post update] e.targe ... ontains[post update] e.target.classList[post update] e.target[post update] 'editable-field'[post update] documen ... omPoint[post update] e.clientX[post update] e.clientY[post update] underMouse?.closest[post update] underMouse[post update] '#node-context-menu'[post update] '.connection-points'[post update] '.resize-handle'[post update] underMo ... ontains[post update] underMo ... assList[post update] 'resize-handle'[post update] underMouse.closest[post update] documen ... ontains[post update] documen ... n-bar')[post update] 'hq-admin-bar'[post update] 'edit-active'[post update] underMouse.classList[post update] 'top'[post update] 'bottom'[post update] 'left'[post update] 'right'[post update] 'bottom-right'[post update] getCanvasCoords[post update] coords[post update] resizeN ... ata-w')[post update] resizeN ... tribute[post update] resizeNode[post update] resizeN ... ata-h')[post update] resizeN ... ata-x')[post update] resizeN ... ata-y')[post update] e.stopPropagation[post update] nodeWra ... tribute[post update] nodeWrapper[post update] 'data-id'[post update] nodeWra ... ata-x')[post update] nodeWra ... ata-y')[post update] nodeWra ... ata-w')[post update] nodeWra ... ata-h')[post update] sides.forEach[post update] sides[post update] s => {\n ... }[post update] coords.x - s.x[post update] coords.y - s.y[post update] createNewLink[post update] linkSourceId[post update] linkSourceSide[post update] nearestSide[post update] stopDrawingLink[post update] selectedLinks.has[post update] linkGroup[post update] selectedLinks.delete[post update] linkGro ... .remove[post update] linkGroup.classList[post update] 'selected'[post update] selectedLinks.add[post update] linkGro ... ist.add[post update] clearSelection[post update] selectedNodes.has[post update] selectedNodes.delete[post update] nodeWra ... .remove[post update] nodeWra ... assList[post update] selectedNodes.add[post update] nodeWra ... ist.add[post update] updateSelectionUI[post update] initial ... s.clear[post update] initialNodePositions[post update] selecte ... forEach[post update] node => ... }[post update] initial ... ons.set[post update] node[post update] {\n ... }[post update] node.ge ... ata-x')[post update] node.getAttribute[post update] node.ge ... ata-y')[post update] documen ... Element[post update] 'div'[post update] selectionBox[post update] 'absolu ... s-none'[post update] selectionBox.style[post update] '1px solid #b3995d'[post update] 'rgba(1 ... , 0.2)'[post update] `${startMouseX}px`[post update] `${startMouseY}px`[post update] '0px'[post update] canvas.appendChild[post update] e.preventDefault[post update] 'mousemove'[post update] current ... tMouseX[post update] current ... tMouseY[post update] currentX[post update] startMouseX[post update] currentY[post update] startMouseY[post update] `${width}px`[post update] `${height}px`[post update] `${left}px`[post update] `${top}px`[post update] m[post update] 160[post update] Math.ro ... AP_SIZE[post update] (startW ... AP_SIZE[post update] (startH ... AP_SIZE[post update] resizeNode.style[post update] `${newW}px`[post update] `${newH}px`[post update] `${OFFSET + newX}px`[post update] `${OFFSET + newY}px`[post update] newW[post update] newH[post update] newX[post update] newY[post update] documen ... apper')[post update] n => n. ... hover')[post update] 'link-target-hover'[post update] targets[post update] targets.forEach[post update] t => {\n ... }[post update] p2.x - t.x[post update] p2.y - t.y[post update] nearest[post update] tempLin ... tribute[post update] tempLink[post update] getBezi ... tSide)[post update] initial ... ons.get[post update] startPos[post update] rawX / SNAP_SIZE[post update] rawY / SNAP_SIZE[post update] node.style[post update] node.setAttribute[post update] 'mouseup'[post update] () => { ... null;\n}[post update] selecti ... entRect[post update] selectionBox.remove[post update] node.ge ... entRect[post update] sbRect[post update] nodeRect[post update] node.classList.add[post update] node.classList[post update] group = ... }[post update] group.querySelector[post update] '.orbat-link-visual'[post update] visual. ... lLength[post update] visual[post update] visual. ... tLength[post update] pathLen / 2[post update] mid[post update] canvas. ... tRect()[post update] group.classList.add[post update] group.classList[post update] parseFl ... AP_SIZE[post update] x[post update] y[post update] `${OFFSET + x}px`[post update] `${OFFSET + y}px`[post update] movedNames.push[post update] movedNames[post update] node.qu ... .trim()[post update] node.qu ... xt.trim[post update] node.qu ... nerText[post update] node.qu ... ame"]')[post update] node.querySelector[post update] '[data-key="name"]'[post update] saveState[post update] desc[post update] resizeN ... xt.trim[post update] resizeN ... nerText[post update] resizeN ... ame"]')[post update] resizeN ... elector[post update] `${name} Resized`[post update] 'wheel'[post update] (e) => ... 1.1);\n}[post update] e.clien ... ct.left[post update] e.clientY - rect.top[post update] e.delta ... 9 : 1.1[post update] { passive: false }[post update] 'dblclick'[post update] window. ... tNodeAt[post update] coords.x / SNAP_SIZE[post update] coords.y / SNAP_SIZE[post update] functio ... here\n}[post update] seriali ... ntState[post update] state[post update] history ... yIndex][post update] history[post update] history.slice[post update] historyIndex + 1[post update] history.push[post update] history.shift[post update] functio ... } \n}[post update] loadState[post update] showToast[post update] 'ACTION_REVERSED'[post update] 'ACTION_RESTORED'[post update] 'history-drawer'[post update] drawer. ... .toggle[post update] drawer.classList[post update] drawer[post update] 'translate-x-full'[post update] drawer. ... ontains[post update] updateH ... rawerUI[post update] commits[post update] commits[index].data[post update] commits[index][post update] 'TIMELI ... MPLETE'[post update] functio ... UI();\n}[post update] commits.splice[post update] index[post update] 1[post update] commits ... 1].data[post update] commits ... th - 1][post update] window. ... Storage[post update] 'RESTOR ... SELINE'[post update] 'history-list'[post update] list[post update] ''[post update] [...com ... forEach[post update] [...com ... verse()[post update] [...commits].reverse[post update] [...commits][post update] (entry, ... ;\n }[post update] item[post update] `history-item`[post update] () => w ... lIndex)[post update] window.jumpToHistory[post update] actualIndex[post update] entry[post update] entry.i ... ).slice[post update] entry.id.toString()[post update] entry.id.toString[post update] entry.id[post update] list.appendChild[post update] functio ... es };\n}[post update] Array.f ... ')).map[post update] Array.f ... pper'))[post update] Array.from[post update] Array[post update] el => { ... ;\n }[post update] el.querySelector[post update] '.personnel-list'[post update] el.quer ... xt.trim[post update] el.quer ... nerText[post update] el.quer ... ame"]')[post update] el.quer ... ole"]')[post update] '[data-key="role"]'[post update] el.quer ... ign"]')[post update] '[data- ... sign"]'[post update] el.quer ... tribute[post update] el.quer ... ('img')[post update] 'img'[post update] 'data-icon-path'[post update] personnelEl[post update] Array.f ... roup'))[post update] el => ( ... \n })[post update] el.id.replace[post update] el.id[post update] 'edge-'[post update] functio ... on();\n}[post update] documen ... layer')[post update] 'orbat-nodes-layer'[post update] l => l.remove()[post update] l.remove[post update] state.nodes.forEach[post update] state.nodes[post update] n => renderNode(n)[post update] renderNode[post update] state.edges.forEach[post update] state.edges[post update] e => cr ... , e.id)[post update] e.fromNode[post update] e.fromSide[post update] e.toNode[post update] e.toSide[post update] e.id[post update] functio ... ks();\n}[post update] '.orbat-node-card'[post update] node.ge ... ata-h')[post update] '.p-4'[post update] 'auto'[post update] Math.ceil[post update] (natura ... AP_SIZE[post update] currentH[post update] requiredH[post update] `${finalH}px`[post update] finalH[post update] functio ... , 0);\n}[post update] newNode[post update] 'orbat- ... ow-2xl'[post update] `node-${n.id}`[post update] newNode.setAttribute[post update] n.id[post update] n.x[post update] n.y[post update] n.w[post update] n.h[post update] newNode.style[post update] `${OFFSET + n.x}px`[post update] `${OFFSET + n.y}px`[post update] `${n.w}px`[post update] `${n.h}px`[post update] `\n ... >\n `[post update] documen ... ndChild[post update] () => s ... ewNode)[post update] snapNodeHeight[post update] functio ... 000);\n}[post update] toast[post update] `p-4 bg ... on-500`[post update] ``[post update] new Date()[post update] toastCo ... ndChild[post update] toastContainer[post update] () => { ... 500); }[post update] toast.style[post update] '0'[post update] 'translateX(50px)'[post update] () => toast.remove()[post update] toast.remove[post update] 500[post update] 4000[post update] n => n. ... ected')[post update] selectedNodes.clear[post update] l => l. ... ected')[post update] l.classList.remove[post update] selectedLinks.clear[post update] functio ... en');\n}[post update] Array.f ... es).pop[post update] Array.f ... dNodes)[post update] Array.f ... ks).pop[post update] Array.f ... dLinks)[post update] 'node-context-menu'[post update] 'node-c ... s-auto'[post update] ``[post update] targetE ... elector[post update] targetEl[post update] t.style[post update] `${midP ... eft}px`[post update] midPoint[post update] `${midP ... 40}px`[post update] targetE ... entRect[post update] `${r.le ... / 2}px`[post update] `${r.top - 60}px`[post update] 'hidden'[post update] confirm[post update] `Sever ... on(s)?`[post update] link => ... }[post update] link.remove[post update] "Sever Connections"[post update] 'CONNEC ... EVERED'[post update] 'danger'[post update] functio ... en'); }[post update] functio ... ED');\n}[post update] adminBa ... .toggle[post update] adminBar.classList[post update] adminBar[post update] 'edit-mode-btn'[post update] btn.classList.toggle[post update] btn.classList[post update] btn[post update] isActive[post update] stateBeforeEdit[post update] documen ... oints')[post update] el => e ... Active)[post update] el.classList.toggle[post update] el.classList[post update] !isActive[post update] documen ... field')[post update] '.editable-field'[post update] el => e ... false')[post update] el.setAttribute[post update] 'contenteditable'[post update] isActiv ... 'false'[post update] isActiv ... SABLED'[post update] functio ... ed`);\n}[post update] Math.ra ... .substr[post update] Math.ra ... ing(36)[post update] Math.ra ... oString[post update] Math.random()[post update] 36[post update] 9[post update] { id, n ... : 200 }[post update] `node-${id}`[post update] `${name ... sioned`[post update] () => { ... IZE);\n}[post update] canvas. ... dth / 2[post update] canvas. ... ght / 2[post update] c.x / SNAP_SIZE[post update] c.y / SNAP_SIZE[post update] () => { ... ed`);\n}[post update] { \n ... \n }[post update] `Note Added`[post update] confirmMsg[post update] documen ... id}"]`)[post update] `.orbat ... {id}"]`[post update] l => {\n ... }[post update] node.remove[post update] link => ... emove()[post update] `Cleanup Complete`[post update] 'RECORDS_PURGED'[post update] () => w ... ected()[post update] window. ... elected[post update] () => { ... ED');\n}[post update] 'a'[post update] URL.cre ... on' }))[post update] URL.createObjectURL[post update] URL[post update] new Blo ... son' })[post update] Blob[post update] [JSON.s ... ll, 2)][post update] seriali ... State()[post update] { type: ... json' }[post update] 'orbat_v2.json'[post update] a.click[post update] 'ORBAT_ ... PORTED'[post update] iconGrid[post update] assets.forEach[post update] assets[post update] path => ... ;\n }[post update] 'group/ ... on-all'[post update] () => { ... ath); }[post update] applyIcon[post update] `
`[post update] path.split('/').pop[post update] path.split('/')[post update] path.split[post update] '/'[post update] iconGrid.appendChild[post update] iconMod ... .remove[post update] iconModal.classList[post update] iconModal[post update] () => { ... null; }[post update] iconMod ... ist.add[post update] input.files[post update] input[post update] FileReader[post update] reader[post update] functio ... ult); }[post update] e.target.result[post update] reader.readAsDataURL[post update] file[post update] functio ... al();\n}[post update] node => ... ;\n }[post update] '.space-y-3'[post update] contain ... elector[post update] container[post update] '.flex. ... center'[post update] imgDiv[post update] 'flex j ... center'[post update] `
`[post update] contain ... tBefore[post update] container.firstChild[post update] imgDiv.querySelector[post update] img[post update] src.sta ... ${src}`[post update] src.startsWith[post update] src[post update] 'data:'[post update] img.setAttribute[post update] affectedNames.push[post update] affectedNames[post update] 'ICON_APPLIED'[post update] closeIconModal[post update] e.targe ... tribute[post update] e.targe ... apper')[post update] e.target.closest[post update] tempLin ... .remove[post update] tempLink.classList[post update] functio ... r'));\n}[post update] tempLin ... ist.add[post update] documen ... ementNS[post update] 'http:/ ... 00/svg'[post update] 'g'[post update] group.setAttribute[post update] 'class'[post update] 'orbat-link-group'[post update] 'id'[post update] `edge-${eid}`[post update] source[post update] hitArea.setAttribute[post update] hitArea[post update] 'orbat- ... t-area'[post update] 'fill'[post update] 'none'[post update] 'stroke'[post update] 'transparent'[post update] 'stroke-width'[post update] '20'[post update] 'pointer-events'[post update] hitArea.style[post update] 'pointer'[post update] visualP ... tribute[post update] visualPath[post update] 'orbat-link-visual'[post update] 'rgba(1 ... , 0.4)'[post update] '2'[post update] 'marker-end'[post update] 'url(#arrowhead)'[post update] group.appendChild[post update] group.a ... istener[post update] (e) => ... ;\n }[post update] svgLayer.appendChild[post update] svgLayer[post update] documen ... xt.trim[post update] documen ... nerText[post update] documen ... ame"]')[post update] documen ... urce}`)[post update] `node-${source}`[post update] documen ... rget}`)[post update] `node-${target}`[post update] `${sNam ... tName}`[post update] 'orbat_canvas_data'[post update] JSON.st ... (state)[post update] commits.push[post update] commits.shift[post update] 'DATABA ... MPLETE'[post update] savedData[post update] 'LOCAL_ ... STORED'[post update] "Failed ... T data"[post update] 'keydown'[post update] undo[post update] redo[post update] window. ... ditMode[post update] window.addOrbatNode[post update] window. ... calNote[post update] window.copyNodes[post update] window.cutNodes[post update] window.pasteNodes[post update] window. ... batJSON[post update] functio ... ED`);\n}[post update] Array.f ... es).map[post update] node.qu ... ole"]')[post update] node.qu ... -mono')[post update] '.orbat ... t-mono'[post update] node.qu ... tribute[post update] node.qu ... ('img')[post update] node.qu ... -list')[post update] node.ge ... ata-w')[post update] `${clip ... COPIED`[post update] clipboard[post update] functio ... er');\n}[post update] `${clip ... S) CUT`[post update] clipboard.forEach[post update] data => ... ;\n }[post update] data[post update] newNodeData[post update] `node-${newId}`[post update] newNode ... ist.add[post update] newNode.classList[post update] SNAP_SIZE[post update] `${clip ... PASTED`[post update] 'input'[post update] adminBa ... .remove[post update] adminBa ... tribute[post update] 'data-visible'[post update] 'true'[post update] 'load'[post update] () => { ... 00); \n}[post update] () => { ... te(); }[post update] history.back[post update] ()=>{co ... break}}[post update] URLSearchParams[post update] window. ... .search[post update] s.get[post update] "unit"[post update] "domain-selector"[post update] documen ... ption")[post update] ".restricted-option"[post update] e=>{e.c ... dden")}[post update] e.options[post update] e.options[s][post update] t.toLowerCase[post update] e.optio ... ontains[post update] e.optio ... assList[post update] "restricted-option"[post update] "terminal-input"[post update] "terminal-logs"[post update] functio ... Height}[post update] "p"[post update] `// ${e}`[post update] "text-green-500"[post update] logs.appendChild[post update] logs[post update] logs.scrollHeight[post update] input.a ... istener[post update] "keypress"[post update] async f ... ,800)}}[post update] this.va ... perCase[post update] this.value[post update] this[post update] addLog[post update] `PROCES ... {e}...`[post update] "white"[post update] (new Te ... .encode[post update] (new TextEncoder)[post update] TextEncoder[post update] crypto. ... 256",t)[post update] crypto.subtle.digest[post update] crypto.subtle[post update] crypto[post update] "SHA-256"[post update] new Uint8Array(n)[post update] Uint8Array[post update] s.map(e ... )).join[post update] s.map(e ... 2,"0"))[post update] s.map[post update] e=>e.to ... (2,"0")[post update] e.toStr ... adStart[post update] e.toString(16)[post update] e.toString[post update] ()=>{o= ... ror"))}[post update] "HQ_AUT ... RANTED"[post update] "success"[post update] "INITIA ... IDE..."[post update] "authorized"[post update] "uksf_hq_auth"[post update] "true"[post update] ()=>{wi ... iling"}[post update] "/filing"[post update] 1500[post update] a.includes[post update] "CREDEN ... CEPTED"[post update] "AUTHOR ... ESS..."[post update] "false"[post update] ()=>{wi ... gence"}[post update] "/intelligence"[post update] "INVALI ... JECTED"[post update] "error"[post update] "SECURI ... RAISED"[post update] 800[post update] toggleEditMode[post update] addOrbatNode[post update] addTacticalNote[post update] centerView[post update] exportOrbatJSON[post update] window. ... ingLink[post update] event[post update] "top"[post update] "right"[post update] "bottom"[post update] "left"[post update] window. ... yDrawer[post update] adjustZoom[post update] .1[post update] resetCanvas[post update] -.1[post update] window. ... onModal[post update] window. ... nUpload[post update] documen ... ).click[post update] documen ... input")[post update] "icon-upload-input"[post update] window. ... r || [][post update] functio ... ents);}[post update] 'uksfta_consent'[post update] 'consent'[post update] 'default'[post update] localSt ... nsent')[post update] consent[post update] documen ... modal')[post update] 'cookie-modal'[post update] (functi ... \n })[post update] functio ... ;\n }[post update] 'today'[post update] async f ... }[post update] fetch(' ... .now())[post update] '/intel ... e.now()[post update] response[post update] `HTTP_$ ... tatus}`[post update] response.json()[post update] response.json[post update] updateB ... tricsUI[post update] updateU ... anderUI[post update] data.unitcommander[post update] updateO ... nLogsUI[post update] '/telem ... e.now()[post update] functio ... }[post update] '.opera ... tainer'[post update] uc[post update] [...uc. ... .slice[post update] [...uc. ... ed_at))[post update] [...uc. ... .sort[post update] [...uc.campaigns][post update] (a, b) ... ted_at)[post update] b.created_at[post update] b[post update] a.created_at[post update] logs.ma ... oin('')[post update] logs.ma ... }).join[post update] logs.ma ... })[post update] logs.map[post update] op => { ... }[post update] op.created_at[post update] op[post update] 'en-GB'[post update] { day: ... igit' }[post update] op.brie ... replace[post update] op.brie ... (0, 80)[post update] op.brief.substring[post update] op.brief[post update] ' '[post update] op.camp ... replace[post update] op.camp ... g, '-')[post update] op.camp ... rCase()[post update] op.camp ... werCase[post update] op.campaignName[post update] '-'[post update] (opId) ... }[post update] uc.campaigns.find[post update] uc.campaigns[post update] c => c.id == opId[post update] 'operation-modal'[post update] 'modal-op-image'[post update] 'modal-op-title'[post update] 'modal-op-date'[post update] 'modal-op-brief'[post update] 'modal-op-map'[post update] title[post update] date[post update] new Dat ... ric' })[post update] { day: ... eric' }[post update] brief[post update] op.brie ... OVERED"[post update] map[post update] `LOCATI ... FIED'}`[post update] op.image[post update] op.image.path[post update] img.classList.remove[post update] img.classList[post update] img.classList.add[post update] modal.c ... .remove[post update] modal.classList[post update] modal[post update] () => { ... }[post update] (e) => ... }[post update] 'status-text'[post update] 'status-indicator'[post update] 'player-count'[post update] 'battle ... -graph'[post update] 'bm-overlay'[post update] overlay ... ist.add[post update] overlay.classList[post update] overlay[post update] statusText[post update] 'STATION_ACTIVE'[post update] 'text-[ ... ercase'[post update] statusIndicator[post update] playerCount[post update] `${sour ... CTIVES`[post update] 'LINK_SEVERED'[post update] 'w-1.5 ... d-full'[post update] 'STATION_OFFLINE'[post update] fetchTelemetry[post update] dataPoints.unshift[post update] dataPoints[post update] new Dat ... OString[post update] renderB ... csGraph[post update] graphContainer[post update] maxCapacity[post update] maxVal[post update] (t) => ... }[post update] new Date(t).getTime[post update] new Date(t)[post update] (v) => ... height)[post update] data.ma ... reverse[post update] data.ma ... rtTime)[post update] data.ma ... .filter[post update] data.ma ... }))[post update] data.map[post update] d => ({ ... })[post update] d.attributes[post update] p => p. ... artTime[post update] new Date(p.t)[post update] p.t[post update] points.forEach[post update] points[post update] (p, i) ... }[post update] getX[post update] getY[post update] p.v[post update] new Date(prevP.t)[post update] prevP.t[post update] prevP[post update] points. ... `).join[post update] points. ... `)[post update] points.map[post update] (p, i) ... `[post update] (val, t ... }[post update] 'graph-tooltip'[post update] 'tooltip-val'[post update] 'tooltip-time'[post update] '1'[post update] vEl[post update] `${val} EFFECTIVES`[post update] time[post update] tEl[post update] isNaN(d ... git' })[post update] date.to ... eString[post update] { hour: ... igit' }[post update] '.live- ... tainer'[post update] feeds[post update] allCand ... forEach[post update] allCandidates[post update] uc.campaignEvents[post update] new Dat ... t || 0)[post update] op.upda ... at || 0[post update] events[post update] events.map[post update] e => ne ... tTime()[post update] opTime[post update] ...eventTimes[post update] uc.stan ... forEach[post update] uc.standalone[post update] ev => { ... }[post update] ev.star ... ated_at[post update] ev[post update] renderU ... derHTML[post update] bestOp[post update] absoluteLatestTime[post update] latestOp.created_at[post update] latestOp[post update] Math.ab ... 0 * 24)[post update] today - createdDate[post update] (latest ... perCase[post update] (latest ... .trim()[post update] (latest ... 0].trim[post update] (latest ... '(')[0][post update] (latest ... it('(')[post update] (latest ... ).split[post update] (latest ... IFIED")[post update] '('[post update] latestO ... ated_at[post update] { day: ... hort' }[post update] created ... perCase[post update] created ... git' })[post update] created ... eString[post update] createdDate[post update] feeds.forEach[post update] f => f. ... = html[post update] f[post update] html[post update] '.disco ... -count'[post update] '.signal-strength'[post update] '.link-id'[post update] onlineCounts[post update] Math.mi ... / 10))[post update] 100 - M ... ) / 10)[post update] (latency - 50) / 10[post update] Math.random() * 5[post update] data.pr ... adStart[post update] data.pr ... tring()[post update] data.pr ... oString[post update] data.presence_count[post update] onlineCounts.forEach[post update] el => { ... 00'); }[post update] countStr[post update] el.classList.remove[post update] 'text-red-900'[post update] signalS ... forEach[post update] signalStrengths[post update] el => { ... }[post update] `LINK_I ... rity}%`[post update] el.style[post update] integri ... white')[post update] Math.fl ... / 1000)[post update] Date.now() / 1000[post update] SERVER_ID.substr[post update] SERVER_ID[post update] linkIds.forEach[post update] linkIds[post update] el => { ... etId; }[post update] netId[post update] error[post update] el.classList.add[post update] el => e ... K_LOST"[post update] (range) ... }[post update] '.bm-range-btn'[post update] btns.forEach[post update] btns[post update] b => { ... nge); }[post update] b.classList.toggle[post update] b.classList[post update] b.getAt ... = range[post update] b.getAttribute[post update] 'data-range'[post update] range[post update] window. ... s || {}[post update] fetchIntegratedIntel[post update] 300000[post update] 60000[post update] 'clock'[post update] clock[post update] `${Stri ... '0')}`[post update] now.getUTCHours()[post update] now.getUTCHours[post update] now[post update] now.getUTCMinutes()[post update] now.getUTCMinutes[post update] now.getUTCSeconds()[post update] now.getUTCSeconds[post update] updateClock[post update] 1000[post update] 'cookie ... banner'[post update] '.cookie-toggle'[post update] 'update'[post update] preferences[post update] new Cus ... nces })[post update] 'cookie ... pdated'[post update] { detai ... ences }[post update] CONSENT_KEY[post update] JSON.st ... rences)[post update] updateGoogleConsent[post update] banner.classList.add[post update] banner.classList[post update] banner[post update] 'translate-y-full'[post update] () => b ... idden')[post update] modal.classList.add[post update] stored[post update] getConsent[post update] banner. ... .remove[post update] () => b ... -full')[post update] currentConsent[post update] documen ... t-all')[post update] 'cookie-accept-all'[post update] setConsent[post update] prefs[post update] 'cookie-reject-all'[post update] documen ... s-btn')[post update] 'cookie ... gs-btn'[post update] () => m ... idden')[post update] 'close-cookie-modal'[post update] documen ... tings')[post update] 'save-c ... ttings'[post update] toggles.forEach[post update] toggles[post update] ()=>{co ... }),n()}[post update] ".filter-btn"[post update] ".story-card"[post update] "report-count"[post update] ()=>{co ... 2,"0")}[post update] Array.f ... "none")[post update] Array.from(t).filter[post update] Array.from(t)[post update] e=>e.st ... ="none"[post update] e.toStr ... (2,"0")[post update] e.toString()[post update] e.forEach[post update] s=>{s.a ... ,n()})}[post update] s.addEventListener[post update] "click"[post update] s.getAttribute[post update] "data-filter"[post update] e=>e.cl ... ctive")[post update] e=>{o== ... "none"}[post update] "data-type"[post update] "flex"[post update] "none"[post update] js.configs[post update] js[post update] globals[post update] async f ... }\n }[post update] fetch(' ... })[post update] 'http:/ ... ommand'[post update] { \n ... }[post update] { command: 'help' }[post update] 'status-rcon'[post update] r.ok ? ... t-bold'[post update] r.ok ? ... FFLINE'[post update] documen ... -rcon')[post update] 'OFFLINE'[post update] fetch(' ... GET' })[post update] 'http:/ ... i/file'[post update] { method: 'GET' }[post update] 'status-registry'[post update] r.statu ... t-bold'[post update] r.statu ... FFLINE'[post update] documen ... istry')[post update] 30000[post update] 'uksf_auth'[post update] '/restricted'[post update] new Int ... })[post update] documen ... ondon')[post update] '.clock-london'[post update] (el) => ... london)[post update] london[post update] documen ... k-utc')[post update] '.clock-utc'[post update] (el) => ... = utc)[post update] utc[post update] $intIcon[post update] 'intel'[post update] 'uksf'[post update] $mapIntel[post update] $mapUksf[post update] $icon[post update] 'map-intel'[post update] 'map-uksf'[post update] 'btn-intel'[post update] 'btn-uksf'[post update] 'map-status-id'[post update] 'map-status-grid'[post update] mapInte ... .remove[post update] mapIntel.classList[post update] mapIntel[post update] 'opacity-0'[post update] 'pointe ... s-none'[post update] mapUksf ... ist.add[post update] mapUksf.classList[post update] mapUksf[post update] btnInte ... ist.add[post update] btnIntel.classList[post update] btnIntel[post update] 'text-white'[post update] 'border ... mary)]'[post update] btnInte ... .remove[post update] 'text-gray-600'[post update] 'border-transparent'[post update] btnUksf ... ist.add[post update] btnUksf.classList[post update] btnUksf[post update] btnUksf ... .remove[post update] statusI ... .remove[post update] statusId.classList[post update] statusId[post update] statusG ... ist.add[post update] statusGrid.classList[post update] statusGrid[post update] mapUksf ... .remove[post update] mapInte ... ist.add[post update] statusI ... ist.add[post update] statusG ... .remove[post update] $unit[post update] "[JSFC_ ... val..."[post update] '/archi ... e.now()[post update] res[post update] `HTTP_${res.status}`[post update] res.json()[post update] res.json[post update] 'archives-container'[post update] 'archive-count'[post update] [...dat ... s].sort[post update] [...data.campaigns][post update] countEl[post update] campaigns.length[post update] campaigns[post update] campaig ... oin('')[post update] campaig ... }).join[post update] campaig ... })[post update] campaigns.map[post update] `[JSFC_ ... cords.`[post update] "INVALI ... UCTURE"[post update] "[JSFC_ ... ation:"[post update] err[post update] documen ... ainer')[post update] (opId) ... ;\n }[post update] window.archiveData[post update] window. ... ns.find[post update] window. ... mpaigns[post update] { unitc ... eData }[post update] openOperationModal[post update] opId[post update] initArchives[post update] async f ... = '';\n}[post update] 'broadcast-msg'[post update] fetch(' ... ` }) })[post update] { metho ... }` }) }[post update] { comma ... lue}` }[post update] 'vault-editor'[post update] { slug: ... value }[post update] editor[post update] () => b ... nalText[post update] originalText[post update] 2000[post update] btn.classList.add[post update] 'text-red-500'[post update] btn.classList.remove[post update] now.toL ... eString[post update] { timeZ ... false }[post update] documen ... -time')[post update] 'zulu-time'[post update] time + 'Z'[post update] 'terminal-input'[post update] 'terminal-logs'[post update] 'p'[post update] `// ${text}`[post update] 'text-green-500'[post update] 'keypress'[post update] `PROCES ... de}...`[post update] 'white'[post update] new Tex ... .encode[post update] new TextEncoder()[post update] code[post update] crypto. ... gUint8)[post update] 'SHA-256'[post update] msgUint8[post update] new Uin ... Buffer)[post update] hashBuffer[post update] hashArr ... )).join[post update] hashArr ... , '0'))[post update] hashArray.map[post update] hashArray[post update] (b) => ... 2, '0')[post update] b.toStr ... adStart[post update] b.toString(16)[post update] b.toString[post update] 'HQ_AUT ... RANTED'[post update] 'success'[post update] 'INITIA ... IDE...'[post update] 'authorized'[post update] 'uksf_hq_auth'[post update] '/filing'[post update] CTF_KEY ... ncludes[post update] CTF_KEYWORDS[post update] 'CREDEN ... CEPTED'[post update] 'AUTHOR ... ESS...'[post update] 'false'[post update] '/intelligence'[post update] 'INVALI ... JECTED'[post update] 'error'[post update] 'SECURI ... RAISED'[post update] -0.1[post update] documen ... input')[post update] 'icon-upload-input'[post update] urlParams.get[post update] urlParams[post update] 'unit'[post update] 'domain-selector'[post update] documen ... ption')[post update] '.restricted-option'[post update] (opt) = ... }[post update] opt.classList.remove[post update] opt.classList[post update] opt[post update] selector.options[post update] selector[post update] selector.options[i][post update] targetU ... werCase[post update] targetUnit[post update] selecto ... ontains[post update] selecto ... assList[post update] 'restricted-option'[post update] site.Language[post update] site[post update] $tfa_logo[post update] site.Params.discord[post update] site.Params[post update] len[post update] range .Pages.ByDate[post update] range .Pages[post update] $map[post update] $b[post update] markdownify[post update] $b.title[post update] range .Params[post update] range . ... cookies[post update] range .Site.Data[post update] range .Site[post update] relURL[post update] `css/main.css`[post update] $node[post update] $unit.stats[post update] () => { ... ;\n }[post update] '.filter-btn'[post update] '.story-card'[post update] 'report-count'[post update] Array.f ... 'none')[post update] Array.f ... .filter[post update] Array.from(cards)[post update] cards[post update] c => c. ... 'none'[post update] c.style[post update] countDisplay[post update] visible ... 2, '0')[post update] visible ... adStart[post update] visible.toString()[post update] visible.toString[post update] visible[post update] filters.forEach[post update] filters[post update] btn => ... }[post update] btn.addEventListener[post update] 'click'[post update] btn.getAttribute[post update] 'data-filter'[post update] f => f. ... ctive')[post update] f.classList.remove[post update] f.classList[post update] cards.forEach[post update] card => ... }[post update] card.getAttribute[post update] card[post update] 'data-type'[post update] card.style[post update] 'flex'[post update] updateCount[post update] Object[post update] (l,u,c) ... :l[u]=c[post update] NA[post update] u[post update] {enumer ... alue:c}[post update] (l,u,c) ... "":u,c)[post update] BA[post update] typeof ... ?u+"":u[post update] (functi ... f,o)}})[post update] functio ... ef,o)}}[post update] documen ... "link")[post update] "link"[post update] u.supports[post update] "modulepreload"[post update] 'link[r ... load"]'[post update] new Mut ... observe[post update] new Mut ... &f(h)})[post update] MutationObserver[post update] r=>{for ... &&f(h)}[post update] h[post update] {childL ... ree:!0}[post update] functio ... gin",o}[post update] r.integrity[post update] r.referrerPolicy[post update] "include"[post update] "omit"[post update] "same-origin"[post update] functio ... ref,o)}[post update] !0[post update] r.href[post update] functio ... ault:l}[post update] Object. ... ty.call[post update] Object. ... roperty[post update] Object.prototype[post update] functio ... s=c,Ei}[post update] Symbol.for[post update] Symbol[post update] "react. ... lement"[post update] "react.fragment"[post update] functio ... ops:o}}[post update] r[v][post update] Ei[post update] functio ... xports}[post update] Mf[post update] QA()[post update] QA[post update] zA[post update] functio ... ):xt)}}[post update] functio ... ?xn:xt}[post update] A[post update] -1[post update] k[post update] _[post update] K=0[post update] K+=f[P][post update] U[post update] N[post update] N=0[post update] R[post update] st=R[0][post update] $[post update] K[post update] st-o[D-1]-K[post update] x.set[post update] (o[D-1]+K)*3[post update] st[post update] J-it[post update] 192[post update] U[P]<256?0:96[post update] U[P++][post update] B[U[P]-O]+16+64[post update] B[post update] X[U[P++]-O][post update] X[post update] (st+K)*3[post update] functio ... +1),0)}[post update] Int32Array[post update] ta+1[post update] ta[post update] o.set[post update] f.subarray(0,ta)[post update] f.subarray[post update] h.set[post update] f.subarray(0,ta+1)[post update] functio ... =Ut),B}[post update] 19[post update] v[post update] S[post update] E[post update] O[post update] "oversu ... s tree"[post update] "incomp ... s tree"[post update] functio ... R):xt)}[post update] 288[post update] 257[post update] KA[post update] kA[post update] "oversu ... h tree"[post update] "incomp ... h tree"[post update] JA[post update] FA[post update] "oversu ... e tree"[post update] "incomp ... e tree"[post update] "empty ... engths"[post update] Wf[post update] functio ... =IA,xt}[post update] VA[post update] ZA[post update] qA[post update] IA[post update] functio ... on(){}}[post update] functio ... e=H,xt}[post update] D[post update] j[post update] Me[post update] D.read_byte[post update] st++[post update] j.win[post update] K[W+2][post update] j.win[L++][post update] j.win.set[post update] j.win.s ... (L,L+2)[post update] j.win.subarray[post update] L[post update] L+2[post update] H[post update] j.win.s ... (L,L+k)[post update] L+k[post update] j.win.s ... L,L+tt)[post update] L+tt[post update] "invali ... e code"[post update] nt[post update] P[post update] it[post update] st-D.next_in_index[post update] "invali ... h code"[post update] functio ... f=null}[post update] functio ... (x,R)}}[post update] N-x.next_in_index[post update] J[post update] p.inflate_flush[post update] x.read_byte[post update] N++[post update] p.win[post update] p.win[nt++][post update] function(){}[post update] functio ... f?1:0}}[post update] WA[post update] L2*3[post update] new Uint8Array(u)[post update] functio ... rite=0}[post update] E.free[post update] c.write=0[post update] c.reset[post update] functio ... ad=U,p}[post update] b.next_out.set[post update] b.next_out[post update] c.win.s ... (U,U+x)[post update] c.win.subarray[post update] c.win[post update] U+x[post update] functio ... b,p)}}}[post update] F[post update] Z-b.next_in_index[post update] Z[post update] c.inflate_flush[post update] b.read_byte[post update] Z++[post update] Wf.infl ... s_fixed[post update] E.init[post update] K[0][post update] J[0][post update] k[0][post update] nt[0][post update] "invalid block type"[post update] "invali ... engths"[post update] c.win.set[post update] b.read_buf(Z,x)[post update] b.read_buf[post update] "too ma ... ymbols"[post update] L1[post update] R&7[post update] 7[post update] B.inflate_trees_bits[post update] "invali ... repeat"[post update] 6[post update] B.infla ... dynamic[post update] 257+(x&31)[post update] 1+(x>>5&31)[post update] P[0][post update] st[0][post update] it[0][post update] H[0][post update] E.proc[post update] functio ... O=null}[post update] functio ... rite=x}[post update] b.subarray(p,p+x)[post update] b.subarray[post update] p+x[post update] c.write=x[post update] functio ... Hf?1:0}[post update] functio ... int()}}[post update] [0][post update] functio ... l),xt)}[post update] c.total_out=0[post update] c.istate[post update] pi[post update] c.istat ... s.reset[post update] c.istate.blocks[post update] functio ... ull,xt}[post update] l.blocks.free[post update] l.blocks[post update] functio ... c),xt)}[post update] l.inflateEnd[post update] new _A(c,1<u-1,1)[post update] re.partial[post update] l[c-1]& ... 48>>u-1[post update] (l,u,c) ... 627776}[post update] (l){ret ... 6)||32}[post update] l/1099511627776[post update] (l,u,c, ... ,1)),f}[post update] f.push[post update] f.concat[post update] c|l[h]>>>u[post update] re.part ... op(),1)[post update] u+o&31[post update] u+o>32?c:f.pop()[post update] f.pop[post update] (l){con ... turn f}[post update] re.bitLength[post update] r>>>24[post update] (l){con ... ,f)),u}[post update] u.push[post update] re.part ... c&3),f)[post update] 8*(c&3)[post update] k2[post update] class{c ... ]+y|0}}[post update] (l){con ... eset()}[post update] 512[post update] [173258 ... 377520][post update] [151850 ... 469782][post update] l._h.slice(0)[post update] l._h.slice[post update] l._h[post update] l._buffer.slice(0)[post update] l._buffer.slice[post update] l._buffer[post update] l._length[post update] u.reset[post update] (){cons ... th=0,l}[post update] l._init.slice(0)[post update] l._init.slice[post update] l._init[post update] [][post update] (l){con ... 6*h),u}[post update] sc.utf8String.toBits[post update] sc.utf8String[post update] sc[post update] re.conc ... ffer,l)[post update] re.concat[post update] u._buffer[post update] f+re.bitLength(l)[post update] "Cannot ... 1 bits"[post update] Uint32Array[post update] u._block[post update] o.subar ... *(h+1))[post update] 16*h[post update] 16*(h+1)[post update] c.splice[post update] (){cons ... et(),c}[post update] [re.partial(1,1)][post update] Math.fl ... 967296)[post update] l._length/4294967296[post update] l._length|0[post update] l._block[post update] u.splice(0,16)[post update] u.splice[post update] l.reset[post update] (l,u,c, ... u^c^f}[post update] (l,u){r ... >>32-l}[post update] (l){con ... 4]+y|0}[post update] l[A][post update] u._S(1, ... [A-16])[post update] u._S[post update] f[A-3]^ ... f[A-16][post update] u._f[post update] u._key[post update] A/20[post update] 30[post update] c[0]+r|0[post update] c[1]+o|0[post update] c[2]+h|0[post update] c[3]+v|0[post update] c[4]+y|0[post update] J2[post update] class{c ... urn r}}[post update] (l){con ... 255]]}}[post update] [[[],[] ... [],[]]][post update] u._tables[0][0][post update] u._tables[0][post update] u._tables[post update] u._precompute[post update] "invali ... y size"[post update] [h=l.slice(0),v=[]][post update] h[o-r]^A[post update] f[0][c[ ... E&255]][post update] f[0][post update] f[1][post update] f[2][post update] f[3][post update] (l){ret ... t(l,0)}[post update] this._crypt[post update] (l){ret ... t(l,1)}[post update] (){cons ... ice(0)}[post update] this._tables[post update] E<<1^(E>>7)*283[post update] l[B][post update] X=X<<24^X>>>8[post update] u[B][post update] O=O<<24^O>>>8[post update] l[E].slice(0)[post update] l[E].slice[post update] l[E][post update] u[E].slice(0)[post update] u[E].slice[post update] u[E][post update] (l,u){i ... turn r}[post update] "invali ... k size"[post update] this._key[post update] E[S>>>2 ... ^c[b++][post update] (l){con ... turn l}[post update] l.buffer[post update] f=>{let ... 1:-1)}}[post update] functio ... ?1:-1)}[post update] (r||Mat ... 4967296[post update] o()*4294967296|0[post update] F2[post update] class{c ... (u,r)}}[post update] (l,u){t ... ._iv=u}[post update] (){this ... initIv}[post update] this._initIv[post update] (l){ret ... s._iv)}[post update] this.calculate[post update] this._prf[post update] this._iv[post update] (l){if( ... turn l}[post update] (l){(l[ ... l[1]))}[post update] this.incWord(l[0])[post update] this.incWord[post update] l[0][post update] this.incWord(l[1])[post update] l[1][post update] (l,u,c) ... p(u,r)}[post update] this.incCounter[post update] l.encrypt[post update] h[0][post update] h[1][post update] h[2][post update] h[3][post update] re.clamp[post update] (l){ret ... ts(l))}[post update] Ha.hmacSha1[post update] Ha[post update] sc.bytes.toBits(l)[post update] sc.bytes.toBits[post update] sc.bytes[post update] (l,u,c, ... 0,f/8)}[post update] "invali ... pbkdf2"[post update] ArrayBuffer[post update] X.concat(u,[A])[post update] X.concat[post update] [A][post update] h[y][post update] S.setInt32[post update] o[v][post update] E.slice[post update] f/8[post update] class{c ... st(l)}}[post update] (l){con ... sh[0])}[post update] k2.sha1[post update] [new c,new c][post update] u._baseHash[0][post update] u._baseHash[post update] new c() ... inalize[post update] new c().update(l)[post update] new c().update[post update] new c()[post update] l[o]^909522486[post update] l[o]^1549556828[post update] u._base ... .update[post update] u._baseHash[1][post update] new c(u ... ash[0])[post update] (){cons ... ted=!1}[post update] new l._ ... ash[0])[post update] l._hash[post update] l._baseHash[0][post update] l._baseHash[post update] !1[post update] (l){con ... ate(l)}[post update] u._resultHash.update[post update] u._resultHash[post update] l._resu ... inalize[post update] l._resultHash[post update] new l._ ... inalize[post update] new l._ ... date(u)[post update] new l._ ... .update[post update] new l._ ... ash[1])[post update] l._baseHash[1][post update] (l){if( ... est(l)}[post update] "encryp ... alled!"[post update] this.update[post update] this.digest[post update] functio ... ues(l)}[post update] crypto. ... mValues[post update] N8.getRandomValues[post update] N8[post update] {hash:Q8}[post update] _2[post update] {iterat ... me:z8}}[post update] ji[post update] ({passw ... B)}}})}[post update] {passwo ... Only:o}[post update] {start( ... e(B)}}}[post update] (){Obje ... rray})}[post update] {ready: ... 8Array}[post update] Promise[post update] h=>this ... Ready=h[post update] eh[post update] (h,v){c ... a,!0))}[post update] {passwo ... eady:O}[post update] K8(y,E, ... [E]+2))[post update] K8[post update] Xe(h,0,Ci[E]+2)[post update] Xe[post update] Ci[E]+2[post update] Ci[post update] v.error[post update] new Error(dr)[post update] dr[post update] h.lengt ... -aa)%xl[post update] v.enqueue[post update] $2(y,h,X,0,aa,!0)[post update] $2[post update] aa[post update] (h){con ... ue(B)}}[post update] {signed ... eady:S}[post update] E.length-aa[post update] wi[post update] Pe[post update] A.update[post update] y.update[post update] Oi[post update] Oi(Pe,A.digest())[post update] A.digest()[post update] A.digest[post update] or[post update] ({passw ... r=this}[post update] {passwo ... ngth:f}[post update] {start( ... re))}}}[post update] o=>this ... Ready=o[post update] (o,h){c ... th,0))}[post update] {passwo ... eady:S}[post update] k8(v,A,y)[post update] k8[post update] O.lengt ... ngth%xl[post update] X.set[post update] $2(v,o,X,O.length,0)[post update] O.length[post update] (o){con ... ure))}}[post update] {ctr:h, ... eady:A}[post update] h.update[post update] wi(Pe,y)[post update] v.update[post update] Oi(Pe,v ... e(0,aa)[post update] Oi(Pe,v ... ).slice[post update] Oi(Pe,v.digest())[post update] v.digest()[post update] v.digest[post update] hr(E,r.signature)[post update] hr[post update] r.signature[post update] functio ... u,E),c}[post update] {ctr:h, ... ding:y}[post update] W8[post update] A-A%xl[post update] Xe(u,E,E+xl)[post update] E+xl[post update] c.set[post update] Oi(Pe,O)[post update] E+f[post update] Xe(u,E)[post update] async f ... or(rr)}[post update] th(l,u, ... Ci[u]))[post update] th[post update] Xe(f,0,Ci[u])[post update] Ci[u][post update] rr[post update] async f ... r(f,r)}[post update] W2[post update] new Uin ... (Ci[u])[post update] th(l,u,c,f)[post update] async f ... y)}),A}[post update] J8(U8,c,Y8,!1,L8)[post update] J8[post update] U8[post update] Y8[post update] L8[post update] F8(Obje ... ]*2+2))[post update] F8[post update] Object. ... :f},_f)[post update] {salt:f}[post update] _f[post update] 8*(bi[u]*2+2)[post update] bi[post update] Xe(h,0,bi[u])[post update] bi[u][post update] Xe(h,bi[u],bi[u]*2)[post update] bi[u]*2[post update] {keys:{ ... Z8(y)}[post update] V8[post update] new X8(v)[post update] X8[post update] Array.from(G8)[post update] G8[post update] Z8[post update] async f ... Key(u)}[post update] ji.impo ... ,c,f,r)[post update] ji.importKey[post update] Ha.importKey[post update] async f ... ons,c)}[post update] ji.deriveBits(l,u,c)[post update] ji.deriveBits[post update] Ha.pbkdf2[post update] l.salt[post update] _f.iterations[post update] functio ... 8(l):u}[post update] H8[post update] functio ... th)),c}[post update] l.length+u.length[post update] functio ... turn l}[post update] l.set[post update] functio ... y(u,c)}[post update] l.subarray[post update] functio ... its(u)}[post update] l.fromBits[post update] l.toBits[post update] ({passw ... r))}})}[post update] {passwo ... Only:f}[post update] {start( ... h,r))}}[post update] (){Obje ... his,u)}[post update] {passwo ... tion:c}[post update] nh[post update] (r,o){c ... (h,r))}[post update] s2[post update] r.subarray(0,Ti)[post update] r.subarray[post update] Ti[post update] v.at[post update] o.error[post update] s2(h,r)[post update] ({passw ... (h)}})}[post update] {start( ... ue(h)}}[post update] (f,r){c ... eue(h)}[post update] new Uint8Array(Ti)[post update] o.passw ... ication[post update] f.length+y.length[post update] f2(o,y)[post update] f2[post update] f.length[post update] f2(o,f)[post update] functio ... turn c}[post update] u.length[post update] ah(l)^u[f][post update] ah[post update] mr[post update] c[f][post update] u[f][post update] functio ... At(f))}[post update] {keys:c ... (c[2])}[post update] c[0][post update] c[2][post update] u.charCodeAt(f)[post update] u.charCodeAt[post update] functio ... c,f,r]}[post update] [c,f,r][post update] l.crcKey0.append[post update] l.crcKey0[post update] [u][post update] l.crcKey0.get[post update] r2[post update] Math.im ... 5813)+1[post update] Math.imul[post update] r2(f+lh(c))[post update] f+lh(c)[post update] lh[post update] 134775813[post update] l.crcKey2.append[post update] l.crcKey2[post update] [f>>>24][post update] l.crcKey2.get[post update] functio ... )>>>8)}[post update] l.keys[post update] Math.imul(u,u^1)>>>8[post update] u^1[post update] functio ... l&255}[post update] functio ... 967295}[post update] (u,{chu ... re=b})}[post update] {chunkS ... tive:r}[post update] {compre ... evel:E}[post update] K2[post update] Sn[post update] uh[post update] {level: ... Size:c}[post update] new P8(u)[post update] P8[post update] I8[post update] ih[post update] ()=>{le ... ture=b}[post update] O.value.buffer[post update] O.value[post update] (u,{chu ... or)}})}[post update] {zipCry ... ream:E}[post update] new _8(u)[post update] _8[post update] q8[post update] {chunkSize:c}[post update] ()=>{if ... r(or)}}[post update] S.value.buffer[post update] S.value[post update] B.getUint32[post update] functio ... n u}})}[post update] new Tra ... ush:c})[post update] TransformStream[post update] {flush:c}[post update] "readable"[post update] {get(){return u}}[post update] (){return u}[post update] new o(o2,c)[post update] o2[post update] new r(o2,c)[post update] functio ... ugh(u)}[post update] l.pipeThrough[post update] (u,c){s ... (E)}})}[post update] {codecType:r}[post update] r.startsWith[post update] i3[post update] ch[post update] {transf ... e:h})}}[post update] (S,O){S ... ue(S))}[post update] O.enqueue[post update] (){Obje ... ze:h})}[post update] {inputSize:h}[post update] (S,O){i ... or(gr)}[post update] S.length[post update] gr[post update] (){cons ... ze:h})}[post update] {signature:S}[post update] {signat ... Size:h}[post update] {get(){ ... gh(E)}}[post update] (){retu ... ugh(E)}[post update] y.pipeT ... Through[post update] y.pipeT ... ough(v)[post update] y.pipeThrough(A)[post update] y.pipeThrough[post update] (u){let ... ):c=r}}[post update] {transf ... ue(c)}}[post update] (r){c&& ... eue(c)}[post update] functio ... )):c=r}[post update] c.length+r.length[post update] c.length[post update] r.slice(0,u)[post update] r.slice[post update] r.slice(u)[post update] (u,{rea ... )(u,o)}[post update] {readab ... able:f}[post update] {option ... ipts:A}[post update] {signal:S}[post update] {busy:! ... ,E(u)}}[post update] c.pipeT ... Through[post update] c.pipeT ... kSize))[post update] c.pipeThrough[post update] new c3(o.chunkSize)[post update] c3[post update] o.chunkSize[post update] new s3(h)[post update] s3[post update] (){retu ... :O()})}[post update] O=>{con ... l):O()}[post update] {worker:X,busy:B}[post update] X.terminate[post update] (){cons ... 1,E(u)}[post update] {resolv ... ated:O}[post update] u.worker.terminate[post update] u.worker[post update] (v&&sh?f3:fh)[post update] ({onsta ... ,o)}})}[post update] {onstar ... nend:r}[post update] {async ... (r,o)}}[post update] (){u&&await Yf(u,f)}[post update] Yf(u,f)[post update] Yf[post update] (h,v){o ... eue(h)}[post update] Yf(c,o,f)[post update] (){r&&await Yf(r,o)}[post update] Yf(r,o)[post update] async f ... atch{}}[post update] l(...u)[post update] ...u[post update] functio ... (l,u)}}[post update] ()=>r3(l,u)[post update] r3[post update] functio ... erface}[post update] {baseUR ... Size:f}[post update] h3[post update] l.scripts[0][post update] l.scripts[post update] fh[post update] {worker ... e:f})}}[post update] ()=>o3( ... ize:f})[post update] o3[post update] {chunkSize:f}[post update] async f ... y{f()}}[post update] {option ... shed:f}[post update] u3[post update] u.pipeT ... rt:!0})[post update] u.pipeT ... .pipeTo[post update] u.pipeThrough(o)[post update] u.pipeThrough[post update] {preven ... ort:!0}[post update] {signat ... Size:y}[post update] o.outputSize[post update] async f ... it A,S}[post update] (O,X)=>{c=O,f=X}[post update] {reader ... sult:r}[post update] {readab ... ipts:v}[post update] {writab ... osed:A}[post update] d3[post update] l.writable[post update] lc[post update] {type:n ... able:y}[post update] v.slice[post update] {reader ... iter()}[post update] o.getReader[post update] y.getWriter[post update] y.getWr ... close()[post update] y.getWriter().close[post update] y.getWriter()[post update] functio ... sed:c}}[post update] r=>u=r[post update] WritableStream[post update] {async ... rt(r)}}[post update] (r){con ... Lock()}[post update] l.getWriter[post update] o.ready[post update] o.write(r)[post update] o.write[post update] o.releaseLock[post update] (){u()}[post update] (r){ret ... ort(r)}[post update] l.getWriter().abort[post update] l.getWriter()[post update] functio ... ,c)),o}[post update] Worker[post update] o.addEventListener[post update] e3[post update] h=>m3(h,c)[post update] m3[post update] functio ... f(),o}}[post update] {worker ... eams:r}[post update] {value: ... able:v}[post update] o.buffer[post update] o.buffe ... Length)[post update] o.buffer.slice[post update] o.byteLength[post update] y.push[post update] l.value[post update] l.writable=null[post update] u.postMessage[post update] c.releaseLock[post update] async f ... ),S()}}[post update] {data:l}[post update] {type:c ... rror:h}[post update] {reader ... shed:S}[post update] {messag ... Size:x}[post update] {stack: ... Size:x}[post update] {value:X,done:B}[post update] v.read()[post update] v.read[post update] {type:d ... geId:r}[post update] y.ready[post update] y.write ... ray(f))[post update] y.write[post update] new Uint8Array(f)[post update] {type:l ... geId:r}[post update] {type:h ... geId:r}[post update] functio ... (),S()}[post update] y.releaseLock[post update] async f ... x!=p)}}[post update] {options:c,config:f}[post update] {transf ... pted:E}[post update] {worker ... kers:O}[post update] r||r===Jt[post update] !X&&(o| ... orkers)[post update] u.useWe ... S[v]:[][post update] h||h=== ... nStream[post update] (await B()).run[post update] (await B())[post update] B()[post update] async f ... s:u}))}[post update] ua.find[post update] ua[post update] x=>!x.busy[post update] Pf[post update] zf[post update] ua.push[post update] x=>Lf.p ... ons:u})[post update] Lf.push[post update] Lf[post update] {resolv ... ions:u}[post update] functio ... >x!=p)}[post update] [{resol ... ons:U}][post update] {resolv ... ions:U}[post update] Lf.splice[post update] new zf(p,R,U,b)[post update] A3[post update] ua.filter[post update] x=>x!=p[post update] functio ... }},f))}[post update] {config:c}[post update] {termin ... eout:f}[post update] Number.isFinite[post update] Number[post update] setTime ... h{}},f)[post update] async() ... atch{}}[post update] r=>r!=l[post update] l.terminate()[post update] l.terminate[post update] functio ... =null)}[post update] {terminateTimeout:u}[post update] clearTimeout[post update] async f ... e())))}[post update] Promise ... te())))[post update] Promise.allSettled[post update] ua.map( ... ate()))[post update] ua.map[post update] l=>(Pf( ... nate())[post update] (){this.size=0}[post update] (){this ... zed=!0}[post update] (){cons ... turn f}[post update] {chunkSize:c=C3}[post update] ReadableStream[post update] {start( ... et+=c}}[post update] (){this ... fset=0}[post update] (r){con ... set+=c}[post update] {offset ... tart:v}[post update] {chunkOffset:y}[post update] h-y[post update] Pt(u,o+y,A,v)[post update] Pt[post update] o+y[post update] r.close[post update] (...arg ... rgs); }[post update] ...args[post update] (){supe ... n c}})}[post update] {write( ... ay(f)}}[post update] (f){if( ... ray(f)}[post update] dh[post update] u.writeUint8Array[post update] vr[post update] {get(){return c}}[post update] (){return c}[post update] (){}[post update] (u){sup ... .75)})}[post update] u.charAt[post update] c-1[post update] u.indexOf[post update] ","[post update] {dataUR ... )*.75)}[post update] (c-f)*.75[post update] (u,c){c ... 0,A):o}[post update] {dataSt ... aURI:r}[post update] u/3[post update] atob[post update] r.subst ... 3)*4+f)[post update] r.substring[post update] h+f[post update] Math.ce ... /3)*4+f[post update] (u+c)/3[post update] h/4[post update] v.charCodeAt(E)[post update] v.charCodeAt[post update] (u){sup ... g:[]})}[post update] {data:" ... ing:[]}[post update] (u){con ... ng+=r)}[post update] c.pending[post update] (o+u.length)/3[post update] String.fromCharCode[post update] String. ... e(u[f])[post update] btoa(r)[post update] btoa[post update] (){retu ... nding)}[post update] this.pending[post update] (u){sup ... size})}[post update] {blob:u,size:u.size}[post update] (u,c){c ... ray(h)}[post update] (u||r ... t(f,u)}[post update] {onload ... error)}[post update] ({targe ... result)[post update] {target:v}[post update] v.result[post update] ()=>h(r.error)[post update] r.error[post update] r.readAsText[post update] (u,c){s ... s,u,c)}[post update] gh[post update] (){awai ... init()}[post update] Ah(this,$f,v2)[post update] Ah[post update] $f[post update] v2[post update] super.init[post update] (u,c){r ... $f,v2)}[post update] vh[post update] Ah(this,tr,y2)[post update] tr[post update] y2[post update] (u,c){r ... tr,y2)}[post update] functio ... cd:h})}[post update] {preven ... Eocd:h}[post update] {url:u, ... Eocd:h}[post update] async f ... l,u,c)}[post update] {url:f, ... Eocd:v}[post update] U3[post update] u(Ar,l, ... oid 0))[post update] Ar[post update] yh(l,v?-pn:void 0)[post update] yh[post update] v?-pn:void 0[post update] y.headers.get[post update] y.headers[post update] b3[post update] Hi[post update] new Uin ... ffer())[post update] await y ... uffer()[post update] y.arrayBuffer()[post update] y.arrayBuffer[post update] p3[post update] E.trim().split[post update] E.trim()[post update] E.trim[post update] /\s*\/\s*/[post update] E2(l,u,c)[post update] E2[post update] async f ... u+c))}}[post update] {useRan ... ions:A}[post update] f(Ar,l,yh(l,u,c))[post update] yh(l,u,c)[post update] await E ... uffer()[post update] E.arrayBuffer()[post update] E.arrayBuffer[post update] {data:E}[post update] r(l,A)[post update] l.data. ... (u,u+c)[post update] l.data.subarray[post update] l.data[post update] u+c[post update] functio ... -1))})}[post update] pr(l)[post update] pr[post update] {[x3]:h ... +c-1))}[post update] functio ... s(u):u}[post update] {options:l}[post update] {headers:u}[post update] Object.fromEntries[post update] async f ... (l,$f)}[post update] Eh(l,$f)[post update] Eh[post update] async f ... (l,tr)}[post update] Eh(l,tr)[post update] async f ... ength)}[post update] u(Ar,l,pr(l))[post update] await c ... uffer()[post update] c.arrayBuffer()[post update] c.arrayBuffer[post update] l.data.length[post update] async f ... ions)}}[post update] c(l,l.options)[post update] l.options[post update] (await ... ers.get[post update] (await ... headers[post update] (await ... pr(l)))[post update] u(T3,l,pr(l))[post update] T3[post update] E3[post update] Number(r)[post update] async f ... atus))}[post update] {options:u,url:c}[post update] fetch(c ... rs:f}))[post update] Object. ... ers:f})[post update] {method:l,headers:f}[post update] rh+(r.s ... status)[post update] functio ... nd()})}[post update] {url:u}[post update] (f,r)=> ... send()}[post update] XMLHttpRequest[post update] "load"[post update] ()=>{if ... tus)))}[post update] o.getAl ... forEach[post update] o.getAl ... r\n]+/)[post update] o.getAl ... ).split[post update] o.getAl ... .trim()[post update] o.getAl ... ().trim[post update] o.getAl ... aders()[post update] o.getAl ... Headers[post update] /[\r\n]+/[post update] v=>{con ... ush(y)}[post update] v.trim().split[post update] v.trim()[post update] v.trim[post update] /\s*:\s*/[post update] y[0].tr ... Case())[post update] y[0].trim().replace[post update] y[0].trim()[post update] y[0].trim[post update] y[0][post update] /^[a-z]|-[a-z]/g[post update] A=>A.toUpperCase()[post update] A.toUpperCase[post update] h.push[post update] {status ... Map(h)}[post update] ()=>o.response[post update] o.statu ... tatus))[post update] rh+(o.s ... status)[post update] h=>r(h. ... rror"))[post update] h.detai ... error")[post update] h.detail[post update] "Network error"[post update] o.open[post update] Object.entries[post update] o.setRequestHeader[post update] "arraybuffer"[post update] o.send[post update] (u,c={} ... u,c)})}[post update] {url:u, ... 3(u,c)}[post update] j3[post update] M3[post update] (u){}[post update] (){retu ... r.size}[post update] this.reader[post update] this.reader.init()[post update] this.reader.init[post update] (u,c){r ... y(u,c)}[post update] this.re ... t8Array[post update] (u,c={} ... r(u,c)}[post update] (u){sup ... ngth})}[post update] u.buffer[post update] u.byteOffset[post update] u.byteLength[post update] {array: ... length}[post update] (u,c){r ... u,u+c)}[post update] this.array.slice[post update] this.array[post update] (u=0){O ... init()}[post update] {offset ... ray(u)}[post update] (u){con ... length}[post update] c.array[post update] new Uin ... length)[post update] f.length+u.length[post update] c.array.set[post update] c.offset[post update] (){retu ... .array}[post update] (u){sup ... ders=u}[post update] (){cons ... init()}[post update] {readers:c}[post update] Promise ... size}))[post update] Promise.all[post update] c.map(a ... .size})[post update] async(f ... f.size}[post update] f.init()[post update] f.init[post update] f.size[post update] (u,c,f= ... ber),h}[post update] {readers:o}[post update] Pt(A,y,c)[post update] Pt(A,y,S)[post update] r.readU ... ,c-S,f)[post update] r.readUint8Array[post update] u+S[post update] c-S[post update] h.subarray[post update] O.length+X.length[post update] Math.ma ... Number)[post update] r.lastDiskNumber[post update] (u,c=42 ... ose()}}[post update] {diskNu ... Size:c}[post update] {async ... t A()}}[post update] (E){con ... te(E)}}[post update] {availableSize:S}[post update] y(E.subarray(0,S))[post update] E.subarray(0,S)[post update] E.subarray[post update] A()[post update] r.size[post update] this.wr ... ray(S))[post update] this.write[post update] E.subarray(S)[post update] y(E)[post update] {value:O,done:X}[post update] u.next()[post update] u.next[post update] oh[post update] r.maxSize[post update] f.maxSize[post update] Ri(r)[post update] Ri[post update] o.getWriter[post update] this.write(E)[post update] (){awai ... it A()}[post update] h.ready[post update] {get(){return v}}[post update] (){return v}[post update] async f ... ze-=S)}[post update] h.write(E)[post update] h.write[post update] async f ... lose()}[post update] h.close()[post update] h.close[post update] (u){ret ... :u}),u}[post update] br[post update] (u){ret ... /0}),u}[post update] fc[post update] {diskNu ... ze:1/0}[post update] functio ... ttps:"}[post update] {baseURL:u}[post update] Z2[post update] {protocol:c}[post update] async f ... olve()}[post update] l.init(u)[post update] l.init[post update] Promise.resolve[post update] functio ... u,c,f)}[post update] l.readUint8Array[post update] "\0\u263a\u263b\u2665\u2666 ... ".split[post update] "\0\u263a\u263b\u2665\u2666 ... \u00b7\u221a\u207f\u00b2\u25a0 "[post update] Sh[post update] new Tex ... .decode[post update] new TextDecoder()[post update] TextDecoder[post update] u.trim().toLowerCase[post update] u.trim()[post update] u.trim[post update] L3[post update] new TextDecoder(u)[post update] (u){a5. ... =u[c])}[post update] a5.forEach[post update] a5[post update] c=>this[c]=u[c][post update] u[c][post update] (u,c={} ... s:[]})}[post update] {reader ... ges:[]}[post update] bh[post update] (u={}){ ... ay),!0}[post update] {reader:f}[post update] {config:r}[post update] Ri(f)[post update] Er[post update] await n ... .blob()[post update] new Res ... e).blob[post update] new Res ... adable)[post update] M8(r)[post update] M8[post update] M5(f,f8 ... ,la*16)[post update] M5[post update] f8[post update] pn[post update] la*16[post update] Pt(f,0,4)[post update] Yt[post update] Bt[post update] ir[post update] Nh[post update] 12[post update] $t[post update] 8[post update] Pt(f,o.offset-Bf,Bf)[post update] o.offset-Bf[post update] Bf[post update] Tl[post update] Pt(f,y,Uf,-1)[post update] Uf[post update] Bh[post update] 32[post update] 40[post update] Pt(f,y,v,B)[post update] ie[post update] l5[post update] i5[post update] T5[post update] c.options[post update] Uh[post update] Vh[post update] R+6[post update] k.bitFlag[post update] R+4[post update] U.subarray[post update] R+32[post update] C[post update] R+38[post update] Sl[post update] ht[post update] ht.at[post update] l2.charCodeAt[post update] l2[post update] R+42[post update] {versio ... ble:gt}[post update] R+34[post update] R+36[post update] k.inter ... ributes[post update] k.exter ... ributes[post update] u5[post update] Qt[post update] On[post update] ic[post update] ra[post update] {rawCom ... th(l2)}[post update] wn.endsWith[post update] wn[post update] Ft[post update] Zh[post update] k.encry ... ieldAES[post update] Ee[post update] (Rn,Qa) ... ges,Qa)[post update] k.getData[post update] Rn[post update] c.readRanges[post update] Qa[post update] async R ... urn Bi}[post update] [Bi][post update] Promise ... s,Rn)])[post update] [new Re ... es,Rn)][post update] new Res ... yBuffer[post update] Qa.readable[post update] {onprogress:Ua}[post update] Ua(J+1,b,new p2(k))[post update] Ua[post update] J+1[post update] new p2(k)[post update] c5[post update] s5[post update] x>0?awa ... t8Array[post update] Pt(f,0,x)[post update] E?await ... t8Array[post update] Pt(f,A+pn,E)[post update] A+pn[post update] Su[r]==o[post update] [r,o][post update] [h,v][post update] x5[post update] l[h]=y.getValue(c,o)[post update] y.getValue(c,o)[post update] y.getValue[post update] zh[post update] functio ... "]=!0)}[post update] h.append[post update] r[c][post update] new Uint8Array(4)[post update] v.setUint32[post update] h.get()[post update] {versio ... t(v,0)}[post update] l.data.subarray(5)[post update] r.bitFlag[post update] l[u][post update] functio ... Method}[post update] {vendor ... t(f,5)}[post update] l.compressionMethod[post update] functio ... atch{}}[post update] f+2[post update] l.data.slice[post update] f+4+h[post update] o.getBigUint64[post update] {rawLas ... Date:y}[post update] Gf[post update] functio ... v+=4})}[post update] o.push[post update] nr[post update] ar[post update] jh[post update] G3[post update] Hh[post update] X3[post update] (y,A)=> ... E}v+=4}[post update] l[y]=new Date(E*1e3)[post update] new Date(E*1e3)[post update] E*1e3[post update] async f ... ush(X)}[post update] {reader ... nges:E}[post update] l.readers[post update] Pt(l,v+o,O+$1,f)[post update] v+o[post update] O+$1[post update] Yt(B)[post update] Gh[post update] B.fileEntry[post update] E.push[post update] async f ... ffer}}}[post update] H5[post update] y(f)[post update] y(Math.min(v,c))[post update] Math.min(v,c)[post update] async f ... uffer}}[post update] Pt(l,E,A)[post update] S.slice(O,O+f)[post update] S.slice[post update] O+f[post update] functio ... ]:u[c]}[post update] 1980+((u&65024)>>9)[post update] ((u&480)>>5)-1[post update] u&31[post update] (c&63488)>>11[post update] (c&2016)>>5[post update] (c&31)*2[post update] functio ... 6e5)))}[post update] Number( ... 736e5))[post update] l/BigIn ... 4736e5)[post update] BigInt[post update] 1e4[post update] 116444736e5[post update] functio ... nt8(u)}[post update] l.getUint8[post update] functio ... (u,!0)}[post update] l.getUint16[post update] l.getUint32[post update] functio ... u,!0))}[post update] l.getBigUint64(u,!0)[post update] l.getBigUint64[post update] functio ... ,c,!0)}[post update] l.setUint32[post update] functio ... uffer)}[post update] q2[post update] {Inflate:a8}[post update] Object.freeze[post update] Object. ... dule"})[post update] {__prot ... ers:v3}[post update] Symbol.toStringTag[post update] {value:"Module"}[post update] functio ... .1",dt}[post update] "react.portal"[post update] "react.strict_mode"[post update] "react.profiler"[post update] "react.consumer"[post update] "react.context"[post update] "react.forward_ref"[post update] "react.suspense"[post update] "react.memo"[post update] "react.lazy"[post update] "react.activity"[post update] functio ... :null)}[post update] function(){return!1}[post update] functio ... r=W||B}[post update] W||B[post update] x.prototype[post update] functio ... tate")}[post update] "takes ... ables."[post update] this.up ... etState[post update] this.updater[post update] "setState"[post update] functio ... date")}[post update] this.up ... eUpdate[post update] "forceUpdate"[post update] function R(){}[post update] new R[post update] function j(){}[post update] functio ... ops:W}}[post update] W[post update] functio ... props)}[post update] C.type[post update] C.props[post update] functio ... of===l}[post update] functio ... L[W]})}[post update] C.replace[post update] /[=:]/g[post update] functio ... n L[W]}[post update] functio ... ng(36)}[post update] ""+C.key[post update] L.toString[post update] functio ... hrow C}[post update] C.then[post update] "pending"[post update] functio ... lue=L)}[post update] "fulfilled"[post update] functio ... son=L)}[post update] "rejected"[post update] functio ... urn gt}[post update] gt(C._payload)[post update] C._payload[post update] et[post update] gt.replace[post update] "$&/"[post update] functio ... urn On}[post update] W+(rt.k ... "/")+gt[post update] (""+rt.key).replace[post update] (""+rt.key)[post update] L.push[post update] (et=C.next())[post update] C.next[post update] Qt.call[post update] Qt++[post update] it(C)[post update] "Object ... stead."[post update] Object.keys(C).join[post update] Object.keys(C)[post update] Object.keys[post update] ", "[post update] functio ... )}),et}[post update] functio ... ,rt++)}[post update] L.call[post update] rt++[post update] functio ... result}[post update] L.then[post update] functio ... ult=W)}[post update] C._result[post update] functio ... ror(C)}[post update] window.ErrorEvent[post update] {bubble ... rror:C}[post update] C.message[post update] process[post update] process.emit[post update] "uncaughtException"[post update] functio ... s)},W)}[post update] L.apply[post update] functio ... ++}),L}[post update] function(){L++}[post update] functio ... })||[]}[post update] functio ... turn L}[post update] functio ... turn C}[post update] "React. ... child."[post update] dt[post update] tt[post update] {__prot ... he(C)}}[post update] functio ... che(C)}[post update] D.H.useMemoCache[post update] D.H[post update] functio ... ents)}}[post update] C.apply[post update] functio ... n null}[post update] functio ... rt,et)}[post update] "The ar ... "+C+"."[post update] N.call[post update] L[ot][post update] arguments[Ft+2][post update] functio ... t:C},C}[post update] {$$type ... text:C}[post update] functio ... ot,rt)}[post update] L[et][post update] arguments[Qt+2][post update] gt[et][post update] functio ... :null}}[post update] functio ... der:C}}[post update] functio ... nit:$}}[post update] functio ... ull:L}}[post update] functio ... D.T=L}}[post update] et.then[post update] W.types[post update] functio ... resh()}[post update] D.H.useCacheRefresh[post update] functio ... use(C)}[post update] D.H.use[post update] functio ... C,L,W)}[post update] D.H.useActionState[post update] functio ... k(C,L)}[post update] D.H.useCallback[post update] functio ... ext(C)}[post update] D.H.useContext[post update] functio ... e(C,L)}[post update] D.H.useDeferredValue[post update] functio ... t(C,L)}[post update] D.H.useEffect[post update] functio ... ent(C)}[post update] D.H.useEffectEvent[post update] functio ... seId()}[post update] D.H.useId[post update] D.H.use ... eHandle[post update] D.H.use ... nEffect[post update] D.H.useLayoutEffect[post update] functio ... o(C,L)}[post update] D.H.useMemo[post update] functio ... c(C,L)}[post update] D.H.useOptimistic[post update] D.H.useReducer[post update] functio ... Ref(C)}[post update] D.H.useRef[post update] functio ... ate(C)}[post update] D.H.useState[post update] D.H.use ... alStore[post update] functio ... tion()}[post update] D.H.useTransition[post update] "19.2.1"[post update] Xf[post update] B5()[post update] B5[post update] xr[post update] UA[post update] ct[post update] functio ... f)),qf}[post update] (functi ... =$}}}})[post update] functio ... O=$}}}}[post update] functio ... eak t}}[post update] H.push[post update] functio ... l:H[0]}[post update] functio ... turn _}[post update] H.pop[post update] functio ... d-_.id}[post update] void 0[post update] functio ... .now()}[post update] o.now[post update] h.now[post update] functio ... ow()-v}[post update] functio ... =c(A)}}[post update] _.expirationTime[post update] functio ... me-H)}}[post update] _.startTime-H[post update] functio ... )-K"[post update] V.replace[post update] t.displayName[post update] functio ... urn""}}[post update] "Lazy"[post update] "Suspense Fallback"[post update] "Suspense"[post update] "SuspenseList"[post update] t.type.render[post update] "Activity"[post update] functio ... stack}}[post update] Am[post update] be[post update] be.setStrictMode[post update] wl[post update] functio ... m|0)|0}[post update] vm[post update] functio ... urn t}}[post update] functio ... 0)?e:i}[post update] oa[post update] functio ... e)===0}[post update] functio ... urn-1}}[post update] functio ... 304),t}[post update] functio ... turn e}[post update] e.push[post update] functio ... nes=0)}[post update] functio ... d&~e))}[post update] xe[post update] -536870913[post update] Nr[post update] s&~(d&~e)[post update] functio ... 261930}[post update] ~e[post update] t.entanglements[post update] t.entan ... &261930[post update] functio ... n&=~i}}[post update] functio ... =0?0:n}[post update] yc[post update] functio ... turn t}[post update] functio ... 56:8:2}[post update] functio ... type))}[post update] x1[post update] functio ... _.p=n}}[post update] Math.ra ... ).slice[post update] functio ... t[Sm]}[post update] u1[post update] functio ... f(33))}[post update] f(33)[post update] 33[post update] functio ... ap}),e}[post update] {hoista ... ew Map}[post update] functio ... Ml]=!0}[post update] functio ... re",e)}[post update] Xa[post update] t+"Capture"[post update] functio ... (e[t])}[post update] Gr[post update] Lr.add[post update] Lr[post update] e[t][post update] RegExp[post update] "^[:A-Z ... 040]*$"[post update] functio ... !0,!1)}[post update] mc.call[post update] mc[post update] Vr[post update] Xr[post update] Tm.test[post update] Tm[post update] functio ... ""+n)}}[post update] Cm[post update] t.removeAttribute[post update] e.toLow ... ).slice[post update] e.toLowerCase()[post update] e.toLowerCase[post update] t.setAttribute[post update] ""+n[post update] functio ... ""+a)}}[post update] t.setAttributeNS[post update] ""+a[post update] functio ... adio")}[post update] functio ... [e]}}}}[post update] t.const ... ototype[post update] t.constructor[post update] t.hasOwnProperty[post update] {config ... is,d)}}[post update] functio ... (this)}[post update] i.call[post update] functio ... his,d)}[post update] s.call[post update] {enumer ... erable}[post update] function(){return n}[post update] function(d){n=""+d}[post update] functio ... e t[e]}[post update] functio ... t[e])}}[post update] Zr[post update] Om(t,e,""+t[e])[post update] Om[post update] ""+t[e][post update] functio ... !0):!1}[post update] e.getValue[post update] e.setValue[post update] functio ... .body}}[post update] functio ... +" "})}[post update] t.replace[post update] wm[post update] functio ... 6)+" "}[post update] e.charC ... oString[post update] e.charCodeAt(0)[post update] e.charCodeAt[post update] functio ... name")}[post update] "type"[post update] ""+je(e)[post update] je[post update] "value"[post update] Tc[post update] je(e)[post update] je(n)[post update] !!s[post update] i&&type ... symbol"[post update] ""+je(g)[post update] functio ... ,xc(t)}[post update] xc[post update] g?t.checked:!!a[post update] !!a[post update] functio ... =""+n)}[post update] Vi[post update] t.ownerDocument[post update] functio ... d=!0)}}[post update] e.hasOwnProperty[post update] "$"+t[n].value[post update] t[n][post update] t[i][post update] n!=null?""+je(n):""[post update] f(92)[post update] 92[post update] f(93)[post update] 93[post update] functio ... tent=e}[post update] "animat ... it(" ")[post update] "animat ... ".split[post update] "animat ... eClamp"[post update] functio ... n+"px"}[post update] e.indexOf[post update] "--"[post update] t.setProperty[post update] Rm.has[post update] Rm[post update] (""+n).trim()[post update] (""+n).trim[post update] (""+n)[post update] n+"px"[post update] functio ... ,e[s])}[post update] f(62)[post update] 62[post update] n.hasOwnProperty[post update] a.indexOf[post update] Jr[post update] e[s][post update] functio ... urn!0}}[post update] t.indexOf[post update] [["acce ... ight"]][post update] functio ... .')":t}[post update] Mm.test[post update] Mm[post update] ""+t[post update] function tn(){}[post update] functio ... Node:t}[post update] functio ... ,!1)}}}[post update] La[post update] Sc[post update] n.value[post update] n.defaultValue[post update] n.checked[post update] n.defaultChecked[post update] n.type[post update] n.name[post update] n.querySelectorAll[post update] 'input[ ... adio"]'[post update] He[post update] ""+e[post update] f(90)[post update] 90[post update] i.value[post update] i.defaultValue[post update] i.checked[post update] i.defaultChecked[post update] i.type[post update] i.name[post update] qr[post update] Kr[post update] Va[post update] !!n.multiple[post update] Mu[post update] Wr[post update] t[e][post update] functio ... turn n}[post update] f(231,e,typeof n)[post update] 231[post update] typeof n[post update] window.document[post update] Nl[post update] "passive"[post update] {get:fu ... Dc=!0}}[post update] function(){Dc=!0}[post update] "test"[post update] functio ... oid 0)}[post update] jn[post update] i.slice[post update] 1s?s:8[post update] bg[post update] Pl[post update] De(t)[post update] De[post update] {then:f ... ason:I}[post update] De()[post update] g.types[post update] function wg(){}[post update] functio ... n(a)})}[post update] f(476)[post update] 476[post update] T0(t)[post update] T0[post update] S0[post update] n===nul ... ),n(a)}[post update] functio ... ),n(a)}[post update] C0[post update] functio ... e=e),e}[post update] {memoiz ... t:null}[post update] functio ... ,De())}[post update] t.alternate[post update] e.next.queue[post update] e.next[post update] functio ... ne(gi)}[post update] zn[post update] Yn[post update] kl[post update] es[post update] functio ... e,a)))}[post update] D0[post update] qc[post update] M0[post update] _i[post update] f(479)[post update] 479[post update] functio ... e===mt}[post update] functio ... ding=e}[post update] Lt[post update] functio ... l:e],t}[post update] fe()[post update] [t,e=== ... null:e][post update] 4194308[post update] functio ... ate,t]}[post update] a.baseState=i[post update] Dg.bind(null,mt,t)[post update] Dg.bind[post update] Dg[post update] functio ... tate=t}[post update] functio ... ate,n]}[post update] functio ... n,t,e)}[post update] functio ... [!1,t]}[post update] S0.bind[post update] t.queue[post update] functio ... ull),n}[post update] m0[post update] t0.bind(null,a,s,t)[post update] $o.bind ... ,s,n,e)[post update] functio ... tate=e}[post update] (a&~(1< ... oString[post update] (a&~(1<<32-xe(a)-1))[post update] n.toString[post update] functio ... ,[t,e]}[post update] functio ... ll,mt)}[post update] Rg.bind(null,mt)[post update] Rg.bind[post update] Rg[post update] n.impl.apply[post update] n.impl[post update] functio ... gu(sn)}[post update] functio ... e,t,e)}[post update] x0[post update] functio ... (t),e]}[post update] functio ... t,t,e)}[post update] a0[post update] Rs[post update] g0[post update] functio ... Es(sn)}[post update] Es[post update] Es(sn)[post update] functio ... atch])}[post update] functio ... ate=n)}[post update] functio ... ,t,a))}[post update] functio ... ,t,n))}[post update] functio ... ,s):!0}[post update] t.shoul ... tUpdate[post update] functio ... ,null)}[post update] e.compo ... veProps[post update] e.UNSAF ... veProps[post update] Ms.enqu ... ceState[post update] Ms[post update] e.state[post update] e[a][post update] functio ... {Wi(t)}[post update] Wi[post update] functio ... w a})}}[post update] e.value[post update] {compon ... .stack}[post update] function(){throw a}[post update] functio ... w i})}}[post update] {compon ... e:null}[post update] function(){throw i}[post update] functio ... ,e)},n}[post update] {element:null}[post update] function(){Eu(t,e)}[post update] Eu[post update] functio ... ag=3,t}[post update] functio ... ""})})}[post update] functio ... n i(s)}[post update] Y0[post update] functio ... g:""})}[post update] [this][post update] qn.add[post update] qn[post update] this.co ... idCatch[post update] {compon ... l?g:""}[post update] 32768[post update] tl[post update] ju[post update] -257[post update] 65536[post update] new Set([a])[post update] [a][post update] e.add[post update] nf[post update] n.add[post update] f(435,n.tag)[post update] 435[post update] n.tag[post update] 256[post update] f(422)[post update] 422[post update] {cause:a}[post update] Be(t,n)[post update] f(423)[post update] 423[post update] Be(e,n)[post update] cs[post update] f(520)[post update] 520[post update] ci.push[post update] ci[post update] qn.has[post update] L0[post update] G0[post update] f(461)[post update] 461[post update] functio ... d,n,a)}[post update] t===nul ... ld,n,a)[post update] qo[post update] Ta[post update] functio ... child)}[post update] a[g][post update] hs[post update] ms[post update] gs[post update] fn[post update] Jc[post update] ae[post update] functio ... hild=t}[post update] 15[post update] Z0[post update] e.mode[post update] e.ref[post update] Gs[post update] functio ... n,a,i)}[post update] a=s[post update] Ns[post update] functio ... .child}[post update] {_visib ... s:null}[post update] I0[post update] {baseLa ... l:null}[post update] lu[post update] s!==nul ... ol:null[post update] ko[post update] fs[post update] Jo[post update] 536870912[post update] s!==nul ... nes|n:n[post update] s.cachePool[post update] functio ... ibling}[post update] functio ... i,null}[post update] {baseLa ... Pool:s}[post update] functio ... rn=t,e}[post update] xu[post update] {mode:e ... ildren}[post update] pu[post update] e.pendingProps[post update] Oe[post update] functio ... rn=e,t}[post update] -129[post update] ti[post update] os[post update] l1[post update] ze[post update] {dehydr ... s:null}[post update] Do[post update] K0[post update] 128[post update] f(558)[post update] 558[post update] Ur[post update] d.nextSibling[post update] Ho[post update] 4096[post update] {mode:a ... ildren}[post update] functio ... 4816)}}[post update] 4194816[post update] f(284)[post update] 284[post update] functio ... e,i),t}[post update] s.state ... te:null[post update] is[post update] typeof ... e(d):Wa[post update] Ds[post update] s.componentWillMount[post update] s.UNSAF ... llMount[post update] s.state[post update] Fl[post update] Jl[post update] Oa[post update] B0[post update] N0[post update] us[post update] t.dependencies[post update] s.compo ... lUpdate[post update] s.UNSAF ... lUpdate[post update] bu[post update] s.render[post update] Ta(e,t.child,null,i)[post update] Ta(e,null,n,i)[post update] ya[post update] functio ... :Yo()}}[post update] Yo[post update] functio ... =Re),t}[post update] functio ... ull,n)}[post update] -33[post update] Ln[post update] {mode:" ... dren:g}[post update] Us(n)[post update] Us[post update] Qs(t,d,n)[post update] Qs[post update] Bs[post update] zs[post update] Ys[post update] {mode:" ... ildren}[post update] g.nextSibling[post update] f(419)[post update] 419[post update] {value: ... k:null}[post update] T.subtr ... 5011712[post update] d.push[post update] functio ... hild=e}[post update] {mode:" ... dren:e}[post update] functio ... es=0,t}[post update] 22[post update] e.pendi ... hildren[post update] functio ... n,e,n)}[post update] t.return[post update] functio ... unt=s)}[post update] {isBack ... ount:s}[post update] _0[post update] ru[post update] Ls[post update] f(153)[post update] 153[post update] t.pendingProps[post update] nn(t,t.pendingProps)[post update] functio ... u(t)))}[post update] e.state ... nerInfo[post update] e.stateNode[post update] Un[post update] t.memoi ... e.cache[post update] e.type[post update] e.memoi ... s.value[post update] W0[post update] P0[post update] q0[post update] functio ... .tag))}[post update] Hg[post update] e.index[post update] e.elementType[post update] J0[post update] 11[post update] X0[post update] 14[post update] V0[post update] f(306,e,"")[post update] 306[post update] [Zt][post update] e.updateQueue[post update] F0[post update] Error(f(424))[post update] f(424)[post update] 424[post update] t.firstChild[post update] n.flags&-3|4096[post update] r1[post update] Yu(ot.c ... Element[post update] Yu(ot.current)[post update] Yu[post update] ot.current[post update] le[post update] Wt[post update] r1(e.ty ... dState)[post update] c1(e.ty ... urrent)[post update] c1[post update] a.firstChild[post update] 4194304[post update] sA[post update] Sg[post update] fA[post update] Ta(e,null,a,n)[post update] jg[post update] {parent:a,cache:i}[post update] e.updat ... State=i[post update] f(156,e.tag)[post update] 156[post update] e.tag[post update] functio ... ags|=4}[post update] functio ... 777217}[post update] 16777216[post update] Od[post update] -16777217[post update] functio ... =uu,ls}[post update] g1[post update] functio ... dl|=e)}[post update] Hr[post update] t.tail[post update] functio ... es=n,e}[post update] Fc[post update] Nt[post update] un[post update] n.pendingContext[post update] $a[post update] rn[post update] _c[post update] td[post update] Xs[post update] f(166)[post update] 166[post update] No[post update] d.createElementNS[post update] "http:/ ... 00/svg"[post update] "http:/ ... MathML"[post update] d.createElement[post update] "s=s.rem ... tChild)s.remov ... tChild)s.removeChilds.firstChilds=typeo ... .size);s=typeo ... a.size)s=typeo ... elect")typeof ... elect")typeof a.isa.isd.creat ... :a.is}){is:a.is}is:a.isd.creat ... elect")a.multi ... a.size)a.multiples.multiple=!0s.multiplea.size& ... a.size)a.size(s.size=a.size)s.size=a.sizes.sizedefault ... ment(i)s=typeo ... ment(i)typeof ... ment(i)d.createElement(i)s[te]=e,s[oe]=a;s[te]=e,s[oe]=as[te]=es[te]s[oe]=as[oe]t:for(d ... ibling}for(d=e ... ibling}d=e.child{if(d.t ... ibling}if(d.ta ... ntinue}d.tag===5||d.tag===6d.tag===5d.tagd.tag===6s.appen ... eNode);s.appen ... teNode)s.appendChildd.stateNoded.tag!= ... !==nulld.tag!= ... ag!==27d.tag!==4d.tag!==27d.child!==nulld.child{d.chil ... ntinue}d.child ... .child;d.child ... d.childd.child.return=dd.child.returnd=d.childif(d===e)break t;d===efor(;d. ... return}d.sibling===null{if(d.r ... return}if(d.re ... reak t;d.retur ... urn===ed.return===nulld.return===ed.sibli ... siblingd.sibli ... .returnd.sibling.returnd=d.siblinge.stateNode=s;t:switc ... t:a=!1}switch( ... t:a=!1}le(s,i,a),ile(s,i,a)case"button":case"input":case"select":a=!!a.autoFocus;a=!!a.autoFocus!!a.autoFocus!a.autoFocusa.autoFocuscase"im ... reak t;a=!0;default:a=!1a&&rn(e)Nt(e),X ... n),nullXs(e,e. ... rops,n)t===nul ... edPropsif(t&&e ... Node=t}t&&e.stateNode!=null{if(typ ... Node=t}if(type ... (166));typeof a!="string"if(t=ot ... eNode=tt=ot.current,$a(e)t=ot.current{if(t=e ... (e,!0)}if(t=e. ... dProps}t=e.sta ... !==nulln=e.memoizedPropsi=eeswitch( ... dProps}case 5: ... edPropsa=i.memoizedPropsi.memoizedPropst[te]=e ... n(e,!0)t[te]=et=!!(t. ... lue,n))!!(t.no ... lue,n))!(t.nod ... lue,n))(t.node ... lue,n))t.nodeV ... alue,n)t.nodeV ... ng===!0t.nodeValue===nt.nodeValuea!==nul ... ng===!0Wd(t.nodeValue,n)t||Bn(e,!0)Bn(e,!0)t=Yu(t) ... eNode=tt=Yu(t) ... Node(a)Yu(t).c ... Node(a)Yu(t).createTextNodeYu(t)case 31 ... ),null;if(n=e. ... (558))}n=e.mem ... !==nullt===nul ... !==null{if(a=$ ... (558))}if(a=$a ... ),t=!0;a=$a(e),n!==nulla=$a(e){if(t== ... ),t=!1}if(t=== ... ags|=4;{if(!a) ... [te]=e}if(!a)t ... (318));throw Error(f(318));Error(f(318))f(318)if(t=e. ... (557));t=e.mem ... null,!tt=e.memoizedStatethrow Error(f(557));Error(f(557))f(557)ya(),(e ... ags|=4;ya(),(e ... lags|=4(e.memo ... e=null)Nt(e),t=!1n=_c(), ... ),t=!0;n=_c(), ... n),t=!0n=_c()t!==nul ... rors=n)(t.memo ... rors=n)t.memoi ... rrors=nt.memoi ... nErrorsif(!t)r ... ,null);e.flags ... ),null)(Oe(e),e)Oe(e),e(Oe(e),null)Oe(e),nullif((e.f ... f(558))throw Error(f(558))case 13 ... ,null);if(a=e. ... ,null)}a=e.mem ... !==null{if(i=$ ... ,null)}if(i=$a ... ),i=!0;i=$a(e) ... !==nulli=$a(e)a!==nul ... !==null{if(t== ... ),i=!1}{if(!i) ... [te]=e}if(!i)t ... (318));if(i=e. ... (317));i=e.mem ... null,!ii=i!==n ... ed:nulli!==nul ... ed:nulli.dehydratedi[te]=ei[te]Nt(e),i=!1i=_c(), ... ),i=!0;i=_c(), ... i),i=!0i=_c()t!==nul ... rors=i)(t.memo ... rors=i)t.memoi ... rrors=iif(!i)r ... ),null)return ... ),null)Oe(e),( ... ),null)(e.flag ... ),null)(e.lanes=n,e)e.lanes=n,e(n=a!== ... ),null)n=a!==n ... e),nulln=a!==nullt=t!==n ... !==nulln&&(a=e ... =2048))(a=e.ch ... =2048))a=e.chi ... |=2048)a.alter ... l.pool)a.alter ... !==nulla.alternate!==nulla.alternatea.alter ... edStatea.alter ... chePool(i=a.al ... l.pool)i=a.alt ... ol.poola.alter ... ol.poola.memoi ... l.pool)a.memoi ... !==nulla.memoi ... chePool(s=a.me ... l.pool)s=a.mem ... ol.poola.memoi ... ol.pools!==i&& ... |=2048)s!==i(a.flags|=2048)n!==t&& ... |=8192)n!==t&&nn!==t(e.chil ... |=8192)e.child.flags|=8192e.child.flagsSu(e,e.updateQueue)case 4: ... ),null;Qt(),t= ... e),nullt===nul ... erInfo)rf(e.st ... erInfo)case 10 ... ),null;un(e.ty ... e),nullun(e.type)case 19 ... ,null);if(L(Xt ... ),null;L(Xt),a ... ===nullif(i=(e ... ast=s)}i=(e.fl ... ===nulls=a.renderinga.renderingif(i)ei ... 94304)}ei(a,!1);ei(a,!1){if(Gt! ... 94304)}if(Gt!= ... ibling}Gt!==0| ... 28)!==0Gt!==0t!==nul ... 28)!==0{if(s=r ... ibling}if(s=ru ... .child}s=ru(t),s!==nulls=ru(t){for(e. ... .child}for(e.f ... ibling;e.flags ... e.childt=s.updateQueues.updateQueuee.updateQueue=tSu(e,t)e.subtreeFlags=0e.subtreeFlagsRo(n,t),n=n.sibling;Ro(n,t),n=n.siblingRo(n,t)W(Xt,Xt ... e.childW(Xt,Xt.current&1|2)Xt.current&1|2bt&&an( ... kCount)an(e,a. ... kCount)a.treeForkCounta.tail! ... 194304)a.tail! ... pe()>Rua.tail!==nullpe()>Ru(e.flag ... 194304)e.flags ... 4194304e.lanes=4194304{if(!i) ... ast=s)}if(!i)i ... 94304);if(t=ru ... 94304);t=ru(s),t!==nullt=ru(s)ru(s){if(e.f ... ),null}if(e.fl ... e),nulle.flags ... te&&!btei(a,!0)a.tail= ... te&&!bta.tail= ... ternatea.tail= ... hidden"a.tail===nulla.tailM ... hidden"a.tailMode!s.alternate2*pe()- ... 94304);2*pe()- ... 194304)2*pe()- ... 68709122*pe()- ... Time>Ru2*pe()- ... artTime2*pe()a.renderingStartTimen!==536870912a.isBac ... last=s)a.isBackwards(s.sibl ... hild=s)s.sibli ... child=ss.sibling=e.childe.child=s(t=a.la ... last=s)t=a.las ... .last=st=a.lasta.lastt!==nul ... child=st.sibling=sa.last=sa.tail! ... ),null)(t=a.ta ... unt),t)t=a.tai ... ount),tt=a.taila.rendering=ta.tail=t.siblinga.rende ... me=pe()t.sibling=nulln=Xt.currentW(Xt,i?n&1|2:n&1)i?n&1|2:n&1n&1|2n&1(Nt(e),null)case 22:case 23 ... ),null;Oe(e),r ... a),nullrs()t!==nul ... |=8192)t.memoi ... |=8192)t.memoi ... ull!==a(e.flags|=8192)e.flags|=8192a&&(e.flags|=8192)a?(n&53 ... ):Nt(e)(n&5368 ... =8192))(n&5368 ... 28)===0(Nt(e), ... =8192))Nt(e),e ... |=8192)e.subtr ... |=8192)e.subtreeFlags&6n=e.updateQueuen!==nul ... yQueue)Su(e,n.retryQueue)n.retryQueuet!==nul ... l.pool)t.memoi ... chePool(n=t.me ... l.pool)n=t.mem ... ol.poolt.memoi ... ol.poole.memoi ... l.pool)e.memoi ... chePool(a=e.me ... l.pool)a=e.mem ... ol.poole.memoi ... ol.poola!==n&& ... |=2048)a!==nt!==null&&L(ba)L(ba)case 24 ... ),null;n=null, ... e),null(n=t.me ... .cache)n=t.mem ... e.cachee.memoi ... che!==ncase 25:return null;case 30:return nullcase 1: ... ):null;t=e.fla ... e):nullt=e.flagst&65536 ... e):nullt&65536(e.flag ... |128,e)e.flags ... 7|128,ee.flags=t&-65537|128t&-65537|128t&-65537case 3: ... ):null;un(Zt), ... e):null(t&6553 ... e):null(t&6553 ... 28)===0(t&65536)!==0(t&65536)(t&128)===0(t&128)t&128return ra(e),null;ra(e),nullcase 31 ... ):null;if(e.me ... );ya()}{if(Oe( ... );ya()}if(Oe(e ... (340));Oe(e),e ... ===nulle.alternate===nullthrow Error(f(340));Error(f(340))f(340)case 13 ... ):null;if(Oe(e ... );ya()}Oe(e),t ... !==nullt.dehydrated!==null{if(e.a ... );ya()}if(e.al ... (340));case 19 ... ),null;return L(Xt),null;L(Xt),nullreturn Qt(),null;Qt(),nullun(e.type),nullcase 23 ... ):null;Oe(e),r ... e):nullreturn un(Zt),null;un(Zt),nullfunctio ... n(Zt)}}{switch ... n(Zt)}}switch( ... un(Zt)}un(Zt),Qt();un(Zt),Qt()case 5:ra(e);break;ra(e);case 4:Qt();break;Qt();e.memoi ... &Oe(e);e.memoi ... &&Oe(e)case 13:Oe(e);break;Oe(e);case 19:L(Xt);break;L(Xt);un(e.type);case 23 ... ;break;Oe(e),r ... &L(ba);Oe(e),r ... &&L(ba)case 24:un(Zt)functio ... rn,g)}}{try{va ... rn,g)}}try{var ... urn,g)}{var n= ... !==i)}}var n=e ... t:null;a=n!==n ... ct:nulln!==nul ... ct:nulln.lastEffectif(a!== ... n!==i)}{var i= ... n!==i)}var i=a.next;i=a.nextn=i;do{if(( ... (n!==i)n!==i{if((n. ... n.next}if((n.t ... troy=a}(n.tag&t)===t(n.tag&t)n.tag&t{a=void ... troy=a}a=void 0;a=void 0var s=n ... n.inst;s=n.createn.created=n.instn.insta=s(),d.destroy=aa=s()d.destroy=ad.destroycatch(g ... urn,g)}{wt(e,e.return,g)}wt(e,e.return,g)functio ... rn,V)}}{try{va ... rn,V)}}try{var ... urn,V)}{var a= ... !==s)}}var a=e ... t:null;a=e.updateQueuei=a!==n ... ct:nulla!==nul ... ct:nulla.lastEffectif(i!== ... a!==s)}{var s= ... a!==s)}var s=i.next;s=i.nexta=s;do{if(( ... (a!==s)a!==s{if((a. ... a.next}if((a.t ... T,V)}}}(a.tag&t)===t(a.tag&t)a.tag&t{var d= ... T,V)}}}var d=a ... estroy;d=a.insta.instg=d.destroyif(g!== ... ,T,V)}}g!==void 0{d.dest ... ,T,V)}}d.destr ... 0,i=e;d.destroy=void 0,i=ed.destroy=void 0var T=n,z=g;T=nz=gtry{z() ... i,T,V)}{z()}z()catch(V){wt(i,T,V)}{wt(i,T,V)}wt(i,T,V)catch(V ... urn,V)}{wt(e,e.return,V)}wt(e,e.return,V)functio ... n,a)}}}{var e= ... n,a)}}}var e=t.updateQueue;e=t.updateQueueif(e!== ... rn,a)}}{var n= ... rn,a)}}try{Ko( ... urn,a)}{Ko(e,n)}Ko(e,n)catch(a ... urn,a)}{wt(t,t.return,a)}wt(t,t.return,a)functio ... ,e,a)}}{n.prop ... ,e,a)}}n.props ... dState;n.props ... edStaten.props ... dProps)n.propsOa(t.ty ... dProps)n.state ... edStaten.statetry{n.c ... t,e,a)}{n.comp ... ount()}n.compo ... mount()n.compo ... Unmountcatch(a){wt(t,e,a)}{wt(t,e,a)}wt(t,e,a)functio ... ,e,i)}}{try{va ... ,e,i)}}try{var ... t,e,i)}{var n= ... ent=a}}var n=t.ref;n=t.refif(n!== ... rent=a}{switch ... rent=a}switch( ... teNode}var a=t.stateNode;a=t.stateNodecase 30 ... ;break;a=t.stateNode;default ... ateNodetypeof ... rrent=at.refCleanup=n(a)n.current=an.currentcatch(i){wt(t,e,i)}{wt(t,e,i)}wt(t,e,i){var n= ... t=null}var n=t ... leanup;a=t.refCleanupif(n!== ... nt=nullif(type ... nt=nulltry{a() ... =null)}{a()}a(){t.refC ... =null)}t.refCl ... p=null)t.refCleanup=nullt!=null ... p=null)(t.refCleanup=null)try{n(n ... t,e,i)}{n(null)}n(null)n.current=nullfunctio ... rn,i)}}{var e= ... rn,i)}}var e=t ... teNode;n=t.memoizedPropstry{t:s ... urn,i)}{t:swit ... cSet)}}t:switc ... rcSet)}switch( ... rcSet)}n.autoF ... ocus();n.autoF ... focus()n.autoFocusa.focus()a.focuscase"im ... srcSet)n.src?a ... srcSet)n.srca.src=n.srca.srcn.srcSe ... srcSet)n.srcSet(a.srcset=n.srcSet)a.srcset=n.srcSeta.srcsetcatch(i ... urn,i)}{wt(t,t.return,i)}wt(t,t.return,i){try{va ... rn,i)}}try{var ... urn,i)}{var a= ... [oe]=e}nA(a,t. ... a[oe]=enA(a,t.type,n,e)a[oe]=efunctio ... ag===4}{return ... ag===4}return ... tag===4t.tag== ... tag===4t.tag== ... t.type)t.tag== ... ag===26t.tag===5||t.tag===3t.tag===5t.tag===26t.tag===27t.tag===4functio ... eNode}}{t:for( ... eNode}}t:for(; ... teNode}for(;;) ... teNode}{for(;t ... teNode}if(t.re ... n null;t.retur ... return)id(t.return)for(t.s ... .child}t.tag!= ... ag!==18t.tag!==5&&t.tag!==6t.tag!==6t.tag!==18{if(t.t ... .child}if(t.ta ... inue t;t.tag== ... ===nullt.tag== ... flags&2t.flags&2continue t;if(!(t. ... ateNode!(t.flags&2)(t.flags&2)return t.stateNode{var a= ... ibling}var a=t.tag;a=t.tagif(a=== ... siblinga===5||a===6a===5a===6t=t.sta ... k=tn));t=t.sta ... ck=tn))e?(n.no ... ck=tn))(n.node ... re(t,e)(n.node ... tBefore(n.node ... body:n)n.nodeT ... .body:nn.bodyn.nodeN ... .body:nn.nodeName==="HTML"n.nodeNamen.ownerDocument.body(e=n.no ... ck=tn))e=n.nod ... ick=tn)e=n.nod ... .body:ne.appendChild(t)e.appendChildn=n._re ... ntainern._reac ... ntainern!=null ... ick=tn)n!=null ... !==nulle.onclick!==nullif(a!== ... siblinga!==4&& ... ==null)a!==4(a===27 ... ==null)a===27& ... !==nulla===27& ... e=null)a===27&&Jn(t.type)a===27(n=t.st ... e=null)n=t.stateNode,e=nullfor(qs( ... siblingqs(t,e, ... siblingqs(t,e,n)t=t.sta ... ild(t);t=t.sta ... hild(t)e?n.ins ... hild(t)n.insertBefore(t,e)n.insertBeforen.appendChild(t)n.appendChilda===27& ... teNode)(n=t.stateNode)for(Tu( ... siblingTu(t,e, ... siblingTu(t,e,n)functio ... rn,s)}}{var e= ... rn,s)}}try{for ... urn,s)}{for(va ... [oe]=n}for(var ... (i[0]);var a=t ... ributesa=t.typei=e.attributese.remov ... (i[0]);e.remov ... e(i[0])e.remov ... uteNodei[0]le(e,a, ... e[oe]=nle(e,a,n)e[oe]=ncatch(s ... urn,s)}{wt(t,t.return,s)}wt(t,t.return,s)var on= ... t=null;on=!1Kt=!1Is=!1cd=type ... Set:Settypeof ... Set:Settypeof WeakSet_t=null{if(t=t ... eturn}}if(t=t. ... n=null;t=t.con ... ),Yc(t)t=t.containerInfohf=Iut=Eo(t)Eo(t)Yc(t){if("se ... end:0}}if("sel ... n=null}"selectionStart"in tvar n={ ... onEnd};n={star ... ionEnd}start:t ... onStartt.selectionStartend:t.selectionEndt.selectionEndt:{n=(n ... n=null}{n=(n=t ... n=null}n=(n=t. ... window;n=(n=t. ... |window(n=t.ow ... |window(n=t.ow ... ultView(n=t.ownerDocument)n=t.ownerDocumentn.defaultViewvar a=n ... tion();a=n.get ... ction()n.getSe ... ction()n.getSelectionn.getSelection()if(a&&a ... n=nulla&&a.rangeCount!==0a.rangeCount!==0a.rangeCount{n=a.an ... end:T}}n=a.anchorNode;n=a.anchorNodevar i=a ... usNode;i=a.anchorOffsets=a.focusNodea=a.focusOffset;a=a.focusOffsettry{n.n ... reak t}{n.node ... deType}n.nodeT ... odeTypes.nodeTypecatch{n ... reak t}{n=null;break t}n=null;var d=0 ... Y=null;g=-1T=-1z=0I=tY=nulle:for(; ... de}I=G}for(;;) ... de}I=G}{for(va ... de}I=G}for(var ... =I,I=G;I!==n|| ... !==nullI!==n|| ... (g=d+i)I!==n|| ... ype!==3I!==ni!==0&& ... ype!==3i!==0I.nodeType!==3I.nodeType(g=d+i)g=d+id+iI!==s|| ... (T=d+a)I!==s|| ... ype!==3I!==sa!==0&& ... ype!==3(T=d+a)T=d+ad+aI.nodeT ... length)I.nodeType===3(d+=I.n ... length)d+=I.no ... .lengthI.nodeValue.lengthI.nodeValue(G=I.fi ... !==null(G=I.firstChild)G=I.firstChildI.firstChildvar GY=I,I=G;Y=I,I=GY=II=Gfor(;;) ... ntNode}{if(I== ... ntNode}if(I===t)break e;I===tbreak e;if(Y=== ... )break;Y===n&& ... !==nullY===n&& ... &&(g=d)Y===n&&++z===iY===n++z===i++z(g=d)g=dY===s&& ... &&(T=d)Y===s&&++V===aY===s++V===a++V(T=d)T=d(G=I.ne ... !==null(G=I.nextSibling)G=I.nextSiblingI.nextSiblingI=Y,Y=I.parentNodeI=YY=I.parentNodeI.parentNoden=g===- ... ,end:T}g===-1| ... ,end:T}g===-1||T===-1g===-1T===-1{start:g,end:T}start:gend:Tn=n||{start:0,end:0}n||{start:0,end:0}{start:0,end:0}start:0end:0for(mf= ... return}_t!==nullmf={foc ... !1,_t=emf={foc ... ange:n}{focuse ... ange:n}focusedElem:tselectionRange:nIu=!1_t=eif(e=_t ... return}e=_t,t= ... !==nulle=_t(e.subt ... !==null(e.subt ... 28)!==0(e.subt ... s&1028)e.subtreeFlags&1028t.return=e,_t=t;t.return=e,_t=t_t=tfor(;_t ... return}switch( ... (163))}e=_t,s= ... s,e.tags=e.alternateif((t&4 ... xtImpl;(t&4)!= ... ==null)(t&4)!==0(t&4)t&4(t=e.up ... ==null)t=e.upd ... !==nullt=e.updateQueuet=t!==n ... ts:nullt!==nul ... ts:nullt.eventsfor(n=0 ... xtImpl;i=t[n], ... xtImpl;i=t[n], ... extImpli=t[n]i.ref.i ... extImpli.ref.impli.refi.nextImplcase 15:break;case 1: ... }break;if((t&1 ... n,ft)}}(t&1024 ... !==null(t&1024)!==0(t&1024)t&1024{t=void ... n,ft)}}t=void ... teNode;t=void ... ateNodet=void 0i=s.memoizedPropss=s.memoizedStates.memoizedStatea=n.stateNodetry{var ... rn,ft)}{var at ... date=t}var at=Oa(n.type,i);at=Oa(n.type,i)Oa(n.type,i)t=a.get ... pdate=tt=a.get ... e(at,s)a.getSn ... e(at,s)a.getSn ... eUpdatea.__rea ... pdate=ta.__rea ... eUpdate__react ... eUpdatecatch(f ... rn,ft)}{wt(n,n.return,ft)}wt(n,n.return,ft)case 3: ... }break;if((t&1 ... nt=""}}{if(t=e ... nt=""}}if(t=e. ... ent=""}t=e.sta ... e,n===9n=t.nodeTypen===9vf(t);vf(t)if(n=== ... ent=""}n===1switch( ... ent=""}case"HEAD":case"HTML":case"BO ... ;break;BODYdefault ... tent=""t.textContent=""case 6:case 17:break;default ... f(163))if((t&1 ... f(163))throw Error(f(163))Error(f(163))f(163)if(t=e. ... ;break}t=e.sibling,t!==nullt=e.sibling{t.retu ... ;break}t.retur ... n,_t=t;t.retur ... rn,_t=tt.return=e.return_t=e.return{var a= ... (t,n)}}var a=n.flags;a=n.flagsswitch( ... n(t,n)}case 15 ... ;break;hn(t,n) ... i(5,n);hn(t,n),a&4&&ni(5,n)hn(t,n)a&4&&ni(5,n)a&4ni(5,n)if(hn(t ... rn,d)}}hn(t,n),a&4if(t=n. ... rn,d)}}t=n.sta ... ===nullt=n.stateNodetry{t.c ... urn,d)}{t.comp ... ount()}t.compo ... Mount()t.componentDidMountcatch(d ... urn,d)}{wt(n,n.return,d)}wt(n,n.return,d){var i= ... rn,d)}}var i=O ... Props);i=Oa(n. ... dProps)Oa(n.ty ... dProps)e=e.memoizedState;{t.comp ... pdate)}t.compo ... Update)t.componentDidUpdatet.__rea ... eUpdatea&64&&n ... eturn);a&64&&n ... return)a&64&&nd(n)a&64nd(n)a&512&& ... return)a&512ai(n,n.return)hn(t,n) ... ==null)a&64&&( ... ==null)(t=n.up ... ==null)t=n.upd ... !==nullt=n.updateQueue{if(e=n ... rn,d)}}if(e=nu ... teNode}e=null, ... !==nulln.child.tage=n.child.stateNode;e=n.child.stateNoden.child.stateNodecase 1: ... ateNodetry{Ko( ... urn,d)}{Ko(t,e)}Ko(t,e)case 27 ... &ud(n);e===nul ... &ud(n);e===null&&a&4&&ud(n)e===null&&a&4ud(n)hn(t,n) ... eturn);hn(t,n) ... return)e===null&&a&4&&ld(n)ld(n)case 12 ... ;break;hn(t,n);hn(t,n) ... d(t,n);hn(t,n),a&4&&od(t,n)a&4&&od(t,n)od(t,n)hn(t,n) ... ,n))));hn(t,n) ... t,n))))a&4&&dd(t,n)dd(t,n)a&64&&( ... t,n))))(t=n.me ... t,n))))t=n.mem ... (t,n)))t=n.memoizedStatet!==nul ... (t,n)))(t=t.de ... (t,n)))t=t.deh ... A(t,n))t=t.dehydratedt!==nul ... A(t,n))(n=qg.b ... A(t,n))n=qg.bi ... rA(t,n)n=qg.bind(null,n)qg.bind(null,n)qg.bindrA(t,n)case 22 ... }break;if(a=n. ... i,Kt=s}a=n.mem ... ||on,!aa=n.mem ... ull||onn.memoi ... ull||onn.memoi ... !==null{e=e!== ... i,Kt=s}e=e!==n ... t,i=on;e=e!==n ... Kt,i=one=e!==n ... ull||Kte!==nul ... ull||Kte!==nul ... !==nulli=onvar s=Kt;s=Kton=a,(K ... =i,Kt=son=a(Kt=e)& ... hn(t,n)(Kt=e)&&!s(Kt=e)Kt=emn(t,n, ... 2)!==0)(n.subt ... 72)!==0(n.subt ... s&8772)n.subtreeFlags&8772on=iKt=scase 30:break;default:hn(t,n){var e= ... e=null}e!==nul ... ue=nulle!==nul ... ,fd(e))(t.alte ... ,fd(e))t.alter ... l,fd(e)t.alternate=nullfd(e)t.tag== ... &bc(e))(e=t.st ... &bc(e))e=t.sta ... &&bc(e)e!==null&&bc(e)bc(e)t.return=nullt.pendingProps=nullvar zt=null,he=!1;zt=nullhe=!1{for(n= ... ibling}for(n=n ... siblingn=n.childrd(t,e, ... siblingrd(t,e,n)functio ... ,e,n)}}{if(be& ... ,e,n)}}if(be&& ... catch{}typeof ... Unmountbe.onCo ... Unmount{be.onC ... (wl,n)}be.onCo ... t(wl,n)switch( ... t,e,n)}Kt||We( ... ld(n));Kt||We( ... ild(n))Kt||We(n,e)We(n,e)dn(t,e,n)n.memoi ... ild(n))n.memoi ... count--n.memoi ... e.countn.state ... ild(n))(n=n.st ... ild(n))n=n.sta ... hild(n)n=n.stateNoden.paren ... hild(n)n.paren ... veChildcase 27 ... ;break;Kt||We(n,e);var a=zt,i=he;a=zti=heJn(n.ty ... a,he=i;Jn(n.ty ... =a,he=iJn(n.ty ... ,he=!1)Jn(n.type)(zt=n.s ... ,he=!1)zt=n.stateNode,he=!1zt=n.stateNodedi(n.stateNode)zt=ahe=icase 5:Kt||We(n,e);case 6: ... }break;if(a=zt ... n,e,s)}a=zt,i= ... !==nullzt!==nullif(he)t ... n,e,s)}try{(zt ... n,e,s)}{(zt.no ... eNode)}(zt.nod ... teNode)(zt.nod ... veChild(zt.nod ... ody:zt)zt.node ... body:ztzt.nodeType===9zt.nodeTypezt.bodyzt.nodeName==="HTML"zt.nodeNamezt.owne ... nt.bodyzt.ownerDocumentcatch(s){wt(n,e,s)}{wt(n,e,s)}wt(n,e,s)try{zt. ... n,e,s)}{zt.rem ... eNode)}zt.remo ... teNode)zt.removeChildcase 18 ... ;break;zt!==nu ... Node));zt!==nu ... eNode))(he?(t= ... eNode))he?(t=z ... teNode)(t=zt,n ... ,pl(t))t=zt,n1 ... ),pl(t)t=ztn1(t.no ... teNode)t.nodeT ... .body:tt.nodeType===9pl(t)n1(zt,n.stateNode)a=zt,i= ... a,he=i;a=zt,i= ... =a,he=izt=n.st ... nerInfon.state ... nerInfohe=!0case 14:Xn(2,n, ... t,e,n);Xn(2,n, ... (t,e,n)Xn(2,n,e)Kt||Xn(4,n,e)Xn(4,n,e)Kt||(We ... t,e,n);Kt||(We ... (t,e,n)Kt||(We ... n,e,a))(We(n,e ... n,e,a))We(n,e) ... (n,e,a)typeof ... (n,e,a)a.compo ... Unmountad(n,e,a)case 21 ... ;break;dn(t,e,n);case 22 ... ;break;Kt=(a=K ... ),Kt=a;Kt=(a=K ... n),Kt=aKt=(a=K ... !==null(a=Kt)| ... !==null(a=Kt)a=KtKt=adefault:dn(t,e,n)functio ... n,n)}}}{if(e.m ... n,n)}}}if(e.me ... rn,n)}}e.memoi ... =null))(t=e.al ... =null))t=e.alt ... ==null)t=e.alternatet!==nul ... ==null)(t=t.me ... ==null)t=t.mem ... !==null{t=t.de ... rn,n)}}t=t.dehydrated;try{pl( ... urn,n)}{pl(t)}catch(n ... urn,n)}{wt(e,e.return,n)}wt(e,e.return,n)functio ... rn,n)}}{if(e.m ... rn,n)}}if(e.me ... urn,n)}e.memoi ... null)))(t=e.al ... null)))t=e.alt ... =null))t!==nul ... =null))(t=t.me ... =null))t=t.mem ... ==null)(t=t.de ... ==null)t=t.deh ... !==nullfunctio ... tag))}}{switch ... tag))}}switch( ... .tag))}case 13:case 19 ... cd),e;var e=t.stateNode;return ... cd),e;e===nul ... w cd),ee===nul ... new cd)(e=t.st ... new cd)e=t.stateNode=new cdt.stateNode=new cdnew cdcase 22 ... cd),e;t=t.sta ... w cd),ee=t._retryCachet._retryCache(e=t._r ... new cd)e=t._re ... =new cdt._retryCache=new cddefault ... t.tag))throw E ... t.tag))Error(f(435,t.tag))f(435,t.tag)functio ... ,i)}})}{var n= ... ,i)}})}var n=Qg(t);n=Qg(t)Qg(t)e.forEa ... i,i)}})functio ... (i,i)}}{if(!n. ... (i,i)}}if(!n.h ... n(i,i)}!n.has(a)n.has(a)n.has{n.add( ... n(i,i)}n.add(a);var i=I ... l,t,a);i=Ig.bind(null,t,a)Ig.bind(null,t,a)Ig.binda.then(i,i){var n= ... ibling}var n=e.deletions;n=e.deletionsif(n!== ... n=null}for(var ... n=null}var a=0{var i= ... n=null}var i=n ... =e,g=d;s=td=et:for(; ... return}for(;g! ... return}case 27 ... }break;if(Jn(g ... reak t}Jn(g.type)g.type{zt=g.s ... reak t}zt=g.st ... ,he=!1;zt=g.stateNode,he=!1zt=g.stateNodeg.stateNodecase 5: ... reak t;case 4: ... break tzt=g.st ... ,he=!0;zt=g.st ... o,he=!0zt=g.st ... nerInfog.state ... nerInfog=g.returnif(zt== ... (160));zt===nullthrow Error(f(160));Error(f(160))f(160)rd(s,d, ... rn=nullrd(s,d,i)s!==nul ... n=null)(s.return=null)s.return=nulli.return=nullif(e.su ... siblinge.subtreeFlags&13886for(e=e ... siblinghd(e,t),e=e.siblinghd(e,t)var Ie=null;Ie=nullfunctio ... ge(t)}}{var n= ... ge(t)}}var n=t ... .flags;a=t.flagsswitch( ... ,ge(t)}me(e,t) ... turn));me(e,t) ... eturn))me(e,t)ge(t)a&4&&(X ... eturn))(Xn(3,t ... eturn))Xn(3,t, ... return)Xn(3,t,t.return)ni(3,t)Xn(5,t,t.return)me(e,t) ... (a))));me(e,t) ... t(a))))a&512&& ... eturn))(Kt||n= ... eturn))Kt||n== ... return)Kt||n===nullWe(n,n.return)a&64&&o ... t(a))))a&64&&on(t=t.up ... t(a))))t=t.upd ... at(a)))t!==nul ... at(a)))(a=t.ca ... at(a)))a=t.cal ... cat(a))a=t.callbacksa!==nul ... cat(a))(n=t.sh ... cat(a))n=t.sha ... ncat(a)n=t.sha ... llbackst.share ... llbackst.share ... ncat(a)n===nul ... ncat(a)n.concat(a)case 26 ... }break;var i=Ie;i=Ieif(me(e ... Props)}me(e,t) ... n)),a&4{var s= ... Props)}var s=n ... e:null;s=n!==n ... te:nulln!==nul ... te:nullif(a=t. ... dProps)a=t.mem ... ===nulla=t.memoizedStateif(a=== ... Props);if(t.st ... eNode);t.stateNode===null{t:{a=t ... Node=a}t:{a=t. ... s),a=s}{a=t.ty ... s),a=s}a=t.typ ... ent||i;a=t.typ ... ment||ii=i.ownerDocument||ii.ownerDocument||ii.ownerDocumente:switc ... 68,a))}switch( ... 68,a))}case"ti ... reak t;s=i.get ... s),a=s;s=i.get ... (s),a=ss=i.get ... le")[0]i.getEl ... le")[0]i.getEl ... title")i.getEl ... TagName(!s||s[ ... tle")))(!s||s[ ... prop"))!s||s[M ... mprop")!s||s[M ... 00/svg"!s||s[Ml]||s[te]!s||s[Ml]s[Ml]s.names ... 00/svg"s.namespaceURIs.hasAt ... mprop")s.hasAttributeitemprop(s=i.cr ... tle")))s=i.cre ... itle"))s=i.createElement(a)i.createElement(a)i.createElementi.head. ... itle"))i.head.insertBeforei.headi.query ... title")i.querySelectorhead > titlele(s,a,n)s[te]=tWt(s)var d=h ... ||""));d=h1("l ... f||""))h1("lin ... f||""))h1("lin ... ,i).geth1("link","href",i)a+(n.href||"")(n.href||"")n.href||""n.hrefif(d){f ... eak e}}{for(va ... eak e}}for(var ... reak e}gMt!G.extendG.extendft>Mt(d=Mt,Mt=ft,ft=d)d=Mt,Mt=ft,ft=dd=MtMt=ftft=dvar M=v ... (g,Mt);M=vo(g,ft)vo(g,ft)w=vo(g,Mt)vo(g,Mt)if(M&&w ... ge(Q))}M&&w&&( ... offset)M&&w(G.rang ... offset)G.range ... .offsetG.range ... =w.nodeG.range ... =M.nodeG.rangeCount!==1G.rangeCountG.ancho ... =M.nodeG.anchorNodeM.nodeG.ancho ... .offsetG.anchorOffsetM.offsetG.focusNode!==w.nodeG.focusNodew.nodeG.focus ... .offsetG.focusOffsetw.offset{var Q= ... ge(Q))}var Q=I ... ange();Q=I.createRange()I.createRange()I.createRangeQ.setSt ... nge(Q))Q.setSt ... offset)Q.setStartG.removeAllRanges()G.removeAllRangesft>Mt?( ... nge(Q))(G.addR ... ffset))G.addRa ... offset)G.addRange(Q)G.addRangeG.exten ... offset)(Q.setE ... nge(Q))Q.setEn ... ange(Q)Q.setEn ... offset)Q.setEndfor(I=[ ... lTop});G=G.parentNodeG.parentNodeI=[],G=gI=[]G.nodeT ... lTop});G.nodeT ... llTop})G.nodeType===1G.nodeTypeI.push( ... llTop})I.push{elemen ... ollTop}element:Gleft:G.scrollLeftG.scrollLefttop:G.scrollTopG.scrollTopfor(typ ... =q.top}g ... s=null;_.p=32> ... Ps=null_.p=32>n?32:n32>n?32:n32>nn=Psvar s=In,d=An;s=Ind=Anif(kt=0 ... (331));kt=0,hl ... &6)!==0throw Error(f(331));Error(f(331))f(331)var g=Ct;g=Ctif(Ct|= ... catch{}Ct|=4,y ... nction"yd(s.current)s.currentgd(s,s.current,d,n)Ct=gfi(0,!1)be.onPo ... berRootonPostC ... berRoot{be.onP ... (wl,s)}be.onPo ... t(wl,s){_.p=i, ... d(t,e)}_.p=i,H.T=a,Qd(t,e)Qd(t,e){e=Be(n ... _e(t))}e=Be(n, ... ,_e(t))e=Be(n,e)Be(n,e)e=js(t. ... de,e,2)js(t.stateNode,e,2)t=Yn(t,e,2)Yn(t,e,2)t!==nul ... ,_e(t))(Dl(t,2),_e(t))Dl(t,2),_e(t)Dl(t,2){if(t.t ... eturn}}if(t.ta ... return}Yd(t,t,n);Yd(t,t,n)for(;e! ... return}{if(e.t ... return}if(e.ta ... break}}{Yd(e,t,n);break}Yd(e,t,n);Yd(e,t,n){var a= ... break}}var a=e.stateNode;a=e.stateNodeif(type ... ;break}typeof ... has(a))e.type. ... omErrora.componentDidCatch(qn===n ... has(a))qn===nu ... .has(a)!qn.has(a)qn.has(a){t=Be(n ... ;break}t=Be(n, ... _e(a));t=Be(n, ... ,_e(a))t=Be(n,t)Be(n,t)n=L0(2)L0(2)a=Yn(e,n,2)Yn(e,n,2)a!==nul ... ,_e(a))(G0(n,a ... ,_e(a))G0(n,a, ... ),_e(a)G0(n,a,e,t)Dl(a,2)_e(a)functio ... (t,t))}{var a= ... (t,t))}var a=t.pingCache;a=t.pingCachet.pingCacheif(a=== ... (e,i));{a=t.pi ... t(e,i)}a=t.pin ... new Yg;a=t.pingCache=new Ygt.pingCache=new Ygnew Ygvar i=new Set;i=new Seta.set(e,i)i=a.get ... (e,i));i=a.get ... t(e,i))i=a.get(e)a.get(e)i===voi ... t(e,i))i===void 0(i=new ... t(e,i))i=new Set,a.set(e,i)i.has(n ... n(t,t))i.has(n)i.has(Js=!0, ... n(t,t))Js=!0,i ... en(t,t)Js=!0i.add(n)i.addt=Zg.bi ... ,t,e,n)Zg.bind(null,t,e,n)Zg.binde.then(t,t){var a= ... ,_e(t)}a!==nul ... ),_e(t)a!==nul ... lete(e)a.delete(e)a.deletet.pinge ... Lanes&nt.suspendedLanes&nt.warmLanes&=~njt===t& ... (dl=0))jt===t&&(Et&n)===njt===t(Et&n)===n(Et&n)Et&n(Gt===4 ... (dl=0))Gt===4| ... &(dl=0)Gt===4| ... ):Fs|=nGt===4| ... pe()-wuGt===3& ... pe()-wuGt===3& ... 0)===EtGt===3300>pe()-wupe()-wu(Ct&2)===0&&ml(t,0)Fs|=ndl===Et&&(dl=0)dl===Et(dl=0){e===0& ... _e(t))}e===0&& ... ,_e(t))e===0&&(e=Hr())(e=Hr())e=Hr()t=Aa(t,e)Aa(t,e)(Dl(t,e),_e(t))Dl(t,e),_e(t)Dl(t,e)functio ... d(t,n)}{var e= ... d(t,n)}var e=t ... te,n=0;e!==nul ... Ld(t,n)e!==nul ... ryLane)(n=e.retryLane)n=e.retryLanee.retryLaneLd(t,n){var n= ... d(t,n)}var n=0;switch( ... (314))}var a=t ... dState;i!==nul ... yLane);i!==nul ... ryLane)(n=i.retryLane)n=i.retryLanei.retryLanea=t.sta ... yCache;a=t.sta ... ryCachet.state ... ryCachedefault ... f(314))throw Error(f(314))Error(f(314))f(314)a!==nul ... Ld(t,n)functio ... c(t,e)}{return gc(t,e)}return gc(t,e)gc(t,e)var Bu= ... 1,kn=0;Bu=nullAl=nullaf=!1Uu=!1lf=!1kn=0functio ... ,Jg())}{t!==Al ... ,Jg())}t!==Al& ... 0,Jg())t!==Al& ... next=t)t!==Al& ... ===nullt!==Alt.next===null(Al===n ... next=t)Al===nu ... .next=tAl===nullBu=Al=tAl=tAl=Al.next=tAl.next=tAl.nextUu=!0af||(af=!0,Jg())(af=!0,Jg())af=!0,Jg()af=!0Jg()functio ... lf=!1}}{if(!lf ... lf=!1}}if(!lf& ... ;lf=!1}!lf&&Uu!lf{lf=!0; ... ;lf=!1}lf=!0;lf=!0do for( ... ile(n);for(var ... a.next}var n=!1,a=Bua=Bu{if(t!= ... a.next}if(t!== ... (a,s));{var i= ... (a,s))}var i=a ... gLanes;i=a.pendingLanesa.pendingLanesif(i=== ... ?s|2:0}var s=0;{var d= ... ?s|2:0}var d=a ... dLanes;d=a.suspendedLanesa.suspendedLanesg=a.pingedLanesa.pingedLaness=(1<<3 ... s?s|2:0s=(1<<3 ... t)+1)-1(1<<31-xe(42|t)+1)-1(1<<31-xe(42|t)+1)1<<31-xe(42|t)+131-xe(42|t)+131-xe(42|t)xe(42|t)42|ts&=i&~(d&~g)i&~(d&~g)~(d&~g)(d&~g)d&~g~gs=s&201 ... s?s|2:0s&20132 ... s?s|2:0s&201326741s&201326741|1s?s|2:0s|2s!==0&& ... d(a,s))(n=!0,Zd(a,s))n=!0,Zd(a,s)n=!0Zd(a,s)s=Et,s= ... (a,s));s=Et,s= ... d(a,s))s=Ets=Li(a, ... e!==-1)Li(a,a= ... e!==-1)a===jt?s:0a===jta.cance ... le!==-1a.cance ... !==nulla.cance ... gCommita.timeoutHandle!==-1(s&3)== ... d(a,s))(s&3)===0||Rl(a,s)(s&3)===0(s&3)s&3Rl(a,s)function kg(){Gd()}{Gd()}Gd()functio ... (kn=0)}{Uu=af= ... (kn=0)}Uu=af=!1;Uu=af=!1var t=0;kn!==0& ... (t=kn);kn!==0&&lA()&&(t=kn)kn!==0&&lA()kn!==0lA()(t=kn)t=knfor(var ... )),a=i}var e=p ... ll,a=Bue=pe(){var i= ... )),a=i}var i=a ... d(a,e);s=Xd(a,e)Xd(a,e)s===0?( ... 0)),a=is===0?( ... Uu=!0))s===0(a.next ... (Al=n))a.next= ... &(Al=n)a.next=nulln===nul ... .next=iBu=in.next=ii===null&&(Al=n)(Al=n)Al=n(n=a,(t ... Uu=!0))n=a,(t! ... (Uu=!0)(t!==0| ... (Uu=!0)(t!==0||(s&3)!==0)t!==0||(s&3)!==0(s&3)!==0(Uu=!0)kt!==0& ... &(kn=0)kt!==0& ... ||fi(t)kt!==0&&kt!==5fi(t)kn!==0&&(kn=0)(kn=0)functio ... null,2}{for(va ... null,2}for(var ... ,s&=~g}0g)break;z>gvar V=T ... orType;V=T.transferSizeT.transferSizeI=T.initiatorTypeT.initiatorTypeV&&_d(I ... (T-z)))V&&_d(I)_d(I)(T=T.re ... (T-z)))T=T.res ... /(T-z))T=T.responseEndT.responseEndd+=V*(T ... /(T-z))V*(T"u"functio ... (e)))}}{var a= ... (e)))}}var a=vl;a=vlif(a&&t ... d(e)))}a&&type ... ing"&&ea&&type ... string"typeof e=="string"{var i= ... d(e)))}var i=He(e);i=He(e)He(e)i='link ... ld(e)))i='link ... +i+'"]''link[r ... +i+'"]''link[r ... ef="'+i'link[r ... href="''link[rel="'+tlink[rel=""][href="typeof ... n+'"]')typeof n=="string"(i+='[c ... n+'"]')i+='[cr ... +n+'"]''[cross ... +n+'"]''[crossorigin="'+n[crossorigin="s1.has( ... ld(e)))s1.has(i)s1.has(s1.add ... ld(e)))s1.add( ... ild(e))s1.add(i)s1.addt={rel: ... href:e}{rel:t, ... href:e}rel:tcrossOrigin:nhref:ea.query ... ild(e))a.query ... ===nulla.querySelector(i)a.querySelector(e=a.cr ... ild(e))e=a.cre ... hild(e)e=a.cre ... "link")a.creat ... "link")a.createElementle(e,"link",t)Wt(e)a.head. ... hild(e)a.head.appendChilda.head{vn.D(t ... ,null)}vn.D(t) ... t,null)vn.D(t)vn.Df1("dns ... t,null)dns-prefetchfunctio ... ",t,e)}{vn.C(t ... ",t,e)}vn.C(t, ... t",t,e)vn.C(t,e)vn.Cf1("preconnect",t,e){vn.L(t ... (e)))}}vn.L(t,e,n);vn.L(t,e,n)vn.La&&t&&ea&&tvar i=' ... )+'"]';i='link ... e)+'"]''link[r ... e)+'"]''link[r ... '+He(e)'link[r ... ][as="'link[rel="preload"][as="e==="im ... )+'"]';e==="im ... t)+'"]'e==="im ... eSrcSete==="image"&&ne==="image"n.imageSrcSet(i+='[i ... +'"]'))i+='[im ... )+'"]')i+='[im ... t)+'"]''[image ... t)+'"]''[image ... SrcSet)[imagesrcset="He(n.imageSrcSet)typeof ... )+'"]')typeof n.imageSizesn.imageSizes(i+='[i ... )+'"]')i+='[im ... s)+'"]''[image ... s)+'"]''[image ... eSizes)[imagesizes="He(n.imageSizes)i+='[hr ... t)+'"]''[href="'+He(t)+'"]''[href="'+He(t)[href="He(t)var s=i;switch( ... =El(t)}s=yl(t);s=yl(t)yl(t)case"script":s=El(t)s=El(t)El(t)Ge.has( ... ld(e)))Ge.has(s)Ge.has(t=S({r ... ld(e)))t=S({re ... ild(e))t=S({re ... s:e},n)S({rel: ... s:e},n){rel:"p ... t,as:e}rel:"preload"href:e= ... oid 0:te==="im ... oid 0:tas:eGe.set(s,t)Ge.seta.query ... (mi(s))a.query ... (hi(s))a.query ... !==nulle==="st ... (hi(s))e==="style"hi(s)e==="sc ... (mi(s))e==="script"mi(s)functio ... d(a)}}}{vn.m(t ... d(a)}}}vn.m(t,e);vn.m(t,e)vn.mvar n=vl;n=vlif(n&&t ... ld(a)}}n&&t{var a= ... ld(a)}}var a=e ... ]',s=i;a=e&&ty ... script"e&&type ... script"e&&type ... string"typeof e.ase.asi='link ... t)+'"]''link[r ... t)+'"]''link[r ... '+He(t)'link[r ... '+He(a)link[rel="modulepreload"][as="He(a)case"audioworklet":audioworkletcase"paintworklet":paintworkletcase"serviceworker":serviceworkercase"sharedworker":sharedworkercase"worker":if(!Ge. ... ild(a)}!Ge.has ... ==null)!Ge.has(s)(t=S({r ... ==null)t=S({re ... ===nullt=S({re ... f:t},e)S({rel: ... f:t},e){rel:"m ... href:t}rel:"modulepreload"href:tn.query ... ===nulln.querySelector(i)n.querySelector{switch ... ild(a)}case"sc ... )returnif(n.qu ... )returnn.query ... (mi(s))a=n.cre ... hild(a)a=n.cre ... "link")n.creat ... "link")n.createElementle(a,"link",t)n.head. ... hild(a)n.head.appendChildn.headfunctio ... s,d)}}}{vn.S(t ... s,d)}}}vn.S(t,e,n);vn.S(t,e,n)vn.Sif(a&&t ... (s,d)}}{var i= ... (s,d)}}var i=G ... =yl(t);i=Ga(a) ... eStylesGa(a).h ... eStylesGa(a)e=e||"default";e=e||"default"e||"default"var d=i.get(s);d=i.get(s)i.get(s)i.getif(!d){ ... t(s,d)}{var g= ... t(s,d)}var g={ ... :null};g={load ... d:null}{loadin ... d:null}loading:0preload:nullif(d=a. ... d,e,a)}d=a.que ... (hi(s))g.loading=5;g.loading=5g.loading{t=S({r ... d,e,a)}t=S({re ... f(t,n);t=S({re ... bf(t,n)t=S({re ... ":e},n)S({rel: ... ":e},n){rel:"s ... nce":e}rel:"stylesheet""data-precedence":e(n=Ge.g ... bf(t,n)(n=Ge.get(s))n=Ge.get(s)Ge.get(s)Ge.getbf(t,n)var T=d ... link");T=d=a.c ... "link")d=a.cre ... "link")Wt(T),l ... (d,e,a)Wt(T)le(T,"link",t)T._p=ne ... ror=V})T._pnew Pro ... ror=V})functio ... rror=V}{T.onlo ... rror=V}T.onloa ... error=VT.onload=zT.onloadT.onerror=VT.onerrorT.addEv ... ng|=1})T.addEventListenerfunctio ... ing|=1}{g.loading|=1}g.loading|=1T.addEv ... ng|=2})functio ... ing|=2}{g.loading|=2}g.loading|=2g.loading|=4Gu(d,e,a)d={type ... et(s,d)d={type ... tate:g}{type:" ... tate:g}type:"stylesheet"instance:dcount:1state:gi.set(s,d)i.setfunctio ... i,s))}}{vn.X(t ... i,s))}}vn.X(t,e);vn.X(t,e)vn.Xif(n&&t ... (i,s))}{var a= ... (i,s))}var a=G ... get(i);a=Ga(n) ... ScriptsGa(n).h ... ScriptsGa(n)i=El(t)s=a.get(i)a.get(i)s||(s=n ... t(i,s))(s=n.qu ... t(i,s))s=n.que ... et(i,s)s=n.que ... (mi(i))n.query ... (mi(i))mi(i)s||(t=S ... ild(s))(t=S({s ... ild(s))t=S({sr ... hild(s)t=S({sr ... :!0},e)S({src: ... :!0},e){src:t,async:!0}src:tasync:!0(e=Ge.g ... xf(t,e)(e=Ge.get(i))e=Ge.get(i)Ge.get(i)xf(t,e)s=n.cre ... cript")n.creat ... cript")le(s,"link",t)n.head. ... hild(s)s={type ... e:null}{type:" ... e:null}type:"script"instance:sstate:nulla.set(i,s){vn.M(t ... i,s))}}vn.M(t,e);vn.M(t,e)vn.Mt=S({sr ... le"},e)S({src: ... le"},e){src:t, ... odule"}functio ... 4,t))}}{var i= ... 4,t))}}var i=( ... ):null;i=(i=ot ... i):null(i=ot.c ... i):null(i=ot.current)i=ot.currentLu(i)if(!i)t ... (446));throw Error(f(446));Error(f(446))f(446)switch( ... 44,t))}case"ti ... n null;case"st ... :null};return ... :null};typeof ... e:null}typeof n.precedencen.precedencetypeof n.href(e=yl(n ... ,a)),a)e=yl(n. ... e,a)),ae=yl(n.href)yl(n.href)n=Ga(i) ... eStylesGa(i).h ... eStylesGa(i)a=n.get(e)n.get(e)n.geta||(a={ ... t(e,a))(a={typ ... t(e,a))a={type ... et(e,a)a={type ... e:null}type:"style"n.set(e,a)n.settype:"void"case"li ... n null;if(n.re ... turn d}n.rel== ... string"n.rel==="stylesheet"{t=yl(n ... turn d}t=yl(n.href);t=yl(n.href)var s=G ... get(t);s=Ga(i) ... eStylesd=s.get(t)s.get(t)if(d||( ... 8,""));d||(i=i ... ===nulld||(i=i ... tate)))(i=i.ow ... tate)))i=i.own ... state))d={type ... :null}}{type:" ... :null}}state:{ ... d:null}s.set(t,d)s.set(s=i.qu ... ding=5)(s=i.qu ... &&!s._p(s=i.qu ... hi(t)))s=i.que ... (hi(t))i.query ... (hi(t))hi(t)!s._ps._p(d.inst ... ding=5)d.insta ... ading=5d.instance=sd.instanced.state.loading=5d.state.loadingd.stateGe.has( ... state))Ge.has(t)(n={rel ... state))n={rel: ... .state)n={rel: ... Policy}{rel:"p ... Policy}as:"style"href:n.hrefcrossOr ... sOriginintegri ... tegrityn.integritymedia:n.median.mediahrefLang:n.hrefLangn.hrefLangreferre ... rPolicyn.referrerPolicyGe.set(t,n)s||pA(i,t,n,d.state)pA(i,t,n,d.state)e&&a===nullthrow E ... 8,""));Error(f(528,""))f(528,"")return dif(e&&a ... 9,""));e&&a!==nullthrow E ... 9,""));Error(f(529,""))f(529,"")case"sc ... :null};e=n.asy ... e:null}e=n.asyncn.asyncn=n.srctypeof ... ing"&&etypeof e!="function"typeof e!="symbol"(e=El(n ... ,a)),a)e=El(n) ... e,a)),ae=El(n)El(n)n=Ga(i) ... ScriptsGa(i).h ... Scriptsdefault ... 444,t))throw E ... 444,t))Error(f(444,t))f(444,t)functio ... t)+'"'}{return ... t)+'"'}return' ... (t)+'"''href="'+He(t)+'"''href="'+He(t)href="functio ... +t+"]"}{return ... +t+"]"}return' ... '+t+"]"'link[r ... '+t+"]"'link[r ... t"]['+t'link[r ... eet"]['link[rel="stylesheet"][{return ... null})}return ... :null})S({},t, ... :null}){"data- ... e:null}"data-p ... cedencet.precedenceprecedence:nullfunctio ... ld(e))}{t.quer ... ld(e))}t.query ... ild(e))t.query ... +e+"]")t.querySelector'link[r ... '+e+"]"'link[r ... e"]['+e'link[r ... yle"]['link[rel="preload"][as="style"][a.loading=1a.loading(e=t.cr ... ild(e))e=t.cre ... hild(e)e=t.cre ... "link")t.creat ... "link")t.createElementa.preload=ea.preloade.addEv ... ng|=1})e.addEventListener{return ... ing|=1}return a.loading|=1a.loading|=1e.addEv ... ng|=2}){return ... ing|=2}return a.loading|=2a.loading|=2le(e,"link",n)t.head. ... hild(e)t.head.appendChildt.headfunctio ... )+'"]'}{return ... )+'"]'}return' ... t)+'"]''[src="'+He(t)+'"]''[src="'+He(t)[src="functio ... nc]"+t}{return ... nc]"+t}return" ... ync]"+t"script[async]"+tscript[async]functio ... stance}{if(e.c ... stance}if(e.co ... ce,t));e.count ... ===nulle.count++e.counte.instance===nulle.instanceswitch( ... type))}case"st ... ance=a;var a=t ... +'"]');a=t.que ... )+'"]')t.query ... )+'"]')'style[ ... f)+'"]''style[ ... n.href)style[data-href~="He(n.href)if(a)re ... t(a),a;return ... t(a),a;e.instance=a,Wt(a),ae.instance=avar i=S ... null});i=S({}, ... :null})S({},n, ... :null})"data-href":n.hrefdata-hrefhref:nullreturn ... ance=a;a=(t.ow ... tance=aa=(t.ow ... style")(t.owne ... style")(t.owne ... Element(t.ownerDocument||t)t.ownerDocument||tle(a,"style",i)Gu(a,n.precedence,t)case"st ... ance=s;i=yl(n.href);i=yl(n.href)var s=t ... hi(i));s=t.que ... (hi(i))t.query ... (hi(i))hi(i)if(s)re ... t(s),s;return ... t(s),s;e.state ... Wt(s),se.state.loading|=4e.instance=sa=o1(n) ... ,Wt(s);a=o1(n) ... ),Wt(s)a=o1(n)o1(n)(i=Ge.g ... bf(a,i)(i=Ge.get(i))i=Ge.get(i)bf(a,i)s=(t.ow ... "link")(t.owne ... "link")var d=s;return ... ance=s;d._p=ne ... tance=sd._p=ne ... ror=T})d._pnew Pro ... ror=T})functio ... rror=T}{d.onlo ... rror=T}d.onloa ... error=Td.onload=gd.onloadd.onerror=Td.onerrorle(s,"link",a)Gu(s,n.precedence,t)case"sc ... nce=i);return ... nce=i);s=El(n. ... ance=i)s=El(n.src)El(n.src)(i=t.qu ... ance=i)(i=t.qu ... mi(s)))i=t.que ... (mi(s))t.query ... (mi(s))(e.inst ... t(i),i)e.instance=i,Wt(i),ie.instance=iWt(i)(a=n,(i ... ance=i)a=n,(i= ... tance=i(i=Ge.g ... f(a,i))(i=Ge.get(s))i=Ge.get(s)(a=S({},n),xf(a,i))a=S({},n),xf(a,i)a=S({},n)xf(a,i)t=t.ownerDocument||ti=t.cre ... cript")t.creat ... cript")le(i,"link",a)t.head. ... hild(i)case"vo ... n null;default ... .type))throw E ... .type))Error(f(443,e.type))f(443,e.type)e.type= ... ce,t));e.type= ... nce,t))e.type= ... &4)===0e.type= ... esheet"(e.stat ... &4)===0(a=e.in ... nce,t))a=e.ins ... ence,t)a=e.instancereturn e.instancefunctio ... hild))}{for(va ... hild))}for(var ... )break}var a=n ... s=i,d=0a=n.que ... ence]')n.query ... ence]')'link[r ... dence]'link[rel="stylesheet"][data-precedence],style[data-precedence][rel="stylesheet"][data-precedence]a-p,stylei=a.len ... 1]:nulla.lengt ... 1]:nulla[a.length-1]{var g= ... )break}if(g.da ... i)breakg.datas ... nce===eg.dataset.precedenceg.datasetif(s!==i)breaks?s.par ... Child))s.paren ... ibling)s.paren ... tBefores.parentNode(e=n.no ... Child))e=n.nod ... tChild)e=n.nod ... .head:nn.nodeT ... .head:ne.inser ... tChild)e.insertBeforee.firstChildfunctio ... title)}{t.cros ... title)}t.cross ... .title)t.cross ... Origin)t.crossOrigin==nullt.crossOrigin(t.cros ... Origin)t.cross ... sOrigine.crossOrigint.refer ... Policy)t.refer ... y==nullt.referrerPolicy(t.refe ... Policy)t.refer ... rPolicye.referrerPolicyt.title ... .title)t.title==nullt.title(t.title=e.title)t.title=e.titlefunctio ... grity)}{t.cros ... grity)}t.cross ... egrity)t.integ ... egrity)t.integrity==nullt.integrity(t.inte ... egrity)t.integ ... tegritye.integrityvar Xu=null;functio ... turn a}{if(Xu= ... turn a}if(Xu== ... (n,a));Xu===null{var a= ... t(n,a)}var a=n ... ew Map;a=new Mapi=Xu=new MapXu=new Mapi.set(n,a)i=Xu,a= ... (n,a));i=Xu,a= ... t(n,a))i=Xua=i.get(n)i.get(n)a||(a=n ... t(n,a))(a=new ... t(n,a))a=new Map,i.set(n,a)if(a.ha ... turn a;a.has(t)a.hasfor(a.s ... ,[s])}}a.set(t ... (t),i=0a.set(t,null)n=n.get ... Name(t)n.getEl ... Name(t)n.getEl ... TagName{var s= ... ,[s])}}var s=n[i];s=n[i]if(!(s[ ... d,[s])}!(s[Ml] ... 00/svg"!(s[Ml] ... sheet")(s[Ml]| ... sheet")s[Ml]||s[te]t==="li ... esheet"t==="link"s.getAt ... esheet"{var d= ... d,[s])}var d=s ... e)||"";d=s.get ... (e)||""s.getAt ... (e)||""s.getAttribute(e)d=t+d;d=t+dt+dvar g=a.get(d);g=a.get(d)a.get(d)g?g.pus ... (d,[s])g.push(s)g.pusha.set(d,[s]){t=t.ow ... :null)}t=t.own ... ):null)t.head. ... ):null)t.head.insertBeforee==="ti ... "):nulle==="title"t.query ... title"){if(n== ... turn!1}if(n=== ... turn!1;n===1|| ... p!=nulle.itemProp!=nulle.itemPropcase"ti ... turn!0;case"st ... turn!0;if(type ... )break;typeof ... ef===""typeof e.precedencee.precedencetypeof e.hrefe.hrefe.href===""case"li ... turn!0}typeof ... onErrortypeof ... .onLoadtypeof e.rele.rele.onLoade.onErrorcase"st ... ==null;return ... ==null;t=e.dis ... t==nullt=e.disablede.disabledtypeof ... t==nullcase"sc ... eturn!0if(e.as ... eturn!0e.async ... string"e.async ... &&e.srce.async ... onErrore.async ... .onLoade.async ... symbol"e.async ... nction"e.asynctypeof e.async!e.onLoad!e.onErrore.srctypeof e.srcfunctio ... )===0)}{return ... )===0)}return! ... 3)===0)!(t.typ ... 3)===0)(t.type ... 3)===0)t.type= ... &3)===0t.type= ... esheet"(t.stat ... &3)===0(t.state.loading&3)t.state.loading&3t.state.loadingfunctio ... ",n))}}{if(n.t ... ",n))}}if(n.ty ... r",n))}n.type= ... &4)===0n.type= ... s!==!1)n.type= ... esheet"(typeof ... s!==!1)typeof ... es!==!1typeof a.mediaa.mediamatchMe ... es!==!1matchMe ... matchesmatchMedia(a.media)(n.stat ... &4)===0(n.state.loading&4)n.state.loading&4n.state.loading{if(n.i ... r",n))}if(n.in ... ance=s}n.instance===nulln.instance{var i= ... ance=s}var i=y ... hi(i));i=yl(a.href)yl(a.href)s=e.que ... (hi(i))e.query ... (hi(i))e.querySelectorif(s){e ... return}{e=s._p ... return}e=s._p, ... ,Wt(s);e=s._p, ... s,Wt(s)e=s._pe!==nul ... n(t,t))(t.coun ... n(t,t))t.count ... en(t,t)t.count++t.countt=Vu.bind(t)Vu.bind(t)Vu.bindn.state.loading|=4n.instance=ss=e.own ... ,Wt(s);s=e.own ... ),Wt(s)s=e.ownerDocument||ee.ownerDocument||ea=o1(a)o1(a)s=s.cre ... "link")s.creat ... "link")s.createElementt.style ... or",n))t.style ... ew Map)t.stylesheets===nullt.stylesheets(t.styl ... ew Map)t.style ... new Mapt.style ... et(n,e)t.stylesheets.set(e=n.st ... or",n))(e=n.st ... &3)===0(e=n.state.preload)e=n.state.preloadn.state.preload(n.stat ... &3)===0(n.state.loading&3)n.state.loading&3(t.coun ... or",n))t.count ... ror",n)n=Vu.bind(t)e.addEv ... oad",n)e.addEv ... ror",n)var Sf=0;Sf=0functio ... }:null}{return ... }:null}return ... }}:nullt.style ... }}:nullt.style ... sheets)t.style ... unt===0t.count===0qu(t,t.stylesheets)0Sf?50:800t.imgBytes>Sfreturn ... out(i)}t.unsus ... out(i)}t.unsuspend=nfunctio ... out(i)}{t.unsu ... out(i)}t.unsus ... eout(i)clearTimeout(a)clearTimeout(i)functio ... ,t()}}}{if(thi ... ,t()}}}if(this ... l,t()}}this.co ... Images)this.count--this.countthis.count===0(this.i ... Images)this.im ... rImagesthis.imgCount===0this.imgCount!this.w ... rImagesthis.wa ... rImages{if(thi ... l,t()}}if(this ... ll,t()}this.stylesheetsqu(this ... heets);qu(this ... sheets)this.unsuspend{var t= ... ll,t()}var t=t ... uspend;t=this.unsuspendthis.un ... ull,t()this.unsuspend=nullvar Zu=null;Zu=nullfunctio ... ll(t))}{t.styl ... ll(t))}t.style ... all(t))t.stylesheets=nullt.unsus ... all(t))t.unsuspend!==null(t.coun ... all(t))t.count ... call(t)Zu=new Mape.forEach(TA,t)Vu.call(t)Vu.callfunctio ... ng|=4}}{if(!(e ... ng|=4}}if(!(e. ... ing|=4}!(e.state.loading&4){var n= ... ing|=4}var n=Zu.get(t);n=Zu.get(t)Zu.get(t)Zu.getif(n)va ... ull,a)}var a=n.get(null);a=n.get(null)n.get(null){n=new ... ull,a)}n=new M ... t(t,n);n=new M ... et(t,n)n=new MapZu.set(t,n)Zu.setfor(var ... ),a=d)}s{con ... t?!o:o}{const ... t?!o:o}const o ... .name);o=c.pro ... r.name)c.proje ... r.name)c.project.includesc.projectr.namereturn r.not?!o:or.not?!o:or.not{if(!!! ... turn!1}if(!!!t ... eturn!1!this.s ... ?!o:o})this.st ... ?!o:o})this.status.findo=c.sta ... r.name)c.statu ... r.name)c.status.includesc.statusif(c.st ... turn!1;c.status==="skipped"return! ... !o:o}))!(this. ... !o:o}))(this.t ... !o:o}))this.te ... ?!o:o})this.te ... r.not})!this.t ... r.not})this.text.everyr=>{if( ... !r.not}{if(c.t ... !r.not}if(c.te ... !r.not;c.text. ... r.name)c.text.includesc.textreturn!r.not;!r.notconst[o ... t(":");[o,h,v] ... it(":")[o,h,v]r.name.split(":")r.name.splitreturn ... !!r.notc.file. ... !!r.notc.file. ... mn===v)c.file. ... ine===hc.file.includes(o)c.file.includesc.filec.line===hc.line(v===vo ... mn===v)v===voi ... umn===vv===void 0c.column===vc.column!!r.notthis.la ... ?!o:o})!this.l ... ?!o:o})this.labels.everyo=c.lab ... r.name)c.label ... r.name)c.labels.includesc.labelsthis.an ... ?!o:o})!this.a ... ?!o:o})this.an ... s.everyconst o ... name));o=c.ann ... .name))c.annot ... .name))c.annotations.somec.annotationsh=>h.in ... r.name)h.includes(r.name)h.includesconst H ... lues");H2=Symb ... alues")Symbol( ... alues")searchValuesfunctio ... 2]=f,f}{const ... 2]=f,f}const u=l[H2];u=l[H2]l[H2]if(u)return u;return u;let c="passed";c="passed"passedl.outco ... pped");l.outco ... ipped")l.outco ... ailed")l.outco ... pected"l.outcome(c="failed")c="failed"failedl.outco ... flaky")l.outcome==="flaky"(c="flaky")c="flaky"l.outco ... kipped"(c="skipped")c="skipped"const f ... ())})};f={text ... e())})}{text:( ... e())})}text:(c ... rCase()(c+" "+ ... rCase()(c+" "+ ... werCase(c+" "+ ... .title)c+" "+l ... l.titlec+" "+l ... ")+" "c+" "+l ... in(" ")c+" "+l ... ile+" "c+" "+l ... on.filec+" "+l ... ame+" "c+" "+l.projectNamec+" "l.projectNamel.tags.join(" ")l.tags.joinl.tagsl.location.filel.locationl.path.join(" ")l.path.joinl.pathl.titleproject ... rCase()l.proje ... rCase()l.proje ... werCasestatus:cfile:l.location.fileline:St ... n.line)String( ... n.line)l.location.linecolumn: ... column)String( ... column)l.location.columnlabels: ... Case())l.tags. ... Case())l.tags.mapr=>r.toLowerCase()r.toLowerCase()r.toLowerCaseannotat ... se())})l.annot ... se())})l.annotations.mapl.annotationsr=>{var ... ase())}{var o; ... ase())}var o;return ... Case())r.type. ... Case())r.type. ... e()+"="r.type.toLowerCase()r.type.toLowerCaser.type((o=r.d ... Case())(o=r.de ... rCase()(o=r.de ... )==null(o=r.description)o=r.descriptionr.descriptiono.toLoc ... rCase()o.toLocaleLowerCasereturn l[H2]=f,fl[H2]=f,fl[H2]=fconst Z ... \S+)/g;Z5=/("[ ... |\S+)/g/("[^"] ... |\S+)/g("[^"]*"|"[^"]*$|\S+)"[^"]*"|"[^"]*$|\S+"[^"]*"[^"]*[^"]"[^"]*$\S+\Sfunctio ... "#?"+f}{const ... "#?"+f}const f ... 1):A});f=new U ... rams(l)new URL ... rams(l)o=[...( ... -1):A})[...(l. ... -1):A})[...(l. ... 5)].map[...(l. ... ll(Z5)]...(l.g ... All(Z5)(l.get( ... All(Z5)(l.get( ... atchAll(l.get("q")??"")l.get("q")??""l.get("q")l.gety=>{con ... h-1):A}{const ... h-1):A}const A=y[0];A=y[0]return ... th-1):AA.start ... th-1):AA.start ... ength>1A.start ... th('"')A.startsWith('"')A.endsWith('"')A.endsWithA.slice ... ngth-1)A.length-1if(c)re ... "#?"+f;return ... "#?"+f;f.set(" ... ,"#?"+ff.set(" ... .o,u]))f.setN2(o.in ... ..o,u])o.inclu ... ...o,u]o.includes(u)o.includeso.filter(y=>y!==u)o.filtery=>y!==uy!==u[...o,u]...o"#?"+f#?let h;u.start ... h="@");u.start ... (h="@")u.start ... h="s:")u.startsWith("s:")u.startsWith(h="s:")h="s:"u.start ... h="p:")u.startsWith("p:")(h="p:")h="p:"u.startsWith("@")(h="@")h="@"const v ... th(h));v=o.fil ... ith(h))o.filte ... ith(h))y=>!y.startsWith(h)!y.startsWith(h)y.startsWith(h)y.startsWithreturn ... ,"#?"+fv.push( ... ,"#?"+fv.push(u)v.pushf.set("q",N2(v))N2(v)functio ... trim()}{return ... trim()}return ... .trim()l.map(u ... .trim()l.map(u ... ").triml.map(u ... in(" ")l.map(u ... u).joinl.map(u ... u}"`:u)l.mapu=>/\s/ ... {u}"`:u/\s/.te ... {u}"`:u/\s/.test(u)/\s/.test`"${u}"`const q ... )})]});q5=()=> ... t:16}})()=>m.j ... t:16}})m.jsx(" ... t:16}})m.jsx{classN ... ht:16}}className:"octicon"octiconstyle:{ ... ght:16}{width:16,height:16}width:16height:16I5=()=> ... 4z"})})()=>m.j ... 4z"})})m.jsx(" ... 4z"})}){"aria- ... 04z"})}"aria-hidden":"true"aria-hiddenheight:"16"viewBox:"0 0 16 16"0 0 16 16version:"1.1"width:"16""data-v ... :"true""data-v ... ponent"data-view-componentclassNa ... h-icon""octico ... h-icon"octicon subnav-search-iconchildre ... .04z"})m.jsx(" ... .04z"}){fillRu ... 3.04z"}fillRule:"evenodd"evenoddd:"M11. ... -3.04z""M11.5 ... -3.04z"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04zM115 7a4499 4499 0 11-8998 0A4499 0 01115 7zm-82 474a6 6 0 11106-106l304 304a75 0 11-106 106l-304-304zNi=()=> ... 0z"})})()=>m.j ... 0z"})})m.jsx(" ... 0z"})}){"aria- ... 0z"})}classNa ... -muted""octico ... -muted"octicon color-fg-mutedchildre ... 6 0z"})m.jsx(" ... 6 0z"}){fillRu ... 06 0z"}d:"M12. ... .06 0z""M12.78 ... .06 0z"M12.78 6.22a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06 0L3.22 7.28a.75.75 0 011.06-1.06L8 9.94l3.72-3.72a.75.75 0 011.06 0zM1278 622a75 0 010 106l-425 425a75 0 01-106 0L322 728a75 0 01106L8 994l372-372a06 0zCl=()=> ... 6z"})})()=>m.j ... 6z"})})m.jsx(" ... 6z"})}){"aria- ... 06z"})}childre ... .06z"})m.jsx(" ... .06z"}){fillRu ... 1.06z"}d:"M6.2 ... -1.06z""M6.22 ... -1.06z"M6.22 3.22a.75.75 0 011.06 0l4.25 4.25a.75.75 0 010 1.06l-4.25 4.25a.75.75 0 01-1.06-1.06L9.94 8 6.22 4.28a.75.75 0 010-1.06zM622 306 0l406L994 8 622 475 0 010-106zqh=()=> ... 5z"})})()=>m.j ... 5z"})})m.jsx(" ... 5z"})}){"aria- ... .5z"})}classNa ... arning""octico ... arning"octicon color-text-warningchildre ... 2.5z"})m.jsx(" ... 2.5z"}){fillRu ... -2.5z"}d:"M8.2 ... v-2.5z""M8.22 ... v-2.5z"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z22 1754a25 0 00-44 0L1698 13132a25 0 00368h12164a22-368L8754zm-1763-707c659-1234 2427-1234 3086 0l6082 11378A175 175 0 0114082 15H1918a1543-2575L6457 1047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-25-575 0 00-15 0v25a75 0 0015 0v-25zIh=()=> ... 5z"})}){"aria- ... 25z"})}childre ... .25z"})m.jsx(" ... .25z"}){fillRu ... 2.25z"}d:"M3.5 ... -2.25z""M3.5 1 ... -2.25z"M3.5 1.75a.25.25 0 01.25-.25h3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h2.086a.25.25 0 01.177.073l2.914 2.914a.25.25 0 01.073.177v8.586a.25.25 0 01-.25.25h-.5a.75.75 0 000 1.5h.5A1.75 1.75 0 0014 13.25V4.664c0-.464-.184-.909-.513-1.237L10.573.513A1.75 1.75 0 009.336 0H3.75A1.75 1.75 0 002 1.75v11.5c0 .649.353 1.214.874 1.515a.75.75 0 10.752-1.298.25.25 0 01-.126-.217V1.75zM8.75 3a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM6 5.25a.75.75 0 01.75-.75h.5a.75.75 0 010 1.5h-.5A.75.75 0 016 5.25zm2 1.5A.75.75 0 018.75 6h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 6.75zm-1.25.75a.75.75 0 000 1.5h.5a.75.75 0 000-1.5h-.5zM8 9.75A.75.75 0 018.75 9h.5a.75.75 0 010 1.5h-.5A.75.75 0 018 9.75zm-.75.75a1.75 1.75 0 00-1.75 1.75v3c0 .414.336.75.75.75h2.5a.75.75 0 00.75-.75v-3a1.75 1.75 0 00-1.75-1.75h-.5zM7 12.25a.25.25 0 01.25-.25h.5a.25.25 0 01.25.25v2.25H7v-2.25z5 175a25 0 0125-25h3a75 0 000 15h75 0 000-15h2086a073l2914 2914a073177v8586a25 0 01-25h-5A175 0 0014 1325V4664c0-464-184-909-513-1237L10573513A175 0 009336 0H375A175 0 002 175v115c0 649353 1874 1515a75 0 10752-1298126-217V175zM875 3a5h-5zM6 575 0 0175-75h5A75 0 016 525zm2 175 0 01875 6h75 0 018 675zm-15zM8 975A75 9h75 0 018 975zm-75a175v3c0 41433675h275 0 0075v-3a175-175h-5zM7 1225h25v225H7v-225zKh=()=> ... 6z"})}){classN ... 06z"})}classNa ... danger""octico ... danger"octicon color-text-dangerd:"M3.7 ... -1.06z""M3.72 ... -1.06z"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z72 306 0L8 622-375 0 11106 8l306L694 8 372 478akh=()=> ... 0z"})})classNa ... uccess""octico ... uccess"octicon color-icon-successd:"M13. ... .06 0z""M13.78 ... .06 0z"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0zM1378 406l-725 706 0L222 906L6 1094l672-6Jh=()=> ... 5z"})}){"aria- ... 95z"})}octicon octicon-clock color-text-dangerchildre ... .95z"})m.jsx(" ... .95z"}){fillRu ... 2.95z"}d:"M5.7 ... -2.95z""M5.75. ... -2.95z"M5.75.75A.75.75 0 016.5 0h3a.75.75 0 010 1.5h-.75v1l-.001.041a6.718 6.718 0 013.464 1.435l.007-.006.75-.75a.75.75 0 111.06 1.06l-.75.75-.006.007a6.75 6.75 0 11-10.548 0L2.72 5.03l-.75-.75a.75.75 0 011.06-1.06l.75.75.007.006A6.718 6.718 0 017.25 2.541a.756.756 0 010-.041v-1H6.5a.75.75 0 01-.75-.75zM8 14.5A5.25 5.25 0 108 4a5.25 5.25 0 000 10.5zm.389-6.7l1.33-1.33a.75.75 0 111.061 1.06L9.45 8.861A1.502 1.502 0 018 10.75a1.5 1.5 0 11.389-2.95z75 0 0165 0h3a75v1l-001041a6718 6718 0 013464 1435l007-00606l-007a675 675 0 11-10548 0L272 503l-06l007006A6718 0 01725 2541a756756 0 010-041v-1H675 0 01-75zM8 145A525 525 0 108 4a525 0 000 105zm389-67l133-133a061 145 8861A1502 1502 0 018 105 0 11389-295zK5=()=> ... 2Z"})})()=>m.j ... 2Z"})})m.jsx(" ... 2Z"})}){"aria- ... 42Z"})}childre ... 042Z"})m.jsx(" ... 042Z"}){d:"M8 ... .042Z"}d:"M8 0 ... 1.042Z""M8 0a8 ... 1.042Z"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm9.78-2.22-5.5 5.5a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l5.5-5.5a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042ZM8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM15 8a65 65 0 1 0 13 0 65 0 0 0-13 0Zm978-222-55 5749749 0 0 1-1275-326749 0 0 1 215-734l55-5751751 0 0 1 1042018751 0 0 1 018 1042Zk5=()=> ... 6Z"})})()=>m.j ... 6Z"})})m.jsx(" ... 6Z"})}){classN ... 26Z"})}viewBox:"0 0 48 48"0 0 48 48width:"20"height:"20"childre ... v26Z"})m.jsx(" ... v26Z"}){xmlns: ... 7v26Z"}xmlns:" ... 00/svg"d:"M11. ... H7v26Z""M11.85 ... H7v26Z"M11.85 32H36.2l-7.35-9.95-6.55 8.7-4.6-6.45ZM7 40q-1.2 0-2.1-.9Q4 38.2 4 37V11q0-1.2.9-2.1Q5.8 8 7 8h34q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9Zm0-29v26-26Zm34 26V11H7v26Z85 32H362l-735-995-655 87-46-645ZM7 40q-12 0-21-9Q4 382 4 37V11q0-19-21Q58 8 7 8h34q12 0 29 21v26q0 12-9Zm0-29v26-26Zm34 26V11H7v26ZJ5=()=> ... 6Z"})}){xmlns: ... 1v26Z"}d:"m19. ... 11v26Z""m19.6 ... 11v26Z"m19.6 32.35 13-8.45-13-8.45ZM7 40q-1.2 0-2.1-.9Q4 38.2 4 37V11q0-1.2.9-2.1Q5.8 8 7 8h34q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9Zm0-3h34V11H7v26Zm0 0V11v26Zm196 3235 13-845-13-89Zm0-3h34V11H7v26Zm0 0V11v26ZF5=()=> ... 9Z"})})()=>m.j ... 9Z"})})m.jsx(" ... 9Z"})}){classN ... .9Z"})}childre ... 1.9Z"})m.jsx(" ... 1.9Z"}){xmlns: ... .1.9Z"}d:"M7 3 ... 2.1.9Z""M7 37h ... 2.1.9Z"M7 37h9.35V11H7v26Zm12.35 0h9.3V11h-9.3v26Zm12.3 0H41V11h-9.35v26ZM7 40q-1.2 0-2.1-.9Q4 38.2 4 37V11q0-1.2.9-2.1Q5.8 8 7 8h34q1.2 0 2.1.9.9.9.9 2.1v26q0 1.2-.9 2.1-.9.9-2.1.9ZM7 37h935V11H7v26Zm1235 0h93V11h-93v26Zm123 0H41V11h-935v26ZM7 40q-19ZW5=()=> ... Z"})]})()=>m.j ... Z"})]})m.jsxs( ... Z"})]})m.jsxs{classN ... 5Z"})]}childre ... 25Z"})][m.jsx( ... 25Z"})]m.jsx(" ... .25Z"}){d:"M0 ... 4.25Z"}d:"M0 6 ... 14.25Z""M0 6.7 ... 14.25Z"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25ZM0 675C0 5784784 5 175 5h175 0 0 1 0 15h-125 0 0 0-25v725h725 0 0 0 25v-175 0 0 1 15 0v175 0 0 1 925 16h-775 0 0 1 0 1425Z{d:"M5 ... -.25Z"}d:"M5 1 ... 5-.25Z""M5 1.7 ... 5-.25Z"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM5 175C5 784 5784 0 675 0h75C15216 0 16 784 16 175v775 0 0 1 1425 11h-775 0 0 1 5 925Zm125v-7_5=()=> ... 8Z"})})()=>m.j ... 8Z"})})m.jsx(" ... 8Z"})}){classN ... 8Z"})}classNa ... ttings""octico ... ttings"octicon octicon-settingschildre ... 5 8Z"})m.jsx(" ... 5 8Z"}){d:"M8 ... .5 8Z"}d:"M8 0 ... 9.5 8Z""M8 0a8 ... 9.5 8Z"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8ZFh=({va ... en:r})}({value ... en:r})}{value:l}value:l{const[ ... en:r})}const[u ... ):W5();[u,c]=c ... "copy")[u,c]ct.useState("copy")ct.useStatef=ct.us ... )},[l])ct.useC ... )},[l])ct.useCallback()=>{na ... ss")})}{naviga ... ss")})}navigat ... oss")})navigat ... l).thennavigat ... Text(l)navigat ... iteTextnavigator.clipboard()=>{c( ... },3e3)}{c("che ... },3e3)}c("chec ... )},3e3)c("check")checksetTime ... )},3e3)()=>{c("copy")}{c("copy")}c("copy")3000()=>{c("cross")}{c("cross")}c("cross")cross[l]r=u===" ... ():W5()u==="ch ... ():W5()u==="check"kh()u==="cr ... ():W5()u==="cross"Kh()W5()return ... ren:r})m.jsx(" ... ren:r}){classN ... dren:r}classNa ... y-icon"copy-icontitle:" ... pboard"Copy to clipboard"aria-l ... pboard"aria-labelonClick:fchildren:rSr=({ch ... })})]})({child ... })})]}){children:l,value:u}children:lvalue:um.jsxs( ... })})]}){classN ... u})})]}classNa ... tainer""copy-v ... tainer"copy-value-containerchildre ... :u})})][l,m.js ... :u})})]m.jsx(" ... e:u})}){classN ... ue:u})}"copy-b ... tainer"copy-button-containerchildre ... lue:u})m.jsx(Fh,{value:u}){value:u}functio ... },u),r}{const[ ... },u),r}const[r ... ate(c);[r,o]=ue.useState(c)ue.useState(c)ue.useStatereturn ... }},u),rue.useE ... }},u),rue.useE ... !0}},u)ue.useEffect()=>{le ... {h=!0}}{let h= ... {h=!0}}return ... >{h=!0}l().the ... >{h=!0}l().the ... |o(v)})l().thenv=>{h||o(v)}{h||o(v)}h||o(v)o(v)()=>{h=!0}{h=!0}functio ... n[u,l]}{const ... n[u,l]}const l ... =ur(l);l=ue.useRef(null)ue.useRef(null)ue.useRef[u]=ur(l)ur(l)return[u,l][u,l]functio ... ,[u,f]}{const[ ... ,[u,f]}const[u ... },[l]);[u,c]=u ... 10,10))ue.useS ... 10,10))new DOM ... ,10,10)f=ue.us ... )},[l])ue.useC ... )},[l])ue.useCallback()=>{co ... ect())}{const ... ect())}const r ... urrent;r=l==nu ... currentl==null ... currentl==nulll.currentr&&c(r. ... Rect())c(r.get ... Rect())r.getBo ... tRect()r.getBo ... entRectreturn ... ),[u,f]ue.useL ... ),[u,f]ue.useL ... ,[f,l])ue.useLayoutEffect()=>{co ... e",f)}}{const ... e",f)}}if(!r)return;f();const o ... ver(f);o=new R ... rver(f)new Res ... rver(f)return ... ze",f)}o.obser ... ze",f)}o.observe(r)o.observewindow. ... ize",f)()=>{o. ... ze",f)}{o.disc ... ze",f)}o.disco ... ize",f)o.disconnect()o.disconnect[f,l][u,f]functio ... ,[c,r]}{u=Ma.g ... ,[c,r]}u=Ma.getObject(l,u);u=Ma.getObject(l,u)Ma.getObject(l,u)Ma.getObjectconst[c ... [l,f]);[c,f]=ue.useState(u)[c,f]ue.useState(u)r=ue.us ... ,[l,f])ue.useC ... ,[l,f])o=>{Ma. ... t(l,o)}{Ma.setObject(l,o)}Ma.setObject(l,o)Ma.setObject[l,f]return ... ),[c,r]ue.useE ... ),[c,r]ue.useE ... ,[u,l])()=>{{c ... (l,o)}}{{const ... (l,o)}}{const ... r(l,o)}const o ... (l,u));o=()=>f ... t(l,u))()=>f(M ... t(l,u))f(Ma.getObject(l,u))return ... er(l,o)Ma.onCh ... er(l,o)Ma.onCh ... istenerMa.onChangeEmitter()=>Ma. ... er(l,o)[c,r]class $ ... ndow)}}constru ... Target}(){this ... Target}{this.o ... Target}this.on ... tTargetthis.onChangeEmitternew EventTargetgetStri ... [u]||c}(u,c){r ... [u]||c}{return ... [u]||c}return ... e[u]||clocalStorage[u]||clocalStorage[u]setStri ... indow)}(u,c){v ... indow)}{var f; ... indow)}var f;localSt ... window)localStorage[u]=cthis.on ... ent(u))this.on ... chEventnew Event(u)(f=wind ... window)(f=wind ... )==null(f=wind ... ttings)f=windo ... ettingswindow.saveSettingsf.call(window)f.callgetObje ... urn c}}(u,c){i ... urn c}}{if(!lo ... urn c}}if(!loc ... turn c;!localStorage[u]return c;try{ret ... turn c}{return ... ge[u])}return ... age[u])JSON.pa ... age[u])catch{return c}setObje ... indow)}localSt ... gify(c)JSON.stringify(c)const Ma=new $5;Ma=new $5new $5functio ... n(" ")}{return ... n(" ")}return ... in(" ")l.filte ... in(" ")l.filte ... n).joinl.filter(Boolean)l.filterconst B ... ,"ug");B2="\\u ... \u009f""\\u000 ... \u009f"\u0000-\u0020\u007f-\u009f\u0020\u007f\u009ftv=new ... `,"ug")new Reg ... `,"ug")"(?:[a- ... :;.!?]`"(?:[a- ... \\s'+B2"(?:[a- ... }[^\\s'"(?:[a- ... \\s"+B2"(?:[a- ... )[^\\s"(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|www\.)[^\s"]{2,}[^\s`"')}\\],:;.!?]`"')}\],:;.!?]functio ... n[l,c]}{const[ ... n[l,c]}const[l ... },[u]);[l,u]=u ... ate(!1)[l,u]ue.useState(!1)c=ue.us ... )},[u])ue.useC ... )},[u])()=>{co ... meout)}{const ... meout)}const f=[];return ... imeout)u(r=>(f ... imeout)u(r=>(f ... 1):!0))r=>(f.p ... !1):!0)(f.push ... !1):!0)f.push( ... ,!1):!0f.push( ... ),1e3))setTime ... 1),1e3)()=>u(!1)u(!1)r?(f.pu ... ,!1):!0(f.push ... 0)),!1)f.push( ... 50)),!1f.push( ... 0),50))setTime ... !0),50)()=>u(!0)u(!0)()=>f.f ... imeout)f.forEa ... imeout)f.forEachreturn[l,c][l,c]functio ... h(r),u}{const ... h(r),u}let c=0,f;for(;(f ... length}(f=tv.e ... !==null(f=tv.exec(l))f=tv.exec(l)tv.exec(l)tv.execconst o ... index);o=l.sub ... .index)l.subst ... .index)l.substringf.indexo&&u.push(o);o&&u.push(o)u.push(o)const h=f[0];h=f[0]u.push( ... .lengthu.push(nv(h))nv(h)c=f.index+h.lengthf.index+h.lengthconst r ... ing(c);r=l.substring(c)l.substring(c)return ... sh(r),ur&&u.push(r),ur&&u.push(r)u.push(r)functio ... en:l})}{let u= ... en:l})}return ... ren:l})u.start ... ren:l})u.start ... ://"+u)u.startsWith("www.")www.www(u="https://"+u)u="https://"+u"https://"+uhttps://m.jsx(" ... ren:l}){href:u ... dren:l}href:utarget:"_blank"_blankrel:"no ... ferrer""noopen ... ferrer"noopener noreferrerconst a ... ,u]})};av=({su ... ),u]})}({summa ... ),u]})}{summar ... tyle:f}summary:lchildren:uclassName:cstyle:f{const[ ... ),u]})}const[r ... open)};[r,o]=u ... ate(!1)h=v=>{o ... .open)}v=>{o(v ... .open)}{o(v.cu ... .open)}o(v.cur ... t.open)v.currentTarget.openv.currentTargetreturn ... }),u]})m.jsxs( ... }),u]}){style: ... ]}),u]}onToggle:hchildre ... l]}),u][m.jsxs ... l]}),u]m.jsxs( ... (),l]}){classN ... l(),l]}classNa ... ummary"expandable-summarychildre ... Cl(),l][r?Ni():Cl(),l]r?Ni():Cl()Ni()Cl()functio ... 1)+"d"}{if(!is ... 1)+"d"}if(!isF ... urn"-";!isFinite(l)isFinite(l)return"-";if(l=== ... n"0ms";l===0return"0ms";0msif(l<1e ... )+"ms";l<1e3return ... )+"ms";l.toFixed(0)+"ms"l.toFixed(0)l.toFixedconst u=l/1e3;u=l/1e3l/1e3if(u<60 ... 1)+"s";u<60return ... 1)+"s";u.toFixed(1)+"s"u.toFixed(1)u.toFixedconst c=u/60;c=u/60u/60if(c<60 ... 1)+"m";c<60return ... 1)+"m";c.toFixed(1)+"m"c.toFixed(1)c.toFixedconst f=c/60;f=c/60c/60return ... (1)+"d"f<24?f. ... (1)+"d"f<24f.toFixed(1)+"h"f.toFixed(1)f.toFixed(f/24). ... (1)+"d"(f/24).toFixed(1)(f/24).toFixed(f/24)f/24functio ... s(u%6)}{let u= ... s(u%6)}let u=0;for(let ... <8)-u);u=l.cha ... <8)-u);u=l.cha ... <<8)-u)l.charC ... <<8)-u)((u<<8)-u)(u<<8)-u(u<<8)u<<8return Math.abs(u%6)Math.abs(u%6)u%6functio ... urn l}}{if(!l) ... urn l}}if(!l)return l;!ltry{con ... turn l}const u ... .href);u=new U ... n.href)new URL ... n.href)if(u.or ... ring()}u.origi ... .originu.originwindow. ... .origin{for(co ... ring()}for(con ... d(c,f);const[c,f]u.searc ... d(c,f);u.searc ... nd(c,f)u.searc ... .appendu.searchParamsreturn u.toString()u.toString()u.toStringcatch{return l}{return l}const P ... f))})};Ph=({la ... :o}):o}({label ... :o}):o}{label: ... efix:r}label:lonClick:ccolorIndex:ftrimAtSymbolPrefix:r{const ... :o}):o}const o ... 1):l});o=m.jsx ... (1):l})m.jsx(" ... (1):l}){classN ... e(1):l}classNa ... lv(l)))Ze("lab ... lv(l)))"label- ... :lv(l))label-color-(f!==void 0?f:lv(l))f!==void 0?f:lv(l)f!==void 0lv(l)onClick ... :void 0c?h=>c(h,l):void 0h=>c(h,l)c(h,l)childre ... ce(1):lr&&l.st ... ce(1):lr&&l.startsWith("@")l.startsWith("@")l.startsWithl.slice(1)return ... n:o}):ou?m.jsx ... n:o}):om.jsx(" ... ren:o}){classN ... dren:o}classNa ... anchor"label-anchorhref:Ve(u)Ve(u)children:o$h=({pr ... :c})]})({proje ... :c})]}){projec ... tyle:f}projectNames:lactiveProjectName:uotherLabels:c(l.leng ... :c})]})(l.leng ... ngth>0)l.lengt ... ength>0l.length>0&&!!ul.length>0!!uc.length>0m.jsxs( ... :c})]}){classN ... s:c})]}classNa ... el-row"label-rowstyle:f??{}f??{}childre ... ls:c})][m.jsx( ... ls:c})]m.jsx(u ... ame:u}){projec ... Name:u}projectName:um.jsx(iv,{labels:c}){labels:c}labels:civ=({la ... ,f))})}({label ... ,f))})}{labels:l}labels:l{const ... ,f))})}const u ... },[u]);u=se()se()c=ct.us ... )},[u])ct.useC ... )},[u])(f,r)=> ... lKey))}{const ... lKey))}const o ... ams(u);o=new U ... rams(u)new URL ... rams(u)f.preve ... rlKey))f.preventDefault()f.preventDefaulto.has(" ... board")o.has("testId")o.haso.delet ... board")o.deletespeedboardo.delete("testId")ca(Na(o ... rlKey))Na(o,r, ... trlKey)f.metaKey||f.ctrlKeyf.metaKeyf.ctrlKeyreturn ... },f))})m.jsx(m ... },f))})m.Fragment{childr ... c},f))}childre ... :c},f))l.map(f ... :c},f))f=>m.js ... k:c},f)m.jsx(P ... k:c},f){label: ... lick:c}label:ftrimAtS ... efix:!0functio ... ent(u)}{window ... ent(u)}window. ... ,"",l);window. ... },"",l)window. ... shStatewindow.historyconst u ... tate");u=new P ... state")new Pop ... state")window. ... vent(u)const K ... e(1)));Kf=({pr ... ?u:null({predi ... ?u:null{predic ... dren:u}predicate:ll(se())?u:nulll(se())Tn=({cl ... ren:c})({click ... ren:c}){click: ... c,...f}click:lctrlClick:uchildren:cm.jsx(" ... ren:c}){...f,s ... dren:c}style:{ ... inter"}{textDe ... inter"}textDec ... :"none"color:" ... fault)""var(-- ... fault)"var(--color-fg-default)(--color-fg-default)--color-fg-defaultcursor:"pointer"onClick ... ||l)))}r=>{l&& ... ||l)))}{l&&(r. ... ||l)))}l&&(r.p ... u||l)))(r.prev ... u||l)))r.preve ... &u||l))r.preventDefault()r.preventDefaultca(Ve(( ... &u||l))Ve((r.m ... &&u||l)(r.meta ... )&&u||l(r.meta ... Key)&&u(r.meta ... trlKey)r.metaKey||r.ctrlKeyr.metaKeyr.ctrlKeyTr=({cl ... m",l)})({class ... m",l)}){className:l,...u}className:lm.jsx(T ... m",l)}){...u,c ... im",l)}classNa ... dim",l)Ze("lin ... dim",l)link-badgeu.dim&& ... ge-dim"u.dimlink-badge-dimuv=({pr ... %6})})}({proje ... %6})})}{const ... %6})})}const c ... (se());c=new U ... s(se())new URL ... s(se())return ... )%6})})c.has(" ... )%6})})c.has(" ... board")c.has("testId")c.hasc.delet ... board")c.deletec.delete("testId")m.jsx(T ... )%6})}){click: ... u)%6})}click:N ... u}`,!1)Na(c,`p:${u}`,!1)`p:${u}`ctrlCli ... u}`,!0)Na(c,`p:${u}`,!0)childre ... (u)%6})m.jsx(P ... (u)%6}){label: ... f(u)%6}label:ucolorIn ... Of(u)%6l.indexOf(u)%6l.indexOf(u)l.indexOfnc=({at ... ),v]})}({attac ... ),v]})}{attach ... wTab:r}attachment:lresult:uhref:clinkName:fopenInNewTab:r{const[ ... ),v]})}const[o,h]=ev();[o,h]=ev()[o,h]ev()Cr("att ... (l),h);Cr("att ... f(l),h)"attach ... exOf(l)u.attac ... exOf(l)u.attac ... indexOfu.attachmentsconst v ... }))]});v=m.jsx ... )}))]})m.jsxs( ... )}))]}){childr ... e)}))]}childre ... me)}))][l.cont ... me)}))]l.conte ... ():Ih()l.contentType===fvl.contentTypeqh()Ih()l.path& ... name}))(r?m.js ... name}))r?m.jsx ... .name})m.jsx(" ... .name}){href:V ... l.name}href:Ve(c||l.path)Ve(c||l.path)c||l.pathrel:"noreferrer"noreferrerchildren:f||l.namef||l.namel.namedownload:sv(l)sv(l)!l.path ... ame)}))!l.path(r?m.js ... ame)}))r?m.jsx ... name)}){href:U ... l.name}href:UR ... Type}))URL.cre ... Type}))new Blo ... tType})[l.body]l.body{type:l.contentType}type:l.contentTypeonClick ... ation()y=>y.st ... ation()y.stopPropagation()y.stopPropagationchildren:l.namem.jsx(" ... name)}){childr ... .name)}children:Di(l.name)Di(l.name)return ... }),v]})l.body? ... }),v]})m.jsx(a ... y)]})}){style: ... dy)]})}style:{ ... "32px"}{lineHeight:"32px"}lineHeight:"32px"32pxclassNa ... flash")Ze(o&&" ... flash")o&&"att ... -flash"attachment-flashsummary:vchildre ... ody)]})m.jsxs( ... ody)]}){classN ... body)]}classNa ... t-body"attachment-bodychildre ... .body)][m.jsx( ... .body)]m.jsx(F ... .body}){value:l.body}value:l.bodyDi(l.body)m.jsxs( ... }),v]}){style: ... )}),v]}style:{ ... Left:4}{lineHe ... Left:4}whiteSpace:"nowrap"nowrappaddingLeft:4childre ... ()}),v][m.jsx( ... ()}),v]m.jsx(" ... :Cl()}){style: ... n:Cl()}style:{ ... idden"}{visibi ... idden"}visibility:"hidden"children:Cl()tm=({te ... "})]})}({test: ... "})]})}{test:l ... ,dim:c}test:ltrailingSeparator:udim:c{const ... "})]})}const f ... >0)[0];f=l.res ... h>0)[0]l.resul ... h>0)[0]l.resul ... ngth>0)l.resul ... .filterl.resul ... race"))l.results.mapl.resultsr=>r.at ... trace")r.attac ... trace")r.attachments.filterr.attachmentso=>o.name==="trace"o.name==="trace"o.nametracer=>r.length>0r.length>0if(f)re ... |"})]})return ... |"})]})m.jsxs( ... |"})]}){childr ... "|"})]}childre ... :"|"})][m.jsxs ... :"|"})]m.jsxs( ... e"})]}){href:V ... ce"})]}href:Ve(nm(f))Ve(nm(f))nm(f)title:"View Trace"View TraceclassNa ... e-link"button trace-linkchildre ... ace"})][F5(),m ... ace"})]F5()m.jsx(" ... race"}){childr ... Trace"}childre ... Trace"u&&m.js ... n:"|"})m.jsx(" ... n:"|"}){classN ... en:"|"}classNa ... arator""trace- ... arator"trace-link-separatorchildren:"|"em=ct.c ... ce(1)))ct.crea ... ce(1)))ct.createContextnew URL ... ice(1))window. ... lice(1)window. ... h.slicewindow.location.hashfunctio ... xt(em)}{return ... xt(em)}return ... ext(em)ct.useContext(em)ct.useContextconst c ... n:l})};cv=({ch ... en:l})}({child ... en:l})}{children:l}{const[ ... en:l})}const[u ... e(1)));[u,c]=c ... ce(1)))ct.useS ... ce(1)))ct.useE ... ren:l})ct.useE ... f)},[])ct.useEffect()=>{co ... te",f)}{const ... te",f)}const f ... e(1)));f=()=>c ... ce(1)))()=>c(n ... ce(1)))c(new U ... ce(1)))return ... ate",f)window. ... ate",f)()=>win ... ate",f)m.jsx(e ... ren:l})em.Provider{value:u,children:l}functio ... ength)}{if(l.n ... ength)}if(l.na ... l.name;l.name. ... !l.pathl.name.includes(".")l.name.includesreturn l.name;const u ... f(".");u=l.pat ... Of(".")l.path.indexOf(".")l.path.indexOfreturn ... length)u===-1? ... length)u===-1l.name+ ... length)l.path. ... length)l.path.slicel.path.lengthfunctio ... "&")}`}{return ... "&")}`}return` ... ("&")}``trace/ ... ("&")}`l.map(( ... in("&")l.map(( ... `).joinl.map(( ... ref)}`)(u,c)=> ... href)}``trace= ... href)}`u.pathconst f ... ssing";fv="x-p ... issing""x-play ... issing"x-playwright/missingfunctio ... ,u,c])}{const ... ,u,c])}const c ... =rv(l);c=se()f=rv(l)rv(l)ct.useE ... f,u,c])()=>{if ... rn u()}{if(f)return u()}if(f)return u()return u()[f,u,c]functio ... ):l(u)}{const ... ):l(u)}const u ... chor");u=se().get("anchor")se().get("anchor")se().getreturn ... u):l(u)u===nul ... u):l(u)u===nul ... f l>"u"u===nulltypeof l>"u"typeof ... u):l(u)l===uArray.i ... u):l(u)Array.isArray(l)l.includes(u)l.includesl(u)functio ... en:u})}{id:l,children:u}id:l{const ... en:u})}const c ... )},[]);c=ct.useRef(null)ct.useRef(null)ct.useReff=ct.us ... })},[])ct.useC ... })},[])()=>{va ... art"})}{var r; ... art"})}var r;(r=c.cu ... tart"})(r=c.current)==null(r=c.current)r=c.currentc.currentr.scrol ... tart"})r.scrollIntoView{block: ... start"}block:"start"inline:"start"return ... ren:u})Cr(l,f) ... ren:u})Cr(l,f)m.jsx(" ... ren:u}){ref:c,children:u}ref:cfunctio ... "#?"+r}{test:l ... chor:c}anchor:c{const ... "#?"+r}const r ... ams(f);r=new U ... rams(f)new URL ... rams(f)return ... ,"#?"+rl&&r.se ... ,"#?"+rl&&r.se ... testId)r.set(" ... testId)r.setl.testIdl&&u&&r ... xOf(u))l&&ur.set(" ... xOf(u))""+l.re ... exOf(u)l.results.indexOf(u)l.results.indexOfc&&r.set("anchor",c)r.set("anchor",c)"#?"+rfunctio ... K5()}}{switch ... K5()}}switch( ... n K5()}case"failed":case"un ... n Kh();return Kh();case"passed":case"ex ... n kh();return kh();case"ti ... n Jh();timedOutreturn Jh();Jh()case"fl ... n qh();return qh();case"skipped":case"in ... rn K5()interruptedreturn K5()K5()const o ... n:A})};ov=({cl ... en:A})}({class ... en:A})}{classN ... dren:A}style:uopen:cisModal:fminWidth:rverticalOffset:orequestClose:hanchor:vdataTestId:ychildren:A{const ... en:A})}const E ... void 0;E=ct.useRef(null)[S,O]=ct.useState(0)[S,O]ct.useState(0)[X]=ur(E)[X]ur(E)[B,b]=ur(v)[B,b]ur(v)p=v?dv(X,B,o):void 0v?dv(X,B,o):void 0dv(X,B,o)return ... ren:A})ct.useE ... ren:A})ct.useE ... ,[c,h])()=>{co ... ()=>{}}{const ... ()=>{}}const x ... |h())};x=U=>{! ... l||h()}U=>{!E. ... l||h()}{!E.cur ... l||h()}!E.curr ... ll||h()!E.curr ... h==null!E.curr ... target)!E.curr ... f Node)!E.currentE.current!(U.tar ... f Node)(U.targ ... f Node)U.targe ... of NodeU.targetE.curre ... target)E.current.containsh==nullh()R=U=>{U ... ||h())}U=>{U.k ... ||h())}{U.key= ... ||h())}U.key== ... l||h())U.key==="Escape"U.key(h==null||h())h==null||h()return ... :()=>{}c?(docu ... :()=>{}(docume ... n",R)})documen ... wn",R)}documen ... own",x)documen ... own",R)()=>{do ... wn",R)}{docume ... wn",R)}()=>{}[c,h]ct.useL ... ,[c,b])ct.useLayoutEffect()=>b()b()[c,b]ct.useE ... )}},[])()=>{co ... e",x)}}{const ... e",x)}}const x ... =>R+1);x=()=>O(R=>R+1)()=>O(R=>R+1)O(R=>R+1)R=>R+1R+1return ... ze",x)}window. ... ze",x)}window. ... ize",x)()=>{wi ... ze",x)}{window ... ze",x)}ct.useL ... ,[c,f])()=>{E. ... ose())}{E.curr ... ose())}E.curre ... lose())(c?f?E. ... lose())c?f?E.c ... close()f?E.cur ... .show()E.curre ... Modal()E.current.showModalE.current.show()E.current.showE.current.close()E.current.closem.jsx(" ... ren:A}){ref:E, ... dren:A}ref:Estyle:{ ... 0,...u}{positi ... 0,...u}position:"fixed"fixedmargin:p?0:void 0p?0:void 0zIndex:110top:p== ... 0:p.topp==null?void 0:p.topp==nullp.topleft:p= ... :p.leftp==null ... :p.leftp.leftminWidth:r||0r||0"data-testid":ydata-testidfunctio ... top:o}}{let r= ... top:o}}let r=M ... .left);r=Math.max(f,u.left)Math.max(f,u.left)u.leftr+l.wid ... dth-f);r+l.wid ... idth-f)r+l.wid ... Width-fr+l.widthl.widthwindow.innerWidth-f(r=wind ... idth-f)r=windo ... width-fwindow. ... width-fwindow. ... l.widthlet o=M ... tom)+c;o=Math. ... ttom)+cMath.ma ... ttom)+cMath.max(0,u.bottom)u.bottomreturn ... ,top:o}o+l.hei ... ,top:o}o+l.hei ... height)o+l.hei ... eight-co+l.heightl.heightwindow.innerHeight-c(Math.m ... height)Math.ma ... .heightMath.ma ... eight+cMath.max(0,u.top)u.topl.height+co=Math. ... eight-cMath.ma ... eight-co=windo ... .heightwindow. ... .height{left:r,top:o}left:rtop:oconst h ... ark)");hv="system"systemam="theme"mv=[{la ... stem"}][{label ... stem"}]{label: ... -mode"}label:"Dark mode"Dark modevalue:"dark-mode"dark-modelabel:"Light mode"Light modevalue:"light-mode"light-mode{label: ... ystem"}label:"System"Systemvalue:"system"lm=wind ... dark)")window. ... dark)")window.matchMedia"(prefe ... dark)"(prefers-color-scheme: dark)prefers-color-scheme: darkfunctio ... ())}))}{docume ... ())}))}documen ... r())}))documen ... ializedplaywri ... ialized(docume ... r())}))documen ... sr())})documen ... ized=!0documen ... ")},!1)document.defaultViewl=>{l.t ... tive")}{l.targ ... tive")}l.targe ... ctive")l.targe ... NT_NODEl.targe ... odeTypel.target.documentl.targetNode.DOCUMENT_NODEdocumen ... ctive")inactivel=>{doc ... tive")}{docume ... tive")}cr(sr())sr()lm.addE ... sr())})lm.addEventListener()=>{cr(sr())}{cr(sr())}const Av=new Set;Av=new Setfunctio ... )f(c)}}{const ... )f(c)}}const u ... ode":l;u=vv()vv()c=l===" ... mode":ll==="sy ... mode":ll==="system"lm.matc ... t-mode"lm.matchesif(u!== ... v)f(c)}u!==c{u&&doc ... v)f(c)}u&&docu ... add(c);u&&docu ... .add(c)u&&docu ... move(u)documen ... move(u)documen ... .add(c)for(con ... Av)f(c)f(c)functio ... am,hv)}{return ... am,hv)}return ... (am,hv)Ma.getString(am,hv)Ma.getStringfunctio ... ":null}{return ... ":null}return ... e":nulldocumen ... e":nulldocumen ... -mode")functio ... ,[l,u]}{const[ ... ,[l,u]}const[l ... (sr());[l,u]=u ... e(sr())ue.useState(sr())return ... ),[l,u]ue.useE ... ),[l,u]ue.useE ... )},[l])()=>{Ma ... ,cr(l)}{Ma.set ... ,cr(l)}Ma.setS ... ),cr(l)Ma.setString(am,l)Ma.setStringcr(l)const O ... ))]})};Or=({ti ... l)})]})({title ... l)})]}){title: ... ader:c}title:lleftSuperHeader:urightSuperHeader:cm.jsxs( ... l)})]}){classN ... (l)})]}classNa ... r-view"header-viewchildre ... i(l)})][m.jsxs ... i(l)})]m.jsxs( ... }),c]}){classN ... }}),c]}classNa ... header""hbox h ... header"hbox header-superheaderchildre ... "}}),c][u,m.js ... "}}),c]m.jsx(" ... uto"}}){style: ... auto"}}style:{flex:"auto"}{flex:"auto"}flex:"auto"l&&m.js ... Di(l)})m.jsx(" ... Di(l)}){classN ... :Di(l)}classNa ... -title"header-titlechildren:Di(l)Di(l)Ev=({st ... )]})})}({stats ... )]})})}{stats: ... Text:c}stats:lfilterText:usetFilterText:c{const ... )]})})}const f ... t("q");f=se().get("q")se().get("q")return ... })]})})ct.useE ... })]})})ct.useE ... ,[f,c])()=>{c( ... `:"")}{c(f?`$ ... `:"")}c(f?`${ ... } `:"")f?`${f.trim()} `:""`${f.trim()} `f.trim()f.trim[f,c]m.jsx(m ... })]})}){childr ... ]})]})}childre ... )]})]})m.jsxs( ... )]})]}){classN ... })]})]}className:"pt-3"pt-3childre ... }})]})][m.jsx( ... }})]})]m.jsx(" ... s:l})}){classN ... ts:l})}classNa ... d-flex""header ... d-flex"header-view-status-container ml-2 pl-2 d-flexchildre ... ats:l})m.jsx(pv,{stats:l}){stats:l}m.jsxs( ... )}})]}){classN ... e)}})]}classNa ... search"subnav-searchonSubmi ... ,ca(o)}r=>{r.p ... ,ca(o)}{r.prev ... ,ca(o)}r.preventDefault();const o ... {q:v});o=new U ... n.href)h=new U ... ice(1))o.hash.slice(1)o.hash.sliceo.hashv=new F ... et("q")new For ... et("q")new For ... et).getnew For ... target)r.targety=new U ... ({q:v})new URL ... ({q:v}){q:v}q:vh.has(" ... ),ca(o)h.has(" ... rd","")h.has("speedboard")h.hasy.set(" ... rd","")y.sety.toStr ... ring())y.toString()y.toString(o.hash ... ring())o.hash= ... tring()"?"+y.toString()ca(o)childre ... ue)}})][I5(),m ... ue)}})]I5()m.jsx(" ... lue)}}){name:" ... alue)}}name:"q"spellCheck:!1classNa ... h-full""form-c ... h-full"form-control subnav-search-input input-contrast width-full"aria-l ... tests"Search testsplaceho ... tests"onChang ... value)}r=>{c(r ... value)}{c(r.target.value)}c(r.target.value)r.target.valuepv=({st ... {})]})}({stats ... {})]})}{const ... {})]})}const u ... oard");u=se(). ... board")se().ha ... board")se().hasreturn ... ,{})]})m.jsxs( ... ,{})]}){childr ... v,{})]}childre ... bv,{})][m.jsxs ... bv,{})]m.jsxs( ... ed})]}){classN ... ped})]}classNa ... v-item"subnav-itemhref:"#?"childre ... pped})][m.jsx( ... pped})]m.jsx(" ... "All"}){classN ... :"All"}classNa ... -label"subnav-item-labelchildren:"All"Allm.jsx(" ... ipped}){classN ... kipped}classNa ... ounter"d-inline counterchildre ... skippedl.total-l.skippedl.totall.skippedm.jsx(a ... ected}){token: ... pected}token:"passed"count:l.expectedl.expectedtoken:"failed"count:l.unexpectedl.unexpectedm.jsx(a ... flaky}){token: ... .flaky}token:"flaky"count:l.flakyl.flakym.jsx(a ... ipped}){token: ... kipped}token:"skipped"count:l.skippedm.jsx(T ... :Jh()}){classN ... n:Jh()}href:"#?speedboard"#?speedboardtitle:"Speedboard"Speedboard"aria-selected":uaria-selectedchildren:Jh()m.jsx(bv,{})ac=({to ... u})]})}({token ... u})]})}{token:l,count:u}token:lcount:u{const ... u})]})}c.delet ... stId");c.delet ... estId")const f ... ice(1);f=`s:${l}``s:${l}`r=Na(c,f,!1)Na(c,f,!1)o=Na(c,f,!0)Na(c,f,!0)h=l.cha ... lice(1)l.charA ... lice(1)l.charA ... rCase()l.charA ... perCasel.charAt(0)l.charAtreturn ... :u})]})m.jsxs( ... :u})]}){classN ... n:u})]}href:rclick:rctrlClick:ochildre ... en:u})][u>0&&h ... en:u})]u>0&&hc(l)u>0hc(l)m.jsx(" ... ren:h}){classN ... dren:h}children:h{classN ... dren:u}bv=()=> ... ]})]})}()=>{co ... ]})]})}{const ... ]})]})}const l ... s",!1);l=ct.useRef(null)[u,c]=c ... ate(!1)ct.useState(!1)[f,r]=yv()[f,r]yv()[o,h]=_ ... es",!1)_h("mergeFiles",!1)mergeFilesreturn ... )]})]}){childr ... })]})]}childre ... ]})]})][m.jsx( ... ]})]})]m.jsx(" ... :_5()}){role:" ... n:_5()}role:"button"ref:l{cursor:"pointer"}title:"Settings"SettingsonClick ... ault()}v=>{c(! ... ault()}{c(!u), ... ault()}c(!u),v ... fault()c(!u)v.preventDefault()v.preventDefaultonMouseDown:xvchildren:_5()_5()m.jsxs( ... "]})]}){open:u ... s"]})]}open:uminWidth:150verticalOffset:4request ... =>c(!1)()=>c(!1)c(!1)anchor:ldataTes ... dialog"settings-dialogchildre ... es"]})][m.jsxs ... es"]})]m.jsxs( ... ))})]}){classN ... e))})]}classNa ... -theme""header ... -theme"header-setting-themechildre ... ue))})]["Theme ... ue))})]Theme:m.jsx(" ... lue))}){value: ... alue))}onChang ... .value)v=>r(v.target.value)r(v.target.value)v.target.valuev.targetchildre ... value))mv.map( ... value))mv.mapv=>m.js ... .value)m.jsx(" ... .value){value: ... .label}value:v.valuev.valuechildren:v.labelv.labelm.jsxs( ... les"]}){style: ... iles"]}style:{ ... ,gap:4}{cursor ... ,gap:4}display:"flex"alignItems:"center"centergap:4childre ... files"][m.jsx( ... files"]m.jsx(" ... h(!o)}){type:" ... >h(!o)}type:"checkbox"checked:oonChange:()=>h(!o)()=>h(!o)h(!o)Merge filesxv=l=>{ ... ault()}l=>{l.s ... ault()}{l.stop ... ault()}l.stopP ... fault()l.stopPropagation()l.stopPropagationl.preventDefault()l.preventDefaultSv=({ta ... )]})})}({tabs: ... )]})})}{tabs:l ... dTab:c}tabs:lselectedTab:usetSelectedTab:cconst f=ct.useId();f=ct.useId()ct.useId()ct.useIdm.jsx(" ... })]})}){classN ... )})]})}classNa ... d-pane"tabbed-panechildre ... d)})]})m.jsxs( ... d)})]}){classN ... id)})]}className:"vbox"vboxchildre ... .id)})][m.jsx( ... .id)})]m.jsx(" ... d))})}){classN ... id))})}className:"hbox"hboxstyle:{flex:"none"}{flex:"none"}flex:"none"childre ... .id))})m.jsx(" ... .id))}){classN ... r.id))}classNa ... -strip""tabbed ... -strip"tabbed-pane-tab-striprole:"tablist"tablistchildre ... ,r.id))l.map(r ... ,r.id))r=>m.js ... },r.id)m.jsx(" ... },r.id){classN ... itle})}classNa ... ected")Ze("tab ... ected")"tabbed ... lement"tabbed-pane-tab-elementu===r.id&&"selected"u===r.idr.idonClick:()=>c(r.id)()=>c(r.id)c(r.id)id:`${f}-${r.id}``${f}-${r.id}`role:"tab"tab"aria-s ... ===r.idchildre ... title})m.jsx(" ... title}){classN ... .title}"tabbed ... -label"tabbed-pane-tab-labelchildren:r.titler.titlel.map(r ... r.id)})r=>{if( ... ,r.id)}{if(u== ... ,r.id)}if(u=== ... },r.id)return ... },r.id){classN ... nder()}classNa ... ontent"tab-contentrole:"tabpanel"tabpanel"aria-l ... {r.id}`aria-labelledbychildren:r.render()r.render()r.renderim=({he ... ]})]})}({heade ... ]})]})}{header ... stId:h}header:lfooter:uexpanded:csetExpanded:fnoInsets:odataTestId:hconst v=ct.useId();v=ct.useId()className:"chip"chip"data-testid":hchildre ... u})]})][m.jsxs ... u})]})]m.jsxs( ... }),l]}){role:" ... {}),l]}"aria-expanded":!!caria-expanded!!c"aria-controls":varia-controlsclassNa ... ed-"+c)Ze("chi ... ed-"+c)chip-headerf&&" expanded-"+c" expanded-"+c expanded-onClick ... 0:f(!c)()=>f== ... 0:f(!c)f==null?void 0:f(!c)f==nullf(!c)title:t ... :void 0childre ... ,{}),l][f?c?m. ... ,{}),l]f?c?m.j ... (q5,{})c?m.jsx ... (Cl,{})m.jsx(Ni,{})m.jsx(Cl,{})m.jsx(q5,{})(!f||c) ... :u})]})(!f||c)!f||c!f{id:v,r ... n:u})]}id:vrole:"region"regionclassNa ... nsets")Ze("chi ... nsets")chip-bodyo&&"chi ... insets""chip-b ... insets"chip-body-no-insets[r,u&&m ... en:u})]u&&m.js ... ren:u})classNa ... footer"chip-footerke=({he ... en:f})}({heade ... en:f})}{header ... orId:o}initialExpanded:unoInsets:cchildren:fdataTestId:rrevealOnAnchorId:o{const[ ... en:f})}const[h ... 0),[]);[h,v]=c ... (u??!0)ct.useState(u??!0)u??!0y=ct.us ... !0),[])ct.useC ... !0),[])()=>v(!0)v(!0)return ... ren:f})Cr(o,y) ... ren:f})Cr(o,y)m.jsx(i ... ren:f}){header ... dren:f}expanded:hsetExpanded:vTv=({ti ... ())]})}({title ... ())]})}{title: ... lash:h}loadChildren:uexpandByDefault:fdepth:rstyle:oflash:h{const[ ... ())]})}const[v ... f||!1);[v,y]=c ... (f||!1)[v,y]ct.useState(f||!1)f||!1return ... u())]})m.jsxs( ... u())]}){role:" ... :u())]}role:"treeitem"treeitemZe("tre ... flash")tree-itemh&&"yellow-flash"yellow-flashchildre ... 0:u())][m.jsxs ... 0:u())]{classN ... )}),l]}tree-item-titlestyle:{ ... r*22+4}{paddingLeft:r*22+4}paddingLeft:r*22+4r*22+4r*22onClick ... ,y(!v)}()=>{c= ... ,y(!v)}{c==null||c(),y(!v)}c==null||c(),y(!v)c==null||c()c==nully(!v)childre ... ()}),l][u&&!!v ... ()}),l]u&&!!v&&Ni()u&&!!v!!vu&&!v&&Cl()u&&!v!u&&m.j ... :Cl()})v&&(u== ... 0:u())(u==null?void 0:u())u==null?void 0:u()u==nullCv="dat ... 5CYII=""data:i ... 5CYII="data:image/png;base64,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Ov=({cu ... nt,{}))({curso ... nt,{})){cursor ... lick:f}cursor:lonPaneMouseMove:uonPaneMouseUp:conPaneDoubleClick:f(ue.use ... nt,{}))ue.useE ... ent,{})ue.useE ... u,c,f])()=>{co ... ld(r)}}{const ... ld(r)}}const r ... "div");r=docum ... ("div")return ... ild(r)}r.style ... ild(r)}r.style ... "fixed"r.style.positionr.styler.style.top="0"r.style.topr.style.right="0"r.style.rightr.style.bottom="0"r.style.bottomr.style.left="0"r.style.leftr.style ... ="9999"r.style.zIndex9999r.style.cursor=lr.style.cursordocumen ... hild(r)u&&r.ad ... ove",u)r.addEv ... ove",u)r.addEventListenerc&&r.ad ... eup",c)r.addEv ... eup",c)f&&docu ... ick",f)documen ... ick",f)()=>{u& ... ild(r)}{u&&r.r ... ild(r)}u&&r.re ... hild(r)u&&r.re ... ove",u)r.remov ... ove",u)r.remov ... istenerc&&r.re ... eup",c)r.remov ... eup",c)documen ... veChild[l,u,c,f]m.jsx(m.Fragment,{})wv={pos ... left:0}{positi ... left:0}position:"absolute"absolutetop:0right:0bottom:0left:0Rv=({or ... X))]})}({orien ... X))]})}{orient ... idth:o}orientation:loffsets:usetOffsets:cresizerColor:fresizerWidth:rminColumnWidth:o{const ... X))]})}const h ... size"};h=o||0o||0[v,y]=u ... e(null)ue.useState(null)[A,E]=Wh()[A,E]Wh()S={posi ... esize"}{positi ... esize"}right:l ... oid 0:0l==="ho ... oid 0:0l==="horizontal"horizontalbottom: ... :void 0l==="ho ... :void 0width:l ... :void 0height: ... oid 0:7l==="ho ... oid 0:7borderT ... (7-r)/2l==="ho ... (7-r)/2(7-r)/2(7-r)7-rborderR ... :void 0borderB ... (7-r)/2borderL ... :void 0borderC ... parent"borderStyle:"solid"solidcursor: ... resize"l==="ho ... resize"ew-resizens-resizereturn ... ,X))]})m.jsxs( ... ,X))]}){style: ... },X))]}style:{ ... "none"}{positi ... "none"}left:-(7-r)/2-(7-r)/2-(7-r)zIndex:100pointerEvents:"none"childre ... )},X))][!!v&&m ... )},X))]!!v&&m. ... u])}}})m.jsx(O ... u])}}}){cursor ... .u])}}}onPaneM ... y(null)()=>y(null)y(null)onPaneM ... ..u])}}O=>{if( ... ..u])}}{if(!O. ... ..u])}}if(!O.b ... ...u])}!O.buttonsO.buttonsy(null);if(v){c ... ...u])}{const ... ...u])}const X ... index];X=l===" ... clientYl==="ho ... clientYO.clientX-v.clientXO.clientXv.clientXO.clientY-v.clientYO.clientYv.clientYB=v.offset+Xv.offset+Xv.offsetb=v.ind ... ex-1]:0v.index ... ex-1]:0v.index>0v.indexu[v.index-1]v.index-1p=l===" ... .heightl==="ho ... .heightA.widthA.heightx=Math. ... .index]Math.mi ... .index]Math.mi ... B),p-h)Math.max(b+h,B)b+hp-hu[v.index]for(let ... u[R]+x;R ... }})},X)m.jsx(" ... }})},X){style: ... d:f}})}style:{ ... itial"}{...S,t ... itial"}...Stop:l== ... al"?0:Ol==="horizontal"?0:Oleft:l= ... al"?O:0l==="horizontal"?O:0pointer ... nitial"initialonMouse ... dex:X})B=>y({c ... dex:X})y({clie ... dex:X}){client ... ndex:X}clientX:B.clientXB.clientXclientY:B.clientYB.clientYoffset:Oindex:Xchildre ... nd:f}})m.jsx(" ... nd:f}}){style: ... und:f}}style:{ ... ound:f}{...wv,background:f}...wvbackground:fasync f ... c})),u}{const ... c})),u}const u=new Image;u=new Imagenew Imagereturn ... =c})),ul&&(u.s ... =c})),ul&&(u.s ... or=c}))(u.src= ... or=c}))u.src=l ... ror=c})u.src=lu.srcawait n ... ror=c})new Pro ... ror=c})(c,f)=> ... rror=c}{u.onlo ... rror=c}u.onloa ... error=cu.onload=cu.onloadu.onerror=cu.onerrorconst f ... )})]});fr={bac ... 12px`}{backgr ... 12px`}backgro ... 0 75%)``linear ... 0 75%)`linear- ... 20 75%)backgro ... x 20px"20px 20pxbackgro ... px 0px""0 0, 0 ... px 0px"0 0, 0 10px, 10px -10px, -10px 0pxboxShad ... x 12px``rgb(0 ... x 12px`rgb(0 0 ... px 12pxum=({di ... )]})})}({diff: ... )]})})}{diff:l ... ails:c}diff:lnoTargetBlank:uhideDetails:c{const[ ... )]})})}const[f ... ]=Wh();[f,r]=c ... ctual")ct.useS ... ctual")l.diff? ... actual"l.diff[o,h]=c ... ate(!1)[v,y]=c ... e(null)ct.useState(null)[A,E]=c ... ected")ct.useS ... ected")Expected[S,O]=c ... e(null)[X,B]=c ... e(null)[X,B][b,p]=Wh()[b,p]ct.useE ... },[l]);ct.useE ... )},[l])()=>{(a ... ))})()}{(async ... ))})()}(async( ... h))})()(async( ... ath))})async() ... path))}{var K, ... path))}var K,J,k,nt;y(await ... .path))await k ... t.path)kf((K=l ... t.path)(K=l.ex ... nt.path(K=l.expected)==null(K=l.expected)K=l.expectedK.attachment.pathK.attachmentE(((J=l ... ected")((J=l.e ... pected"((J=l.e ... .title)(J=l.ex ... J.title(J=l.expected)==null(J=l.expected)J=l.expectedJ.titleO(await ... .path))kf((k=l ... t.path)(k=l.ac ... nt.path(k=l.actual)==null(k=l.actual)k=l.actuall.actualk.attachment.pathk.attachmentB(await ... .path))kf((nt= ... t.path)(nt=l.d ... nt.path(nt=l.diff)==null(nt=l.diff)nt=l.diffnt.attachment.pathnt.attachmentconst x ... none"};x=v&&S&&Xv&&S&&Xv&&SR=x?Mat ... 00):500x?Math. ... 00):500Math.ma ... th,200)v.naturalWidthS.naturalWidthU=x?Mat ... 00):500Math.ma ... ht,200)v.naturalHeightS.naturalHeightZ=Math. ... -30)/R)Math.mi ... -30)/R)(b.width-30)/R(b.width-30)b.width-30b.widthF=Math. ... 0)/R/2)Math.mi ... 0)/R/2)(b.width-50)/R/2(b.width-50)/R(b.width-50)b.width-50j=R*ZR*ZD=U*ZU*ZN={flex ... "none"}{flex:" ... "none"}margin:"0 10px"0 10pxuserSelect:"none"{"data- ... ]})]})}"data-t ... smatch""test-r ... smatch"test-result-image-mismatchstyle:{ ... "auto"}{displa ... "auto"}flexDir ... column"ref:px&&m.js ... )]})]})childre ... )})]})][m.jsxs ... )})]})]m.jsxs( ... r"})]}){"data- ... er"})]}"data-t ... h-tabs""test-r ... h-tabs"test-result-image-mismatch-tabsstyle:{ ... 20px"}{displa ... 20px"}margin:"10px 0 20px"10px 0 20pxchildre ... der"})][l.diff ... der"})]l.diff& ... Diff"})m.jsx(" ... Diff"}){style: ... "Diff"}{...N,f ... itial"}...NfontWei ... nitial"f==="di ... nitial"f==="diff"onClick ... "diff")()=>r("diff")r("diff")children:"Diff"Diffm.jsx(" ... tual"}){style: ... ctual"}f==="ac ... nitial"f==="actual"onClick ... ctual")()=>r("actual")r("actual")children:"Actual"Actual{style: ... dren:A}f==="ex ... nitial"f==="expected"onClick ... ected")()=>r("expected")r("expected")m.jsx(" ... side"}){style: ... side"}f==="sx ... nitial"f==="sxs"sxsonClick:()=>r("sxs")()=>r("sxs")r("sxs")childre ... y side"Side by sidem.jsx(" ... ider"}){style: ... lider"}f==="sl ... nitial"f==="slider"slideronClick ... lider")()=>r("slider")r("slider")children:"Slider"Slider{style: ... })]})]}style:{ ... t:D+60}{displa ... t:D+60}justify ... center"minHeight:D+60D+60childre ... F})]})][l.diff ... F})]})]l.diff& ... ale:Z})l.diff&&f==="diff"m.jsx(E ... ale:Z}){image: ... cale:Z}image:Xalt:"Diff"hideSize:ccanvasWidth:jcanvasHeight:Dscale:Zl.diff&&f==="actual"image:Salt:"Actual"l.diff& ... pected"image:valt:Al.diff& ... tle:A})l.diff&&f==="slider"m.jsx(D ... tle:A}){expect ... itle:A}expectedImage:vactualImage:SexpectedTitle:Al.diff& ... :F})]})l.diff&&f==="sxs"m.jsxs( ... :F})]}){style: ... e:F})]}style:{ ... "flex"}{display:"flex"}childre ... le:F})][m.jsx( ... le:F})]m.jsx(E ... ale:F}){image: ... cale:F}title:AcanvasWidth:F*RF*RcanvasHeight:F*UF*Uscale:Fimage:o?X:So?X:Stitle:o ... Actual"o?"Diff":"Actual"onClick:()=>h(!o)!l.diff ... ale:Z})!l.diff ... actual"!l.difftitle:"Actual"!l.diff ... pected"!l.diff ... :F})]})!l.diff&&f==="sxs"!c&&m.j ... })})]}){style: ... e})})]}style:{ ... "15px"}{alignS ... "15px"}alignSelf:"start"lineHeight:"18px"18pxmarginLeft:"15px"15pxchildre ... me})})][m.jsx( ... me})})]m.jsx(" ... ame})}){childr ... name})}childre ... .name})l.diff& ... .name}){target ... t.name}href:l. ... nt.pathl.diff. ... nt.pathl.diff.attachmentchildre ... nt.namel.diff. ... nt.nametarget:u?"":"_blank"u?"":"_blank"l.actua ... nt.pathl.actual.attachmentl.actua ... nt.namel.expec ... nt.pathl.expec ... achmentl.expec ... nt.nameDv=({ex ... ]})]})}({expec ... ]})]})}{expect ... Size:h}expectedImage:lactualImage:ucanvasWidth:ccanvasHeight:fscale:rexpectedTitle:ohideSize:hv={posi ... left:0}[y,A]=c ... te(c/2)[y,A]ct.useState(c/2)c/2E=l.nat ... lHeightl.natur ... lHeightl.natur ... alWidthl.naturalWidthu.naturalWidthl.naturalHeightu.naturalHeight[!h&&m. ... )})]})]!h&&m.j ... ht})]})m.jsxs( ... ht})]}){style: ... ght})]}style:{margin:5}{margin:5}margin:5childre ... ight})][!E&&m. ... ight})]!E&&m.j ... ted "})m.jsx(" ... ted "}){style: ... cted "}style:{ ... 0 5px"}{flex:" ... 0 5px"}margin:"0 5px"0 5pxchildren:"Expected "Expected m.jsx(" ... Width}){childr ... lWidth}childre ... alWidthm.jsx(" ... n:"x"}){style: ... en:"x"}children:"x"m.jsx(" ... eight}){childr ... Height}childre ... lHeight!E&&m.j ... ual "})m.jsx(" ... ual "}){style: ... tual "}style:{ ... 15px"}{flex:" ... 15px"}margin: ... 0 15px"0 5px 0 15pxchildren:"Actual "Actual !E&&m.j ... Width})!E&&m.j ... n:"x"})!E&&m.j ... eight}){style: ... c})})]}style:{ ... ,...fr}{positi ... ,...fr}position:"relative"width:cheight:fmargin:15...frchildre ... rc})})][m.jsx( ... rc})})]m.jsx(R ... dth:6}){orient ... idth:6}orienta ... zontal"offsets:[y][y]setOffs ... A(S[0])S=>A(S[0])A(S[0])S[0]resizer ... 606a80"#57606a80resizerWidth:6m.jsx(" ... l.src}){alt:o, ... :l.src}alt:ostyle:{ ... ight*r}{width: ... ight*r}width:l ... Width*rl.naturalWidth*rheight: ... eight*rl.naturalHeight*rdraggable:"false"src:l.srcl.srcm.jsx(" ... src})}){style: ... .src})}{...v,b ... ,...fr}overflow:"hidden"width:ychildre ... u.src})m.jsx(" ... u.src}){alt:"A ... :u.src}width:u ... Width*ru.naturalWidth*ru.naturalHeight*rsrc:u.srcEn=({im ... })})]})({image ... })})]}){image: ... lick:v}image:ltitle:ualt:chideSize:fcanvasWidth:rcanvasHeight:oscale:honClick:v{style: ... v})})]}style:{ ... olumn"}{flex:" ... olumn"}childre ... :v})})][!f&&m. ... :v})})]!f&&m.j ... ht})]})[u&&m.j ... ight})]{style: ... dren:u}m.jsx(" ... k:v})}){style: ... ck:v})}{displa ... ,...fr}width:rheight:ochildre ... ick:v})m.jsx(" ... ick:v}){width: ... lick:v}width:l ... Width*hl.naturalWidth*hheight: ... eight*hl.naturalHeight*halt:u||cu||c{cursor ... itial"}cursor: ... nitial"v?"poin ... nitial"const c ... g,f=[];c=/(\x1 ... 1b]+)/g/(\x1b\ ... 1b]+)/g(\x1b\[(\d+(;\d+)*)m)|([^\x1b]+)(\x1b\[(\d+(;\d+)*)m)\x1b\[(\d+(;\d+)*)m\x1b\[(\d+(;\d+)*)\d+(;\d+)*\d+\d(;\d+)*(;\d+);\d+([^\x1b]+)[^\x1b]+[^\x1b]let r,o ... 0:u.bg;v=u==nu ... 0:u.fgu==null?void 0:u.fgu.fgy=u==nu ... 0:u.bgu==null?void 0:u.bgu.bgfor(;(r ... an>`)}}(r=c.exec(l))!==null(r=c.exec(l))r=c.exec(l)c.exec(l)c.exec{const[ ... an>`)}}const[,,A,,E]=r;[,,A,,E]=r[,,A,,E]if(A){c ... pan>`)}const S=+A;S=+A+Aswitch( ... ;break}case 0:o={};break;o["font ... "bold";o["font ... ="bold"o["font-weight"]boldo.opacity="0.8";o.opacity="0.8"o.opacityo["font ... talic";o["font ... italic"o["font-style"]o["text ... rline";o["text ... erline"o["text-decoration"]underlinecase 7:h=!0;break;h=!0;case 8: ... ;break;o.display="none";o.display="none"o.displayo["text ... rough";o["text ... hrough"line-throughdelete ... tion"];delete ... ation"]delete ... eight"]delete ... style"]delete o.opacitydelete ... pacity;delete ... opacitycase 27:h=!1;break;h=!1;case 30:case 33:case 34:case 35:case 36:case 37 ... ;break;v=U2[S-30];v=U2[S-30]U2[S-30]S-30case 39 ... ;break;v=u==nu ... 0:u.fg;case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47 ... ;break;y=U2[S-40];y=U2[S-40]U2[S-40]S-40case 49 ... ;break;y=u==nu ... 0:u.bg;case 53 ... ;break;overlinecase 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97 ... ;break;v=Q2[S-90];v=Q2[S-90]Q2[S-90]S-90case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 10 ... ];breaky=Q2[S-100];y=Q2[S-100]Q2[S-100]S-100if(E){c ... pan>`)}{const ... pan>`)}const S ... =h?y:v;S={...o}{...o}O=h?y:vh?y:vO!==voi ... lor=O);O!==voi ... olor=O)O!==void 0(S.color=O)S.color=OS.colorconst X=h?v:y;X=h?v:yh?v:yX!==voi ... span>`)X!==voi ... or"]=X)X!==void 0(S["bac ... or"]=X)S["back ... lor"]=XS["back ... color"]background-colorf.push( ... span>`)``Hv(S)jv(E)return f.join("")f.join("")f.joinconst U ... ite)"};U2={0:" ... hite)"}{0:"var ... hite)"}0:"var( ... Black)""var(-- ... Black)"var(--vscode-terminal-ansiBlack)(--vscode-terminal-ansiBlack)--vscode-terminal-ansiBlack1:"var( ... siRed)""var(-- ... siRed)"var(--vscode-terminal-ansiRed)(--vscode-terminal-ansiRed)--vscode-terminal-ansiRed2:"var( ... Green)""var(-- ... Green)"var(--vscode-terminal-ansiGreen)(--vscode-terminal-ansiGreen)--vscode-terminal-ansiGreen3:"var( ... ellow)""var(-- ... ellow)"var(--vscode-terminal-ansiYellow)(--vscode-terminal-ansiYellow)--vscode-terminal-ansiYellow4:"var( ... iBlue)""var(-- ... iBlue)"var(--vscode-terminal-ansiBlue)(--vscode-terminal-ansiBlue)--vscode-terminal-ansiBlue5:"var( ... genta)""var(-- ... genta)"var(--vscode-terminal-ansiMagenta)(--vscode-terminal-ansiMagenta)--vscode-terminal-ansiMagenta6:"var( ... iCyan)""var(-- ... iCyan)"var(--vscode-terminal-ansiCyan)(--vscode-terminal-ansiCyan)--vscode-terminal-ansiCyan7:"var( ... White)""var(-- ... White)"var(--vscode-terminal-ansiWhite)(--vscode-terminal-ansiWhite)--vscode-terminal-ansiWhiteQ2={0:" ... hite)"}var(--vscode-terminal-ansiBrightBlack)(--vscode-terminal-ansiBrightBlack)--vscode-terminal-ansiBrightBlack1:"var( ... htRed)""var(-- ... htRed)"var(--vscode-terminal-ansiBrightRed)(--vscode-terminal-ansiBrightRed)--vscode-terminal-ansiBrightRedvar(--vscode-terminal-ansiBrightGreen)(--vscode-terminal-ansiBrightGreen)--vscode-terminal-ansiBrightGreenvar(--vscode-terminal-ansiBrightYellow)(--vscode-terminal-ansiBrightYellow)--vscode-terminal-ansiBrightYellow4:"var( ... tBlue)""var(-- ... tBlue)"var(--vscode-terminal-ansiBrightBlue)(--vscode-terminal-ansiBrightBlue)--vscode-terminal-ansiBrightBluevar(--vscode-terminal-ansiBrightMagenta)(--vscode-terminal-ansiBrightMagenta)--vscode-terminal-ansiBrightMagenta6:"var( ... tCyan)""var(-- ... tCyan)"var(--vscode-terminal-ansiBrightCyan)(--vscode-terminal-ansiBrightCyan)--vscode-terminal-ansiBrightCyanvar(--vscode-terminal-ansiBrightWhite)(--vscode-terminal-ansiBrightWhite)--vscode-terminal-ansiBrightWhitefunctio ... })[u])}{return ... })[u])}return ... "})[u])l.repla ... "})[u])l.replace[&"<>]u=>({"& ... ;"})[u]({"&":" ... ;"})[u]({"&":" ... >"}){"&":"& ... ">"}"&":"&"&'"':"""""<":"<"<">":">">functio ... ("; ")}{return ... ("; ")}return ... n("; ")Object. ... n("; ")Object. ... `).joinObject. ... ${c}`)Object. ... (l).mapObject.entries(l)([u,c]) ... : ${c}``${u}: ${c}`; const w ... ff")});wr=({co ... }})]})}({code: ... }})]})}{code:l ... stId:c}code:ltestId:c{const ... }})]})}const f ... ),[l]);f=ct.us ... l),[l])ct.useM ... l),[l])ct.useMemo()=>Uv(l)Uv(l)return ... "}})]})m.jsxs( ... "}})]}){classN ... ""}})]}classNa ... r-text""test-e ... r-text"test-error-container test-error-text"data-testid":cchildre ... |""}})][u,m.js ... |""}})]m.jsx(" ... ||""}}){classN ... f||""}}test-error-viewdangero ... :f||""}{__html:f||""}__html:f||""f||""Nv=({pr ... mpt"})}({promp ... mpt"})}{prompt:l}prompt:l{const[ ... mpt"})}const[u ... te(!1);return ... ompt"})m.jsx(" ... ompt"}){classN ... rompt"}className:"button"style:{minWidth:100}{minWidth:100}minWidth:100onClick ... },3e3)}async() ... },3e3)}{await ... },3e3)}await n ... )},3e3)await n ... Text(l)c(!0)()=>{c(!1)}{c(!1)}childre ... prompt"u?"Copi ... prompt"CopiedCopy promptBv=({di ... iff")})({diff: ... iff")}){diff:l}m.jsx(" ... iff")}){"data- ... diff")}"data-t ... r-view""test-s ... r-view"test-screenshot-error-viewchildre ... -diff")m.jsx(u ... -diff"){diff:l ... ils:!0}hideDetails:!0image-difffunctio ... lt)"})}{return ... lt)"})}return ... ult)"})Mv(l||" ... ult)"})l||""{bg:"va ... ault)"}bg:"var ... ubtle)""var(-- ... ubtle)"var(--color-canvas-subtle)(--color-canvas-subtle)--color-canvas-subtlefg:"var ... fault)"const Q ... tart();Qv=`\n# ... Start()`\n# Ins ... Start()`\n# Ins ... imStart`\n# Ins ... ible.\n`\n# Inst ... sible.\nasync f ... n(`\n`)}{testIn ... derr:h}testInfo:lmetadata:uerrorContext:cerrors:fbuildCodeFrame:rstdout:ostderr:h{var S; ... n(`\n`)}var S;const v ... sage));v=new S ... ssage))new Set ... ssage))f.filte ... essage)f.filte ... `)).mapf.filte ... s(`\n`))f.filterO=>O.me ... es(`\n`)O.messa ... es(`\n`)O.message!O.mess ... es(`\n`)O.message.includesO=>O.messagefor(con ... ete(X);const Ov.keys()v.keysconst X(S=O.me ... ete(X);(S=O.me ... lete(X)(S=O.me ... udes(X)(S=O.message)!=null(S=O.message)S=O.messageS.includes(X)S.includesv.delete(X)v.deleteconst y ... age)));y=f.fil ... sage)))f.filte ... sage)))O=>!(!O ... ssage))!(!O.me ... ssage))(!O.mes ... ssage))!O.mess ... essage)!O.message!v.has(O.message)v.has(O.message)v.hasif(!y.length)return;!y.lengthconst A ... ,"",l];A=[Qv," ... ","",l][Qv,"# ... ","",l]# Test infoo&&A.pu ... ails");o&&A.pu ... tails")o&&A.pu ... ,"```")A.push( ... ,"```")# Stdout```Jf(o)h&&A.pu ... ,"```")# StderrJf(h)A.push( ... tails")# Error detailsfor(con ... "```");A.push( ... "```");Jf(O.message||"")O.message||""c&&A.push(c);c&&A.push(c)A.push(c)const E ... th-1]);E=await ... gth-1])await r ... gth-1])r(y[y.length-1])y[y.length-1]y.length-1return ... in(`\n`)E&&A.pu ... in(`\n`)E&&A.pu ... ,"```")# Test source```tsu!=null ... ,"```")u!=null&&u.gitDiffu!=nullu.gitDiff# Local changes```diffA.join(`\n`)A.joinconst Y ... ","g");Yv=new ... )","g")new Reg ... )","g")"([\\u0 ... <~])))"([\u001B\u009B][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~])))[\u001B\u009B][[\]()#;?]*(?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~]))[\u001B\u009B]\u001B\u009B[[\]()#;?]*[[\]()#;?]\](?:(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~]))(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)|(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~])(?:(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?(?:[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)[a-zA-Z\d]*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*[a-zA-Z\d]*[a-zA-Z\d](?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*(?:;[-a-zA-Z\d\/#&.:=?%@~_]*);[-a-zA-Z\d\/#&.:=?%@~_]*[-a-zA-Z\d\/#&.:=?%@~_]*[-a-zA-Z\d\/#&.:=?%@~_]\u0007(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~])(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-ntqry=><~](?:\d{1,4}(?:;\d{0,4})*)?(?:\d{1,4}(?:;\d{0,4})*)\d{1,4}(?:;\d{0,4})*\d{1,4}(?:;\d{0,4})*(?:;\d{0,4});\d{0,4}\d{0,4}[\dA-PR-TZcf-ntqry=><~]A-PR-Tf-nfunctio ... Yv,"")}{return ... Yv,"")}return ... (Yv,"")l.replace(Yv,"")functio ... ues()]}{var f; ... ues()]}const c=new Map;c=new Mapfor(con ... nt:r})}{const ... nt:r})}const o ... +)?$/);o=r.nam ... ]+)?$/)r.name. ... ]+)?$/)r.name.match/^(.*)- ... .]+)?$/^(.*)-(expected|actual|diff|previous)(\.[^.]+)?$(.*).*(expected|actual|diff|previous)expected|actual|diff|previousprevious(\.[^.]+)?(\.[^.]+)\.[^.]+\.[^.]+[^.]if(!o)continue;const[, ... ,A=h+y;[,h,v,y=""]=o[,h,v,y=""]A=h+yh+ylet E=c.get(A);E=c.get(A)c.get(A)E||(E={ ... ent:r})E||(E={ ... t(A,E))(E={nam ... t(A,E))E={name ... et(A,E)E={name ... ${h}`]}{name:A ... ${h}`]}anchors ... -${h}`][`attachment-${h}`]`attachment-${h}`c.set(A,E)E.ancho ... f(r)}`)E.anchors.pushE.anchors`attach ... Of(r)}`u.attac ... exOf(r)v==="ac ... ent:r})v==="actual"(E.actu ... ent:r})E.actua ... ment:r}E.actual{attachment:r}attachment:rv==="ex ... cted"})v==="expected"(E.expe ... cted"})E.expec ... ected"}E.expected{attach ... ected"}title:"Expected"v==="pr ... ious"})v==="previous"(E.expe ... ious"})E.expec ... vious"}{attach ... vious"}title:"Previous"Previousv==="di ... ent:r})v==="diff"(E.diff ... ent:r})E.diff= ... ment:r}E.difffor(con ... ment));const[r,o]!o.actu ... ment));!o.actu ... hment))!o.actu ... xpected!o.actualo.actual!o.expectedo.expectedc.delete(r)(l.dele ... hment))l.delet ... chment)l.deleteo.actual.attachmento.expec ... achment(f=o.di ... achment(f=o.diff)==null(f=o.diff)f=o.diffo.difff.attachmentreturn[ ... lues()][...c.values()]...c.values()c.values()c.valuesconst G ... })]})};Gv=({te ... )})]})}({test: ... )})]})}{test:l ... ions:f}testRunMetadata:c{const{ ... )})]})}const{s ... oid 0);{screen ... }},[u]){screen ... text:O}screenshots:rvideos:otraces:hotherAttachments:vdiffs:yerrors:AotherAt ... chors:EotherAt ... AnchorsscreenshotAnchors:SerrorContext:Oct.useM ... }},[u])()=>{co ... ext:U}}{const ... ext:U}}const B ... Set(B);B=u.att ... h("_"))u.attac ... h("_"))u.attachments.filterN=>!N.n ... th("_")!N.name ... th("_")N.name. ... th("_")N.name.startsWithN.nameb=new S ... ge/")))new Set ... ge/")))B.filte ... age/"))B.filterN=>N.co ... mage/")N.conte ... mage/")N.conte ... rtsWithN.contentTypeimage/p=[...b ... f(N)}`)[...b]. ... f(N)}`)[...b].map[...b]...bN=>`att ... Of(N)}``attach ... Of(N)}`B.indexOf(N)B.indexOfx=B.fil ... deo/"))B.filte ... deo/"))N=>N.co ... ideo/")N.conte ... ideo/")video/R=B.fil ... trace")B.filte ... trace")N=>N.name==="trace"N.name==="trace"U=B.fin ... ntext")B.find( ... ntext")B.findN=>N.na ... ontext"N.name= ... ontext"error-contextZ=new Set(B)new Set(B)[...b,. ... te(N));[...b,. ... ete(N))[...b,. ... forEach[...b,...x,...R]...x...RN=>Z.delete(N)Z.delete(N)Z.deleteconst F ... ssage);F=[...Z ... f(N)}`)[...Z]. ... f(N)}`)[...Z].map[...Z]...Zj=Lv(b,u)Lv(b,u)D=u.err ... essage)u.error ... essage)u.errors.mapu.errorsN=>N.messageN.messagereturn{ ... text:U}{screen ... text:U}screenshots:[...b]videos:xtraces:RotherAttachments:Zdiffs:jerrors:DotherAt ... chors:FscreenshotAnchors:perrorContext:UX=P5(as ... void 0)P5(asyn ... void 0)async() ... rr:x})}{if(f!= ... rr:x})}if(f!=n ... return;f!=null ... yPromptf!=nullf.noCopyPromptconst B ... void 0;B=u.att ... tdout")u.attac ... tdout")u.attachments.findR=>R.name==="stdout"R.name==="stdout"R.nameb=u.att ... tderr")u.attac ... tderr")R=>R.name==="stderr"R.name==="stderr"p=B!=nu ... :void 0B!=null ... :void 0B!=null ... /plain"B!=null&&B.bodyB!=nullB.bodyB.conte ... /plain"B.contentTypex=b!=nu ... :void 0b!=null ... :void 0b!=null ... /plain"b!=null&&b.bodyb!=nullb.bodyb.conte ... /plain"b.contentTypereturn ... err:x})await z ... err:x})zv({tes ... err:x}){testIn ... derr:x}testInf ... in(`\n`)[`- Nam ... in(`\n`)[`- Nam ... `].join[`- Nam ... lumn}`]`- Name ... title}`l.path.join(" >> ")`- Loca ... olumn}`metadata:cerrorCo ... :O.bodyO!=null ... :O.bodyO!=null&&O.pathO!=nullO.pathawait f ... text())fetch(O ... text())fetch(O.path).thenfetch(O.path)R=>R.text()R.text()R.textO==null ... :O.bodyO==nullO.bodyerrors:u.errorsbuildCo ... deframeasync R=>R.codeframeR.codeframestdout:pstderr:x[l,O,c,u]return ... ))})]}){classN ... `))})]}classNa ... result"test-resultchildre ... }`))})][!!A.le ... }`))})]!!A.len ... })})]})!!A.length!A.length{header ... ]})})]}header:"Errors"Errorschildre ... )]})})][X&&m.j ... )]})})]X&&m.js ... t:X})})m.jsx(" ... t:X})}){style: ... pt:X})}style:{ ... ndex:1}{positi ... ndex:1}right:"16px"16pxpadding:"10px"10pxzIndex:1childre ... mpt:X})m.jsx(Nv,{prompt:X}){prompt:X}prompt:XA.map(( ... })]})})A.map(B,b)=> ... p})]})}{const ... p})]})}const p=Xv(B,y);p=Xv(B,y)Xv(B,y)return ... :p})]})m.jsxs( ... :p})]}){childr ... f:p})]}childre ... ff:p})][m.jsx( ... ff:p})]m.jsx(w ... ge-"+b){code:B}code:B"test-r ... age-"+b"test-r ... ssage-"test-result-error-message-p&&m.js ... iff:p})m.jsx(Bv,{diff:p}){diff:p}diff:p!!u.ste ... b}`))})!!u.steps.length!u.steps.lengthu.steps.lengthu.stepsm.jsx(k ... b}`))}){header ... {b}`))}header:"Test Steps"Test Stepschildre ... ${b}`))u.steps ... ${b}`))u.steps.map(B,b)=> ... -${b}`)m.jsx(c ... -${b}`){step:B ... epth:0}step:Bdepth:0`step-${b}`y.map(( ... ${b}`))y.mapm.jsx(S ... -${b}`){id:B.a ... :B})})}id:B.anchorsB.anchorschildre ... f:B})})m.jsx(k ... f:B})}){dataTe ... ff:B})}dataTes ... e-diff""test-r ... e-diff"test-results-image-diffheader: ... .name}``Image ... .name}`B.namerevealO ... anchorschildre ... iff:B})m.jsx(um,{diff:B}){diff:B}diff:B`diff-${b}`!!r.len ... b}`))})!!r.length!r.lengthheader:"Screenshots"ScreenshotsrevealOnAnchorId:Sr.map(( ... ${b}`))r.mapm.jsxs( ... -${b}`){id:`at ... t:u})]}id:`att ... Of(B)}``attach ... Of(B)}`u.attac ... exOf(B)childre ... lt:u})][m.jsx( ... lt:u})]m.jsx(" ... th)})}){href:V ... ath)})}href:Ve(B.path)Ve(B.path)B.pathchildre ... path)})m.jsx(" ... path)}){classN ... .path)}classNa ... enshot"screenshotsrc:Ve(B.path)m.jsx(n ... ult:u}){attach ... sult:u}attachment:B`screenshot-${b}`!!h.len ... ]})})})!!h.length!h.lengthm.jsx(S ... ]})})}){id:"at ... )]})})}id:"att ... -trace"attachment-tracechildre ... ))]})})m.jsx(k ... ))]})}){header ... `))]})}header:"Traces"TracesrevealO ... -trace"childre ... }`))]})m.jsxs( ... }`))]}){childr ... b}`))]}childre ... {b}`))][m.jsx( ... {b}`))]m.jsx(" ... 20}})}){href:V ... :20}})}href:Ve(nm(h))Ve(nm(h))nm(h)childre ... t:20}})m.jsx(" ... t:20}}){classN ... ft:20}}src:Cvstyle:{ ... eft:20}{width: ... eft:20}width:192height:117marginLeft:20h.map(( ... ${b}`))h.mapm.jsx(n ... -${b}`){attach ... {b+1}`}linkNam ... ${b+1}`h.lengt ... ${b+1}`h.length===1`trace-${b+1}``trace-${b}`!!o.len ... h))})})!!o.length!o.lengthm.jsx(S ... h))})}){id:"at ... th))})}id:"att ... -video"attachment-videochildre ... ath))})m.jsx(k ... ath))}){header ... path))}header:"Videos"VideosrevealO ... -video"childre ... .path))o.map(B ... .path))o.mapB=>m.js ... B.path)m.jsxs( ... B.path){childr ... t:u})]}m.jsx(" ... ype})}){contro ... Type})}controls:!0childre ... tType})m.jsx(" ... tType}){src:Ve ... ntType}type:B.contentType!!v.siz ... b}`))})!!v.size!v.sizev.sizeheader:"Attachments"AttachmentsrevealOnAnchorId:EdataTes ... hments"[...v]. ... ${b}`))[...v].map{id:`at ... ml")})}childre ... tml")})m.jsx(n ... tml")}){attach ... html")}openInN ... /html")B.conte ... /html")B.conte ... rtsWithtext/html`attach ... k-${b}`functio ... name))}{const ... name))}const c ... \n`)[0];c=l.split(`\n`)[0]l.split(`\n`)[0]l.split(`\n`)l.splitif(!(!c ... .name))!(!c.in ... shot"))(!c.inc ... shot"))!c.incl ... pshot")!c.incl ... nshot")c.inclu ... nshot")c.includestoHaveScreenshotc.inclu ... pshot")toMatchSnapshotreturn ... .name))u.find( ... .name))u.findf=>l.in ... f.name)l.includes(f.name)f.nameconst c ... })]})};cm=({te ... th:f})}({test: ... th:f})}{test:l ... epth:f}step:uresult:cdepth:f{const ... th:f})}const r=se();r=se()return ... pth:f})m.jsx(T ... pth:f}){title: ... epth:f}title:m ... n)})]})m.jsxs( ... n)})]}){"aria- ... on)})]}"aria-label":u.titleu.title"step-t ... tainer"step-title-containerchildre ... ion)})][hc(u.e ... ion)})]hc(u.er ... assed")u.error ... passed"u.error ... on===-1u.erroru.duration===-1u.durationu.skipp ... passed"u.skippedm.jsxs( ... e]})]}){classN ... ne]})]}classNa ... e-text"step-title-textchildre ... ine]})][m.jsx( ... ine]})]{children:u.title}children:u.titleu.count ... nt})]})u.count>1u.countm.jsxs( ... nt})]}){childr ... unt})]}childre ... ount})][" \u2715 ", ... ount})]" \u2715 " ✕ m.jsx(" ... count}){classN ... .count}"test-r ... ounter"test-result-counterchildren:u.countu.locat ... line]})u.locationm.jsxs( ... line]}){classN ... .line]}classNa ... t-path"test-result-pathchildre ... n.line]["\u2014 ",u ... n.line]"\u2014 "— u.location.fileu.location.linem.jsx(" ... acer"}){classN ... pacer"}classNa ... spacer"step-spaceru.attac ... :Ih()})u.attac ... ength>0u.attachments.lengthm.jsx(" ... :Ih()}){classN ... n:Ih()}classNa ... t-link""step-a ... t-link"step-attachment-linktitle:" ... chment"reveal attachmenthref:Ve ... }`},r))Ve(Cn({ ... }`},r))Cn({tes ... ]}`},r){test:l ... s[0]}`}anchor: ... ts[0]}``attach ... ts[0]}`u.attachments[0]onClick ... tion()}o=>{o.s ... tion()}{o.stop ... tion()}o.stopPropagation()o.stopPropagationchildren:Ih()m.jsx(" ... tion)}){classN ... ation)}classNa ... ration"step-durationchildre ... ration)Ol(u.duration)loadChi ... :void 0u.steps ... :void 0u.steps ... snippetu.snippet()=>{co ... cat(h)}{const ... cat(h)}const o ... l},y));o=u.sni ... e")]:[]u.snipp ... e")]:[][m.jsx( ... line")]m.jsx(w ... "line"){testId ... nippet}testId: ... nippet"test-snippetcode:u.snippeth=u.ste ... :l},y))u.steps ... :l},y))(v,y)=> ... t:l},y)m.jsx(c ... t:l},y){step:v ... test:l}step:vdepth:f+1f+1return o.concat(h)o.concat(h)o.concatVv=({pr ... )})]})}({proje ... )})]})}{projec ... ions:h}test:urun:fnext:rprev:o{const[ ... )})]})}const[v ... ))??[];[v,y]=ct.useState(f)ct.useState(f)A=se()E=u.ann ... "))??[]u.annot ... "))??[]u.annot ... h("_"))u.annotations.filteru.annotationsS=>!S.t ... th("_")!S.type ... th("_")S.type. ... th("_")S.type.startsWithS.typereturn ... S)})]})m.jsxs( ... S)})]}){childr ... +S)})]}childre ... (+S)})][m.jsx( ... (+S)})]m.jsx(O ... })]})}){title: ... )})]})}title:u.titleleftSup ... \u203a ")})m.jsx(" ... \u203a ")}){classN ... " \u203a ")}classNa ... e-path"test-case-pathchildre ... (" \u203a ")u.path.join(" \u203a ")u.path.join" \u203a " › rightSu ... })})]}){childr ... "})})]}childre ... \u00bb"})})][m.jsx( ... \u00bb"})})]m.jsx(" ... us"})}){classN ... ous"})}classNa ... idden")Ze(!o&&"hidden")!o&&"hidden"childre ... ious"})m.jsx(T ... ious"}){href:C ... vious"}href:Cn({test:o},A)Cn({test:o},A){test:o}test:ochildre ... evious""\u00ab previous"« previousm.jsx(" ... h:10}}){style:{width:10}}style:{width:10}{width:10}width:10m.jsx(" ... \u00bb"})}){classN ... t \u00bb"})}Ze(!r&&"hidden")!r&&"hidden"childre ... xt \u00bb"})m.jsx(T ... xt \u00bb"}){href:C ... ext \u00bb"}href:Cn({test:r},A)Cn({test:r},A){test:r}test:rchildren:"next \u00bb""next \u00bb"next »{classN ... on)})]}style:{ ... "24px"}{lineHeight:"24px"}lineHeight:"24px"24px[m.jsx( ... ion)})]m.jsx(" ... ne]})}){classN ... ine]})}classNa ... cation"test-case-locationchildre ... line]}){value: ... .line]}value:` ... .line}``${u.lo ... .line}`[u.loca ... n.line]m.jsx(t ... or:!0}){test:u ... tor:!0}trailingSeparator:!0test-case-durationm.jsx($ ... .tags}){style: ... u.tags}style:{ ... :"6px"}{marginLeft:"6px"}marginLeft:"6px"6pxactiveP ... ectNameu.projectNameotherLabels:u.tagsu.tagsu.resul ... },O))})u.resul ... gth!==0u.results.length===0u.results.lengthu.resultsE.length!==0m.jsx(k ... },O))}){header ... S},O))}header:"Annotations"AnnotationsdataTes ... ations""test-c ... ations"test-case-annotationschildre ... :S},O))E.map(( ... :S},O))E.map(S,O)=> ... n:S},O)m.jsx(z ... n:S},O){annotation:S}annotation:Sm.jsx(S ... y(+S)}){tabs:u ... >y(+S)}tabs:u. ... }))||[]u.resul ... }))||[]u.resul ... ]})}}))u.results.map(S,O)=> ... )]})}})({id:St ... )]})}}){id:Str ... })]})}}id:String(O)String(O){style: ... on)})]}style:{ ... enter"}{displa ... enter"}[hc(S.s ... ion)})]hc(S.status)S.statusZv(O)u.resul ... tion)})u.results.length>1"test-c ... ration"test-case-run-durationOl(S.duration)S.durationrender: ... h})]})}()=>{co ... h})]})}{const ... h})]})}const X ... ("_"));X=S.ann ... h("_"))S.annot ... h("_"))S.annotations.filterS.annotationsB=>!B.t ... th("_")!B.type ... th("_")B.type. ... th("_")B.type.startsWithB.typereturn ... :h})]})m.jsxs( ... :h})]}){childr ... s:h})]}childre ... ns:h})][!!X.le ... ns:h})]!!X.len ... },b))})!!X.length!X.lengthm.jsx(k ... },b))}){header ... B},b))}childre ... :B},b))X.map(( ... :B},b))X.map(B,b)=> ... n:B},b)m.jsx(z ... n:B},b){annotation:B}annotation:Bm.jsx(G ... ons:h}){test:u ... ions:h}result:Sselecte ... ring(v)String(v)setSele ... =>y(+S)S=>y(+S)y(+S)+Sfunctio ... ]})]})}{annota ... ion:u}}annotat ... tion:u}{type:l ... tion:u}type:ldescription:u{return ... ]})]})}{classN ... u)]})]}classNa ... tation""test-c ... tation"test-case-annotationchildre ... (u)]})][m.jsx( ... (u)]})]{style: ... dren:l}style:{ ... "bold"}{fontWeight:"bold"}fontWeight:"bold"u&&m.js ... i(u)]})m.jsxs( ... i(u)]}){value: ... Di(u)]}childre ... ,Di(u)][": ",Di(u)]Di(u)functio ... :"Run"}{return ... :"Run"}return ... `:"Run"l?`Retr ... `:"Run"`Retry #${l}`Runconst s ... `))})};sm=({fi ... }`))})}({file: ... }`))})}{file:l ... oter:r}file:lprojectNames:uisFileExpanded:csetFileExpanded:ffooter:r{const ... }`))})}const o=se();o=se()return ... d}`))})m.jsx(i ... d}`))}){expand ... Id}`))}expande ... :void 0c?c(l.fileId):void 0c(l.fileId)l.fileIdnoInsets:!0setExpa ... :void 0f?(h=>f ... :void 0(h=>f(l.fileId,h))h=>f(l.fileId,h)f(l.fileId,h)header: ... eName})m.jsx(" ... eName}){classN ... leName}classNa ... ection""chip-h ... ection"chip-header-allow-selectionchildren:l.fileNamel.fileNamechildre ... tId}`))l.tests ... tId}`))l.tests.mapl.testsh=>m.js ... stId}`)m.jsxs( ... stId}`){classN ... ]})})]}classNa ... utcome)Ze("tes ... utcome)test-file-test"test-f ... outcome"test-f ... tcome-"test-file-test-outcome-h.outcome[m.jsxs ... )]})})]style:{ ... start"}{alignI ... start"}alignIt ... -start"flex-start[m.jsxs ... ion)})]childre ... s})]})][m.jsx( ... s})]})]m.jsx(" ... come)}){classN ... tcome)}classNa ... s-icon""test-f ... s-icon"test-file-test-status-iconchildre ... utcome)hc(h.outcome)m.jsxs( ... gs})]}){childr ... ags})]}childre ... tags})][m.jsx( ... tags})]m.jsx(T ... ")})}){href:C ... \u203a ")})}href:Cn({test:h},o)Cn({test:h},o){test:h}test:htitle:[ ... (" \u203a ")[...h.p ... (" \u203a ")[...h.p ... e].join[...h.path,h.title]...h.pathh.pathh.titlechildre ... \u203a ")})test-file-title{style: ... h.tags}h.projectNameotherLabels:h.tagsh.tags{"data- ... ation)}"data-t ... ration"test-durationstyle:{ ... right"}{minWid ... right"}minWidth:"50px"textAlign:"right"Ol(h.duration)h.duration{classN ... 0})]})}classNa ... ls-row""test-f ... ls-row"test-file-details-rowchildre ... !0})]})m.jsxs( ... !0})]}){classN ... :!0})]}classNa ... -items""test-f ... -items"test-file-details-row-itemschildre ... m:!0})][m.jsx( ... m:!0})]m.jsx(T ... ne]})}){href:C ... ine]})}classNa ... h-link""test-f ... h-link"test-file-path-linktest-file-path[h.loca ... n.line]h.location.fileh.locationh.location.linem.jsx(qv,{test:h})m.jsx(Iv,{test:h})m.jsx(t ... im:!0}){test:h,dim:!0}dim:!0`test-${h.testId}`h.testIdfunctio ... k5()})}{test:l}{const ... k5()})}const u=se();for(con ... :k5()})const cc.attachmentsif(f.co ... :k5()})f.conte ... diff)/)f.conte ... mage/")f.conte ... rtsWithf.contentTypef.name. ... diff)/)f.name.match/-(expe ... |diff)/-(expected|actual|diff)(expected|actual|diff)expected|actual|diffreturn ... :k5()})m.jsx(T ... :k5()}){href:C ... n:k5()}href:Cn ... )}`},u)Cn({tes ... )}`},u){test:l ... f(f)}`}anchor: ... Of(f)}``attach ... Of(f)}`c.attac ... exOf(f)c.attac ... indexOftitle:"View images"View imageschildren:k5()k5()functio ... void 0}{const ... void 0}const u ... deo"));c=l.res ... ideo"))l.resul ... ideo"))l.results.findf=>f.at ... video")f.attac ... video")f.attachments.somef.attachmentsr=>r.name==="video"r.name==="video"return ... :void 0c?m.jsx ... :void 0m.jsx(T ... :J5()}){href:C ... n:J5()}href:Cn ... eo"},u)Cn({tes ... eo"},u){test:l ... video"}anchor: ... -video"title:"View video"View videochildren:J5()J5()class K ... ldren}}ct.Componentconstru ... null})}(){supe ... null})}{super( ... null})}super(...arguments);super(...arguments)...argumentsyn(this ... :null}){error: ... o:null}error:nullerrorInfo:nullcompone ... fo:f})}(c,f){t ... fo:f})}{this.s ... fo:f})}this.se ... nfo:f})this.setState{error: ... Info:f}error:cerrorInfo:frender( ... ildren}(){var ... ildren}{var c, ... ildren}var c,f,r;return ... hildrenthis.st ... hildrenthis.st ... rorInfothis.state.errorthis.statethis.state.errorInfoclassNa ... ew p-3"metadata-view p-3childre ... k]})})][m.jsx( ... k]})})]m.jsx(" ... ata."}){childr ... data."}childre ... adata.""An err ... adata."An error was encountered when trying to render metadata.An error was encountered when trying to render metadatam.jsx(" ... ck]})}){childr ... ack]})}childre ... tack]})m.jsxs( ... tack]})pre{style: ... Stack]}style:{ ... croll"}{overflow:"scroll"}overflow:"scroll"childre ... tStack][(c=thi ... tStack](c=this ... message(c=this ... )==null(c=this.state.error)c=this.state.errorc.messagem.jsx("br",{})(f=this ... f.stack(f=this ... )==null(f=this.state.error)f=this.state.errorf.stack(r=this ... ntStack(r=this ... )==null(r=this ... orInfo)r=this. ... rorInfor.componentStackthis.props.childrenconst k ... ]})})};kv=l=>m ... ata})})l=>m.js ... ata})})m.jsx(K ... ata})}){childr ... data})}childre ... adata})m.jsx(J ... adata}){metada ... tadata}metadata:l.metadatal.metadataJv=l=>{ ... ]})]})}l=>{con ... ]})]})}const u ... r)):[];u=l.metadatac=se(). ... (r)):[]se().ha ... (r)):[]se().ha ... other")"show-m ... -other"show-metadata-otherObject. ... has(r))Object. ... .filterObject. ... tadata)([r])=>!fm.has(r)[r]!fm.has(r)fm.has(r)fm.hasif(u.ci ... )]})]})u.ci||u ... ength>0u.ci||u.gitCommitu.ciu.gitCommitclassNa ... a-view"metadata-view[u.ci&& ... )})]})]u.ci&&! ... :u.ci})u.ci&&!u.gitCommit!u.gitCommitm.jsx(F ... :u.ci}){info:u.ci}info:u.ciu.gitCo ... ommit})m.jsx(W ... ommit}){ci:u.c ... Commit}ci:u.cicommit:u.gitCommitc.lengt ... })})]}){childr ... )})})]}childre ... r)})})][(u.git ... r)})})](u.gitC ... ator"})(u.gitCommit||u.ci)u.gitCommit||u.cim.jsx(" ... ator"}){classN ... rator"}metadata-separatorm.jsx(" ... ,r)})}){classN ... },r)})}classNa ... erties""metada ... erties"metadata-section metadata-propertiesrole:"list"childre ... )},r)})c.map(( ... )},r)})([r,o]) ... })},r)}{const ... })},r)}const h ... +"\u2026":h;h=typeo ... gify(o)typeof ... gify(o)typeof o!="object"typeof oo===nullo===void 0String(o)JSON.stringify(o)v=h.len ... )+"\u2026":hh.lengt ... )+"\u2026":hh.length>1e3h.slice(0,1e3)+"\u2026"h.slice(0,1e3)"\u2026"…return ... ]})},r)m.jsx(" ... ]})},r)classNa ... operty"copyable-propertyrole:"listitem"listitemchildre ... v)})]})m.jsxs( ... v)})]}){value: ... (v)})]}value:hchildre ... i(v)})][m.jsx( ... i(v)})]{style: ... dren:r}title:rm.jsx(" ... Di(v)}){title: ... :Di(v)}title:vchildren:Di(v)Di(v)Fv=({in ... })})})}({info: ... })})})}{info:l}info:l{const ... })})})}const u ... itHref;u=l.prT ... tHash}`l.prTit ... tHash}`l.prTitle`Commit ... tHash}`l.commitHashc=l.prH ... mitHrefl.prHre ... mitHrefl.prHrefl.commitHrefreturn ... u})})})m.jsx(" ... u})})}){classN ... :u})})}metadata-sectionchildre ... n:u})})m.jsx(" ... n:u})}){role:" ... en:u})}childre ... ren:u}){href:V ... dren:u}href:Ve(c)Ve(c)Wv=({ci ... ]})]})}({ci:l, ... ]})]})}{ci:l,commit:u}ci:lcommit:uconst c ... .time);c=(l==n ... subject(l==nul ... subject(l==nul ... rTitle)l==null ... prTitleu.subjectf=(l==n ... itHref)(l==nul ... itHref)(l==nul ... prHref)l==null ... .prHrefl==null ... mitHrefr=` <${ ... mail}>`` <${u. ... mail}>`u.author.emailu.authoro=`${u. ... e}${r}``${u.au ... e}${r}`u.author.nameh=Intl. ... r.time)Intl.Da ... r.time)Intl.Da ... .formatIntl.Da ... dium"}){dateStyle:"medium"}dateStyle:"medium"mediumu.committer.timeu.committerv=Intl. ... r.time)Intl.Da ... long"}){dateSt ... "long"}dateStyle:"full"fulltimeStyle:"long"[m.jsxs ... ]})]})]{role:" ... n:c})]}childre ... en:c})][f&&m.j ... en:c})]f&&m.js ... ren:c}){href:V ... dren:c}href:Ve(f)Ve(f)title:c!f&&m.j ... ren:c}){title:c,children:c}m.jsxs( ... h]})]}){role:" ... ,h]})]}childre ... ",h]})][m.jsx( ... ",h]})]className:"mr-1"mr-1m.jsxs( ... ",h]}){title: ... n ",h]}children:[" on ",h][" on ",h] on fm=new ... kers"])new Set ... kers"])["ci"," ... rkers"]actualWorkers_v=l=>{ ... length}l=>{con ... length}const u ... as(c));u=Objec ... has(c))Object. ... has(c))([c])=>!fm.has(c)[c]!fm.has(c)fm.has(c)return! ... .length!l.ci&& ... .length!l.ci&&!l.gitCommit!l.cil.ci!l.gitCommitl.gitCommit!u.lengthPv=({fi ... d"})})}({files ... d"})})}{files: ... ames:f}files:lexpandedFiles:usetExpandedFiles:cprojectNames:f{const ... d"})})}const r ... },[l]);r=ct.us ... o},[l])ct.useM ... o},[l])()=>{co ... turn o}{const ... turn o}const o=[];for(con ... <200});const vh+=v.te ... <200});h+=v.te ... h<200})h+=v.tests.lengthv.tests.lengthv.testso.push( ... h<200}){file:v ... :h<200}file:vdefault ... d:h<200h<200return oreturn ... nd"})})m.jsx(m ... nd"})}){childr ... und"})}childre ... ound"})r.lengt ... ound"})r.map(( ... eId}`))({file: ... leId}`){file:o ... nded:h}file:odefaultExpanded:hm.jsx(s ... leId}`){file:o ... ,c(A)}}isFileE ... ?h:!!y}v=>{con ... ?h:!!y}{const ... ?h:!!y}const y=u.get(v);y=u.get(v)u.get(v)u.getreturn ... 0?h:!!yy===void 0?h:!!yy===void 0!!ysetFile ... ),c(A)}(v,y)=> ... ),c(A)}{const ... ),c(A)}const A=new Map(u);A=new Map(u)new Map(u)A.set(v,y),c(A)A.set(v,y)A.set`file-${o.fileId}`o.fileIdm.jsx(" ... ound"}){classN ... found"}classNa ... -files""chip-h ... -files"chip-header test-file-no-fileschildre ... found"No tests foundY2=({re ... )})]})}({repor ... )})]})}{report ... ible:f}report:lfilteredStats:umetadataVisible:ctoggleM ... sible:ftoggleM ... Visible{if(!l) ... )})]})}if(!l)return null;const r ... ]})]});r=l.pro ... ames[0]l.proje ... ames[0]l.proje ... gth===1l.proje ... .lengthl.projectNames!!l.projectNames[0]!l.projectNames[0]l.projectNames[0]o=!r&&!u!r&&!uh=!_v(l ... ata"]})!_v(l.m ... ata"]})!_v(l.metadata)_v(l.metadata)m.jsxs( ... ata"]}){classN ... data"]}classNa ... -line")Ze("met ... -line")metadata-toggle!o&&"me ... d-line""metada ... d-line"metadata-toggle-second-linetitle:c ... tadata"c?"Hide ... tadata"Hide metadataShow metadatachildre ... adata"][c?Ni() ... adata"]c?Ni():Cl()Metadatav=m.jsx ... o&&h]})m.jsxs( ... o&&h]}){classN ... ,o&&h]}classNa ... r-info""test-f ... r-info"test-file-header-infochildre ... ),o&&h][r&&m.j ... ),o&&h]r&&m.js ... s[0]]})m.jsxs( ... s[0]]}){"data- ... es[0]]}"data-t ... t-name"project-namechildre ... mes[0]]["Proje ... mes[0]]Project: u&&m.js ... +")"]})m.jsxs( ... +")"]}){"data- ... )+")"]}"data-t ... -count""filter ... -count"filtered-tests-countchildre ... n)+")"]["Filte ... n)+")"]Filtered: u.total!!u.tot ... on)+")"!!u.total!u.total"("+Ol( ... on)+")""("+Ol(u.duration)o&&hy=m.jsx ... )]})]}){childr ... 0)]})]}childre ... ?0)]})][m.jsx( ... ?0)]})]m.jsx(" ... ():""}){"data- ... g():""}"data-t ... l-time"overall-timestyle:{ ... "10px"}{marginRight:"10px"}marginRight:"10px"childre ... ng():""l?new D ... ng():""new Dat ... rtTime)l.startTimem.jsxs( ... ??0)]}){"data- ... n??0)]}overall-durationchildre ... on??0)]["Total ... on??0)]Total time: Ol(l.duration??0)l.duration??0l.duration{childr ... E))})]}childre ... +E))})][m.jsx( ... +E))})]m.jsx(O ... der:y}){title: ... ader:y}title:l ... s.titlel.options.titleleftSuperHeader:vrightSuperHeader:y!o&&hc&&m.js ... adata})m.jsx(k ... adata})!!l.err ... "+E))})!!l.errors.length!l.errors.lengthl.errors.lengthl.errorsm.jsx(k ... "+E))}){header ... -"+E))}dataTes ... errors"report-errorschildre ... e-"+E))l.error ... e-"+E))l.errors.map(A,E)=> ... ge-"+E)m.jsx(w ... ge-"+E){code:A}code:A"test-r ... age-"+Etest-report-error-message-rm=l=>{ ... ${f}s`}l=>{con ... ${f}s`}{const ... ${f}s`}const u ... f=u%60;u=Math.round(l/1e3)Math.round(l/1e3)c=Math.floor(u/60)Math.floor(u/60)f=u%60u%60return ... ${f}s`c===0?` ... ${f}s`c===0`${f}s``${c}m ${f}s`$v=({en ... )]})})}({entri ... )]})})}{entries:l}entries:lconst f ... tion));f=Math. ... th))*10Math.ma ... th))*10Math.ma ... ength))...l.ma ... length)l.map(D ... length)D=>D.label.lengthD.label.lengthD.labelo={top: ... 50,f))}{top:20 ... 50,f))}top:20right:20bottom:40left:Ma ... (50,f))Math.mi ... (50,f))800*.5Math.max(50,f)h=800-o.left-o.right800-o.left-o.right800-o.lefto.lefto.rightv=Math. ... tTime))Math.mi ... tTime))...l.ma ... rtTime)l.map(D ... rtTime)D=>D.startTimeD.startTimey=Math. ... ation))Math.ma ... ation))...l.ma ... ration)l.map(D ... ration)D=>D.st ... urationD.start ... urationD.durationlet A,E;const S=y-v;S=y-vy-vS<60*1e ... ,E=!1);S<60*1e ... 3,E=!1)S<60*1e360*1e3(A=10*1e3,E=!0)A=10*1e3,E=!0A=10*1e310*1e3E=!0S<300*1 ... 3,E=!1)S<300*1e3300*1e3(A=30*1e3,E=!0)A=30*1e3,E=!0A=30*1e330*1e3S<1800* ... 3,E=!1)S<1800*1e31800*1e3(A=300*1e3,E=!1)A=300*1e3,E=!1A=300*1e3E=!1(A=600*1e3,E=!1)A=600*1e3,E=!1A=600*1e3600*1e3const O ... ),F=[];O=Math.ceil(v/A)*AMath.ceil(v/A)*AMath.ceil(v/A)v/AX=(D,N) ... (0,-3)}(D,N)=> ... (0,-3)}{const ... (0,-3)}const K ... id 0});K=new D ... oid 0})new Dat ... oid 0})new Date(D){hour:" ... void 0}second: ... :void 0E?"2-digit":void 0if(N)return K;return K;if(K.en ... e(0,-3)K.endsW ... (" PM")K.endsWith(" AM")K.endsWith AMK.endsWith(" PM") PMreturn K.slice(0,-3)K.slice(0,-3)K.sliceb=(y-v)*1.1(y-v)*1.1(y-v)p=Math.ceil(b/A)*AMath.ceil(b/A)*AMath.ceil(b/A)b/Ax=h/ph/pR=20U=8Z=l.length*(R+U)l.length*(R+U)(R+U)R+UF=[]for(let ... ==O)})}D<=v+pv+pD+=Alet D=OD=O{const ... ==O)})}const N=D-v;N=D-vD-vF.push( ... ===O)})F.push{x:N*x, ... D===O)}x:N*xN*xlabel:X(D,D===O)X(D,D===O)D===Oconst j ... bottom;j=Z+o.top+o.bottomZ+o.top+o.bottomZ+o.topo.topo.bottom{viewBo ... "})]})}viewBox ... 0 ${j}``0 0 800 ${j}`preserv ... d meet"xMidYMid meet{width: ... "auto"}width:"100%"100%height:"auto"role:"img"childre ... e"})]}){transf ... ue"})]}transfo ... .top})``transl ... .top})`role:"presentation"presentationchildre ... rue"})][F.map( ... rue"})]F.map(( ... )]},K))F.map({x:D,l ... })]},K){x:D,label:N}x:Dlabel:Nm.jsxs( ... })]},K){"aria- ... n:N})]}childre ... en:N})][m.jsx( ... en:N})]m.jsx(" ... h:"1"}){x1:D,y ... th:"1"}x1:Dy1:0x2:Dy2:Zstroke: ... muted)""var(-- ... muted)"var(--color-border-muted)(--color-border-muted)--color-border-mutedstrokeWidth:"1"m.jsx(" ... ren:N}){x:D,y: ... dren:N}y:Z+20Z+20textAnchor:"middle"middledominan ... middle"fontSize:"12"fill:"v ... muted)"var(--color-fg-muted)(--color-fg-muted)--color-fg-mutedchildren:Nl.map(( ... ]},N)})(D,N)=> ... )]},N)}{const ... )]},N)}const K ... ength];K=D.startTime-vD.startTime-vJ=D.duration*xD.duration*xk=K*xK*xnt=N*(R+U)N*(R+U)P=["var ... ue-4)"]["var(- ... ue-4)"]"var(-- ... lue-2)"var(--color-scale-blue-2)(--color-scale-blue-2)--color-scale-blue-2"var(-- ... lue-3)"var(--color-scale-blue-3)(--color-scale-blue-3)--color-scale-blue-3"var(-- ... lue-4)"var(--color-scale-blue-4)(--color-scale-blue-4)--color-scale-blue-4st=P[N%P.length]P[N%P.length]N%P.lengthP.lengthreturn ... })]},N)m.jsxs( ... })]},N){role:" ... bel})]}"aria-l ... tooltipD.tooltipchildre ... abel})][m.jsx( ... abel})]m.jsx(" ... tip})}){classN ... ltip})}classNa ... tt-bar"gantt-barx:ky:ntwidth:Jheight:Rfill:strx:"2"tabIndex:0childre ... oltip})m.jsx(" ... oltip}){children:D.tooltip}children:D.tooltip{x:k+J+ ... ation)}x:k+J+6k+J+6k+Jy:nt+R/2nt+R/2R/2rm(D.duration)m.jsx(" ... label}){x:-10, ... .label}x:-10-10textAnchor:"end"children:D.labelm.jsx(" ... true"}){x1:0,y ... "true"}x1:0x2:0y1:Zx2:hfunctio ... u})]})}{report:l,tests:u}tests:u{return ... u})]})}{childr ... s:u})]}childre ... ts:u})][m.jsx( ... ts:u})]m.jsx(ny,{report:l}){report:l}m.jsx(e ... sts:u})functio ... id 0})}{const[ ... id 0})}const[c ... te(50);[c,f]=u ... ate(50)ue.useState(50)return ... oid 0})m.jsx(s ... oid 0}){file:{ ... void 0}file:{f ... s:null}{fileId ... s:null}fileId:"slowest"slowestfileNam ... Tests"Slowest Teststests:u.slice(0,c)u.slice(0,c)u.slicestats:nullproject ... ctNamesl.json( ... ctNamesl.json()l.jsonfooter: ... :void 0cr+50)()=>f(r=>r+50)f(r=>r+50)r=>r+50r+50childre ... more"][Ni()," ... more"]Show 50 morefunctio ... :c})})}{const ... :c})})}const u ... chines;u=l.json().machinesl.json().machinesif(u.le ... n null;const c ... Index);c=u.map ... dIndex)u.map(f ... dIndex)u.map(f ... }).sortu.map(f ... x??1}})f=>{con ... ex??1}}{const ... ex??1}}const r ... ort"});r=f.tag.join(" ")f.tag.join(" ")f.tag.joinf.tago=new D ... hort"})f.startTime{hour:" ... short"}timeZoneName:"short"let h=` ... ion)}`;h=`${r} ... tion)}``${r} s ... tion)}`rm(f.duration)f.durationreturn ... dex??1}f.shard ... dex??1}f.shard ... dex})`)f.shardIndex(h+=` ( ... dex})`)h+=` (s ... ndex})`` (shar ... ndex})`{label: ... dex??1}label:rtooltip:hstartTi ... artTimeduration:f.durationshardIn ... ndex??1f.shardIndex??1(f,r)=> ... rdIndexf.label ... rdIndexf.label ... .label)f.label ... Comparef.labelr.labelf.shard ... rdIndexr.shardIndexreturn ... s:c})})m.jsx(k ... s:c})}){header ... es:c})}header:"Timeline"Timelinechildre ... ies:c})m.jsx($ ... ies:c}){entries:c}entries:cconst a ... v})})};ay=l=>! ... board")l=>!l.h ... board")!l.has( ... board")!l.has("testId")l.has("testId")l.has!l.has("speedboard")l.has("speedboard")ly=l=>l ... estId")l=>l.has("testId")iy=l=>l ... estId")l=>l.ha ... estId")l.has(" ... estId")uy=({re ... )]})})}({repor ... )]})})}{var Z, ... )]})})}var Z,F;const u ... [E,x]);[c,f]=c ... ew Map)ct.useState(new Map)[r,o]=c ... ")||"")ct.useS ... ")||"")u.get("q")||""u.get("q")[h,v]=c ... ate(!1)y=u.has ... board")u.has("speedboard")u.has[A]=_h( ... es",!1)E=u.get("testId")u.get("testId")S=((Z=u ... ())||""((Z=u.g ... ())||""((Z=u.g ... ring())(Z=u.ge ... tring()(Z=u.get("q"))==null(Z=u.get("q"))Z=u.get("q")Z.toString()Z.toStringO=S?"&q="+S:""S?"&q="+S:"""&q="+S&q=X=(F=l= ... s.title(F=l==n ... s.title(F=l==n ... )==null(F=l==n ... json())F=l==nu ... .json()l==null ... .json()F.options.titleF.optionsB=ct.us ... j},[l])ct.useM ... j},[l])()=>{co ... turn j}{const ... turn j}const j=new Map;j=new Mapfor(con ... ileId);(l==nul ... es)||[](l==nul ... .files)l==null ... ).filesl.json().filesconst DD.testsconst Nj.set(N ... ileId);j.set(N ... fileId)j.setN.testIdD.fileIdreturn jb=ct.us ... r),[r])ct.useM ... r),[r])()=>rc.parse(r)rc.parse(r)rc.parsep=ct.us ... ,[l,b])ct.useM ... ,[l,b])()=>b.e ... ||[],b)b.empty ... ||[],b)b.empty()b.emptysy((l== ... ||[],b)[l,b]x=ct.us ... b,A,y])ct.useM ... b,A,y])()=>y?o ... fy(l,b)y?oy(l, ... fy(l,b)oy(l,b)A?ry(l,b):fy(l,b)ry(l,b)fy(l,b)[l,b,A,y]{prev:R ... ,[E,x]){prev:R,next:U}prev:Rnext:Uct.useM ... ,[E,x])()=>{co ... ext:N}}{const ... ext:N}}const j ... void 0;j=x.tes ... Id===E)x.tests ... Id===E)x.tests.findIndexx.testsK=>K.testId===EK.testId===EK.testIdD=j>0?x ... :void 0j>0?x.t ... :void 0j>0x.tests[j-1]j-1N=j{co ... wn",j)}{const ... wn",j)}const j ... reak}};j=D=>{i ... break}}D=>{if( ... break}}{if(D.t ... break}}if(D.ta ... return;D.targe ... .altKeyD.targe ... metaKeyD.targe ... ctrlKeyD.targe ... hiftKeyD.targe ... ElementD.targetD.shiftKeyD.ctrlKeyD.metaKeyD.altKeyconst N ... ams(u);N=new U ... rams(u)D.keycase"a" ... ;break;D.preve ... ("#?");D.preve ... a("#?")D.preventDefault()D.preventDefaultca("#?")case"p" ... ;break;D.preve ... ",!1));D.preve ... d",!1))N.delete("testId")N.deleteN.delet ... board")ca(Na(N ... d",!1))Na(N,"s:passed",!1)s:passedcase"f" ... ;break;Na(N,"s:failed",!1)s:failedcase"Ar ... ;break;R&&(D.p ... N)+O));R&&(D.p ... ,N)+O))(D.prev ... ,N)+O))D.preve ... },N)+O)ca(Cn({test:R},N)+O)Cn({test:R},N)+OCn({test:R},N){test:R}test:Rcase"Ar ... );breakU&&(D.p ... N)+O));U&&(D.p ... ,N)+O))ca(Cn({test:U},N)+O)Cn({test:U},N)+OCn({test:U},N){test:U}test:Ureturn ... own",j)documen ... own",j)()=>doc ... own",j)[R,U,O,S,u]ct.useE ... "},[X])()=>{X? ... eport"}{X?docu ... eport"}X?docum ... Report"document.title=Xdocument.titledocumen ... Report""Playwr ... Report"Playwright Test ReportclassNa ... 4 pb-4""htmlre ... 4 pb-4"htmlreport vbox px-4 pb-4childre ... })})]}){childr ... B})})]}childre ... :B})})][l&&m.j ... :B})})]l&&m.js ... ext:o})m.jsx(E ... ext:o}){stats: ... Text:o}stats:l.json().statsl.json().statsfilterText:rsetFilterText:om.jsxs( ... []})]}){predic ... |[]})]}predicate:aychildre ... ||[]})][m.jsx( ... ||[]})]m.jsx(Y ... =>!j)}){report ... j=>!j)}report: ... .json()filteredStats:pmetadataVisible:htoggleM ... (j=>!j)()=>v(j=>!j)v(j=>!j)j=>!jm.jsx(P ... )||[]}){files: ... s)||[]}files:x.filesx.filesexpandedFiles:csetExpandedFiles:fproject ... es)||[](l==nul ... tNames)l==null ... ctNamesm.jsxs( ... ts})]}){predic ... sts})]}predicate:iychildre ... ests})][m.jsx( ... ests})]l&&m.js ... tests})m.jsx(t ... tests}){report ... .tests}tests:x.testsm.jsx(K ... p:B})}){predic ... ap:B})}predicate:lychildre ... Map:B})l&&m.js ... Map:B})m.jsx(c ... Map:B}){report ... dMap:B}testId:EtestIdToFileIdMap:Bcy=({re ... :v})})}({repor ... :v})})}{report ... stId:r}testIdToFileIdMap:unext:cprev:ftestId:r{const[ ... :v})})}const[o ... ||"0");[o,h]=c ... ading")ct.useS ... ading")v=+(se( ... )||"0")+(se(). ... )||"0")(se().g ... )||"0")se().get("run")||"0"se().get("run")if(ct.u ... umn"});ct.useE ... oading"ct.useE ... l,r,u])()=>{(a ... ")})()}{(async ... ")})()}(async( ... d")})()(async( ... und")})async() ... ound")}{if(!r| ... ound")}if(!r|| ... return;!r||typ ... .testIdtypeof ... .testIdtypeof o=="object"r===o.testIdo.testIdconst S=u.get(r);S=u.get(r)u.get(r)if(!S){ ... return}!S{h("not ... return}h("not-found");h("not-found")not-foundconst O ... json`);O=await ... .json`)await l ... .json`)l.entry(`${S}.json`)l.entry`${S}.json`h((O==n ... found")(O==nul ... -found"(O==nul ... d===r))O==null ... Id===r)O.tests ... Id===r)O.tests.findO.testsX=>X.testId===rX.testId===rX.testId[o,l,r,u]o==="loading"return ... umn"});m.jsx(" ... lumn"}){classN ... olumn"}classNa ... column"test-case-columnif(o=== ... ]})]});o==="not-found"return ... ]})]});m.jsxs( ... r]})]}){classN ... ,r]})]}childre ... ",r]})][m.jsx( ... ",r]})]m.jsx(O ... ound"}){title: ... found"}title:" ... found"Test not foundm.jsxs( ... ",r]}){classN ... : ",r]}childre ... D: ",r]["Test ID: ",r]Test ID: const{p ... json();{projec ... .json(){projec ... ions:E}projectNames:ymetadata:Aoptions:Ereturn ... n:v})})m.jsx(" ... n:v})}){classN ... un:v})}childre ... run:v})m.jsx(V ... run:v}){projec ... ,run:v}testRunMetadata:Arun:vconst c ... ion:0};c={tota ... tion:0}{total:0,duration:0}total:0duration:0for(con ... ration}{const ... ration}const r ... es(o));r=f.tes ... hes(o))f.tests ... hes(o))f.tests.filterf.testso=>u.matches(o)u.matches(o)u.matchesc.total+=r.length;c.total+=r.lengthc.totalfor(con ... urationc.durat ... urationc.durationo.durationconst c ... ts:[]};c={file ... sts:[]}{files:[],tests:[]}files:[]tests:[]for(con ... (...r)}{const ... (...r)}r.lengt ... h(...r)r.lengt ... sts:r})c.files ... sts:r})c.files.pushc.files{...f,tests:r}tests:rc.tests.push(...r)c.tests.pushc.testsfunctio ... turn r}{const ... turn r}const c ... ew Map;f=new Mapfor(con ... sh(E)}}{const ... sh(E)}}const h ... es(v));h=o.tes ... hes(v))o.tests ... hes(v))o.tests.filtero.testsv=>u.matches(v)u.matches(v)for(con ... ush(E)}{const ... ush(E)}const y ... mous>";y=v.pat ... ymous>"v.path[ ... ymous>"v.path[0]v.pathlet A=f.get(y);A=f.get(y)f.get(y)f.getA||(A={ ... sh(A));A||(A={ ... ush(A))(A={fil ... ush(A))A={file ... push(A)A={file ... ok:!0}}{fileId ... ok:!0}}fileId:yfileName:ystats:{ ... ,ok:!0}{total: ... ,ok:!0}expected:0unexpected:0flaky:0skipped:0ok:!0f.set(y,A)c.push(A)const E ... ce(1)};E={...v ... ice(1)}{...v,p ... ice(1)}path:v.path.slice(1)v.path.slice(1)v.path.sliceA.tests.push(E)A.tests.pushA.testsc.sort( ... Name));c.sort( ... eName))c.sort(o,h)=> ... leName)o.fileN ... leName)o.fileN ... Compareo.fileNameh.fileNameconst r ... ts:[]};r={files:c,tests:[]}{files:c,tests:[]}files:cfor(con ... tests);r.tests ... tests);r.tests ... .tests)r.tests.pushr.tests...o.testsfunctio ... sts:f}}{const ... sts:f}}const f ... es(r));f=((l== ... hes(r))((l==nu ... hes(r))((l==nu ... .filter((l==nu ... .tests)((l==nu ... flatMap((l==nu ... s)||[])r=>r.testsr=>u.matches(r)u.matches(r)return ... ests:f}f.sort( ... ests:f}f.sort( ... ration)f.sort(r,o)=> ... urationo.durat ... urationr.duration{files:[],tests:f}tests:fconst d ... link");dy="dat ... svg%3e""data:i ... svg%3e"data:image/svg+xml,%3csvg%20width='400'%20height='400'%20viewBox='0%200%20400%20400'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M136.444%20221.556C123.558%20225.213%20115.104%20231.625%20109.535%20238.032C114.869%20233.364%20122.014%20229.08%20131.652%20226.348C141.51%20223.554%20149.92%20223.574%20156.869%20224.915V219.481C150.941%20218.939%20144.145%20219.371%20136.444%20221.556ZM108.946%20175.876L61.0895%20188.484C61.0895%20188.484%2061.9617%20189.716%2063.5767%20191.36L104.153%20180.668C104.153%20180.668%20103.578%20188.077%2098.5847%20194.705C108.03%20187.559%20108.946%20175.876%20108.946%20175.876ZM149.005%20288.347C81.6582%20306.486%2046.0272%20228.438%2035.2396%20187.928C30.2556%20169.229%2028.0799%20155.067%2027.5%20145.928C27.4377%20144.979%2027.4665%20144.179%2027.5336%20143.446C24.04%20143.657%2022.3674%20145.473%2022.7077%20150.721C23.2876%20159.855%2025.4633%20174.016%2030.4473%20192.721C41.2301%20233.225%2076.8659%20311.273%20144.213%20293.134C158.872%20289.185%20169.885%20281.992%20178.152%20272.81C170.532%20279.692%20160.995%20285.112%20149.005%20288.347ZM161.661%20128.11V132.903H188.077C187.535%20131.206%20186.989%20129.677%20186.447%20128.11H161.661Z'%20fill='%232D4552'/%3e%3cpath%20d='M193.981%20167.584C205.861%20170.958%20212.144%20179.287%20215.465%20186.658L228.711%20190.42C228.711%20190.42%20226.904%20164.623%20203.57%20157.995C181.741%20151.793%20168.308%20170.124%20166.674%20172.496C173.024%20167.972%20182.297%20164.268%20193.981%20167.584ZM299.422%20186.777C277.573%20180.547%20264.145%20198.916%20262.535%20201.255C268.89%20196.736%20278.158%20193.031%20289.837%20196.362C301.698%20199.741%20307.976%20208.06%20311.307%20215.436L324.572%20219.212C324.572%20219.212%20322.736%20193.41%20299.422%20186.777ZM286.262%20254.795L176.072%20223.99C176.072%20223.99%20177.265%20230.038%20181.842%20237.869L274.617%20263.805C282.255%20259.386%20286.262%20254.795%20286.262%20254.795ZM209.867%20321.102C122.618%20297.71%20133.166%20186.543%20147.284%20133.865C153.097%20112.156%20159.073%2096.0203%20164.029%2085.204C161.072%2084.5953%20158.623%2086.1529%20156.203%2091.0746C150.941%20101.747%20144.212%20119.124%20137.7%20143.45C123.586%20196.127%20113.038%20307.29%20200.283%20330.682C241.406%20341.699%20273.442%20324.955%20297.323%20298.659C274.655%20319.19%20245.714%20330.701%20209.867%20321.102Z'%20fill='%232D4552'/%3e%3cpath%20d='M161.661%20262.296V239.863L99.3324%20257.537C99.3324%20257.537%20103.938%20230.777%20136.444%20221.556C146.302%20218.762%20154.713%20218.781%20161.661%20220.123V128.11H192.869C189.471%20117.61%20186.184%20109.526%20183.423%20103.909C178.856%2094.612%20174.174%20100.775%20163.545%20109.665C156.059%20115.919%20137.139%20129.261%20108.668%20136.933C80.1966%20144.61%2057.179%20142.574%2047.5752%20140.911C33.9601%20138.562%2026.8387%20135.572%2027.5049%20145.928C28.0847%20155.062%2030.2605%20169.224%2035.2445%20187.928C46.0272%20228.433%2081.663%20306.481%20149.01%20288.342C166.602%20283.602%20179.019%20274.233%20187.626%20262.291H161.661V262.296ZM61.0848%20188.484L108.946%20175.876C108.946%20175.876%20107.551%20194.288%2089.6087%20199.018C71.6614%20203.743%2061.0848%20188.484%2061.0848%20188.484Z'%20fill='%23E2574C'/%3e%3cpath%20d='M341.786%20129.174C329.345%20131.355%20299.498%20134.072%20262.612%20124.185C225.716%20114.304%20201.236%2097.0224%20191.537%2088.8994C177.788%2077.3834%20171.74%2069.3802%20165.788%2081.4857C160.526%2092.163%20153.797%20109.54%20147.284%20133.866C133.171%20186.543%20122.623%20297.706%20209.867%20321.098C297.093%20344.47%20343.53%20242.92%20357.644%20190.238C364.157%20165.917%20367.013%20147.5%20367.799%20135.625C368.695%20122.173%20359.455%20126.078%20341.786%20129.174ZM166.497%20172.756C166.497%20172.756%20180.246%20151.372%20203.565%20158C226.899%20164.628%20228.706%20190.425%20228.706%20190.425L166.497%20172.756ZM223.42%20268.713C182.403%20256.698%20176.077%20223.99%20176.077%20223.99L286.262%20254.796C286.262%20254.791%20264.021%20280.578%20223.42%20268.713ZM262.377%20201.495C262.377%20201.495%20276.107%20180.126%20299.422%20186.773C322.736%20193.411%20324.572%20219.208%20324.572%20219.208L262.377%20201.495Z'%20fill='%232EAD33'/%3e%3cpath%20d='M139.88%20246.04L99.3324%20257.532C99.3324%20257.532%20103.737%20232.44%20133.607%20222.496L110.647%20136.33L108.663%20136.933C80.1918%20144.611%2057.1742%20142.574%2047.5704%20140.911C33.9554%20138.563%2026.834%20135.572%2027.5001%20145.929C28.08%20155.063%2030.2557%20169.224%2035.2397%20187.929C46.0225%20228.433%2081.6583%20306.481%20149.005%20288.342L150.989%20287.719L139.88%20246.04ZM61.0848%20188.485L108.946%20175.876C108.946%20175.876%20107.551%20194.288%2089.6087%20199.018C71.6615%20203.743%2061.0848%20188.485%2061.0848%20188.485Z'%20fill='%23D65348'/%3e%3cpath%20d='M225.27%20269.163L223.415%20268.712C182.398%20256.698%20176.072%20223.99%20176.072%20223.99L232.89%20239.872L262.971%20124.281L262.607%20124.185C225.711%20114.304%20201.232%2097.0224%20191.532%2088.8994C177.783%2077.3834%20171.735%2069.3802%20165.783%2081.4857C160.526%2092.163%20153.797%20109.54%20147.284%20133.866C133.171%20186.543%20122.623%20297.706%20209.867%20321.097L211.655%20321.5L225.27%20269.163ZM166.497%20172.756C166.497%20172.756%20180.246%20151.372%20203.565%20158C226.899%20164.628%20228.706%20190.425%20228.706%20190.425L166.497%20172.756Z'%20fill='%231D8D22'/%3e%3cpath%20d='M141.946%20245.451L131.072%20248.537C133.641%20263.019%20138.169%20276.917%20145.276%20289.195C146.513%20288.922%20147.74%20288.687%20149%20288.342C152.302%20287.451%20155.364%20286.348%20158.312%20285.145C150.371%20273.361%20145.118%20259.789%20141.946%20245.451ZM137.7%20143.451C132.112%20164.307%20127.113%20194.326%20128.489%20224.436C130.952%20223.367%20133.554%20222.371%20136.444%20221.551L138.457%20221.101C136.003%20188.939%20141.308%20156.165%20147.284%20133.866C148.799%20128.225%20150.318%20122.978%20151.832%20118.085C149.393%20119.637%20146.767%20121.228%20143.776%20122.867C141.759%20129.093%20139.722%20135.898%20137.7%20143.451Z'%20fill='%23C04B41'/%3e%3c/svg%3eFf=N5Rr=docu ... "link")Rr.rel= ... icon";Rr.rel= ... t icon"Rr.relshortcut iconRr.href=dy;Rr.href=dyRr.hrefdocumen ... ld(Rr);documen ... ild(Rr)document.headconst h ... l})})};hy=()=> ... :l})})}()=>{co ... :l})})}{const[ ... :l})})}const[l ... tate();[l,u]=ct.useState()ct.useState()return ... t:l})})ct.useE ... t:l})})ct.useE ... })},[])()=>{co ... u(c)})}{const ... u(c)})}const c=new my;c=new mynew myc.load( ... ,u(c)})c.load().thenc.load()c.load()=>{va ... ),u(c)}{var f; ... ),u(c)}(f=docu ... (),u(c)(f=docu ... emove()(f=docu ... )==null(f=docu ... se64"))f=docum ... ase64")documen ... ase64")"playwr ... Base64"playwrightReportBase64f.remove()f.removem.jsx(c ... t:l})}){childr ... rt:l})}childre ... ort:l})m.jsx(uy,{report:l})window. ... ,{}))};window. ... y,{}))}window.onload()=>{gv ... y,{}))}{gv(),X ... y,{}))}gv(),X5 ... hy,{}))gv()X5.crea ... hy,{}))X5.crea ... .renderX5.crea ... root"))X5.createRootdocumen ... #root")#rootm.jsx(hy,{})class m ... ta())}}constru ... json")}(){yn(t ... json")}{yn(thi ... json")}yn(this ... w Map);yn(this ... ew Map)yn(this,"_json")async l ... json")}(){cons ... json")}{const ... json")}const u ... s:!1});u=docum ... Contentdocumen ... Contentc=new F ... rs:!1})new Ff. ... rs:!1})Ff.ZipReadernew Ff. ... ader(u)Ff.Data64URIReader{useWebWorkers:!1}useWebWorkers:!1for(con ... ame,f);await c.getEntries()c.getEntries()c.getEntriesthis._e ... ame,f);this._e ... name,f)this._entries.setthis._entriesf.filenamethis._j ... .json")this._jsonawait t ... .json")this.en ... .json")this.entryreport.jsonjson(){ ... ._json}(){retu ... ._json}{return this._json}return this._jsonasync e ... ata())}(u){con ... ata())}{const ... ata())}const c ... Writer;c=this. ... .get(u)this._entries.get(u)this._entries.getf=new Ff.TextWriternew Ff.TextWriterFf.TextWriterreturn ... Data())await c ... Data())await c.getData(f)c.getData(f)c.getDataJSON.pa ... Data())await f.getData()f.getData()f.getDataapplication/zipscrollbar-gutter: stable both-edges;roottext/css{{const o=()=>f(Ma.getObject(l,u));return Ma.onChangeEmitter.addEventListener(l,o),()=>Ma.onChangeEmitter.removeEventListener(l,o)}}width=device-width, initial-scale=1.0color-schemedark lightUTF-8/home/matt/Development/themes/uksf-mod-theme/playwright.config.jsdefineConfigdevices'@playwright/test'testDir'./tests'fullyParallelreporter'html''http://localhost:1313''on-first-retry'projects'chromium''Desktop Chrome'webServer'npm run start'reuseExistingServer'npm run service:registry'port3002'npm run service:rcon'3001import ... /test';export ... ],\n});defineC ... ],\n}){\n tes ... \n ],\n}testDir: './tests'./tests/testsfullyParallel: truereporter: 'html'use: {\n ... y',\n }{\n b ... y',\n }baseURL ... t:1313''http:/ ... t:1313'http://localhost:1313trace: ... -retry'on-first-retryproject ... },\n ][\n { ... },\n ]{ name: ... e'] } }name: 'chromium'chromiumuse: { ... ome'] }{ ...de ... ome'] }...devi ... hrome']devices ... hrome']Desktop ChromewebServ ... e }\n ][\n { ... e }\n ]{ comma ... true }command ... start'npm run starturl: 'h ... t:1313'reuseEx ... r: truecommand ... gistry''npm ru ... gistry'npm run service:registryport: 3002command ... e:rcon''npm ru ... e:rcon'npm run service:rconport: 3001/home/matt/Development/themes/uksf-mod-theme/postcss.config.cjspluginsrequire'autoprefixer'globalBuffer__filename__dirnamemodule. ... ,\n ]\n}module.exports{\n plu ... ,\n ]\n}plugins ... '),\n ][\n r ... '),\n ]require ... fixer')/home/matt/Development/themes/uksf-mod-theme/scripts/check-runners.js/home/matt/Development/themes/uksf-mod-theme/scriptsexecSync'node:child_process'GREEN'\x1b[32m'YELLOW'\x1b[33m'RESET'\x1b[0m'checkRunnerHealth'--- CHECKING CI/CD PIPELINE HEALTH ---'rawRuns'gh run list --limit 5 --json name,status,conclusion,createdAt''utf8'runsfailureCountconclusion'PENDING''FAILURE'] exit'✓ All recent executions successful.'import ... ocess';node:child_processconst G ... b[32m';GREEN = '\x1b[32m'[32mconst Y ... b[33m';YELLOW = '\x1b[33m'[33mconst R ... 1b[0m';RESET = '\x1b[0m'[0mfunctio ... T}`); }{ conso ... T}`); }console ... SET}`);console ... ESET}`)`${colo ... RESET}`async f ... 1); }\n}{\n l ... 1); }\n}log('-- ... GREEN);log('-- ... GREEN)'--- CH ... TH ---'--- CHECKING CI/CD PIPELINE HEALTH ---try {\n ... t(1); }const r ... f8' });rawRuns ... tf8' })execSyn ... tf8' })'gh run ... atedAt'gh run list --limit 5 --json name,status,conclusion,createdAt{ encoding: 'utf8' }encoding: 'utf8'const r ... wRuns);runs = ... awRuns)JSON.parse(rawRuns)let fai ... nt = 0;failureCount = 0runs.fo ... });runs.fo ... })runs.forEachrun => ... }conclus ... rCase()(run.co ... rCase()(run.co ... perCase(run.co ... NDING')run.con ... ENDING'run.conclusionPENDINGif (con ... ount++;conclus ... AILURE'FAILUREfailureCount++;failureCount++log(`[$ ... ame}`);log(`[$ ... name}`)`[${con ... .name}`run.nameif (fai ... GREEN);failureCount > 0process.exit(1);process.exit(1)process.exitlog('\u2713 ... GREEN);log('\u2713 ... GREEN)'\u2713 All ... ssful.'✓ All recent executions successful.✓ All recent executions successfulcatch ( ... t(1); }{ process.exit(1); }checkRunnerHealth();checkRunnerHealth()/home/matt/Development/themes/uksf-mod-theme/scripts/fetch-intel.js
+ * UKSFTA Intelligence Bridge v2.5
+ * Sharding Edition: intel.json (Live) | archives.json (Logs) | telemetry.json (History)
+ /**\n * ... ry)\n */ ... CRC32 and RCON functions remain same ...// ... ... ame ... Keep point if:// Keep point if: 1. It's the first or last point// 1. I ... t point 2. The value changed from the previous or next point// 2. T ... t point 3. More than 30 minutes have passed since the last kept point (to prevent gaps)// 3. M ... t gaps) 1. Live State (Small)// 1. L ... (Small) 2. Unit Commander (Full for archives, small for state)// 2. U ... state) Full shard for archives// Full ... rchives DYNAMIC PAGE GENERATION - DISABLED (MANUAL CAMPAIGNS REQUESTED)// DYNA ... UESTED)
+ if (!fs.existsSync(contentDir)) fs.mkdirSync(contentDir, { recursive: true });
+
+ uc.campaigns.forEach(op => {
+ const slug = op.campaignName.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
+ const filePath = path.join(contentDir, `${slug}.md`);
+
+ const mdContent = `---
+title: "${op.campaignName}"
+date: "${op.created_at}"
+layout: "campaign"
+op_id: "TF-${op.id}"
+map: "${op.map || 'CLASSIFIED'}"
+status: "${op.status}"
+image: "${op.image ? op.image.path : ''}"
+---
+
+${op.brief || 'No tactical briefing recovered for this operation.'}
+`;
+ // Only write if changed or doesn't exist to avoid triggering Hugo loops unnecessarily
+ if (!fs.existsSync(filePath) || fs.readFileSync(filePath, 'utf8') !== mdContent) {
+ fs.writeFileSync(filePath, mdContent);
+ console.log(`[UC_INTEL] Page generated: /campaigns/${slug}`);
+ }
+ });
+ /*\n ... */ Lean summary for main HUD (only latest 2 campaigns)// Lean ... paigns) 3. Telemetry Shard (History)// 3. T ... istory) 4. Final Live State Write// 4. F ... e Write'node:fs'https'node:https''node:path'dgram'node:dgram'envPathcwd'.env'existsSyncreadFileSync'\n''='/^["']|["']$/gbmKeyBATTLEMETRICS_API_KEY/^getEnv\s+["']|["']$/gbmIdBATTLEMETRICS_SERVER_ID"35392879"ucIdUNIT_COMMANDER_COMMUNITY_ID"722"ucTokenUNIT_COMMANDER_BOT_TOKENserverIpARMA_SERVER_IP"127.0.0.1"serverPortparseIntARMA_QUERY_PORT"2303"rconPortARMA_RCON_PORT"2302"rconPassARMA_RCON_PASSWORDcrc32buf0xEDB88320createBePacket0x420x45crcBufallocwriteUInt32LEfetchRconPlayerscreateSocket'udp4'timeout'message'0x000x010xFF'players'/^\d+\s+[\d.:]+\s+(\d+)\s+[a-f0-9]+\(\d+\)\s+(.+)$/ipingloginqueryArmaServerrejectA2S_INFO'FFFFFFFF54536f7572636520456e67696e6520517565727900''hex'"Timeout"0x410x49readUInt8request'User-Agent''UKSFTA-Intel''Accept''data'chunk'end'statusCode"JSON Error"HTTP fetchBM[BM_INTEL] Skipping : BATTLEMETRICS_API_KEY missing.setMonthgetMonthsetDategetDatesetHoursgetHourshttps://api.battlemetrics.com/servers//player-count-history?start=&stop=[BM_INTEL] Fetching for server (Key Length: 'Authorization'Bearer [BM_INTEL] Successfully retrieved data points for [BM_INTEL] No data returned for . Raw response:[BM_INTEL] Request failed for fetchUCBot https://api.unitcommander.co.uk/community//campaigns/eventscompressisS"[JSFC_INTEL] Starting sharded synchronization..."staticDir'static'contentDir'content''campaigns'"STABLE"telemetrymanifest"[ARMA_UPLINK] Node offline."writeFileSync'archives.json'"[BM_INTEL] Generating telemetry shard..."'telemetry.json''intel.json'"✓ Shards synchronized. intel.json size reduced by 95%.""X Sync failed:"UKSFTA Intelligence Bridge v2.5
+Sharding Edition: intel.json (Live) | archives.json (Logs) | telemetry.json (History)import ... de:fs';node:fsimport ... https';node:httpsimport ... :path';node:pathimport ... dgram';node:dgramconst e ... .env');envPath ... '.env')path.re ... '.env')path.resolveprocess.cwd()process.cwd.envconst env = {};env = {}if (fs. ... });\n}fs.exis ... nvPath)fs.existsSync{\n f ... });\n}fs.read ... });fs.read ... \n })fs.read ... forEachfs.read ... t('\n')fs.read ... ).splitfs.read ... 'utf8')fs.readFileSyncline => ... ;\n }const [ ... t('=');[key, . ... it('=')[key, ...value]line.split('=')line.splitif (key ... trim();key && valueenv[key ... trim();env[key ... .trim()env[key.trim()]key.trim()key.trimvalue.j ... .trim()value.j ... ').trimvalue.j ... /g, '')value.j ... replacevalue.join('=')value.join^["']|["']$^["']["']["']$const c ... | ""\n};config ... || ""\n}{\n b ... || ""\n}bmKey: ... .trim()(proces ... .trim()(proces ... ').trim(proces ... /g, '')(proces ... replace(proces ... || "")process ... Y || ""process ... API_KEYprocess.envBATTLEM ... API_KEYenv.BAT ... API_KEY/^getEn ... ["']$/g^getEnv\s+["']|["']$^getEnv\s+["']getEnv\s+bmId: p ... 392879"process ... 392879"process ... RVER_IDBATTLEM ... RVER_IDenv.BAT ... RVER_ID35392879ucId: p ... | "722"process ... | "722"process ... NITY_IDUNIT_CO ... NITY_IDenv.UNI ... NITY_ID722ucToken ... .trim()process ... N || ""process ... T_TOKENUNIT_CO ... T_TOKENenv.UNI ... T_TOKENserverI ... .0.0.1"process ... .0.0.1"process ... RVER_IPenv.ARMA_SERVER_IP127.0.0.1serverP ... "2303")parseIn ... "2303")process ... "2303"process ... RY_PORTenv.ARMA_QUERY_PORT2303rconPor ... "2302")parseIn ... "2302")process ... "2302"process ... ON_PORTenv.ARMA_RCON_PORT2302rconPas ... D || ""process ... D || ""process ... ASSWORDenv.ARM ... ASSWORDfunctio ... >> 0;\n}{\n l ... >> 0;\n}let crc = -1;crc = -1for (le ... ;\n }i < buf.lengthbuf.lengthcrc ^= buf[i];crc ^= buf[i]buf[i]for (le ... 0 : 0);j < 8j++let j = 0j = 0crc = ( ... 0 : 0);crc = ( ... 20 : 0)(crc >> ... 20 : 0)(crc >>> 1)crc >>> 1(crc & ... 20 : 0)crc & 1 ... 320 : 0crc & 1return ... >>> 0;(crc ^ -1) >>> 0(crc ^ -1)crc ^ -1functio ... ad]);\n}{\n c ... ad]);\n}const h ... 0x45]);header ... 0x45])Buffer. ... 0x45])Buffer.from[0x42, 0x45]const c ... loc(4);crcBuf ... lloc(4)Buffer.alloc(4)Buffer.alloccrcBuf. ... d), 0);crcBuf. ... ad), 0)crcBuf.writeUInt32LEcrc32(payload)return ... load]);Buffer. ... yload])Buffer.concat[header ... ayload]async f ... });\n}{\n i ... });\n}if (!co ... n null;!config.rconPassconfig.rconPassreturn ... });new Pro ... \n })(resolv ... ;\n }const c ... udp4');client ... 'udp4')dgram.c ... 'udp4')dgram.createSocketudp4const t ... 4000);timeout ... , 4000)() => { ... ull); }{ clien ... ull); }client.close();client.close()client.closeresolve(null);resolve(null)client. ... });client. ... })client.on(msg) = ... }if (msg ... return;msg.length < 7msg.lengthif (msg ... }msg[6] ... == 0x01msg[6] === 0x00msg[6]msg[7] === 0x01msg[7]const p ... rs')]);p = Buf ... ers')])Buffer. ... ers')])[Buffer ... yers')]Buffer. ... 0x00])[0xFF, 0x01, 0x00]Buffer. ... ayers')client. ... verIp);client. ... rverIp)client.sendcreateBePacket(p)createB ... .lengthconfig.rconPortconfig.serverIpmsg[6] === 0x01clearTi ... meout);clearTi ... imeout)const t ... 8', 8);text = ... f8', 8)msg.toS ... f8', 8)msg.toStringconst players = [];players = []text.sp ... });text.sp ... })text.sp ... forEachtext.split('\n')text.splitline => ... }const m ... +)$/i);m = lin ... .+)$/i)line.ma ... .+)$/i)line.match/^\d+\s ... (.+)$/i^\d+\s+[\d.:]+\s+(\d+)\s+[a-f0-9]+\(\d+\)\s+(.+)$[\d.:]+[\d.:](\d+)[a-f0-9]+[a-f0-9]a-f\(\)(.+).+if (m) ... [1] });players ... [1] });players ... m[1] })players.push{ name: ... m[1] }name: m[2].trim()m[2].trim()m[2].trimm[2]ping: m[1]m[1]resolve(players);resolve(players)const l ... ass)]);login = ... Pass)])Buffer. ... Pass)])[Buffer ... nPass)][0xFF, 0x00]Buffer. ... onPass)createB ... (login){\n r ... });\n}const A ... 'hex');A2S_INF ... 'hex')Buffer. ... 'hex')'FFFFFF ... 727900'FFFFFFFF54536f7572636520456e67696e6520517565727900hexconst s ... verIp);send = ... rverIp)(c = nu ... rverIp)c ? Buf ... 2S_INFOBuffer. ... FO, c])[A2S_INFO, c](c ? A2 ... length)c ? A2S ... .lengthA2S_INFO.length + 4A2S_INFO.lengthconfig.serverPort() => { ... t")); }{ clien ... t")); }reject( ... out"));reject( ... eout"))new Error("Timeout")Timeoutif (msg ... 5, 9));msg[4] === 0x41msg[4]return ... 5, 9));send(ms ... (5, 9))msg.slice(5, 9)msg.slicemsg[4] === 0x49try {\n ... t(e); }let offset = 6;offset = 6const r ... n s; };read = ... rn s; }() => { ... rn s; }{ let e ... rn s; }let end ... ffset);end = m ... offset)msg.ind ... offset)msg.indexOfif (end ... length;end === -1end = msg.length;end = msg.lengthlet s = ... , end);s = msg ... t, end)msg.toS ... t, end)offset = end + 1;offset = end + 1end + 1return s;const name = read();name = read()read()const map = read();map = read()read();offset += 2;offset += 2const p ... ffset);players ... offset)msg.rea ... offset)msg.readUInt8const m ... t + 1);maxPlay ... et + 1)msg.rea ... et + 1)offset + 1resolve ... ne' });resolve ... ine' }){ name, ... line' }players ... layers)(player ... layers)players ... playersplayers === 255status: 'online'catch ( ... t(e); }{ reject(e); }reject(e);reject(e)send();send()const o ... rs } };options ... ers } }{ heade ... ers } }headers ... aders }{ 'User ... aders }'User-A ... -Intel'User-AgentUKSFTA-Intel'Accept ... n/json'Accept...headershttps.g ... eject);https.g ... reject)https.g ... }).onhttps.g ... })https.get(res) = ... }let data = '';data = ''res.on( ... chunk);res.on( ... chunk)res.onchunk = ... = chunkdata += chunkres.on( ... });res.on( ... })if (res ... de}`));res.sta ... e < 300res.sta ... >= 200res.statusCoderes.statusCode < 300{ try { ... )); } }try { r ... r")); }{ resol ... ta)); }resolve ... data));resolve ... (data))JSON.parse(data)catch ( ... r")); }{ rejec ... r")); }reject( ... ror"));reject( ... rror"))new Err ... Error")JSON Errorreject( ... de}`));reject( ... ode}`))new Err ... Code}`)`HTTP $ ... sCode}`async f ... }\n}if (!co ... ;\n }!config.bmKeyconfig.bmKeyconsole ... ing.`);console ... sing.`)`[BM_IN ... ssing.`: BATTL ... issing.return [];const d ... Date();d = new Date()if (ran ... - 24);d.setMo ... ) - 1);d.setMo ... () - 1)d.setMonthd.getMonth() - 1d.getMonth()d.getMonthd.setDa ... ) - 7);d.setDa ... () - 7)d.setDated.getDate() - 7d.getDate()d.getDated.setHo ... - 24);d.setHo ... ) - 24)d.setHoursd.getHours() - 24d.getHours()d.getHoursconst u ... ng()}`;url = ` ... ing()}``https: ... ing()}`https:/ ... ervers/config.bmId/player ... ?start=d.toISOString()d.toISOStringconsole ... th})`);console ... gth})`)`[BM_IN ... ngth})`config.bmKey.lengthtry { \n ... \n }const r ... )}` });res = a ... ()}` })await r ... ()}` })request ... ()}` }){ 'Auth ... m()}` }'Author ... rim()}`Authorization`Bearer ... rim()}`config.bmKey.trim()config.bmKey.trimres && res.datares.dataconsole ... ge}.`);console ... nge}.`)`[BM_IN ... ange}.`[BM_INT ... rieved res.data.lengthreturn res.data;console ... 100));console ... , 100))`[BM_IN ... ponse:`[BM_INT ... ed for JSON.st ... 0, 100)JSON.st ... bstringJSON.stringify(res)catch ( ... \n }console ... ssage);console ... essage)`[BM_IN ... ange}:`e.messageasync f ... ll; }\n}{\n i ... ll; }\n}!config.ucTokenconfig.ucTokenconst h ... en}` };h = { ' ... ken}` }{ 'Auth ... ken}` }'Author ... Token}``Bot ${ ... Token}`try {\n ... null; }const c ... s`, h);c = awa ... ns`, h)await r ... ns`, h)request ... ns`, h)`https: ... paigns`https:/ ... munity/config.ucIdconst s ... s`, h);s = awa ... ts`, h)await r ... ts`, h)request ... ts`, h)`https: ... events`return ... e: s };{ campa ... ne: s }campaigns: cstandalone: scatch ( ... null; }{ return null; }functio ... sult;\n}{\n i ... sult;\n}if (!da ... urn [];!data | ... h === 0!data | ... y(data)!data!Array.isArray(data)Array.isArray(data)data.length === 0const i ... es.min;isS = ( ... tes.min(a, b) ... tes.mina && b ... tes.mina && b ... tes.maxa && b ... s.valuea && ba.attri ... s.valuea.attributes.valuea.attributesb.attributes.valueb.attributesa.attri ... tes.maxa.attributes.maxb.attributes.maxa.attri ... tes.mina.attributes.minb.attributes.minconst result = [];result = []for (le ... }\n }i < data.lengthconst p ... h - 1];prev = ... th - 1]result[ ... th - 1]result.length - 1result.lengthconst t ... )) : 0;timeDif ... p)) : 0prev ? ... p)) : 0(new Da ... stamp))new Dat ... estamp)data[i] ... mestampdata[i].attributesdata[i]prev.at ... mestampprev.attributesi === 0 ... * 60000i === 0 ... i + 1])i === 0 ... i - 1])i === 0 ... gth - 1i === d ... gth - 1data.length - 1!isS(da ... i - 1])isS(dat ... i - 1])data[i - 1]i - 1!isS(da ... i + 1])isS(dat ... i + 1])data[i + 1]i + 1timeDif ... * 6000030 * 60000result. ... ta[i]);result.push(data[i])result.pushreturn result;async f ... e); }\n}{\n c ... e); }\n}[JSFC_INTEL] Starting sharded synchronization... Starting sharded synchronizationconst s ... atic');staticD ... tatic')path.jo ... tatic')path.joinconst c ... igns');content ... aigns')path.jo ... aigns')const s ... BLE" };state = ... ABLE" }{ times ... ABLE" }timesta ... e.now()arma: nullunitcommander: nullstatus: "STABLE"STABLEconst t ... : [] };telemet ... h: [] }{ times ... h: [] }today: []week: []month: []try {\n ... age); }try {\n ... e."); }state.a ... rver();state.a ... erver()state.armaawait q ... erver()queryArmaServer()const m ... yers();manifes ... ayers()await f ... ayers()fetchRconPlayers()if (man ... nifest;state.a ... nifest;state.a ... anifeststate.arma.manifestcatch ( ... e."); }{ conso ... e."); }console ... ine.");console ... line.")"[ARMA_ ... fline."[ARMA_UPLINK] Node offline.[ARMA_UPLINK] Node offlineconst u ... chUC();uc = await fetchUC()await fetchUC()fetchUC()if (uc) ... }fs.writ ... l, 2));fs.writ ... ll, 2))fs.writeFileSyncpath.jo ... .json')archives.jsonarchivesstate.u ... };state.u ... }state.unitcommandercampaig ... e(0, 2)uc.camp ... e(0, 2)uc.camp ... ).sliceuc.camp ... ed_at))uc.campaigns.sort(a,b) = ... ted_at)standal ... e(0, 3)uc.stan ... e(0, 3)uc.standalone.slice"[BM_IN ... ard..."[BM_INTEL] Generating telemetry shard...[BM_INTEL] Generating telemetry shardconst [ ... th')]);[t, w, ... nth')])[t, w, m]await P ... nth')])Promise ... nth')])[fetchB ... onth')]fetchBM('today')fetchBM('week')fetchBM('month')telemet ... ess(t);telemet ... ress(t)telemetry.todaycompress(t)telemet ... ess(w);telemet ... ress(w)telemetry.weekcompress(w)telemet ... ess(m);telemet ... ress(m)telemetry.monthcompress(m)telemetry.jsonintel.jsonconsole ... 95%.");console ... 95%.")"\u2713 Shar ... y 95%."✓ Shards synchronized. intel.json size reduced by 95%.✓ Shards synchronized inteljson size reduced by 95%catch ( ... age); }{ conso ... age); }X Sync failed:main();main()/home/matt/Development/themes/uksf-mod-theme/scripts/generate-stats.js Helper to recursively get files// Help ... t files Calculate total size in bytes// Calc ... n bytes Get last git commit hash (short)// Get ... (short) Convert size to readable format// Conv ... format Could be dynamic based on campaigns?// Coul ... paigns? Placeholder, handled by Hugo counting campaigns// Plac ... mpaigns'fs''child_process'fileURLToPath'url'dirname'../content'dataFile'../data/system_stats.json'getFilesdirentsreaddirSyncwithFileTypesdirentisDirectoryfileCounttotalSizereduceaccstatSync'UNKNOWN''git rev-parse --short HEAD'"Git not available or not a repo."sizeKBsizeMBrecord_countdb_size_bytesdb_size_fmt MB KBlast_syncnode_idUK_LON_HQ_threat_level"SUBSTANTIAL"active_ops'System stats generated:''Error generating stats:'import fs from 'fs';import ... 'path';child_processimport ... 'url';const _ ... a.url);__filen ... ta.url)fileURL ... ta.url)import.meta.urlimport.metaconst _ ... ename);__dirna ... lename)path.di ... lename)path.dirnamepath.jo ... ntent')../content/contentconst d ... json');dataFil ... .json')'../dat ... s.json'../data/system_stats.json/data/system_statsfunctio ... les);\n}{\n c ... les);\n}const d ... rue });dirents ... true })fs.read ... true })fs.readdirSync{ withF ... true }withFileTypes: trueconst f ... });files = ... \n })dirents ... \n })dirents.map(dirent ... ;\n }const r ... .name);res = p ... t.name)path.re ... t.name)dirent.namereturn ... : res;dirent. ... ) : resdirent.isDirectory()dirent.isDirectorygetFiles(res)return ... files);Array.p ... .files)Array.p ... .concatArray.prototype...filestry {\n ... ror);\n}{\n c ... ts);\n\n}const f ... ntDir);files = ... entDir)getFiles(contentDir)const f ... length;fileCou ... .lengthfiles.lengthconst t ... }, 0);totalSi ... }, 0)files.r ... }, 0)files.reduce(acc, f ... ;\n }const s ... (file);stats = ... c(file)fs.statSync(file)fs.statSyncreturn ... s.size;acc + stats.sizestats.sizelet com ... KNOWN';commitH ... NKNOWN'UNKNOWNtry {\n ... ;\n }commitH ... trim();commitH ... .trim()execSyn ... .trim()execSyn ... ().trimexecSyn ... tring()execSyn ... oStringexecSyn ... HEAD')'git re ... t HEAD'git rev-parse --short HEADcatch ( ... ;\n }console ... epo.");console ... repo.")"Git no ... repo."Git not available or not a repo.Git not available or not a repoconst s ... xed(2);sizeKB ... ixed(2)(totalS ... ixed(2)(totalS ... toFixed(totalSize / 1024)totalSize / 1024sizeMB ... ixed(2)(totalS ... 1024))totalSi ... * 1024)(1024 * 1024)1024 * 1024const s ... \n };stats = ... s\n }{\n ... s\n }record_ ... leCountdb_size ... talSizedb_size ... KB} KB`sizeMB ... KB} KB`sizeMB > 1`${sizeMB} MB``${sizeKB} KB`last_sy ... tring()node_id ... ase()}``UK_LON ... ase()}`commitH ... rCase()commitH ... perCasethreat_ ... ANTIAL"SUBSTANTIALactive_ops: 0console ... stats);console ... stats)'System ... rated:'System stats generated:catch ( ... ror);\n}{\n c ... ror);\n}'Error ... stats:'Error generating stats:/home/matt/Development/themes/uksf-mod-theme/scripts/gh-issue-sync.js Ignore branch creation failures// Igno ... ailuresparseCodeQLfilePathfindingsruleId[SECURITY] severity'critical''high'**Vulnerability:** \n**File:** locationsphysicalLocationartifactLocationuri\n\nsyncIssues'--- SYNCING ISSUES WITH GITHUB ---'rawIssues'gh issue list --json title,number --state open --label "automated-audit"'existingIssuesissue✓ Resolving Issue #gh issue close --comment "Verification complete. Issue cleared."finding! Creating New Issue: 'temp_body.md'createOutputgh issue create --title "" --body-file temp_body.md --label "automated-audit" --label "security" --label "issueNumberunlinkSyncbranchNamefix/issue-/\//g! Creating Fix Branch: git branch master && git push origin stdio'ignore'gh issue comment --body "Automated fix branch created:
+'codeql-results.sarif'functio ... ings;\n}{\n i ... ings;\n}if (!fs ... urn [];!fs.exi ... lePath)fs.exis ... lePath)const d ... tf8'));data = ... utf8'))JSON.pa ... utf8'))const findings = [];findings = [](data.r ... });(data.r ... \n })(data.r ... forEach(data.runs || [])data.runs || []data.runsrun => ... ;\n }(run.re ... });(run.re ... })(run.re ... forEach(run.results || [])run.results || []run.resultsresult ... }finding ... });finding ... })findings.pushid: result.ruleIdresult.ruleIdtitle: ... uleId}``[SECUR ... uleId}`severit ... 'high'result. ... 'high'result. ... 'error'result.levelcriticalhighbody: ` ... .text}``**Vuln ... .text}`
+**File:** result. ... on?.uriresult. ... ocationresult. ... ns?.[0]result.locations
+
+result.message?.textresult.messagereturn findings;{\n l ... }\n}'--- SY ... UB ---'--- SYNCING ISSUES WITH GITHUB ---rawIssu ... tf8' })'gh iss ... audit"'gh issue list --json title,number --state open --label "automated-audit"const e ... ssues);existin ... Issues)JSON.pa ... Issues)for (co ... }\n }const issueif (!fi ... }!findin ... (f.id))finding ... (f.id))findings.findf => is ... s(f.id)issue.t ... s(f.id)issue.title.includesissue.titlef.idlog(`\u2713 ... GREEN);log(`\u2713 ... GREEN)`\u2713 Reso ... umber}`\u2713 Resolving Issue #issue.numberexecSyn ... ed."`);execSyn ... red."`)`gh iss ... ared."` --comm ... eared."const findingif (!ex ... }!existi ... ng.id))existin ... ng.id))existingIssues.findi => i. ... ing.id)i.title ... ing.id)i.title.includesfinding.idlog(`! ... ELLOW);log(`! ... YELLOW)`! Crea ... title}`! Creat ... Issue: finding.titlefs.writ ... .body);fs.writ ... g.body)temp_body.mdtemp_bodyfinding.bodyconst c ... f8' });createO ... tf8' })`gh iss ... rity}"`gh issu ... title "" --bod ... label "finding.severityconst i ... .pop();issueNu ... ).pop()createO ... ).pop()createO ... /').popcreateO ... it('/')createO ... ).splitcreateOutput.trim()createOutput.trimfs.unli ... y.md');fs.unli ... dy.md')fs.unlinkSyncconst b ... '-')}`;branchN ... '-')}``fix/is ... '-')}`finding ... g, '-')finding.id.replace`! Crea ... hName}`! Creat ... ranch: execSyn ... re' });execSyn ... ore' })`git br ... hName}` master ... origin { stdio: 'ignore' }stdio: 'ignore'ignoreexecSyn ... me}"`);execSyn ... ame}"`)`gh iss ... Name}"` --body ... ated: \nasync f ... ngs);\n}{\n c ... ngs);\n}const f ... arif');finding ... sarif')parseCo ... sarif')'codeql ... .sarif'codeql-results.sarifcodeql-resultssarifawait s ... dings);await s ... ndings)syncIssues(findings)/home/matt/Development/themes/uksf-mod-theme/scripts/security-history-check.js Secret string not found in history, ignore error// Secr ... e errorRED'\x1b[31m'runHistoryAudit'--- STARTING CRYPTOGRAPHIC HISTORY AUDIT ---'envContentsecretsleaksFoundsecretgit log -p --all -S"" --oneline\n[!] LEAK DETECTED in history commits.'✓ No active secrets detected in historical logs.'const R ... b[31m';RED = '\x1b[31m'[31masync f ... EEN);\n}{\n l ... EEN);\n}'--- ST ... IT ---'--- STARTING CRYPTOGRAPHIC HISTORY AUDIT ---if (!fs ... return;!fs.exi ... nvPath)const e ... utf8');envCont ... 'utf8')const s ... h > 8);secrets ... th > 8)envCont ... th > 8)envCont ... .filterenvCont ... g, ''))envCont ... .mapenvCont ... t('\n')envContent.splitline => ... /g, '')line.sp ... /g, '')line.sp ... replaceline.sp ... .trim()line.sp ... ]?.trimline.split('=')[1]val => ... gth > 8val && ... gth > 8val.length > 8val.lengthlet lea ... false;leaksFound = falsesecrets ... });secrets ... \n })secrets.forEachsecret ... }\n }const r ... trim();result ... .trim()execSyn ... }).trim`git lo ... neline`log(`\n ... , RED);log(`\n ... `, RED)`\n[!] ... mmits.`\n[!] L ... ommits.
+[!] LEAK DETECTED in history commits.leaksFound = true;leaksFound = trueif (lea ... GREEN);'\u2713 No a ... logs.'✓ No active secrets detected in historical logs.✓ No active secrets detected in historical logsrunHistoryAudit();runHistoryAudit()/home/matt/Development/themes/uksf-mod-theme/scripts/security-scan.jsrunSecurityAudit'--- STARTING SECURITY AUDIT SUITE ---''npm audit --audit-level=high''inherit''✓ No high-level vulnerabilities found.''! Dependency vulnerabilities detected.''codeql-db''codeql database create codeql-db --language=javascript --overwrite''codeql database analyze codeql-db --format=sarif-latest --output=codeql-results.sarif''✓ Static analysis complete. Results saved to codeql-results.sarif''X CodeQL analysis failed.''--- SECURITY AUDIT COMPLETE ---''--- ST ... TE ---'--- STARTING SECURITY AUDIT SUITE ---try {\n ... LOW); }execSyn ... it' });execSyn ... rit' })'npm au ... l=high'{ stdio: 'inherit' }stdio: 'inherit'inherit'\u2713 No h ... found.'✓ No high-level vulnerabilities found.✓ No high-level vulnerabilities foundcatch ( ... LOW); }{ log(' ... LOW); }log('! ... ELLOW);log('! ... YELLOW)'! Depe ... ected.'! Dependency vulnerabilities detected.! Dependency vulnerabilities detectedtry {\n ... RED); }if (!fs ... }!fs.exi ... ql-db')fs.exis ... ql-db')codeql-db'codeql ... rwrite'codeql database create codeql-db --language=javascript --overwritecodeql database analyze codeql-db --format=sarif-latest --output=codeql-results.sarifcodeql database analyze codeql-db --format=sarif-latest --output=codeql-results'\u2713 Stat ... .sarif'✓ Static analysis complete. Results saved to codeql-results.sarif✓ Static analysis complete Results saved to codeql-resultscatch ( ... RED); }{ log(' ... RED); }log('X ... , RED);log('X ... ', RED)'X Code ... ailed.'X CodeQL analysis failed.X CodeQL analysis failed'--- SE ... TE ---'--- SECURITY AUDIT COMPLETE ---runSecurityAudit();runSecurityAudit()/home/matt/Development/themes/uksf-mod-theme/scripts/sync-orbat.js
+ * Institutional ORBAT - Discord Sync Script v1.0
+ * Pulls server members and roles to generate personnel data.
+ *
+ * Requirements:
+ * - DISCORD_BOT_TOKEN environment variable
+ * - DISCORD_GUILD_ID environment variable
+ * - 'Server Members Intent' enabled in Discord Developer Portal
+ /**\n * ... tal\n */ 1. Fetch Roles (to map ranks and unit weights)// 1. F ... eights) 2. Fetch Members (paged, up to 1000)// 2. F ... o 1000) 3. Process and Map Personnel// 3. P ... rsonnel Get all role objects for this member// Get ... member Highest role first// High ... e first Attempt to determine unit from roles// Atte ... m roles Logic: Look for roles matching SAS, SBS, SRR, etc.// Logi ... R, etc. 4. Sort Personnel: Leadership first, then by Discord Role Position// 4. S ... osition 5. Save Data// 5. Save DataBOT_TOKENDISCORD_BOT_TOKENGUILD_IDDISCORD_GUILD_IDdiscordRequesthostname'discord.com'/api/v10reqDiscord API Error "--- Initializing Institutional ORBAT Sync (Discord) ---""X Error: DISCORD_BOT_TOKEN not found in environment."" Please ensure you have set up a bot token in the Discord Developer Portal.""> Fetching server roles..."roles/guilds//roles"> Fetching server personnel..."members/members?limit=1000personnelmemberRolestopRole"Operator"isIC"IC""2IC"is2ICunitMatch"Unassigned"unitKeywords"SAS""SBS""SRR""ASOB""JSFAW""MEDIC""INTEL""SFSG""RAC"upperRolenickuserglobal_nameusernamerankrank_weightis_leadershipleadership_type'data/personnel.json'✓ Successfully synced personnel to data/personnel.jsonX Sync Failed: Institutional ORBAT - Discord Sync Script v1.0
+Pulls server members and roles to generate personnel data.
+
+Requirements:
+- DISCORD_BOT_TOKEN environment variable
+- DISCORD_GUILD_ID environment variable
+- 'Server Members Intent' enabled in Discord Developer Portalconst B ... _TOKEN;BOT_TOK ... T_TOKENconst G ... 73928";GUILD_I ... 573928"process ... 573928"process ... UILD_IDconst o ... };options ... }hostnam ... rd.com'discord.comcompath: ` ... {path}``/api/v10${path}`headers ... }'Author ... TOKEN}``Bot ${BOT_TOKEN}`req = h ... })https.r ... })https.request(chunk) ... = chunkres.sta ... === 200reject( ... ta}`));reject( ... ata}`))new Err ... data}`)`Discor ... {data}`req.on( ... (err));req.on( ... t(err))req.on(err) => reject(err)reject(err)req.end();req.end()req.endconsole ... ---");console ... ) ---")"--- In ... d) ---"--- Initializing Institutional ORBAT Sync (Discord) ------ Initializing Institutional ORBAT Sync (Discord)Discord ---if (!BO ... ;\n }!BOT_TOKENconsole ... ent.");console ... ment.")"X Erro ... nment."X Error: DISCORD_BOT_TOKEN not found in environment.X Error: DISCORD_BOT_TOKEN not found in environmentconsole ... tal.");console ... rtal.")" Plea ... ortal." Please ensure you have set up a bot token in the Discord Developer Portal. Please ensure you have set up a bot token in the Discord Developer Portal{\n ... \n\n }console ... s...");console ... es...")"> Fetc ... les..."> Fetching server roles...> Fetching server rolesconst r ... oles`);roles = ... roles`)await d ... roles`)discord ... roles`)`/guild ... /roles`console ... el...")"> Fetc ... nel..."> Fetching server personnel...> Fetching server personnelconst m ... 1000`);members ... =1000`)await d ... =1000`)discord ... =1000`)`/guild ... t=1000`const p ... });personn ... })members ... })members.mapm => {\n ... }const m ... ition);memberR ... sition)roles\n ... sition)roles\n ... .sortroles\n ... (r.id))roles\n ... .filterr => m. ... s(r.id)m.roles ... s(r.id)m.roles.includesm.roles(a, b) ... ositionb.posit ... ositionb.positiona.positionconst t ... n: 0 };topRole ... on: 0 }memberR ... on: 0 }memberRoles[0]{ name: ... on: 0 }name: "Operator"Operatorposition: 0const i ... 2IC"));isIC = ... "2IC"))memberR ... "2IC"))memberRoles.somer => r. ... ("2IC")r.name. ... ("2IC")r.name. ... s("IC")r.name.includesIC!r.name ... ("2IC")2ICis2IC = ... "2IC"))let uni ... igned";unitMat ... signed"Unassignedconst u ... "RAC"];unitKey ... "RAC"]["SAS", ... "RAC"]SASSBSJSFAWMEDICINTELSFSGRACfor (co ... }const u ... Case();upperRo ... rCase()r.name.toUpperCase()r.name.toUpperCaseconst m ... es(k));match = ... des(k))unitKey ... des(k))unitKeywords.findk => up ... udes(k)upperRo ... udes(k)upperRole.includesif (mat ... }unitMatch = match;unitMatch = matchname: m ... sernamem.nick ... sernamem.nick ... al_namem.nickm.user.global_namem.userm.user.usernamerank: topRole.nametopRole.namerank_we ... ositiontopRole.positionunit: unitMatchis_lead ... | is2ICisIC || is2ICleaders ... : null)isIC ? ... : null)(is2IC ... : null)is2IC ? "2IC" : nullpersonn ... });personnel.sort(a, b) ... }if (a.i ... urn -1;a.is_le ... dershipa.is_leadership!b.is_leadershipb.is_leadershipreturn -1;if (!a. ... turn 1;!a.is_l ... dership!a.is_leadershipif (a.l ... urn -1;a.leade ... = "2IC"a.leade ... == "IC"a.leadership_typeb.leade ... = "2IC"b.leadership_typeif (a.l ... turn 1;b.leade ... == "IC"return ... weight;b.rank_ ... _weightb.rank_weighta.rank_weight'data/p ... l.json'data/personnel.jsondata/personnelconsole ... json`);console ... .json`)`\u2713 Succ ... l.json`\u2713 Succe ... synced personnel.length person ... el.jsonconsole ... age}`);console ... sage}`)`X Sync ... ssage}`/home/matt/Development/themes/uksf-mod-theme/scripts/test.js 1. LINTING// 1. LINTING 2. UPLINK CHECKS// 2. UPLINK CHECKS 3. BUILD// 3. BUILD 4. RUNTIME (Server)// 4. R ... Server) Ignore// Ignorespawnhttp'node:http'runCommand> Running: X Command failed: checkUrl'https'Status: 'timeout''Timeout'checkServer15000attempt'Server start timeout'Server returned status: getHugoParamregex\\[params\\.\\][^]*?\\s*=\\s*["']([^"']+)["']'i''--- STARTING UKSF THEME TEST SUITE ---''\n[1/4] Testing Linting Standards...''npm run lint''✓ Linting Passed''\n[2/4] Testing External Uplinks...''hugo.toml''unitcommander''community_id''bot_token'Checking Unit Commander Uplink (ID: )...'✓ Unit Commander Uplink Stable'! Unit Commander Uplink Warning: discordId'discord''server_id'Ch�� tb �a�H
\ No newline at end of file
diff --git a/themes/uksf-mod-theme/codeql-db/db-javascript/default/pools/0/pageDump/page-000000001 b/themes/uksf-mod-theme/codeql-db/db-javascript/default/pools/0/pageDump/page-000000001
new file mode 100644
index 0000000..7f73e1d
--- /dev/null
+++ b/themes/uksf-mod-theme/codeql-db/db-javascript/default/pools/0/pageDump/page-000000001
@@ -0,0 +1,19005 @@
+Checking Discord API Uplink (ID: '✓ Discord Uplink Stable'! Discord Uplink Warning: '\n[3/4] Testing Production Build...''npm run build''✓ Build Passed''\n[4/4] Testing Runtime Server...'serverProcess'npm''start'detachedintentionalKill'exit'\nX Server process exited prematurely with code 'Waiting for server at http://localhost:1313...''✓ Server responded with 200 OK'X Runtime Test Failed: pidkill'\n--- ALL TESTS PASSED ---'import ... :http';node:httpfunctio ... T}`);\n}{\n c ... T}`);\n}{\n t ... }\n}log(`> ... GREEN);log(`> ... GREEN)`> Runn ... mmand}`return true;catch { ... ;\n }log(`X ... , RED);log(`X ... `, RED)`X Comm ... mmand}`const c ... : http;client ... : httpurl.sta ... : httpurl.sta ... https')url.startsWithreq = c ... })client.getres.sta ... e < 400res.statusCode < 400resolve(true);resolve(true)`Status ... sCode}`req.on( ... });req.on( ... })req.destroy();req.destroy()req.destroyreject( ... out'));reject( ... eout'))new Error('Timeout')req.set ... (5000);req.setTimeout(5000)req.setTimeoutstart = Date.now()const a ... };attempt ... }if (Dat ... }Date.no ... timeoutDate.now() - startnew Err ... meout')'Server ... imeout'Server start timeouthttp.ge ... })http.get`Server ... sCode}`Server ... tatus: setTime ... t, 500)attempt();attempt()functio ... null;\n}{\n c ... null;\n}const r ... , 'i');regex = ... `, 'i')new Reg ... `, 'i')`\\[par ... +)["']`\[params\.\][^]*?\\s*=\\ ... ]+)["']\s*=\s*["']([^"']+)["']const m ... regex);match = ... (regex)content.match(regex)content.matchmatch ? ... : nullmatch[1]async f ... t(0);\n}{\n l ... t(0);\n}--- STARTING UKSF THEME TEST SUITE ---log('\n ... GREEN);log('\n ... GREEN)'\n[1/4 ... rds...'
+[1/4] Testing Linting Standards...[1/4] Testing Linting Standardsif (!ru ... ;\n }!runCom ... lint')runComm ... lint')npm run lint'\u2713 Linting Passed'✓ Linting Passed'\n[2/4 ... nks...'
+[2/4] Testing External Uplinks...[2/4] Testing External Uplinksconst c ... utf8');config ... 'utf8')hugo.tomltomlconst u ... y_id');ucId = ... ty_id')getHugo ... ty_id')community_idconst u ... oken');ucToken ... token')getHugo ... token')bot_tokenif (ucI ... }\n }ucId && ucTokenlog(`Ch ... ELLOW);log(`Ch ... YELLOW)`Checki ... d})...`Checkin ... k (ID: await c ... });await c ... })checkUr ... })headers ... ken}` }`Bot ${ucToken}`'\u2713 Unit ... Stable'✓ Unit Commander Uplink Stable`! Unit ... ssage}`! Unit ... rning: const d ... r_id');discord ... er_id')getHugo ... er_id')if (dis ... }\n }await c ... json`);await c ... .json`)checkUr ... .json`)'\u2713 Disc ... Stable'✓ Discord Uplink Stable`! Disc ... ssage}`! Disco ... rning: '\n[3/4 ... ild...'
+[3/4] Testing Production Build...[3/4] Testing Production Build!runCom ... build')runComm ... build')npm run build'\u2713 Build Passed'✓ Build Passed'\n[4/4 ... ver...'
+[4/4] Testing Runtime Server...[4/4] Testing Runtime Serverconst s ... });serverP ... \n })spawn(' ... \n })['start']{ \n ... '\n }detached: truelet int ... false;intenti ... = falseserverP ... });serverProcess.on(code) ... }\n }if (!in ... }!intentionalKill`\nX Se ... code}.`\nX Ser ... h code
+X Server process exited prematurely with code try {\n ... }\n }log('Wa ... GREEN);log('Wa ... GREEN)'Waitin ... 313...'Waiting for server at http://localhost:1313...Waiting for server at http://localhost:1313await c ... 1313');await c ... :1313')checkSe ... :1313')'\u2713 Serv ... 200 OK'✓ Server responded with 200 OK`X Runt ... ssage}`X Runti ... ailed: error.messageintenti ... = true;intenti ... = trueif (ser ... s.pid);serverProcess.pidprocess ... s.pid);process ... ss.pid)process.kill-serverProcess.pidif (ser ... }catch { ... }'\n--- ... ED ---'
+--- ALL TESTS PASSED ---process.exit(0);process.exit(0)/home/matt/Development/themes/uksf-mod-theme/services/rcon-bridge.js/home/matt/Development/themes/uksf-mod-theme/services'express''cors'appPORTRCON_BRIDGE_PORTippasspost'/api/rcon/command'504outputlisten'0.0.0.0'[RCON_BRIDGE] Active on import ... press';import ... 'cors';const a ... ress();app = express()express()const P ... | 3001;PORT = ... || 3001process ... || 3001process ... GE_PORTapp.use(cors());app.use(cors())app.usecors()app.use ... son());app.use ... json())express.json()express.json{\n i ... || ""\n}ip: pro ... .0.0.1"port: p ... "2302")pass: p ... D || ""app.pos ... p);\n});app.pos ... ip);\n})app.post/api/rcon/commandasync ( ... .ip);\n}{\n c ... .ip);\n}const { ... q.body;{ comma ... eq.body{ command }req.bodyconst t ... 5000);timeout ... , 5000)setTime ... , 5000)() => { ... " }); }{ clien ... " }); }res.sta ... ut" });res.sta ... out" })res.status(504).jsonres.status(504){ error: "Timeout" }error: "Timeout"client. ... \n })(msg) = ... }\n }const p ... and)]);p = Buf ... mand)])Buffer. ... mand)])[Buffer ... mmand)]Buffer.from(command)client. ... ig.ip);client. ... fig.ip)config.portconfig.ipres.jso ... 8) });res.jso ... , 8) }){ outpu ... ', 8) }output: ... f8', 8)login = ... pass)])Buffer. ... pass)])[Buffer ... .pass)]Buffer. ... g.pass)config.passapp.lis ... `); });app.lis ... }`); })app.listen0.0.0.0() => { ... T}`); }console ... ORT}`);console ... PORT}`)`[RCON_ ... {PORT}`[RCON_B ... ive on /home/matt/Development/themes/uksf-mod-theme/services/registry-service.jsREGISTRY_SERVICE_PORTCONTENT_DIR'exampleSite/content/campaigns''/api/file'"Missing data.".mdmdContent---
+title: ""
+date: ""
+layout: "campaign"
+type: "fragment"
+---
+
+mkdirSync[REGISTRY_SERVICE] Active on const P ... | 3002;PORT = ... || 3002process ... || 3002process ... CE_PORTREGISTR ... CE_PORTconst C ... igns');CONTENT ... aigns')path.re ... aigns')'exampl ... paigns'exampleSite/content/campaignsapp.pos ... ; }\n});app.pos ... ); }\n})/api/file(req, r ... }); }\n}{\n c ... }); }\n}{ slug, ... eq.body{ slug, ... adata }if (!sl ... a." });!slug || !content!slug!contentreturn ... a." });res.sta ... ta." })res.status(400).jsonres.status(400){ error ... ata." }error: ... data."Missing data.Missing dataconst f ... }.md`);filePat ... g}.md`)path.jo ... g}.md`)`${slug}.md`const m ... tent}`;mdConte ... ntent}``---\nti ... ntent}`---\ntitle: ""\ndate: ""\nlayou ... "\n---\n\ntry {\n ... e }); }if (!fs ... rue });!fs.exi ... NT_DIR)fs.exis ... NT_DIR)fs.mkdi ... rue });fs.mkdi ... true })fs.mkdirSync{ recursive: true }recursive: truefs.writ ... ntent);fs.writ ... ontent)res.jso ... rue });res.jso ... true }){ success: true }success: truecatch ( ... e }); }{ res.s ... e }); }res.sta ... age });res.sta ... sage })res.status(500).jsonres.status(500){ error: e.message }error: e.message`[REGIS ... {PORT}`[REGIST ... ive on /home/matt/Development/themes/uksf-mod-theme/static/js/orbat-canvas.js/home/matt/Development/themes/uksf-mod-theme/static/js/home/matt/Development/themes/uksf-mod-theme/static/home/matt/Development/themes/uksf-mod-theme/tailwind.config.cjs @type {import('tailwindcss').Config} /** @ty ... fig} */'./layouts/**/*.html''./content/**/*.md''./data/labels.json''./static/js/**/*.js'colors'tactical-black''#050505''tactical-dark''#0a0a0a''tactical-grey''#121212''uksf-gold''#b3995d''uksf-blue''#002366''uksf-green''#153e35''uksf-red''#800000'industrial'Bebas Neue''Impact''sans-serif'tactical'JetBrains Mono''monospace''Inter''Arial''carbon-pattern'"url('https://www.transparenttextures.com/patterns/carbon-fibre.png')"'noise-pattern'"url('https://www.transparenttextures.com/patterns/stardust.png')"'pulse-fast''pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite''flicker''flicker 0.15s infinite'keyframesflicker'0%, 100%''50%''@tailwindcss/typography'@typeMissing or invalid tag typeMissing ... ag typemodule. ... ],\n};module. ... \n ],\n}{\n con ... \n ],\n}content ... s',\n ][\n ' ... s',\n ]'./layo ... *.html'./layouts/**/*.html./content/**/*.md./data/labels.json/data/labels'./stat ... */*.js'./static/js/**/*.jstheme: ... },\n }{\n e ... },\n }extend: ... }\n }colors: ... }'tactic ... 050505'tactical-black#050505'tactic ... 0a0a0a'tactical-dark#0a0a0a'tactic ... 121212'tactical-grey#121212'uksf-g ... b3995d'uksf-gold#b3995d'uksf-b ... 002366'uksf-blue'uksf-g ... 153e35'uksf-green'uksf-r ... 800000'uksf-redfontFam ... }industr ... serif']['Bebas ... serif']Bebas NeueImpactsans-seriftactica ... space']['JetBr ... space']JetBrains Monomonospacebody: [ ... serif']['Inter ... serif']InterArialbackgro ... }'carbon ... .png')"carbon-pattern"url('h ... .png')"url('https://www.transparenttextures.com/patterns/carbon-fibre.png')('https://www.transparenttextures.com/patterns/carbon-fibre.png')'https://www.transparenttextures.com/patterns/carbon-fibre.png''https://wwwtransparenttexturescom/patterns/carbon-fibrepng''noise- ... .png')"noise-patternurl('https://www.transparenttextures.com/patterns/stardust.png')('https://www.transparenttextures.com/patterns/stardust.png')'https://www.transparenttextures.com/patterns/stardust.png'com/patterns/stardustanimati ... }'pulse- ... finite'pulse-fast'pulse ... finite'pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinitepulse 15s cubic-bezier(0.4, 0, 0.6, 1)0.4, 0, 0.6, 14, 0, 06, 1 infinite'flicke ... finite'flicker 0.15s infiniteflicker 015s infinitekeyfram ... }flicker ... }'0%, 10 ... ty: 1 }0%, 100%{ opacity: 1 }opacity: 1'50%': ... : 0.8 }50%{ opacity: 0.8 }opacity: 0.8require ... raphy')'@tailw ... graphy'/home/matt/Development/themes/uksf-mod-theme/tests/console.spec.js/home/matt/Development/themes/uksf-mod-theme/testsexpectdescribe'C2 Console''should display uplink status'pagegoto'/console'locator'#connection-status'toContainText'UPLINK_ACTIVE'test.de ... });\n});test.de ... });\n})test.describeC2 Console() => { ... });\n}{\n t ... });\n}test('s ... });test('s ... \n })'should ... status'should display uplink statusasync ( ... ;\n }{ page }await p ... sole');await p ... nsole')page.go ... nsole')page.goto/consoleawait e ... TIVE');await e ... CTIVE')expect( ... CTIVE')expect( ... ainTextexpect( ... atus'))page.lo ... tatus')page.locator#connection-statusUPLINK_ACTIVE/home/matt/Development/themes/uksf-mod-theme/tests/filing.spec.js'Filing Terminal'beforeEachaddInitScript'should show induction briefing for new users'removeItem'uksfta_vault_onboarded'onboarding'#vault-onboarding'toHaveAttribute'#onboarding-content''Welcome to the RSIS Vault'Filing Terminaltest.be ... });test.be ... \n })test.beforeEachawait p ... });await p ... })page.ad ... })page.addInitScriptwindow. ... ized');window. ... rized')window. ... setItemwindow.localStoragewindow. ... true');window. ... 'true')'should ... users'should show induction briefing for new userswindow. ... rded');window. ... arded')window. ... oveItem'uksfta ... oarded'uksfta_vault_onboardedawait p ... ling');await p ... iling')page.goto('/filing')const o ... ding');onboard ... rding')page.lo ... rding')#vault-onboardingawait e ... true');await e ... 'true')expect( ... 'true')expect( ... tributeexpect(onboarding)await e ... ault');await e ... Vault')expect( ... Vault')expect( ... tent'))page.lo ... ntent')'#onboa ... ontent'#onboarding-content'Welcom ... Vault'Welcome to the RSIS Vault/home/matt/Development/themes/uksf-mod-theme/tests/lighthouse.spec.jsplayAudit'playwright-lighthouse''playwright''Lighthouse Audit''Homepage performance'launch'--remote-debugging-port=9222'newPagethresholdsaccessibility'best-practices'seo9222import ... house';'playwr ... thouse'import ... right';playwrightLighthouse Audit{\n tes ... });\n}test('H ... ;\n });test('H ... );\n })'Homepa ... rmance'Homepage performanceasync ( ... ();\n }{\n c ... ();\n }const b ... 2'] });browser ... 22'] })await c ... 22'] })chromiu ... 22'] })chromiu ... .launchchromium.chromium{ args: ... 222'] }args: [ ... =9222']['--rem ... =9222']'--remo ... t=9222'--remote-debugging-port=9222const p ... Page();page = ... wPage()await b ... wPage()browser.newPage()browser.newPageawait p ... 1313');await p ... :1313')page.go ... :1313')await p ... \n })playAud ... \n })page: pagethresho ... o: 90 }{ perfo ... o: 90 }performance: 75accessibility: 80'best-practices': 90best-practicesseo: 90port: 9222await b ... lose();await b ... close()browser.close()browser.close/home/matt/Development/themes/uksf-mod-theme/tests/orbat.spec.js'ORBAT Canvas''/registry/orbat''should load the canvas and admin bar''#orbat-canvas'toBeAttached'#hq-admin-bar'ORBAT Canvasawait p ... rbat');await p ... orbat')page.go ... orbat')/registry/orbat'should ... in bar'should load the canvas and admin barawait e ... ched();await e ... ached()expect( ... ached()expect( ... ttachedexpect( ... nvas'))page.lo ... anvas')#orbat-canvasexpect( ... -bar'))page.lo ... n-bar')#hq-admin-bar/opt/codeql/javascript/tools/data/externs/es/es2016.js/opt/codeql/javascript/tools/data/externs/es/opt/codeql/javascript/tools/data/externs/opt/codeql/javascript/tools/data/opt/codeql/javascript/tools/opt/codeql/javascript/opt/codeql/opt
+ * Copyright 2016 Semmle
+ /*\n * C ... mle\n */
+ * @fileoverview Definitions for ECMAScript 2016.
+ * @see https://262.ecma-international.org/7.0/
+ * @externs
+ /**\n * ... rns\n */
+ * @param {*} searchElement
+ * @param {number=} fromIndex
+ * @return {boolean}
+ * @nosideeffects
+ /**\n * ... cts\n */searchElementfromIndexfileoverview@fileoverviewDefinitions for ECMAScript 2016.
+see@seehttps://262.ecma-international.org/7.0/
+externs@externs@paramnumber=@returnnosideeffects@nosideeffectsArray.p ... ex) {};Array.p ... dex) {}Array.p ... ncludesfunctio ... dex) {}/opt/codeql/javascript/tools/data/externs/es/es2017.js
+ * @fileoverview Definitions approved for inclusion in ECMAScript 2017.
+ * @see https://github.com/tc39/proposals/blob/master/finished-proposals.md
+ * @externs
+
+ * @param {*} obj
+ * @return {!Array}
+ * @nosideeffects
+
+ * @param {*} obj
+ * @return {!Array.}
+ * @nosideeffects
+
+ * @param {number} maxLength
+ * @param {string=} fillString
+ * @return {string}
+ * @nosideeffects
+
+ * @param {!Object} obj
+ * @return {!Array.}
+ * @nosideeffects
+ objmaxLengthfillStringpadEndgetOwnPropertyDescriptorsDefinitions approved for inclusion in ECMAScript 2017.
+https://github.com/tc39/proposals/blob/master/finished-proposals.md
+!Array!Array.Array.string=!Object!Array.Array.!ObjectPropertyDescriptorObjectPropertyDescriptorObject. ... bj) {};Object. ... obj) {}Object.valuesfunction(obj) {}String. ... ng) {};String. ... ing) {}String. ... adStartString.prototypefunctio ... ing) {}String. ... .padEndObject. ... riptorsgetOwnP ... riptors/opt/codeql/javascript/tools/data/externs/es/es3.js
+ * Copyright 2008 The Closure Compiler Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ /*\n * C ... se.\n */
+ * @fileoverview ECMAScript 3 Built-Ins. This include common extensions so this
+ * is actually ES3+Reality.
+ * @externs
+ * @author stevey@google.com (Steve Yegge)
+ * @author nicksantos@google.com (Nick Santos)
+ * @author arv@google.com (Erik Arvidsson)
+ * @author johnlenz@google.com (John Lenz)
+ /**\n * ... nz)\n */ START ES6 RETROFIT CODE// STAR ... IT CODE symbol, Symbol and Symbol.iterator are actually ES6 types but some// symb ... ut some Some types require them to be part of their definition (such as Array).// Some ... Array). TODO(johnlenz): symbol should be a primitive type.// TODO ... e type. @typedef {?} /** @typedef {?} */
+ * @param {string=} opt_description
+ * @return {symbol}
+ /**\n * ... ol}\n */
+ * @param {string} sym
+ * @return {symbol|undefined}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for
+ /**\n * ... for\n */
+ * @param {symbol} sym
+ * @return {string|undefined}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor
+ /**\n * ... For\n */ Well known symbols// Well ... symbols @const {symbol} /** @co ... bol} */
+ * @record
+ * @template VALUE
+ /**\n * ... LUE\n */ @type {boolean} /** @ty ... ean} */ @type {VALUE} /** @type {VALUE} */
+ * @interface
+ * @template VALUE
+ TODO(johnlenz): remove this when the compiler understands "symbol" natively// TODO ... atively
+ * @return {Iterator}
+ * @suppress {externsValidation}
+ /**\n * ... on}\n */
+ * @interface
+ * @template VALUE
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol
+ /**\n * ... col\n */
+ * @param {VALUE=} value
+ * @return {!IIterableResult}
+ /**\n * ... E>}\n */
+ * Use this to indicate a type is both an Iterator and an Iterable.
+ * @interface
+ * @extends {Iterator}
+ * @extends {Iterable}
+ * @template T
+ /**\n * ... e T\n */ END ES6 RETROFIT CODE// END ... IT CODE
+ * @interface
+ * @template KEY1, VALUE1
+ /**\n * ... UE1\n */
+ * @record
+ * @extends {IObject}
+ * @template VALUE2
+ /**\n * ... UE2\n */ @type {number} /** @ty ... ber} */
+ * @constructor
+ * @implements {IArrayLike}
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments
+ /**\n * ... nts\n */
+ * @type {Function}
+ * @see http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/callee
+ /**\n * ... lee\n */
+ * Use the non-standard {@see Function.prototype.caller} property of a function
+ * object instead.
+ * @type {Function}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/caller
+ * @deprecated
+ /**\n * ... ted\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/length
+ /**\n * ... gth\n */
+ * Not actually a global variable, but we need it in order for the current type
+ * checker to typecheck the "arguments" variable in a function correctly.
+ * TODO(tbreisacher): When the old type checker is gone, delete this and add
+ * an 'arguments' variable of type Array in the d8 externs.
+ *
+ * @type {!Arguments}
+ * @see http://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments
+
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity
+ * @const
+ /**\n * ... nst\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN
+ * @const
+
+ * @type {undefined}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
+ * @const
+
+ * @param {string} uri
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI
+ /**\n * ... URI\n */
+ * @param {string} uri
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent
+ /**\n * ... ent\n */
+ * @param {string} uri
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
+
+ * @param {string} uri
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
+
+ * Should only be used in browsers where encode/decodeURIComponent
+ * are not present, as the latter handle fancy Unicode characters.
+ * @param {string} str
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Predefined_Functions/escape_and_unescape_Functions
+ /**\n * ... ons\n */
+ * @param {*} num
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite
+ /**\n * ... ite\n */
+ * @param {*} num
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
+ /**\n * ... NaN\n */
+ * @param {*} num
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat
+ /**\n * ... oat\n */
+ * Parse an integer. Use of {@code parseInt} without {@code base} is strictly
+ * banned in Google. If you really want to parse octal or hex based on the
+ * leader, then pass {@code undefined} as the base.
+ *
+ * @param {*} num
+ * @param {number|undefined} base
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
+ /**\n * ... Int\n */
+ * @param {string} code
+ * @return {*}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval
+ /**\n * ... val\n */
+ * @constructor
+ * @param {*=} opt_value
+ * @return {!Object}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object
+ /**\n * ... ect\n */
+ * The constructor of the current object.
+ * @type {Function}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor
+ /**\n * ... tor\n */
+ * Binds an object's property to a function to be called when that property is
+ * looked up.
+ * Mozilla-only.
+ *
+ * @param {string} sprop
+ * @param {Function} fun
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter
+ * @return {undefined}
+ /**\n * ... ed}\n */
+ * Binds an object's property to a function to be called when an attempt is made
+ * to set that property.
+ * Mozilla-only.
+ *
+ * @param {string} sprop
+ * @param {Function} fun
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineSetter
+ * @return {undefined}
+
+ * Returns whether the object has a property with the specified name.
+ *
+ * @param {*} propertyName Implicitly cast to a string.
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty
+ /**\n * ... rty\n */
+ * Returns whether an object exists in another object's prototype chain.
+ *
+ * @param {Object} other
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf
+ /**\n * ... eOf\n */
+ * Return the function bound as a getter to the specified property.
+ * Mozilla-only.
+ *
+ * @param {string} sprop a string containing the name of the property whose
+ * getter should be returned
+ * @return {Function}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/lookupGetter
+ /**\n * ... ter\n */
+ * Return the function bound as a setter to the specified property.
+ * Mozilla-only.
+ *
+ * @param {string} sprop a string containing the name of the property whose
+ * setter should be returned.
+ * @return {Function}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/lookupSetter
+
+ * Executes a function when a non-existent method is called on an object.
+ * Mozilla-only.
+ *
+ * @param {Function} fun
+ * @return {*}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod
+ /**\n * ... hod\n */
+ * Points to an object's context. For top-level objects, this is the e.g. window.
+ * Mozilla-only.
+ *
+ * @type {Object}
+ * @deprecated
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/parent
+
+ * Points to the object which was used as prototype when the object was instantiated.
+ * Mozilla-only.
+ *
+ * Will be null on Object.prototype.
+ *
+ * @type {Object}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto
+ /**\n * ... oto\n */
+ * Determine whether the specified property in an object can be enumerated by a
+ * for..in loop, with the exception of properties inherited through the
+ * prototype chain.
+ *
+ * @param {string} propertyName
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable
+ /**\n * ... ble\n */
+ * Returns a localized string representing the object.
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleString
+ /**\n * ... ing\n */
+ * Returns a string representing the source code of the object.
+ * Mozilla-only.
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSource
+ /**\n * ... rce\n */
+ * Returns a string representing the object.
+ * @this {*}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
+
+ * Removes a watchpoint set with the {@see Object.prototype.watch} method.
+ * Mozilla-only.
+ * @param {string} prop The name of a property of the object.
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/unwatch
+ * @return {undefined}
+
+ * Returns the object's {@code this} value.
+ * @return {*}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf
+
+ * Sets a watchpoint method.
+ * Mozilla-only.
+ * @param {string} prop The name of a property of the object.
+ * @param {Function} handler A function to call.
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch
+ * @return {undefined}
+
+ * @constructor
+ * @param {...*} var_args
+ * @throws {Error}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function
+ /**\n * ... ion\n */
+ * @param {...*} var_args
+ * @return {*}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
+ /**\n * ... all\n */
+ * @param {...*} var_args
+ * @return {*}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
+ /**\n * ... ply\n */
+ * @type {number}
+ * @deprecated
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arity
+ /**\n * ... ity\n */
+ * Nonstandard; Mozilla and JScript only.
+ * @type {Function}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/caller
+ /**\n * ... ler\n */
+ * Nonstandard.
+ * @type {?}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/displayName
+ /**\n * ... ame\n */
+ * Expected number of arguments.
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length
+
+ * @type {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
+
+ * @this {Function}
+ * @return {string}
+ * @nosideeffects
+ * @override
+ /**\n * ... ide\n */
+ * @constructor
+ * @implements {IArrayLike}
+ * @implements {Iterable}
+ * @param {...*} var_args
+ * @return {!Array>}
+ * @nosideeffects
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
+ /**\n * ... ray\n */
+ * @return {Iterator}
+ * @suppress {externsValidation}
+ Functions:// Functions:
+ * Returns a new array comprised of this array joined with other array(s)
+ * and/or value(s).
+ *
+ * @param {...*} var_args
+ * @return {!Array>}
+ * @this {*}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat
+ /**\n * ... cat\n */
+ * Joins all elements of an array into a string.
+ *
+ * @param {*=} opt_separator Specifies a string to separate each element of the
+ * array. The separator is converted to a string if necessary. If omitted,
+ * the array elements are separated with a comma.
+ * @return {string}
+ * @this {IArrayLike>|string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
+ /**\n * ... oin\n */
+ * Removes the last element from an array and returns that element.
+ *
+ * @return {T}
+ * @this {IArrayLike}
+ * @modifies {this}
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop
+ /**\n * ... pop\n */
+ * Mutates an array by appending the given elements and returning the new
+ * length of the array.
+ *
+ * @param {...T} var_args
+ * @return {number} The new length of the array.
+ * @this {IArrayLike}
+ * @template T
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push
+ /**\n * ... ush\n */
+ * Transposes the elements of an array in place: the first array element becomes the
+ * last and the last becomes the first. The mutated array is also returned.
+ *
+ * @return {THIS} A reference to the original modified array.
+ * @this {THIS}
+ * @template THIS
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
+ /**\n * ... rse\n */
+ * Removes the first element from an array and returns that element. This
+ * method changes the length of the array.
+ *
+ * @this {IArrayLike}
+ * @modifies {this}
+ * @return {T}
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift
+ /**\n * ... ift\n */
+ * Extracts a section of an array and returns a new array.
+ *
+ * @param {*=} opt_begin Zero-based index at which to begin extraction. A
+ * non-number type will be auto-cast by the browser to a number.
+ * @param {*=} opt_end Zero-based index at which to end extraction. slice
+ * extracts up to but not including end.
+ * @return {!Array}
+ * @this {IArrayLike|string}
+ * @template T
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
+ /**\n * ... ice\n */
+ * Sorts the elements of an array in place.
+ *
+ * @param {function(T,T):number=} opt_compareFunction Specifies a function that
+ * defines the sort order.
+ * @this {IArrayLike}
+ * @template T
+ * @modifies {this}
+ * @return {!Array}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
+ /**\n * ... ort\n */
+ * Changes the content of an array, adding new elements while removing old
+ * elements.
+ *
+ * @param {*=} opt_index Index at which to start changing the array. If negative,
+ * will begin that many elements from the end. A non-number type will be
+ * auto-cast by the browser to a number.
+ * @param {*=} opt_howMany An integer indicating the number of old array elements
+ * to remove.
+ * @param {...T} var_args
+ * @return {!Array}
+ * @this {IArrayLike}
+ * @modifies {this}
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
+
+ * @return {string}
+ * @this {Object}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSource
+
+ * @this {Array>}
+ * @return {string}
+ * @nosideeffects
+ * @override
+
+ * Adds one or more elements to the beginning of an array and returns the new
+ * length of the array.
+ *
+ * @param {...*} var_args
+ * @return {number} The new length of the array
+ * @this {IArrayLike>}
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift
+
+ * Apply a function simultaneously against two values of the array (from
+ * left-to-right) as to reduce it to a single value.
+ *
+ * @param {?function(?, T, number, !Array) : R} callback
+ * @param {*=} opt_initialValue
+ * @return {R}
+ * @this {IArrayLike|string}
+ * @template T,R
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
+ /**\n * ... uce\n */
+ * Apply a function simultaneously against two values of the array (from
+ * right-to-left) as to reduce it to a single value.
+ *
+ * @param {?function(?, T, number, !Array) : R} callback
+ * @param {*=} opt_initialValue
+ * @return {R}
+ * @this {IArrayLike|string}
+ * @template T,R
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight
+ /**\n * ... ght\n */
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {?function(this:S, T, number, !Array): ?} callback
+ * @param {S=} opt_thisobj
+ * @return {boolean}
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every
+ /**\n * ... ery\n */
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {?function(this:S, T, number, !Array): ?} callback
+ * @param {S=} opt_thisobj
+ * @return {!Array}
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
+
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {?function(this:S, T, number, !Array): ?} callback
+ * @param {S=} opt_thisobj
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
+ * @return {undefined}
+
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {T} obj
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @this {IArrayLike|string}
+ * @nosideeffects
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
+ /**\n * ... xOf\n */
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {T} obj
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @this {IArrayLike|string}
+ * @nosideeffects
+ * @template T
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf
+
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {?function(this:S, T, number, !Array): R} callback
+ * @param {S=} opt_thisobj
+ * @return {!Array}
+ * @this {IArrayLike|string}
+ * @template T,S,R
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
+ /**\n * ... map\n */
+ * Available in ECMAScript 5, Mozilla 1.6+.
+ * @param {?function(this:S, T, number, !Array): ?} callback
+ * @param {S=} opt_thisobj
+ * @return {boolean}
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some
+ /**\n * ... ome\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/index
+ /**\n * ... dex\n */
+ * @type {?string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/input
+ /**\n * ... put\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length
+
+ * @param {IArrayLike} arr
+ * @param {?function(this:S, T, number, ?) : ?} callback
+ * @param {S=} opt_context
+ * @return {boolean}
+ * @template T,S
+ /**\n * ... T,S\n */
+ * @param {IArrayLike} arr
+ * @param {?function(this:S, T, number, ?) : ?} callback
+ * @param {S=} opt_context
+ * @return {!Array}
+ * @template T,S
+
+ * @param {IArrayLike} arr
+ * @param {?function(this:S, T, number, ?) : ?} callback
+ * @param {S=} opt_context
+ * @template T,S
+ * @return {undefined}
+
+ * Mozilla 1.6+ only.
+ * @param {IArrayLike} arr
+ * @param {T} obj
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @template T
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
+
+ * Mozilla 1.6+ only.
+ * @param {IArrayLike} arr
+ * @param {T} obj
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @template T
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf
+
+ * @param {IArrayLike} arr
+ * @param {?function(this:S, T, number, !Array): R} callback
+ * @param {S=} opt_context
+ * @return {!Array}
+ * @template T,S,R
+ /**\n * ... S,R\n */
+ * Introduced in 1.8.5.
+ * @param {*} arr
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
+
+ * @constructor
+ * @param {*=} opt_value
+ * @return {boolean}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
+ /**\n * ... ean\n */
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource
+ * @override
+
+ * @this {boolean|Boolean}
+ * @return {string}
+ * @nosideeffects
+ * @override
+
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf
+ * @override
+
+ * @constructor
+ * @param {*=} opt_value
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number
+ /**\n * ... ber\n */
+ * @this {Number|number}
+ * @param {number=} opt_fractionDigits
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponential
+ /**\n * ... ial\n */
+ * @this {Number|number}
+ * @param {*=} opt_digits
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
+ /**\n * ... xed\n */
+ * @this {Number|number}
+ * @param {number=} opt_precision
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision
+
+ * Returns a string representing the number.
+ * @this {Number|number}
+ * @param {(number|Number)=} opt_radix An optional radix.
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
+ * @override
+ Properties.// Properties.
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE
+
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE
+
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NaN
+
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY
+ /**\n * ... ITY\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY
+
+ * @const
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math
+ /**\n * ... ath\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abs
+ /**\n * ... abs\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos
+ /**\n * ... cos\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asin
+ /**\n * ... sin\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan
+ /**\n * ... tan\n */
+ * @param {?} y
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2
+ /**\n * ... an2\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil
+ /**\n * ... eil\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/cos
+
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exp
+ /**\n * ... exp\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
+ /**\n * ... oor\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log
+ /**\n * ... log\n */
+ * @param {...?} var_args
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max
+ /**\n * ... max\n */
+ * @param {...?} var_args
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min
+ /**\n * ... min\n */
+ * @param {?} x
+ * @param {?} y
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/pow
+ /**\n * ... pow\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random
+ /**\n * ... dom\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
+ /**\n * ... und\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sin
+
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrt
+ /**\n * ... qrt\n */
+ * @param {?} x
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tan
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/toSource
+ Properties:// Properties:
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/E
+ /**\n * ... h/E\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LN2
+ /**\n * ... LN2\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LN10
+ /**\n * ... N10\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG2E
+ /**\n * ... G2E\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG10E
+ /**\n * ... 10E\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/PI
+ /**\n * ... /PI\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2
+ /**\n * ... 1_2\n */
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT2
+ /**\n * ... RT2\n */
+ * @param {?=} opt_yr_num
+ * @param {?=} opt_mo_num
+ * @param {?=} opt_day_num
+ * @param {?=} opt_hr_num
+ * @param {?=} opt_min_num
+ * @param {?=} opt_sec_num
+ * @param {?=} opt_ms_num
+ * @constructor
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
+ /**\n * ... ate\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now
+ /**\n * ... now\n */
+ * Parses a string representation of a date, and returns the number
+ * of milliseconds since January 1, 1970, 00:00:00, local time.
+ * @param {*} date
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
+
+ * @param {number} year
+ * @param {number} month
+ * @param {number=} opt_date
+ * @param {number=} opt_hours
+ * @param {number=} opt_minute
+ * @param {number=} opt_second
+ * @param {number=} opt_ms
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC
+ /**\n * ... UTC\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay
+ /**\n * ... Day\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth
+ /**\n * ... nth\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYear
+ /**\n * ... ear\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHours
+ /**\n * ... urs\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinutes
+ /**\n * ... tes\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getSeconds
+ /**\n * ... nds\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime
+ /**\n * ... ime\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
+ /**\n * ... set\n */
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDate
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDay
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHours
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds
+
+ * Sets the day of the month for a specified date according to local time.
+ *
+ * @param {number} dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate
+ * @return {number}
+ /**\n * ... er}\n */
+ * Set the month for a specified date according to local time.
+ *
+ * @param {number} monthValue
+ * @param {number=} opt_dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth
+ * @return {number}
+
+ * Sets the full year for a specified date according to local time.
+ *
+ * @param {number} yearValue
+ * @param {number=} opt_monthValue
+ * @param {number=} opt_dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear
+ * @return {number}
+
+ * Sets the year for a specified date according to local time.
+ *
+ * @param {number} yearValue
+ * @deprecated
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setYear
+ * @return {number}
+
+ * Sets the hours for a specified date according to local time.
+ *
+ * @param {number} hoursValue
+ * @param {number=} opt_minutesValue
+ * @param {number=} opt_secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours
+ * @return {number}
+
+ * Sets the minutes for a specified date according to local time.
+ *
+ * @param {number} minutesValue
+ * @param {number=} opt_secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMinutes
+ * @return {number}
+
+ * Sets the seconds for a specified date according to local time.
+ *
+ * @param {number} secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setSeconds
+ * @return {number}
+
+ * Sets the milliseconds for a specified date according to local time.
+ *
+ * @param {number} millisecondsValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds
+ * @return {number}
+
+ * Sets the Date object to the time represented by a number of milliseconds
+ * since January 1, 1970, 00:00:00 UTC.
+ *
+ * @param {number} timeValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime
+ * @return {number}
+
+ * Sets the day of the month for a specified date according to universal time.
+ *
+ * @param {number} dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate
+ * @return {number}
+
+ * Sets the month for a specified date according to universal time.
+ *
+ * @param {number} monthValue
+ * @param {number=} opt_dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth
+ * @return {number}
+
+ * Sets the full year for a specified date according to universal time.
+ *
+ * @param {number} yearValue
+ * @param {number=} opt_monthValue
+ * @param {number=} opt_dayValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear
+ * @return {number}
+
+ * Sets the hour for a specified date according to universal time.
+ *
+ * @param {number} hoursValue
+ * @param {number=} opt_minutesValue
+ * @param {number=} opt_secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours
+ * @return {number}
+
+ * Sets the minutes for a specified date according to universal time.
+ *
+ * @param {number} minutesValue
+ * @param {number=} opt_secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes
+ * @return {number}
+
+ * Sets the seconds for a specified date according to universal time.
+ *
+ * @param {number} secondsValue
+ * @param {number=} opt_msValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds
+ * @return {number}
+
+ * Sets the milliseconds for a specified date according to universal time.
+ *
+ * @param {number} millisecondsValue
+ * @modifies {this}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds
+ * @return {number}
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toSource
+ * @override
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toDateString
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTString
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeString
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString
+
+ * @param {(string|Array)=} opt_locales
+ * @param {Object=} opt_options
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
+
+ * @param {string} formatString
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat
+ /**\n * ... mat\n */
+ * @param {string|Array=} opt_locales
+ * @param {Object=} opt_options
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
+ * @see http://www.ecma-international.org/ecma-402/1.0/#sec-13.3.1
+ * @override
+
+ * @param {(string|Array)=} opt_locales
+ * @param {Object=} opt_options
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString
+
+ * @this {Date}
+ * @return {string}
+ * @nosideeffects
+ * @override
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf
+
+ * @constructor
+ * @param {*=} opt_str
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
+
+ * @param {...number} var_args
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode
+ /**\n * ... ode\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/anchor
+ /**\n * ... hor\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/big
+ /**\n * ... big\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/blink
+ /**\n * ... ink\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/bold
+ /**\n * ... old\n */
+ * Returns the specified character from a string.
+ *
+ * @this {String|string}
+ * @param {number} index
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt
+ /**\n * ... rAt\n */
+ * Returns a number indicating the Unicode value of the character at the given
+ * index.
+ *
+ * @this {String|string}
+ * @param {number=} opt_index
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
+ /**\n * ... eAt\n */
+ * Combines the text of two or more strings and returns a new string.
+ *
+ * @this {String|string}
+ * @param {...*} var_args
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concat
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fixed
+
+ * @this {String|string}
+ * @param {string} color
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fontcolor
+ /**\n * ... lor\n */
+ * @this {String|string}
+ * @param {number} size
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fontsize
+ /**\n * ... ize\n */
+ * Returns the index within the calling String object of the first occurrence
+ * of the specified value, starting the search at fromIndex, returns -1 if the
+ * value is not found.
+ *
+ * @this {String|string}
+ * @param {string|null} searchValue
+ * @param {(number|null)=} opt_fromIndex
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/italics
+ /**\n * ... ics\n */
+ * Returns the index within the calling String object of the last occurrence of
+ * the specified value, or -1 if not found. The calling string is searched
+ * backward, starting at fromIndex.
+ *
+ * @this {String|string}
+ * @param {string|null} searchValue
+ * @param {(number|null)=} opt_fromIndex
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOf
+
+ * @this {String|string}
+ * @param {string} hrefAttribute
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/link
+
+ * Returns a number indicating whether a reference string comes before or after
+ * or is the same as the given string in sort order.
+ *
+ * @this {*}
+ * @param {?string} compareString
+ * @param {string|Array=} locales
+ * @param {Object=} options
+ * @return {number}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/String/localeCompare
+ * @see http://www.ecma-international.org/ecma-402/1.0/#sec-13.1.1
+ /**\n * ... 1.1\n */
+ * Used to retrieve the matches when matching a string against a regular
+ * expression.
+ *
+ * @this {String|string}
+ * @param {*} regexp
+ * @return {Array} This should really return an Array with a few
+ * special properties, but we do not have a good way to model this in
+ * our type system. Also see Regexp.prototype.exec.
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
+ /**\n * ... tch\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/quote
+ /**\n * ... ote\n */
+ * Finds a match between a regular expression and a string, and replaces the
+ * matched substring with a new substring.
+ *
+ * This may have side-effects if the replacement function has side-effects.
+ *
+ * @this {String|string}
+ * @param {RegExp|string} regex
+ * @param {string|Function} str
+ * @param {string=} opt_flags
+ * @return {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
+ /**\n * ... ace\n */
+ * Executes the search for a match between a regular expression and this String
+ * object.
+ *
+ * @this {String|string}
+ * @param {RegExp|string} regexp
+ * @return {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/search
+ /**\n * ... rch\n */
+ * @this {String|string}
+ * @param {number} begin
+ * @param {number=} opt_end
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/small
+
+ * @this {String|string}
+ * @param {*=} opt_separator
+ * @param {number=} opt_limit
+ * @return {!Array}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
+ /**\n * ... lit\n */
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/strike
+ /**\n * ... ike\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/sub
+ /**\n * ... sub\n */
+ * @this {String|string}
+ * @param {number} start
+ * @param {number=} opt_length
+ * @return {string} The specified substring.
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr
+ /**\n * ... str\n */
+ * @this {String|string}
+ * @param {number} start
+ * @param {number=} opt_end
+ * @return {string} The specified substring.
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/sup
+ /**\n * ... sup\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase
+ /**\n * ... ase\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase
+
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toSource
+ * @override
+
+ * @this {string|String}
+ * @return {string}
+ * @nosideeffects
+ * @override
+
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/valueOf
+
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length
+
+ * @constructor
+ * @param {*=} opt_pattern
+ * @param {*=} opt_flags
+ * @return {!RegExp}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
+ /**\n * ... Exp\n */
+ * @param {*} pattern
+ * @param {*=} opt_flags
+ * @return {void}
+ * @modifies {this}
+ * @deprecated
+ * @see http://msdn.microsoft.com/en-us/library/x9cswe0z(v=VS.85).aspx
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/compile
+ /**\n * ... ile\n */
+ * @param {*} str The string to search.
+ * @return {Array} This should really return an Array with a few
+ * special properties, but we do not have a good way to model this in
+ * our type system. Also see String.prototype.match.
+ * @see http://msdn.microsoft.com/en-us/library/z908hy33(VS.85).aspx
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
+ /**\n * ... xec\n */
+ * @param {*} str The string to search.
+ * @return {boolean} Whether the string was matched.
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
+ /**\n * ... est\n */
+ * @this {RegExp}
+ * @return {string}
+ * @nosideeffects
+ * @override
+ Constructor properties:// Cons ... erties:
+ * The string against which the last regexp was matched.
+ * @type {string}
+ * @see http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_input.html
+ /**\n * ... tml\n */
+ * The last matched characters.
+ * @type {string}
+ * @see http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_lastMatch.html
+
+ * The last matched parenthesized substring, if any.
+ * @type {string}
+ * @see http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_lastParen.html
+
+ * The substring of the input up to the characters most recently matched.
+ * @type {string}
+ * @see http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_leftContext.html
+
+ * The substring of the input after the characters most recently matched.
+ * @type {string}
+ * @see http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_rightContext.html
+
+ * @type {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
+ Prototype properties:// Prot ... erties:
+ * Whether to test the regular expression against all possible matches
+ * in a string, or only against the first.
+ * @type {boolean}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/global
+ /**\n * ... bal\n */
+ * Whether to ignore case while attempting a match in a string.
+ * @type {boolean}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase
+
+ * The index at which to start the next match.
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex
+
+ * Whether or not to search in strings across multiple lines.
+ * @type {boolean}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline
+ /**\n * ... ine\n */
+ * The text of the pattern.
+ * @type {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source
+
+ * @constructor
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!Error}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
+ /**\n * ... ror\n */
+ * Chrome/v8 specific, altering the maximum depth of the stack trace
+ * (10 by default).
+ * @type {number}
+ * @see http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+ /**\n * ... Api\n */
+ * Chrome/v8 specific, adds a stack trace to the error object. The optional
+ * constructorOpt parameter allows you to pass in a function value. When
+ * collecting the stack trace all frames above the topmost call to this
+ * function, including that call, will be left out of the stack trace.
+ * @param {Object} error The object to add the stack trace to.
+ * @param {Function=} opt_constructor A function in the stack trace
+ * @see http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+ * @return {undefined}
+
+ * IE-only.
+ * @type {string}
+ * @see http://msdn.microsoft.com/en-us/library/2w6a45b5.aspx
+ /**\n * ... spx\n */
+ * Mozilla-only.
+ * @type {number}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/lineNumber
+
+ * Mozilla-only
+ * @type {string}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/fileName
+
+ * @type {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/name
+
+ * @type {string}
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/message
+ /**\n * ... age\n */
+ * Doesn't seem to exist, but closure/debug.js references it.
+ /**\n * ... it.\n */ @type {string} /** @ty ... ing} */
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!EvalError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError
+
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!RangeError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError
+
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!ReferenceError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError
+
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!SyntaxError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError
+
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!TypeError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError
+
+ * @constructor
+ * @extends {Error}
+ * @param {*=} opt_message
+ * @param {*=} opt_file
+ * @param {*=} opt_line
+ * @return {!URIError}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError
+ JScript extensions.// JScr ... nsions. @see http://msdn.microsoft.com/en-us/library/894hfyb4(VS.80).aspx// @see ... 0).aspx
+ * @see http://msdn.microsoft.com/en-us/library/7sw4ddf8.aspx
+ * @type {function(new:?, string, string=)}
+ /**\n * ... =)}\n */
+ * @return {string}
+ * @nosideeffects
+ * @see http://msdn.microsoft.com/en-us/library/9k34bww2(VS.80).aspx
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://msdn.microsoft.com/en-us/library/yf25ky07(VS.80).aspx
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://msdn.microsoft.com/en-us/library/wx3812cz(VS.80).aspx
+
+ * @return {number}
+ * @nosideeffects
+ * @see http://msdn.microsoft.com/en-us/library/e98hsk2f(VS.80).aspx
+ opt_descriptionkeyForunscopablesIIterableResultIterableIteratorIteratorIterableIObjectIArrayLikeArgumentscalleecallerNaNdecodeURIdecodeURIComponentencodeURIescapestrnumevalopt_value__defineGetter__spropfun__defineSetter__isPrototypeOfother__lookupGetter____lookupSetter____noSuchMethod____parent__propertyIsEnumerabletoSourceunwatchpropvalueOfwatchFunctionvar_argsarityopt_separatoropt_beginopt_endopt_compareFunctionopt_indexopt_howManyopt_initialValuereduceRightopt_thisobjopt_fromIndexlastIndexOfarropt_contexttoExponentialopt_fractionDigitsopt_digitstoPrecisionopt_precisionopt_radixMAX_VALUEMIN_VALUENEGATIVE_INFINITYPOSITIVE_INFINITYacosasinatanatan2cosexppowsinsqrttanLN10LOG2ELOG10EPISQRT1_2SQRT2opt_yr_numopt_mo_numopt_day_numopt_hr_numopt_min_numopt_sec_numopt_ms_numopt_dateopt_hoursopt_minuteopt_secondopt_msgetDaygetFullYeargetYeargetMinutesgetSecondsgetMillisecondsgetTimezoneOffsetgetUTCDategetUTCDaygetUTCMonthgetUTCFullYeargetUTCMillisecondsdayValuemonthValueopt_dayValuesetFullYearyearValueopt_monthValuesetYearhoursValueopt_minutesValueopt_secondsValueopt_msValuesetMinutesminutesValuesetSecondssecondsValuesetMillisecondsmillisecondsValuesetTimetimeValuesetUTCDatesetUTCMonthsetUTCFullYearsetUTCHourssetUTCMinutessetUTCSecondssetUTCMillisecondstoDateStringtoGMTStringtoTimeStringtoUTCStringopt_localesopt_optionstoLocaleFormatformatStringopt_strbigblinkfontcolorfontsizesearchValueitalicshrefAttributecompareStringlocalesregexpquoteopt_flagsbeginsmallopt_limitstrikesubopt_lengthsuptoLocaleUpperCaseopt_patterncompilepatternlastMatchlastParenleftContextrightContext$4$6$7$9ignoreCaselastIndexmultilineopt_messageopt_fileopt_linestackTraceLimitcaptureStackTraceopt_constructorlineNumbersourceURLEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorActiveXObjectprogIdopt_locationScriptEngineScriptEngineMajorVersionScriptEngineMinorVersionScriptEngineBuildVersionECMAScript 3 Built-Ins. This include common extensions so this
+is actually ES3+Reality.
+@authorstevey@google.com (Steve Yegge)
+nicksantos@google.com (Nick Santos)
+arv@google.com (Erik Arvidsson)
+johnlenz@google.com (John Lenz)typedef@typedefsym(symbol|undefined)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for(string|undefined)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/keyFor@constrecord@recordtemplate@templateVALUE@interfaceIterator.suppress@suppress{externsValidation}VALUE
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocolVALUE=!IIterableResult.IIterableResult.Use this to indicate a type is both an Iterator and an Iterable.@extendsIterator.Iterable.KEY1, VALUE1IObject.VALUE2@constructorimplements@implementsIArrayLike.T
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/argumentshttp://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/calleeUse the non-standard {@see Function.prototype.caller} property of a function
+object instead.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/caller
+deprecated@deprecatedhttp://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Functions_and_function_scope/arguments/lengthNot actually a global variable, but we need it in order for the current type
+checker to typecheck the "arguments" variable in a function correctly.
+TODO(tbreisacher): When the old type checker is gone, delete this and add
+an 'arguments' variable of type Array in the d8 externs.!Argumentshttp://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Functions_and_function_scope/argumentshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponenthttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponentShould only be used in browsers where encode/decodeURIComponent
+are not present, as the latter handle fancy Unicode characters.https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Predefined_Functions/escape_and_unescape_Functionshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinitehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaNhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloatParse an integer. Use of {@code parseInt} without {@code base} is strictly
+banned in Google. If you really want to parse octal or hex based on the
+leader, then pass {@code undefined} as the base.(number|undefined)http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInthttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval*=http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ObjectThe constructor of the current object.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructorBinds an object's property to a function to be called when that property is
+looked up.
+Mozilla-only.modifies@modifies{this}
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter
+Binds an object's property to a function to be called when an attempt is made
+to set that property.
+Mozilla-only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineSetter
+Returns whether the object has a property with the specified name.Implicitly cast to a string.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnPropertyReturns whether an object exists in another object's prototype chain.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOfReturn the function bound as a getter to the specified property.
+Mozilla-only.a string containing the name of the property whose
+getter should be returned
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/lookupGetterReturn the function bound as a setter to the specified property.
+Mozilla-only.a string containing the name of the property whose
+setter should be returned.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/lookupSetterExecutes a function when a non-existent method is called on an object.
+Mozilla-only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethodPoints to an object's context. For top-level objects, this is the e.g. window.
+Mozilla-only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/parentPoints to the object which was used as prototype when the object was instantiated.
+Mozilla-only.
+
+Will be null on Object.prototype.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/protoDetermine whether the specified property in an object can be enumerated by a
+for..in loop, with the exception of properties inherited through the
+prototype chain.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerableReturns a localized string representing the object.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toLocaleStringReturns a string representing the source code of the object.
+Mozilla-only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toSourceReturns a string representing the object.@thisMissing or invalid tag nameMissing ... ag nameUnknown content '{*}
+ *'Unknown ... {*}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toStringRemoves a watchpoint set with the {@see Object.prototype.watch} method.
+Mozilla-only.The name of a property of the object.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/unwatch
+Returns the object's {@code this} value.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOfSets a watchpoint method.
+Mozilla-only.A function to call.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch
+...*throws@throwshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Functionhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/callhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/applyhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arityNonstandard; Mozilla and JScript only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/callerNonstandard.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/displayNameExpected number of arguments.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/lengthhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/nameUnknown content '{Function}
+ *'Unknown ... on}\n *'override@overridehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayReturns a new array comprised of this array joined with other array(s)
+and/or value(s).http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concatJoins all elements of an array into a string.Specifies a string to separate each element of the
+array. The separator is converted to a string if necessary. If omitted,
+the array elements are separated with a comma.
+Unknown content '{IArrayLike>|string}
+ *'Unknown ... ng}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/joinRemoves the last element from an array and returns that element.Unknown content '{IArrayLike}
+ *'Unknown ... T>}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/popMutates an array by appending the given elements and returning the new
+length of the array....TThe new length of the array.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pushTransposes the elements of an array in place: the first array element becomes the
+last and the last becomes the first. The mutated array is also returned.A reference to the original modified array.
+THISUnknown content '{THIS}
+ *'Unknown ... IS}\n *'THIS
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverseRemoves the first element from an array and returns that element. This
+method changes the length of the array.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shiftExtracts a section of an array and returns a new array.Zero-based index at which to begin extraction. A
+non-number type will be auto-cast by the browser to a number.
+Zero-based index at which to end extraction. slice
+extracts up to but not including end.
+!Array.Array.Unknown content '{IArrayLike|string}
+ *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sliceSorts the elements of an array in place.Specifies a function that
+defines the sort order.
+function (T, T): number=function (T, T): numberhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sortChanges the content of an array, adding new elements while removing old
+elements.Index at which to start changing the array. If negative,
+will begin that many elements from the end. A non-number type will be
+auto-cast by the browser to a number.
+An integer indicating the number of old array elements
+to remove.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/spliceUnknown content '{Object}
+ *'Unknown ... ct}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSourceUnknown content '{Array>}
+ *'Unknown ... ?>}\n *'Adds one or more elements to the beginning of an array and returns the new
+length of the array.The new length of the array
+Unknown content '{IArrayLike>}
+ *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshiftApply a function simultaneously against two values of the array (from
+left-to-right) as to reduce it to a single value.?function (?, T, number, !Array.): Rfunction (?, T, number, !Array.): RT,R
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceApply a function simultaneously against two values of the array (from
+right-to-left) as to reduce it to a single value.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRightAvailable in ECMAScript 5, Mozilla 1.6+.?function (this: S, T, number, !Array.): ?function (this: S, T, number, !Array.): ?S=T,S
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/everyhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filterhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOfhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf?function (this: S, T, number, !Array.): Rfunction (this: S, T, number, !Array.): R!Array.Array.T,S,R
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/maphttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/somehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/index?stringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/inputhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length?function (this: S, T, number, ?): ?function (this: S, T, number, ?): ?T,SMozilla 1.6+ only.T,S,RIntroduced in 1.8.5.http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArrayhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Booleanhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/toSource
+Unknown content '{boolean|Boolean}
+ *'Unknown ... an}\n *'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberUnknown content '{Number|number}
+ *'Unknown ... er}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toExponentialhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixedhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecisionReturns a string representing the number.An optional radix.
+(number|Number)=(number|Number)http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUEhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUEhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NaNhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITYhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITYhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Mathhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/abshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acoshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/asinhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atanhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/ceilhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/coshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/exphttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/log...?http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/maxhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/minhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/powhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/randomhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/roundhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sinhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/sqrthttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/tanhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/toSourcehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/Ehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LN2http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LN10http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG2Ehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/LOG10Ehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/PIhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/SQRT2?=http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Datehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/nowParses a string representation of a date, and returns the number
+of milliseconds since January 1, 1970, 00:00:00, local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parsehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTChttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDatehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDayhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonthhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getFullYearhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYearhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getHourshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMinuteshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getSecondshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMillisecondshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffsethttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDatehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCDayhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMonthhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYearhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCHourshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMinuteshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCSecondshttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCMillisecondsSets the day of the month for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate
+Set the month for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMonth
+Sets the full year for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setFullYear
+Sets the year for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setYear
+Sets the hours for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours
+Sets the minutes for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMinutes
+Sets the seconds for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setSeconds
+Sets the milliseconds for a specified date according to local time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds
+Sets the Date object to the time represented by a number of milliseconds
+since January 1, 1970, 00:00:00 UTC.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setTime
+Sets the day of the month for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCDate
+Sets the month for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth
+Sets the full year for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear
+Sets the hour for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCHours
+Sets the minutes for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes
+Sets the seconds for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds
+Sets the milliseconds for a specified date according to universal time.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toSource
+http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toDateStringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toGMTStringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toTimeStringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString(string|Array.)=(string|Array.)Array.Object=http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateStringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormathttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
+http://www.ecma-international.org/ecma-402/1.0/#sec-13.3.1
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeStringUnknown content '{Date}
+ *'Unknown ... te}\n *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOfhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String...numberhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCodeUnknown content '{String|string}
+ *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/anchorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/bighttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/blinkhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/boldReturns the specified character from a string.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAtReturns a number indicating the Unicode value of the character at the given
+index.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAtCombines the text of two or more strings and returns a new string.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/concathttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fixedhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fontcolorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fontsizeReturns the index within the calling String object of the first occurrence
+of the specified value, starting the search at fromIndex, returns -1 if the
+value is not found.(string|null)(number|null)=(number|null)http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOfhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/italicsReturns the index within the calling String object of the last occurrence of
+the specified value, or -1 if not found. The calling string is searched
+backward, starting at fromIndex.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/lastIndexOfhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/linkReturns a number indicating whether a reference string comes before or after
+or is the same as the given string in sort order.http://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/String/localeCompare
+http://www.ecma-international.org/ecma-402/1.0/#sec-13.1.1Used to retrieve the matches when matching a string against a regular
+expression.This should really return an Array with a few
+special properties, but we do not have a good way to model this in
+our type system. Also see Regexp.prototype.exec.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/quoteFinds a match between a regular expression and a string, and replaces the
+matched substring with a new substring.
+
+This may have side-effects if the replacement function has side-effects.(RegExp|string)(string|Function)http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceExecutes the search for a match between a regular expression and this String
+object.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/searchhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slicehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/small!Array.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/splithttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/strikehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/subThe specified substring.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substrhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substringhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/suphttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCasehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCasehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCasehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCasehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toSource
+Unknown content '{string|String}
+ *'http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/valueOfhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length!RegExphttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExphttp://msdn.microsoft.com/en-us/library/x9cswe0z(v=VS.85).aspx
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/compileThe string to search.
+This should really return an Array with a few
+special properties, but we do not have a good way to model this in
+our type system. Also see String.prototype.match.
+http://msdn.microsoft.com/en-us/library/z908hy33(VS.85).aspx
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/execWhether the string was matched.
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/testUnknown content '{RegExp}
+ *'Unknown ... xp}\n *'The string against which the last regexp was matched.http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_input.htmlThe last matched characters.http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_lastMatch.htmlThe last matched parenthesized substring, if any.http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_lastParen.htmlThe substring of the input up to the characters most recently matched.http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_leftContext.htmlThe substring of the input after the characters most recently matched.http://www.devguru.com/Technologies/Ecmascript/Quickref/regexp_rightContext.htmlWhether to test the regular expression against all possible matches
+in a string, or only against the first.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/globalWhether to ignore case while attempting a match in a string.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCaseThe index at which to start the next match.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndexWhether or not to search in strings across multiple lines.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multilineThe text of the pattern.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/source!Errorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ErrorChrome/v8 specific, altering the maximum depth of the stack trace
+(10 by default).http://code.google.com/p/v8/wiki/JavaScriptStackTraceApiChrome/v8 specific, adds a stack trace to the error object. The optional
+constructorOpt parameter allows you to pass in a function value. When
+collecting the stack trace all frames above the topmost call to this
+function, including that call, will be left out of the stack trace.The object to add the stack trace to.
+A function in the stack trace
+Function=http://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+IE-only.http://msdn.microsoft.com/en-us/library/2w6a45b5.aspxMozilla-only.http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/lineNumberMozilla-onlyhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/fileNamehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/namehttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/messageDoesn't seem to exist, but closure/debug.js references it.!EvalErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError!RangeErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError!ReferenceErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError!SyntaxErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError!TypeErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError!URIErrorhttp://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIErrorhttp://msdn.microsoft.com/en-us/library/7sw4ddf8.aspx
+http://msdn.microsoft.com/en-us/library/9k34bww2(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/yf25ky07(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/wx3812cz(VS.80).aspxhttp://msdn.microsoft.com/en-us/library/e98hsk2f(VS.80).aspxvar symbol;functio ... ion) {}Symbol.for;Symbol.keyFor;Symbol.keyForSymbol.iterator;Symbol.toStringTag;Symbol.unscopables;Symbol.unscopablesfunctio ... lt() {}IIterab ... e.done;IIterab ... pe.doneIIterab ... ototypeIIterab ... .value;IIterab ... e.valuefunctio ... le() {}Iterabl ... n() {};Iterabl ... on() {}Iterabl ... erator]Iterable.prototypefunction() {}functio ... or() {}Iterato ... e.next;Iterato ... pe.nextIterator.prototypefunctio ... ct() {}functio ... ke() {}IArrayL ... length;IArrayL ... .lengthIArrayLike.prototypefunctio ... ts() {}Argumen ... callee;Argumen ... .calleeArguments.prototypeArgumen ... caller;Argumen ... .callerArgumen ... length;Argumen ... .lengthvar arguments;var Infinity;var NaN;var undefined;functio ... uri) {}functio ... str) {}functio ... num) {}functio ... ase) {}functio ... ode) {}functio ... lue) {}Object. ... n() {};Object. ... on() {}Object. ... tructorObject. ... un) {};Object. ... fun) {}Object. ... etter__functio ... fun) {}Object. ... me) {};Object. ... ame) {}functio ... ame) {}Object. ... er) {};Object. ... her) {}Object. ... otypeOffunction(other) {}Object. ... op) {};Object. ... rop) {}function(sprop) {}Object. ... ethod__function(fun) {}Object. ... rent__;Object. ... arent__Object. ... roto__;Object. ... proto__Object. ... merableObject. ... eStringObject. ... oSourceObject. ... unwatchfunction(prop) {}Object. ... valueOfObject. ... ler) {}Object. ... e.watchfunctio ... ler) {}functio ... rgs) {}Functio ... gs) {};Functio ... rgs) {}Functio ... pe.callFunction.prototypeFunctio ... e.applyFunctio ... uments;Functio ... gumentsFunctio ... .arity;Functio ... e.arityFunctio ... caller;Functio ... .callerFunctio ... ayName;Functio ... layNameFunctio ... length;Functio ... .lengthFunctio ... e.name;Functio ... pe.nameFunctio ... n() {};Functio ... on() {}Functio ... oStringArray.p ... n() {};Array.p ... on() {}Array.p ... erator]Array.p ... gs) {};Array.p ... rgs) {}Array.p ... or) {};Array.p ... tor) {}Array.prototype.joinfunctio ... tor) {}Array.prototype.popArray.prototype.pushArray.p ... reverseArray.p ... e.shiftArray.p ... nd) {};Array.p ... end) {}Array.p ... e.slicefunctio ... end) {}Array.p ... on) {};Array.p ... ion) {}Array.prototype.sortArray.p ... .spliceArray.p ... Source;Array.p ... oSourceArray.p ... oStringArray.p ... unshiftArray.p ... ue) {};Array.p ... lue) {}Array.p ... .reduceArray.p ... ceRightArray.p ... bj) {};Array.p ... obj) {}Array.p ... e.everyfunctio ... obj) {}Array.p ... .filterArray.p ... forEachArray.p ... indexOfArray.p ... IndexOfArray.prototype.mapArray.prototype.someArray.p ... .index;Array.p ... e.indexArray.p ... .input;Array.p ... e.inputArray.p ... length;Array.p ... .lengthArray.e ... xt) {};Array.e ... ext) {}Array.everyfunctio ... ext) {}Array.f ... xt) {};Array.f ... ext) {}Array.filterArray.forEachArray.i ... ex) {};Array.i ... dex) {}Array.indexOfArray.l ... ex) {};Array.l ... dex) {}Array.lastIndexOfArray.m ... xt) {};Array.m ... ext) {}Array.mapArray.s ... xt) {};Array.s ... ext) {}Array.someArray.i ... rr) {};Array.i ... arr) {}function(arr) {}Boolean ... n() {};Boolean ... on() {}Boolean ... oSourceBoolean.prototypeBoolean ... oStringBoolean ... valueOfNumber. ... ts) {};Number. ... its) {}Number. ... nentialNumber.prototypefunctio ... its) {}Number. ... toFixedNumber. ... on) {};Number. ... ion) {}Number. ... ecisionNumber. ... ix) {};Number. ... dix) {}Number. ... oStringfunctio ... dix) {}Number.MAX_VALUE;Number.MAX_VALUENumber.MIN_VALUE;Number.MIN_VALUENumber.NaN;Number.NaNNumber. ... FINITY;Number. ... NFINITYvar Math = {};Math = {}Math.ab ... (x) {};Math.ab ... n(x) {}function(x) {}Math.ac ... (x) {};Math.ac ... n(x) {}Math.acosMath.as ... (x) {};Math.as ... n(x) {}Math.asinMath.at ... (x) {};Math.at ... n(x) {}Math.atanMath.at ... x) {};Math.at ... , x) {}Math.atan2function(y, x) {}Math.ce ... (x) {};Math.ce ... n(x) {}Math.co ... (x) {};Math.co ... n(x) {}Math.cosMath.ex ... (x) {};Math.ex ... n(x) {}Math.expMath.fl ... (x) {};Math.fl ... n(x) {}Math.lo ... (x) {};Math.lo ... n(x) {}Math.ma ... gs) {};Math.ma ... rgs) {}Math.mi ... gs) {};Math.mi ... rgs) {}Math.po ... y) {};Math.po ... , y) {}Math.powfunction(x, y) {}Math.ra ... n() {};Math.ra ... on() {}Math.ro ... (x) {};Math.ro ... n(x) {}Math.si ... (x) {};Math.si ... n(x) {}Math.sinMath.sq ... (x) {};Math.sq ... n(x) {}Math.sqrtMath.ta ... (x) {};Math.ta ... n(x) {}Math.tanMath.to ... n() {};Math.to ... on() {}Math.toSourceMath.E;Math.EMath.LN2;Math.LN10;Math.LN10Math.LOG2E;Math.LOG2EMath.LOG10E;Math.LOG10EMath.PI;Math.PIMath.SQRT1_2;Math.SQRT1_2Math.SQRT2;Math.SQRT2Date.no ... n() {};Date.no ... on() {}Date.pa ... te) {};Date.pa ... ate) {}Date.parsefunction(date) {}Date.UT ... ms) {};Date.UT ... _ms) {}Date.UTCfunctio ... _ms) {}Date.pr ... n() {};Date.pr ... on() {}Date.pr ... getDateDate.prototypeDate.pr ... .getDayDate.pr ... etMonthDate.pr ... ullYearDate.pr ... getYearDate.pr ... etHoursDate.pr ... MinutesDate.pr ... SecondsDate.pr ... secondsDate.pr ... getTimeDate.pr ... eOffsetDate.pr ... UTCDateDate.pr ... tUTCDayDate.pr ... TCMonthDate.pr ... TCHoursDate.pr ... ue) {};Date.pr ... lue) {}Date.pr ... setDateDate.pr ... setYearDate.pr ... setTimeDate.pr ... oSourceDate.pr ... eStringDate.pr ... TStringDate.pr ... CStringDate.pr ... ns) {};Date.pr ... ons) {}functio ... ons) {}Date.pr ... ng) {};Date.pr ... ing) {}Date.pr ... eFormatDate.pr ... oStringDate.pr ... alueOf;Date.pr ... valueOfString. ... gs) {};String. ... rgs) {}String. ... n() {};String. ... on() {}String. ... .anchorString.prototype.bigString. ... e.blinkString. ... pe.boldString. ... ex) {};String. ... dex) {}String. ... .charAtfunction(index) {}String. ... rCodeAtString. ... .concatString. ... e.fixedString. ... or) {};String. ... lor) {}String. ... ntcolorfunction(color) {}String. ... ze) {};String. ... ize) {}String. ... ontsizefunction(size) {}String. ... indexOfString. ... italicsString. ... IndexOfString. ... te) {};String. ... ute) {}String. ... pe.linkfunctio ... ute) {}String. ... ns) {};String. ... ons) {}String. ... CompareString. ... xp) {};String. ... exp) {}String. ... e.matchfunction(regexp) {}String. ... e.quoteString. ... ags) {}String. ... replacefunctio ... ags) {}String. ... .searchString. ... nd) {};String. ... end) {}String. ... e.sliceString. ... e.smallString. ... it) {};String. ... mit) {}String. ... e.splitfunctio ... mit) {}String. ... .strikeString.prototype.subString. ... th) {};String. ... gth) {}String. ... .substrfunctio ... gth) {}String. ... bstringString.prototype.supString. ... perCaseString. ... werCaseString. ... oSourceString. ... oStringString. ... alueOf;String. ... valueOfString. ... length;String. ... .lengthRegExp. ... gs) {};RegExp. ... ags) {}RegExp. ... compileRegExp.prototypeRegExp. ... tr) {};RegExp. ... str) {}RegExp. ... pe.execfunction(str) {}RegExp. ... pe.testRegExp. ... n() {};RegExp. ... on() {}RegExp. ... oStringRegExp.input;RegExp.inputRegExp.lastMatch;RegExp.lastMatchRegExp.lastParen;RegExp.lastParenRegExp.leftContext;RegExp.leftContextRegExp.rightContext;RegExp.rightContextRegExp.$1;RegExp.$1RegExp.$2;RegExp.$2RegExp.$3;RegExp.$3RegExp.$4;RegExp.$4RegExp.$5;RegExp.$5RegExp.$6;RegExp.$6RegExp.$7;RegExp.$7RegExp.$8;RegExp.$8RegExp.$9;RegExp.$9RegExp. ... global;RegExp. ... .globalRegExp. ... reCase;RegExp. ... oreCaseRegExp. ... tIndex;RegExp. ... stIndexRegExp. ... tiline;RegExp. ... ltilineRegExp. ... source;RegExp. ... .sourcefunctio ... ine) {}Error.s ... eLimit;Error.s ... ceLimitError.c ... tor){};Error.c ... ctor){}Error.c ... ckTracefunctio ... ctor){}Error.p ... iption;Error.p ... riptionError.prototypeError.p ... Number;Error.p ... eNumberError.p ... leName;Error.p ... ileNameError.p ... e.name;Error.prototype.nameError.p ... essage;Error.p ... messageError.p ... rceURL;Error.p ... urceURLError.p ... .stack;Error.p ... e.stackfunctio ... ne() {}functio ... on() {}ScriptE ... Version/opt/codeql/javascript/tools/data/externs/es/es5.js
+ * Copyright 2009 The Closure Compiler Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ * @fileoverview Definitions for ECMAScript 5.
+ * @see https://es5.github.io/
+ * @externs
+
+ * @param {Object|undefined} selfObj Specifies the object to which |this| should
+ * point when the function is run. If the value is null or undefined, it
+ * will default to the global object.
+ * @param {...*} var_args Additional arguments that are partially
+ * applied to fn.
+ * @return {!Function} A partially-applied form of the Function on which
+ * bind() was invoked as a method.
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
+ /**\n * ... ind\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim
+ /**\n * ... rim\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/TrimLeft
+ /**\n * ... eft\n */
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/TrimRight
+
+ * A object property descriptor used by Object.create, Object.defineProperty,
+ * Object.defineProperties, Object.getOwnPropertyDescriptor.
+ *
+ * Note: not a real constructor.
+ * @constructor
+ * @template THIS
+ /**\n * ... HIS\n */ @type {*} /** @type {*} */ @type {(function(this: THIS):?)|undefined} /** @ty ... ned} */ @type {(function(this: THIS, ?):void)|undefined} @type {boolean|undefined}
+ * @param {Object} proto
+ * @param {Object=} opt_properties A map of ObjectPropertyDescriptors.
+ * @return {!Object}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create
+
+ * @param {!Object} obj
+ * @param {string} prop
+ * @param {!Object} descriptor A ObjectPropertyDescriptor.
+ * @return {!Object}
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty
+
+ * @param {!Object} obj
+ * @param {!Object} props A map of ObjectPropertyDescriptors.
+ * @return {!Object}
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties
+ /**\n * ... ies\n */
+ * @param {T} obj
+ * @param {string} prop
+ * @return {!ObjectPropertyDescriptor|undefined}
+ * @nosideeffects
+ * @template T
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor
+
+ * @param {!Object} obj
+ * @return {!Array}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys
+ /**\n * ... eys\n */
+ * @param {!Object} obj
+ * @return {!Array}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
+ /**\n * ... mes\n */
+ * @param {!Object} obj
+ * @return {Object}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf
+
+ * @param {T} obj
+ * @return {T}
+ * @template T
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/preventExtensions
+
+ * @param {T} obj
+ * @return {T}
+ * @template T
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/seal
+ /**\n * ... eal\n */
+ * @param {T} obj
+ * @return {T}
+ * @template T
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze
+ /**\n * ... eze\n */
+ * @param {!Object} obj
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isExtensible
+
+ * @param {!Object} obj
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isSealed
+ /**\n * ... led\n */
+ * @param {!Object} obj
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isFrozen
+ /**\n * ... zen\n */
+ * @param {string=} opt_key The JSON key for this object.
+ * @return {*} The serializable representation of this object. Note that this
+ * need not be a string. See http://goo.gl/PEUvs.
+ * @see https://es5.github.io/#x15.12.3
+ /**\n * ... 2.3\n */
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toISOString
+ * @return {string}
+ /**\n * ... ng}\n */
+ * @param {*=} opt_ignoredKey
+ * @return {string}
+ * @override
+
+ * @param {string} jsonStr The string to parse.
+ * @param {(function(string, *) : *)=} opt_reviver
+ * @return {*} The JSON object.
+ * @throws {Error}
+ /**\n * ... or}\n */
+ * @param {*} jsonObj Input object.
+ * @param {(Array|(function(string, *) : *)|null)=} opt_replacer
+ * @param {(number|string)=} opt_space
+ * @return {string} JSON string which represents jsonObj.
+ * @throws {Error}
+ selfObjtrimLefttrimRightprotoopt_propertiesdescriptordefinePropertiesgetOwnPropertyNamesgetPrototypeOfpreventExtensionssealisExtensibleisSealedisFrozentoJSONopt_keyopt_ignoredKeyjsonStropt_reviverjsonObjopt_replaceropt_spaceDefinitions for ECMAScript 5.
+https://es5.github.io/
+Specifies the object to which |this| should
+point when the function is run. If the value is null or undefined, it
+will default to the global object.
+(Object|undefined)Additional arguments that are partially
+applied to fn.
+A partially-applied form of the Function on which
+bind() was invoked as a method.
+!Functionhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bindhttp://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trimhttp://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/TrimLefthttp://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/TrimRightA object property descriptor used by Object.create, Object.defineProperty,
+Object.defineProperties, Object.getOwnPropertyDescriptor.
+
+Note: not a real constructor.((function (this: THIS): ?)|undefined)(function (this: THIS): ?)function (this: THIS): ?((function (this: THIS, ?): void)|undefined)(function (this: THIS, ?): void)function (this: THIS, ?): void(boolean|undefined)A map of ObjectPropertyDescriptors.
+https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/createA ObjectPropertyDescriptor.
+https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/definePropertyhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperties(!ObjectPropertyDescriptor.|undefined)!ObjectPropertyDescriptor.ObjectPropertyDescriptor.https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptorhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keyshttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNameshttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOfhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/preventExtensionshttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/sealhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freezehttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isExtensiblehttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isSealedhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/isFrozenThe JSON key for this object.
+The serializable representation of this object. Note that this
+need not be a string. See http://goo.gl/PEUvs.
+https://es5.github.io/#x15.12.3https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toISOString
+The string to parse.
+(function (string, *): *)=(function (string, *): *)function (string, *): *The JSON object.
+Input object.
+(Array.|(function (string, *): *)|null)=(Array.|(function (string, *): *)|null)(number|string)=(number|string)JSON string which represents jsonObj.
+Functio ... pe.bindString. ... pe.trimString. ... rimLeftString. ... imRightObjectP ... criptorObjectP ... .value;ObjectP ... e.valueObjectP ... ototypeObjectP ... pe.get;ObjectP ... ype.getObjectP ... pe.set;ObjectP ... ype.setObjectP ... itable;ObjectP ... ritableObjectP ... erable;ObjectP ... merableObjectP ... urable;ObjectP ... gurableObject. ... es) {};Object. ... ies) {}Object.createfunctio ... ies) {}Object. ... or) {};Object. ... tor) {}Object. ... ps) {};Object. ... ops) {}Object. ... pertiesfunctio ... ops) {}functio ... rop) {}Object. ... tyNamesObject. ... ensionsObject.sealObject.isExtensibleObject.isSealedObject.isFrozenObject. ... ey) {};Object. ... key) {}Object. ... .toJSONfunction(opt_key) {}Date.pr ... OStringDate.pr ... ey) {};Date.pr ... Key) {}Date.pr ... .toJSONfunctio ... Key) {}JSON.pa ... er) {};JSON.pa ... ver) {}functio ... ver) {}JSON.st ... ce) {};JSON.st ... ace) {}functio ... ace) {}/opt/codeql/javascript/tools/data/externs/es/es6.js
+ * Copyright 2014 The Closure Compiler Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ * @fileoverview Definitions for ECMAScript 6 and later.
+ * @see https://tc39.github.io/ecma262/
+ * @see https://www.khronos.org/registry/typedarray/specs/latest/
+ * @externs
+
+ * @constructor
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
+ * @implements {IteratorIterable}
+ * @template VALUE
+
+ * @param {?=} opt_value
+ * @return {!IIterableResult}
+ * @override
+
+ * @param {VALUE} value
+ * @return {!IIterableResult}
+
+ * @param {?} exception
+ * @return {!IIterableResult}
+ TODO(johnlenz): Array and Arguments should be Iterable.// TODO ... erable.
+ * @param {number} value
+ * @return {number}
+ * @nosideeffects
+
+ * @param {number} value1
+ * @param {...number} var_args
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot
+ /**\n * ... pot\n */
+ * @param {number} value1
+ * @param {number} value2
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul
+ /**\n * ... mul\n */
+ * @param {number} value
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32
+ /**\n * ... z32\n */
+ * @param {*} a
+ * @param {*} b
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
+ /**\n * ... /is\n */
+ * Returns a language-sensitive string representation of this number.
+ * @param {(string|!Array)=} opt_locales
+ * @param {Object=} opt_options
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
+ * @see http://www.ecma-international.org/ecma-402/1.0/#sec-13.2.1
+ * @override
+
+ * Repeats the string the given number of times.
+ *
+ * @param {number} count The number of times the string is repeated.
+ * @this {String|string}
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat
+ /**\n * ... eat\n */
+ * @constructor
+ * @extends {Array}
+ * @see https://262.ecma-international.org/6.0/#sec-gettemplateobject
+
+ * @type {!Array}
+ /**\n * ... g>}\n */
+ * @param {!ITemplateArray} template
+ * @param {...*} var_args Substitution values.
+ * @return {string}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw
+ /**\n * ... raw\n */
+ * @param {number} codePoint
+ * @param {...number} var_args Additional codepoints
+ * @return {string}
+
+ * @param {number} index
+ * @return {number}
+ * @nosideeffects
+
+ * @param {string=} opt_form
+ * @return {string}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize
+
+ * @param {string} searchString
+ * @param {number=} opt_position
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith
+ /**\n * ... ith\n */
+ * @param {string} searchString
+ * @param {number=} opt_position
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith
+
+ * @param {string} searchString
+ * @param {number=} opt_position
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
+ /**\n * ... des\n */
+ * @see http://dev.w3.org/html5/postmsg/
+ * @interface
+
+ * @param {number} length The length in bytes
+ * @constructor
+ * @noalias
+ * @throws {Error}
+ * @implements {Transferable}
+ /**\n * ... le}\n */
+ * @param {number} begin
+ * @param {number=} opt_end
+ * @return {!ArrayBuffer}
+ * @nosideeffects
+
+ * @param {*} arg
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView
+ /**\n * ... iew\n */
+ * @constructor
+ * @noalias
+ /**\n * ... ias\n */ @type {!ArrayBuffer} /** @ty ... fer} */
+ * @typedef {!ArrayBuffer|!ArrayBufferView}
+ /**\n * ... ew}\n */
+ * @constructor
+ * @implements {IArrayLike}
+ * @implements {Iterable}
+ * @extends {ArrayBufferView}
+ @const {number} /** @co ... ber} */
+ * @param {number} target
+ * @param {number} start
+ * @param {number=} opt_end
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin
+ /**\n * ... hin\n */
+ * @return {!IteratorIterable>}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entries
+
+ * @param {function(this:S, number, number, !TypedArray) : ?} callback
+ * @param {S=} opt_thisArg
+ * @return {boolean}
+ * @template S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/every
+
+ * @param {number} value
+ * @param {number=} opt_begin
+ * @param {number=} opt_end
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fill
+ /**\n * ... ill\n */
+ * @param {function(this:S, number, number, !TypedArray) : boolean} callback
+ * @param {S=} opt_thisArg
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS,S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/filter
+
+ * @param {function(this:S, number, number, !TypedArray) : boolean} callback
+ * @param {S=} opt_thisArg
+ * @return {(number|undefined)}
+ * @template S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/find
+
+ * @param {function(this:S, number, number, !TypedArray) : boolean} callback
+ * @param {S=} opt_thisArg
+ * @return {number}
+ * @template S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/findIndex
+
+ * @param {function(this:S, number, number, !TypedArray) : ?} callback
+ * @param {S=} opt_thisArg
+ * @return {undefined}
+ * @template S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/forEach
+ /**\n * ... ach\n */
+ * @param {number} searchElement
+ * @param {number=} opt_fromIndex
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/includes
+
+ * @param {number} searchElement
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/indexOf
+
+ * @param {string=} opt_separator
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/join
+
+ * @return {!IteratorIterable}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/keys
+
+ * @param {number} searchElement
+ * @param {number=} opt_fromIndex
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOf
+
+ * @param {function(this:S, number, number, !TypedArray) : number} callback
+ * @param {S=} opt_thisArg
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS,S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/map
+
+ * @param {function((number|INIT|RET), number, number, !TypedArray) : RET} callback
+ * @param {INIT=} opt_initialValue
+ * @return {RET}
+ * @template INIT,RET
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reduce
+
+ * @param {function((number|INIT|RET), number, number, !TypedArray) : RET} callback
+ * @param {INIT=} opt_initialValue
+ * @return {RET}
+ * @template INIT,RET
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRight
+
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reverse
+
+ * @param {!ArrayBufferView|!Array} array
+ * @param {number=} opt_offset
+ * @return {undefined}
+ * @throws {!RangeError}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set
+
+ * @param {number=} opt_begin
+ * @param {number=} opt_end
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice
+
+ * @param {function(this:S, number, number, !TypedArray) : boolean} callback
+ * @param {S=} opt_thisArg
+ * @return {boolean}
+ * @template S
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/some
+
+ * @param {(function(number, number) : number)=} opt_compareFunction
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/sort
+
+ * @param {number} begin
+ * @param {number=} opt_end
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarray
+
+ * @return {!IteratorIterable}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/values
+ /**\n * ... ues\n */
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString
+ * @override
+
+ * @return {string}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/toString
+ * @override
+ @override /** @override */
+ * @param {number|ArrayBufferView|Array|ArrayBuffer} length or array
+ * or buffer
+ * @param {number=} opt_byteOffset
+ * @param {number=} opt_length
+ * @constructor
+ * @extends {TypedArray}
+ * @noalias
+ * @throws {Error}
+ * @modifies {arguments} If the user passes a backing array, then indexed
+ * accesses will modify the backing array. JSCompiler does not model
+ * this well. In other words, if you have:
+ *
+ * var x = new ArrayBuffer(1);
+ * var y = new Int8Array(x);
+ * y[0] = 2;
+ *
+ * JSCompiler will not recognize that the last assignment modifies x.
+ * We workaround this by marking all these arrays as @modifies {arguments},
+ * to introduce the possibility that x aliases y.
+ /**\n * ... y.\n */
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Int8Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+ /**\n * ... rom\n */
+ * @param {...number} var_args
+ * @return {!Int8Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+ /**\n * ... /of\n */
+ * @param {number|ArrayBufferView|Array|ArrayBuffer} length or array
+ * or buffer
+ * @param {number=} opt_byteOffset
+ * @param {number=} opt_length
+ * @constructor
+ * @extends {TypedArray}
+ * @noalias
+ * @throws {Error}
+ * @modifies {arguments}
+ /**\n * ... ts}\n */
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Uint8Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Uint8Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Uint8ClampedArray}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Uint8ClampedArray}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @typedef {Uint8ClampedArray}
+ * @deprecated CanvasPixelArray has been replaced by Uint8ClampedArray
+ * in the latest spec.
+ * @see http://www.w3.org/TR/2dcontext/#imagedata
+ /**\n * ... ata\n */
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Int16Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Int16Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Uint16Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Uint16Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Int32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Int32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Uint32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Uint32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Float32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Float32Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {!Array} source
+ * @param {function(this:S, number): number=} opt_mapFn
+ * @param {S=} opt_this
+ * @template S
+ * @return {!Float64Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/from
+
+ * @param {...number} var_args
+ * @return {!Float64Array}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of
+
+ * @param {ArrayBuffer} buffer
+ * @param {number=} opt_byteOffset
+ * @param {number=} opt_byteLength
+ * @constructor
+ * @extends {ArrayBufferView}
+ * @noalias
+ * @throws {Error}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays/DataView
+
+ * @param {number} byteOffset
+ * @return {number}
+ * @throws {Error}
+
+ * @param {number} byteOffset
+ * @param {boolean=} opt_littleEndian
+ * @return {number}
+ * @throws {Error}
+
+ * @param {number} byteOffset
+ * @param {number} value
+ * @throws {Error}
+ * @return {undefined}
+
+ * @param {number} byteOffset
+ * @param {number} value
+ * @param {boolean=} opt_littleEndian
+ * @throws {Error}
+ * @return {undefined}
+
+ * @see https://github.com/promises-aplus/promises-spec
+ * @typedef {{then: ?}}
+ /**\n * ... ?}}\n */
+ * This is not an official DOM interface. It is used to add generic typing
+ * and respective type inference where available.
+ * {@see goog.Thenable} inherits from this making all promises
+ * interoperate.
+ * @interface
+ * @template TYPE
+ /**\n * ... YPE\n */
+ * @param {?(function(TYPE):VALUE)=} opt_onFulfilled
+ * @param {?(function(*): *)=} opt_onRejected
+ * @return {RESULT}
+ * @template VALUE
+ *
+ * When a Promise (or thenable) is returned from the fulfilled callback,
+ * the result is the payload of that promise, not the promise itself.
+ *
+ * @template RESULT := type('IThenable',
+ * cond(isUnknown(VALUE), unknown(),
+ * mapunion(VALUE, (V) =>
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+ * templateTypeOf(V, 0),
+ * cond(sub(V, 'Thenable'),
+ * unknown(),
+ * V)))))
+ * =:
+ /**\n * ... =:\n */
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
+ * @param {function(
+ * function((TYPE|IThenable|Thenable|null)=),
+ * function(*=))} resolver
+ * @constructor
+ * @implements {IThenable}
+ * @template TYPE
+
+ * @param {VALUE=} opt_value
+ * @return {RESULT}
+ * @template VALUE
+ * @template RESULT := type('Promise',
+ * cond(isUnknown(VALUE), unknown(),
+ * mapunion(VALUE, (V) =>
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+ * templateTypeOf(V, 0),
+ * cond(sub(V, 'Thenable'),
+ * unknown(),
+ * V)))))
+ * =:
+
+ * @param {*=} opt_error
+ * @return {!Promise>}
+ /**\n * ... ?>}\n */
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
+ * @param {!Iterable} iterable
+ * @return {!Promise>}
+ * @template VALUE
+ * @template RESULT := mapunion(VALUE, (V) =>
+ * cond(isUnknown(V),
+ * unknown(),
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+ * templateTypeOf(V, 0),
+ * cond(sub(V, 'Thenable'), unknown(), V))))
+ * =:
+
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
+ * @param {!Iterable} iterable
+ * @return {!Promise}
+ * @template VALUE
+ * @template RESULT := mapunion(VALUE, (V) =>
+ * cond(isUnknown(V),
+ * unknown(),
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+ * templateTypeOf(V, 0),
+ * cond(sub(V, 'Thenable'), unknown(), V))))
+ * =:
+
+ * @param {?(function(this:void, TYPE):VALUE)=} opt_onFulfilled
+ * @param {?(function(this:void, *): *)=} opt_onRejected
+ * @return {RESULT}
+ * @template VALUE
+ *
+ * When a Promise (or thenable) is returned from the fulfilled callback,
+ * the result is the payload of that promise, not the promise itself.
+ *
+ * @template RESULT := type('Promise',
+ * cond(isUnknown(VALUE), unknown(),
+ * mapunion(VALUE, (V) =>
+ * cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+ * templateTypeOf(V, 0),
+ * cond(sub(V, 'Thenable'),
+ * unknown(),
+ * V)))))
+ * =:
+ * @override
+
+ * @param {function(*): RESULT} onRejected
+ * @return {!Promise}
+ * @template RESULT
+ /**\n * ... ULT\n */
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of
+ * @param {...T} var_args
+ * @return {!Array}
+ * @template T
+
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
+ * @param {string|!IArrayLike|!Iterable} arrayLike
+ * @param {function(this:S, (string|T), number): R=} opt_mapFn
+ * @param {S=} opt_this
+ * @return {!Array}
+ * @template T,S,R
+ @return {!IteratorIterable} /** @re ... er>} */
+ * @return {!IteratorIterable>} Iterator of [key, value] pairs.
+ /**\n * ... rs.\n */
+ * @param {!function(this:S, T, number, !Array): boolean} predicate
+ * @param {S=} opt_this
+ * @return {T|undefined}
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see https://262.ecma-international.org/6.0/#sec-array.prototype.find
+
+ * @param {!function(this:S, T, number, !Array): boolean} predicate
+ * @param {S=} opt_this
+ * @return {number}
+ * @this {IArrayLike|string}
+ * @template T,S
+ * @see https://262.ecma-international.org/6.0/#sec-array.prototype.findindex
+
+ * @param {T} value
+ * @param {number=} opt_begin
+ * @param {number=} opt_end
+ * @return {!IArrayLike}
+ * @this {!IArrayLike|string}
+ * @template T
+ * @see https://262.ecma-international.org/6.0/#sec-array.prototype.fill
+
+ * @param {number} target
+ * @param {number} start
+ * @param {number=} opt_end
+ * @see https://262.ecma-international.org/6.0/#sec-array.prototype.copywithin
+ * @template T
+ * @return {!IArrayLike}
+ /**\n * ... T>}\n */
+ * @param {T} searchElement
+ * @param {number=} opt_fromIndex
+ * @return {boolean}
+ * @this {!IArrayLike|string}
+ * @template T
+ * @see https://tc39.github.io/ecma262/#sec-array.prototype.includes
+
+ * @param {!Object} obj
+ * @return {!Array}
+ * @see https://262.ecma-international.org/6.0/#sec-object.getownpropertysymbols
+ /**\n * ... ols\n */
+ * @param {!Object} obj
+ * @param {?} proto
+ * @return {!Object}
+ * @see https://262.ecma-international.org/6.0/#sec-object.setprototypeof
+ /**\n * ... eof\n */
+ * @const {number}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILON
+ /**\n * ... LON\n */
+ * @const {number}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER
+ /**\n * ... GER\n */
+ * @const {number}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
+
+ * Parse an integer. Use of {@code parseInt} without {@code base} is strictly
+ * banned in Google. If you really want to parse octal or hex based on the
+ * leader, then pass {@code undefined} as the base.
+ *
+ * @param {string} string
+ * @param {number|undefined} radix
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInt
+
+ * @param {string} string
+ * @return {number}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat
+
+ * @param {number} value
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN
+
+ * @param {number} value
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite
+
+ * @param {number} value
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
+ /**\n * ... ger\n */
+ * @param {number} value
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
+
+ * @param {!Object} target
+ * @param {...Object} var_args
+ * @return {!Object}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
+ /**\n * ... ign\n */
+ * TODO(dbeam): find a better place for ES2017 externs like this one.
+ * @param {!Object} obj
+ * @return {!Array} values
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
+ * @throws {Error}
+ * @template T
+
+ * @param {!Object} obj
+ * @return {!Array>} entries
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
+ * @throws {Error}
+ * @template T
+
+ * @const
+ * @see http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect
+
+ * @param {function(this: THIS, ...?): RESULT} target
+ * @param {THIS} thisArg
+ * @param {!Array} argList
+ * @return {RESULT}
+ * @template THIS, RESULT
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/apply
+
+ * @param {function(new: ?, ...?)} target
+ * @param {!Array} argList
+ * @param {function(new: TARGET, ...?)=} opt_newTarget
+ * @return {TARGET}
+ * @template TARGET
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/construct
+ /**\n * ... uct\n */
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @param {!Object} attributes
+ * @return {boolean}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty
+
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @return {boolean}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty
+
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @param {!Object=} opt_receiver
+ * @return {*}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get
+ /**\n * ... get\n */
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @return {?ObjectPropertyDescriptor}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor
+
+ * @param {!Object} target
+ * @return {?Object}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOf
+
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/has
+ /**\n * ... has\n */
+ * @param {!Object} target
+ * @return {boolean}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible
+
+ * @param {!Object} target
+ * @return {!Array<(string|symbol)>}
+ * @nosideeffects
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys
+
+ * @param {!Object} target
+ * @return {boolean}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensions
+
+ * @param {!Object} target
+ * @param {string} propertyKey
+ * @param {*} value
+ * @param {!Object=} opt_receiver
+ * @return {boolean}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/set
+
+ * @param {!Object} target
+ * @param {?Object} proto
+ * @return {boolean}
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOf
+ Generatorexceptionlog10log2log1pexpm1coshsinhtanhacoshasinhatanhtruncsigncbrtvalue1value2ITemplateArrayfromCodePointcodePointcodePointAtnormalizeopt_formsearchStringopt_positionTransferableisViewargArrayBufferViewBufferSourceTypedArrayBYTES_PER_ELEMENTcopyWithinopt_thisArgopt_offsetInt8Arrayopt_byteOffsetopt_mapFnopt_thisUint8ClampedArrayCanvasPixelArrayInt16ArrayUint16ArrayFloat32ArrayFloat64Arrayopt_byteLengthgetInt8getInt16opt_littleEndiangetInt32getFloat32getFloat64setInt8setUint8setInt16setUint16setFloat32setFloat64ThenableIThenableopt_onFulfilledopt_onRejectedresolveropt_erroriterableraceonRejectedarrayLikegetOwnPropertySymbolssetPrototypeOfEPSILONMIN_SAFE_INTEGERMAX_SAFE_INTEGERradixisIntegerisSafeIntegerthisArgargListopt_newTargetpropertyKeydeletePropertyopt_receiverownKeysDefinitions for ECMAScript 6 and later.
+https://tc39.github.io/ecma262/
+https://www.khronos.org/registry/typedarray/specs/latest/
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Generator
+IteratorIterable.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypothttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imulhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isReturns a language-sensitive string representation of this number.(string|!Array.)=(string|!Array.)https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
+http://www.ecma-international.org/ecma-402/1.0/#sec-13.2.1
+Repeats the string the given number of times.The number of times the string is repeated.
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeathttps://262.ecma-international.org/6.0/#sec-gettemplateobject!ITemplateArraySubstitution values.
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/rawAdditional codepoints
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalizehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWithhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWithhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includeshttp://dev.w3.org/html5/postmsg/
+The length in bytes
+noalias@noalias!ArrayBufferhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView(!ArrayBuffer|!ArrayBufferView)!ArrayBufferViewIArrayLike.Iterable.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/copyWithin!IteratorIterable.>IteratorIterable.>!Array.Array.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entriesfunction (this: S, number, number, !TypedArray): ?!TypedArrayS
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/everyhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fillfunction (this: S, number, number, !TypedArray): booleanTHIS,S
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/filterhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/findhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/findIndexhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/forEachhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/includeshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/indexOfhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/join!IteratorIterable.IteratorIterable.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/keyshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/lastIndexOffunction (this: S, number, number, !TypedArray): numberhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/mapfunction ((number|INIT|RET), number, number, !TypedArray): RET(number|INIT|RET)INITRETINIT=INIT,RET
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reducehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reduceRighthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/reverse(!ArrayBufferView|!Array.)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/sethttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slicehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/some(function (number, number): number)=(function (number, number): number)function (number, number): numberhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/sorthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/subarrayhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/valueshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/toLocaleString
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/toString
+or array
+or buffer
+(number|ArrayBufferView|Array.|ArrayBuffer){arguments} If the user passes a backing array, then indexed
+accesses will modify the backing array. JSCompiler does not model
+this well. In other words, if you have:
+
+var x = new ArrayBuffer(1);
+var y = new Int8Array(x);
+y[0] = 2;
+
+JSCompiler will not recognize that the last assignment modifies x.
+We workaround this by marking all these arrays as @modifies {arguments},
+to introduce the possibility that x aliases y.function (this: S, number): number=function (this: S, number): number!Int8Arrayhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/fromhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/of{arguments}!Uint8Array!Uint8ClampedArrayCanvasPixelArray has been replaced by Uint8ClampedArray
+in the latest spec.
+http://www.w3.org/TR/2dcontext/#imagedata!Int16Array!Uint16Array!Int32Array!Uint32Array!Float32Array!Float64Arrayhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays/DataViewboolean=https://github.com/promises-aplus/promises-spec
+{then: ?}This is not an official DOM interface. It is used to add generic typing
+and respective type inference where available.
+{@see goog.Thenable} inherits from this making all promises
+interoperate.TYPE?(function (TYPE): VALUE)=?(function (TYPE): VALUE)(function (TYPE): VALUE)function (TYPE): VALUE?(function (*): *)=?(function (*): *)(function (*): *)function (*): *RESULTVALUE
+* When a Promise (or thenable) is returned from the fulfilled callback,
+the result is the payload of that promise, not the promise itself.
+*RESULT := type('IThenable',
+cond(isUnknown(VALUE), unknown(),
+mapunion(VALUE, (V) =>
+cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+templateTypeOf(V, 0),
+cond(sub(V, 'Thenable'),
+unknown(),
+V)))))
+=:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
+function (function ((TYPE|IThenable.|Thenable|null)=), function (*=))function ((TYPE|IThenable.|Thenable|null)=)(TYPE|IThenable.|Thenable|null)=(TYPE|IThenable.|Thenable|null)IThenable.function (*=)RESULT := type('Promise',
+cond(isUnknown(VALUE), unknown(),
+mapunion(VALUE, (V) =>
+cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+templateTypeOf(V, 0),
+cond(sub(V, 'Thenable'),
+unknown(),
+V)))))
+=:!Iterable.Iterable.!Promise.>Promise.>!Array.Array.RESULT := mapunion(VALUE, (V) =>
+cond(isUnknown(V),
+unknown(),
+cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+templateTypeOf(V, 0),
+cond(sub(V, 'Thenable'), unknown(), V))))
+=:!Promise.Promise.?(function (this: void, TYPE): VALUE)=?(function (this: void, TYPE): VALUE)(function (this: void, TYPE): VALUE)function (this: void, TYPE): VALUE?(function (this: void, *): *)=?(function (this: void, *): *)(function (this: void, *): *)function (this: void, *): *RESULT := type('Promise',
+cond(isUnknown(VALUE), unknown(),
+mapunion(VALUE, (V) =>
+cond(isTemplatized(V) && sub(rawTypeOf(V), 'IThenable'),
+templateTypeOf(V, 0),
+cond(sub(V, 'Thenable'),
+unknown(),
+V)))))
+=:
+function (*): RESULThttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
+(string|!IArrayLike.|!Iterable.)!IArrayLike.!Iterable.function (this: S, (string|T), number): R=function (this: S, (string|T), number): R(string|T)Iterator of [key, value] pairs.!IteratorIterable.>IteratorIterable.>!Array.<(number|T)>Array.<(number|T)>(number|T)!function (this: S, T, number, !Array.): booleanfunction (this: S, T, number, !Array.): boolean(T|undefined)https://262.ecma-international.org/6.0/#sec-array.prototype.findhttps://262.ecma-international.org/6.0/#sec-array.prototype.findindexUnknown content '{!IArrayLike|string}
+ *'https://262.ecma-international.org/6.0/#sec-array.prototype.fillhttps://262.ecma-international.org/6.0/#sec-array.prototype.copywithin
+https://tc39.github.io/ecma262/#sec-array.prototype.includes!Array.Array.https://262.ecma-international.org/6.0/#sec-object.getownpropertysymbolshttps://262.ecma-international.org/6.0/#sec-object.setprototypeofhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/EPSILONhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGERhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGERhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseInthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloathttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaNhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinitehttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isIntegerhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger...Objecthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assignTODO(dbeam): find a better place for ES2017 externs like this one.!Object.Object.values
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values
+entries
+!Array.>Array.>!Array.<(string|T)>Array.<(string|T)>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
+http://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflectfunction (this: THIS, ...?): RESULTTHIS, RESULT
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/applyfunction (new: TARGET, ...?)=function (new: TARGET, ...?)TARGETTARGET
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/constructhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/definePropertyhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty!Object=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/get?ObjectPropertyDescriptorhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getOwnPropertyDescriptor?Objecthttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/getPrototypeOfhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/hashttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/isExtensible!Array.<(string|symbol)>Array.<(string|symbol)>(string|symbol)https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeyshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/preventExtensionshttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/sethttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/setPrototypeOfGenerat ... ue) {};Generat ... lue) {}Generat ... pe.nextGenerator.prototypeGenerat ... .returnfunction(value) {}Generat ... on) {};Generat ... ion) {}Generat ... e.throwMath.lo ... ue) {};Math.lo ... lue) {}Math.log10Math.log2Math.log1pMath.ex ... ue) {};Math.ex ... lue) {}Math.expm1Math.co ... ue) {};Math.co ... lue) {}Math.coshMath.si ... ue) {};Math.si ... lue) {}Math.sinhMath.ta ... ue) {};Math.ta ... lue) {}Math.tanhMath.ac ... ue) {};Math.ac ... lue) {}Math.acoshMath.as ... ue) {};Math.as ... lue) {}Math.asinhMath.at ... ue) {};Math.at ... lue) {}Math.atanhMath.tr ... ue) {};Math.tr ... lue) {}Math.truncMath.signMath.cb ... ue) {};Math.cb ... lue) {}Math.cbrtMath.hy ... gs) {};Math.hy ... rgs) {}Math.im ... e2) {};Math.im ... ue2) {}functio ... ue2) {}Math.cl ... ue) {};Math.cl ... lue) {}Object.is;Number. ... ns) {};Number. ... ons) {}Number. ... eStringString. ... nt) {};String. ... unt) {}String. ... .repeatfunction(count) {}var ITe ... n() {};ITempla ... on() {}ITempla ... pe.raw;ITempla ... ype.rawITempla ... ototypeString.rawString.fromCodePointString. ... PointAtString. ... rm) {};String. ... orm) {}String. ... rmalizefunctio ... orm) {}String. ... on) {};String. ... ion) {}String. ... rtsWithString. ... ndsWithString. ... ncludesArrayBu ... Length;ArrayBu ... eLengthArrayBu ... ototypeArrayBu ... nd) {};ArrayBu ... end) {}ArrayBu ... e.sliceArrayBu ... rg) {};ArrayBu ... arg) {}ArrayBuffer.isViewfunction(arg) {}functio ... ew() {}ArrayBu ... buffer;ArrayBu ... .bufferArrayBu ... Offset;ArrayBu ... eOffsetvar BufferSource;functio ... ay() {}TypedAr ... LEMENT;TypedAr ... ELEMENTTypedArray.prototypeTypedAr ... nd) {};TypedAr ... end) {}TypedAr ... yWithinTypedAr ... n() {};TypedAr ... on() {}TypedAr ... entriesTypedAr ... rg) {};TypedAr ... Arg) {}TypedAr ... e.everyfunctio ... Arg) {}TypedAr ... pe.fillTypedAr ... .filterTypedAr ... pe.findTypedAr ... ndIndexTypedAr ... forEachTypedAr ... ex) {};TypedAr ... dex) {}TypedAr ... ncludesTypedAr ... indexOfTypedAr ... or) {};TypedAr ... tor) {}TypedAr ... pe.joinTypedAr ... pe.keysTypedAr ... IndexOfTypedAr ... length;TypedAr ... .lengthTypedAr ... ype.mapTypedAr ... ue) {};TypedAr ... lue) {}TypedAr ... .reduceTypedAr ... ceRightTypedAr ... reverseTypedAr ... et) {};TypedAr ... set) {}TypedAr ... ype.setfunctio ... set) {}TypedAr ... e.sliceTypedAr ... pe.someTypedAr ... on) {};TypedAr ... ion) {}TypedAr ... pe.sortTypedAr ... ubarrayTypedAr ... .valuesTypedAr ... eStringTypedAr ... oStringTypedAr ... erator]Int8Arr ... LEMENT;Int8Arr ... ELEMENTInt8Arr ... is) {};Int8Arr ... his) {}Int8Array.fromfunctio ... his) {}Int8Arr ... gs) {};Int8Arr ... rgs) {}Int8Array.ofUint8Ar ... LEMENT;Uint8Ar ... ELEMENTUint8Ar ... is) {};Uint8Ar ... his) {}Uint8Array.fromUint8Ar ... gs) {};Uint8Ar ... rgs) {}Uint8Array.ofUint8Cl ... LEMENT;Uint8Cl ... ELEMENTUint8Cl ... is) {};Uint8Cl ... his) {}Uint8Cl ... ay.fromUint8Cl ... gs) {};Uint8Cl ... rgs) {}Uint8ClampedArray.ofvar Can ... lArray;Int16Ar ... LEMENT;Int16Ar ... ELEMENTInt16Ar ... is) {};Int16Ar ... his) {}Int16Array.fromInt16Ar ... gs) {};Int16Ar ... rgs) {}Int16Array.ofUint16A ... LEMENT;Uint16A ... ELEMENTUint16A ... is) {};Uint16A ... his) {}Uint16Array.fromUint16A ... gs) {};Uint16A ... rgs) {}Uint16Array.ofInt32Ar ... LEMENT;Int32Ar ... ELEMENTInt32Ar ... is) {};Int32Ar ... his) {}Int32Array.fromInt32Ar ... gs) {};Int32Ar ... rgs) {}Int32Array.ofUint32A ... LEMENT;Uint32A ... ELEMENTUint32A ... is) {};Uint32A ... his) {}Uint32Array.fromUint32A ... gs) {};Uint32A ... rgs) {}Uint32Array.ofFloat32 ... LEMENT;Float32 ... ELEMENTFloat32 ... is) {};Float32 ... his) {}Float32Array.fromFloat32 ... gs) {};Float32 ... rgs) {}Float32Array.ofFloat64 ... LEMENT;Float64 ... ELEMENTFloat64 ... is) {};Float64 ... his) {}Float64Array.fromFloat64 ... gs) {};Float64 ... rgs) {}Float64Array.ofDataVie ... et) {};DataVie ... set) {}DataVie ... getInt8DataView.prototypeDataVie ... etUint8DataVie ... an) {};DataVie ... ian) {}DataVie ... etInt16functio ... ian) {}DataVie ... tUint16DataVie ... etInt32DataVie ... tUint32DataVie ... Float32DataVie ... Float64DataVie ... ue) {};DataVie ... lue) {}DataVie ... setInt8var Thenable;IThenab ... ed) {};IThenab ... ted) {}IThenab ... pe.thenIThenable.prototypefunctio ... ted) {}Promise ... ue) {};Promise ... lue) {}Promise ... or) {};Promise ... ror) {}Promise.rejectfunctio ... ror) {}Promise ... le) {};Promise ... ble) {}functio ... ble) {}Promise.racePromise ... ed) {};Promise ... ted) {}Promise ... pe.thenPromise.prototypePromise ... e.catchArray.o ... gs) {};Array.o ... rgs) {}Array.ofArray.f ... is) {};Array.f ... his) {}Array.p ... e.keys;Array.prototype.keysArray.p ... ntries;Array.p ... entriesArray.p ... is) {};Array.p ... his) {}Array.prototype.findArray.p ... ndIndexArray.prototype.fillArray.p ... yWithinObject. ... SymbolsgetOwnP ... SymbolsObject. ... to) {};Object. ... oto) {}functio ... oto) {}Number.EPSILON;Number.EPSILONNumber. ... NTEGER;Number. ... INTEGERNumber.parseIntNumber. ... ng) {};Number. ... ing) {}Number.parseFloatfunction(string) {}Number. ... ue) {};Number. ... lue) {}Number.isNaNNumber.isIntegerNumber.isSafeIntegerObject. ... gs) {};Object. ... rgs) {}var Reflect = {};Reflect = {}Reflect ... st) {};Reflect ... ist) {}Reflect.applyfunctio ... ist) {}Reflect ... et) {};Reflect ... get) {}functio ... get) {}Reflect ... es) {};Reflect ... tes) {}Reflect ... ropertyfunctio ... tes) {}Reflect ... ey) {};Reflect ... Key) {}Reflect ... er) {};Reflect ... ver) {}Reflect.getReflect ... criptorReflect ... otypeOffunction(target) {}Reflect.hasReflect.isExtensibleReflect.ownKeysReflect ... ensionsReflect.setReflect ... to) {};Reflect ... oto) {}/opt/codeql/javascript/tools/data/externs/es/es6_collections.js
+ * @fileoverview Definitions for ECMAScript 6.
+ * @see http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
+ * @externs
+ TODO(johnlenz): Use Tuples for the Map and Set iterators where appropriate.// TODO ... priate.
+ * @constructor @struct
+ * @param {Iterable>|!Array>=} opt_iterable
+ * @implements {Iterable>}
+ * @template KEY, VALUE
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
+ /**\n * ... Map\n */ @return {void} /** @re ... oid} */
+ * @param {KEY} key
+ * @return {boolean}
+ /**\n * ... an}\n */
+ * @return {!IteratorIterable>}
+ * @nosideeffects
+
+ * @param {function(this:THIS, VALUE, KEY, MAP)} callback
+ * @param {THIS=} opt_thisArg
+ * @this {MAP}
+ * @template MAP,THIS
+
+ * @param {KEY} key
+ * @return {VALUE}
+ * @nosideeffects
+
+ * @param {KEY} key
+ * @return {boolean}
+ * @nosideeffects
+
+ * @return {!IteratorIterable}
+ /**\n * ... Y>}\n */
+ * @param {KEY} key
+ * @param {VALUE} value
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+
+ * @type {number}
+ * (readonly)
+ /**\n * ... ly)\n */
+ * @return {!IteratorIterable}
+ * @nosideeffects
+
+ * @return {!Iterator>}
+ /**\n * ... >>}\n */
+ * @constructor @struct
+ * @param {Iterable>|!Array>=} opt_iterable
+ * @template KEY, VALUE
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
+
+ * @constructor @struct
+ * @param {Iterable|Array=} opt_iterable
+ * @implements {Iterable}
+ * @template VALUE
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
+ /**\n * ... Set\n */
+ * @param {VALUE} value
+ * @return {THIS}
+ * @this {THIS}
+ * @template THIS
+
+ * @return {void}
+ /**\n * ... id}\n */
+ * @param {VALUE} value
+ * @return {boolean}
+
+ * @return {!IteratorIterable>} Where each array has two entries:
+ * [value, value]
+ * @nosideeffects
+
+ * @param {function(this: THIS, VALUE, VALUE, SET)} callback
+ * @param {THIS=} opt_thisArg
+ * @this {SET}
+ * @template SET,THIS
+
+ * @param {VALUE} value
+ * @return {boolean}
+ * @nosideeffects
+
+ * @type {number} (readonly)
+
+ * @return {!Iterator}
+
+ * @constructor @struct
+ * @param {Iterable|Array=} opt_iterable
+ * @template VALUE
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set
+ opt_iterableDefinitions for ECMAScript 6.
+http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts
+Unknown content '@struct
+ *'Unknown ... uct\n *'(Iterable.>|!Array.>)=(Iterable.>|!Array.>)Iterable.>!Array.<(KEY|VALUE)>Array.<(KEY|VALUE)>(KEY|VALUE)KEY!Array.>Array.>KEY, VALUE
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map!IteratorIterable.>IteratorIterable.>function (this: THIS, VALUE, KEY, MAP)MAPTHIS=Unknown content '{MAP}
+ *'Unknown ... AP}\n *'MAP,THIS!IteratorIterable.IteratorIterable.(readonly)!IteratorIterable.!Iterator.>Iterator.>https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap(Iterable.|Array.)=(Iterable.|Array.)Array.https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SetWhere each array has two entries:
+[value, value]
+!IteratorIterable.>IteratorIterable.>!Array.function (this: THIS, VALUE, VALUE, SET)SETUnknown content '{SET}
+ *'Unknown ... ET}\n *'SET,THIS!Iterator.Map.prototype.clear;Map.prototype.clearMap.prototypeMap.pro ... delete;Map.prototype.deleteMap.pro ... ntries;Map.pro ... entriesMap.pro ... orEach;Map.pro ... forEachMap.prototype.get;Map.prototype.getMap.prototype.has;Map.prototype.hasMap.prototype.keys;Map.prototype.keysMap.prototype.set;Map.prototype.setMap.prototype.size;Map.prototype.sizeMap.pro ... values;Map.prototype.valuesMap.pro ... n() {};Map.pro ... on() {}Map.pro ... erator]WeakMap ... .clear;WeakMap ... e.clearWeakMap.prototypeWeakMap ... delete;WeakMap ... .deleteWeakMap ... pe.get;WeakMap ... ype.getWeakMap ... pe.has;WeakMap ... ype.hasWeakMap ... pe.set;WeakMap ... ype.setSet.prototype.add;Set.prototype.addSet.prototypeSet.prototype.clear;Set.prototype.clearSet.pro ... delete;Set.prototype.deleteSet.pro ... ntries;Set.pro ... entriesSet.pro ... orEach;Set.pro ... forEachSet.prototype.has;Set.prototype.hasSet.prototype.size;Set.prototype.sizeSet.prototype.keys;Set.prototype.keysSet.pro ... values;Set.prototype.valuesSet.pro ... n() {};Set.pro ... on() {}Set.pro ... erator]WeakSet ... pe.add;WeakSet ... ype.addWeakSet.prototypeWeakSet ... .clear;WeakSet ... e.clearWeakSet ... delete;WeakSet ... .deleteWeakSet ... pe.has;WeakSet ... ype.has/opt/codeql/javascript/tools/data/externs/es/intl.js
+ * Copyright 2013 The Closure Compiler Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ * @fileoverview Definitions for the JS Internationalization API as defined in
+ * http://www.ecma-international.org/ecma-402/1.0/
+ *
+ * @externs
+ @const /** @const */
+ * NOTE: this API is not from ecma402 and is subject to change.
+ * @param {string|Array.=} opt_locales
+ * @param {{type: (string|undefined)}=}
+ * opt_options
+ * @constructor
+
+ * @param {string} text
+ /**\n * ... ext\n */
+ * @return {string}
+
+ * @return {number}
+
+ * @constructor
+ * @param {string|Array.=} opt_locales
+ * @param {{usage: (string|undefined), localeMatcher: (string|undefined),
+ * sensitivity: (string|undefined), ignorePunctuation: (boolean|undefined),
+ * numeric: (boolean|undefined), caseFirst: (string|undefined)}=}
+ * opt_options
+
+ * @param {Array.} locales
+ * @param {{localeMatcher: (string|undefined)}=} opt_options
+
+ * @param {string} arg1
+ * @param {string} arg2
+ * @return {number}
+
+ * @return {{locale: string, usage: string, sensitivity: string,
+ * ignorePunctuation: boolean, collation: string, numeric: boolean,
+ * caseFirst: string}}
+ /**\n * ... g}}\n */
+ * @constructor
+ * @param {string|Array.=} opt_locales
+ * @param {{localeMatcher: (string|undefined), useGrouping: (boolean|undefined),
+ * numberingSystem: (string|undefined), style: (string|undefined),
+ * currency: (string|undefined), currencyDisplay: (string|undefined),
+ * minimumIntegerDigits: (number|undefined),
+ * minimumFractionDigits: (number|undefined),
+ * maximumFractionDigits: (number|undefined),
+ * minimumSignificantDigits: (number|undefined),
+ * maximumSignificantDigits: (number|undefined)}=}
+ * opt_options
+
+ * @param {number} num
+ * @return {string}
+
+ * @return {{locale: string, numberingSystem: string, style: string,
+ * currency: (string|undefined), currencyDisplay: (string|undefined),
+ * minimumIntegerDigits: number, minimumFractionDigits: number,
+ * maximumFractionDigits: number, minimumSignificantDigits: number,
+ * maximumSignificantDigits: number, useGrouping: boolean}}
+ /**\n * ... n}}\n */
+ * @constructor
+ * @param {string|Array.=} opt_locales
+ * @param {{localeMatcher: (string|undefined),
+ * formatMatcher: (string|undefined), calendar: (string|undefined),
+ * numberingSystem: (string|undefined), tz: (string|undefined),
+ * weekday: (string|undefined), era: (string|undefined),
+ * year: (string|undefined), month: (string|undefined),
+ * day: (string|undefined), hour: (string|undefined),
+ * minute: (string|undefined), second: (string|undefined),
+ * timeZoneName: (string|undefined), hour12: (boolean|undefined)}=}
+ * opt_options
+
+ * @param {Array.} locales
+ * @param {{localeMatcher: string}=} opt_options
+
+ * @param {number} date
+ * @return {string}
+
+ * @return {{locale: string, calendar: string, numberingSystem: string,
+ * timeZone: (string|undefined), weekday: (string|undefined),
+ * era: (string|undefined), year: (string|undefined),
+ * month: (string|undefined), day: (string|undefined),
+ * hour: (string|undefined), minute: (string|undefined),
+ * second: (string|undefined), timeZoneName: (string|undefined),
+ * hour12: (boolean|undefined)}}
+ /**\n * ... )}}\n */v8BreakIteratoradoptTextbreakTypefirstCollatorsupportedLocalesOfarg1arg2resolvedOptionsNumberFormatDefinitions for the JS Internationalization API as defined in
+http://www.ecma-international.org/ecma-402/1.0/
+*NOTE: this API is not from ecma402 and is subject to change.{type: (string|undefined)}={type: (string|undefined)}{usage: (string|undefined), localeMatcher: (string|undefined), sensitivity: (string|undefined), ignorePunctuation: (boolean|undefined), numeric: (boolean|undefined), caseFirst: (string|undefined)}={usage: (string|undefined), localeMatcher: (string|undefined), sensitivity: (string|undefined), ignorePunctuation: (boolean|undefined), numeric: (boolean|undefined), caseFirst: (string|undefined)}usagelocaleMatchersensitivityignorePunctuationcaseFirst{localeMatcher: (string|undefined)}={localeMatcher: (string|undefined)}{locale: string, usage: string, sensitivity: string, ignorePunctuation: boolean, collation: string, numeric: boolean, caseFirst: string}collation{localeMatcher: (string|undefined), useGrouping: (boolean|undefined), numberingSystem: (string|undefined), style: (string|undefined), currency: (string|undefined), currencyDisplay: (string|undefined), minimumIntegerDigits: (number|undefined), minimumFractionDigits: (number|undefined), maximumFractionDigits: (number|undefined), minimumSignificantDigits: (number|undefined), maximumSignificantDigits: (number|undefined)}={localeMatcher: (string|undefined), useGrouping: (boolean|undefined), numberingSystem: (string|undefined), style: (string|undefined), currency: (string|undefined), currencyDisplay: (string|undefined), minimumIntegerDigits: (number|undefined), minimumFractionDigits: (number|undefined), maximumFractionDigits: (number|undefined), minimumSignificantDigits: (number|undefined), maximumSignificantDigits: (number|undefined)}useGroupingnumberingSystemcurrencycurrencyDisplayminimumIntegerDigitsminimumFractionDigitsmaximumFractionDigitsminimumSignificantDigitsmaximumSignificantDigits{locale: string, numberingSystem: string, style: string, currency: (string|undefined), currencyDisplay: (string|undefined), minimumIntegerDigits: number, minimumFractionDigits: number, maximumFractionDigits: number, minimumSignificantDigits: number, maximumSignificantDigits: number, useGrouping: boolean}{localeMatcher: (string|undefined), formatMatcher: (string|undefined), calendar: (string|undefined), numberingSystem: (string|undefined), tz: (string|undefined), weekday: (string|undefined), era: (string|undefined), year: (string|undefined), month: (string|undefined), day: (string|undefined), hour: (string|undefined), minute: (string|undefined), second: (string|undefined), timeZoneName: (string|undefined), hour12: (boolean|undefined)}={localeMatcher: (string|undefined), formatMatcher: (string|undefined), calendar: (string|undefined), numberingSystem: (string|undefined), tz: (string|undefined), weekday: (string|undefined), era: (string|undefined), year: (string|undefined), month: (string|undefined), day: (string|undefined), hour: (string|undefined), minute: (string|undefined), second: (string|undefined), timeZoneName: (string|undefined), hour12: (boolean|undefined)}formatMatchercalendartzweekdayera{localeMatcher: string}={localeMatcher: string}{locale: string, calendar: string, numberingSystem: string, timeZone: (string|undefined), weekday: (string|undefined), era: (string|undefined), year: (string|undefined), month: (string|undefined), day: (string|undefined), hour: (string|undefined), minute: (string|undefined), second: (string|undefined), timeZoneName: (string|undefined), hour12: (boolean|undefined)}var Intl = {};Intl = {}Intl.v8 ... ns) {};Intl.v8 ... ons) {}Intl.v8BreakIteratorIntl.v8 ... xt) {};Intl.v8 ... ext) {}Intl.v8 ... optTextIntl.v8 ... ototypefunction(text) {}Intl.v8 ... n() {};Intl.v8 ... on() {}Intl.v8 ... eakTypeIntl.v8 ... currentIntl.v8 ... e.firstIntl.v8 ... pe.nextIntl.Co ... ns) {};Intl.Co ... ons) {}Intl.CollatorIntl.Co ... calesOfIntl.Co ... g2) {};Intl.Co ... rg2) {}Intl.Co ... compareIntl.Co ... ototypefunctio ... rg2) {}Intl.Co ... n() {};Intl.Co ... on() {}Intl.Co ... OptionsIntl.Nu ... ns) {};Intl.Nu ... ons) {}Intl.NumberFormatIntl.Nu ... calesOfIntl.Nu ... um) {};Intl.Nu ... num) {}Intl.Nu ... .formatIntl.Nu ... ototypefunction(num) {}Intl.Nu ... n() {};Intl.Nu ... on() {}Intl.Nu ... OptionsIntl.Da ... ns) {};Intl.Da ... ons) {}Intl.Da ... calesOfIntl.Da ... te) {};Intl.Da ... ate) {}Intl.Da ... ototypeIntl.Da ... n() {};Intl.Da ... on() {}Intl.Da ... Options/opt/codeql/javascript/tools/data/externs/es/proxy.js
+ * Copyright 2017 Semmle Ltd.
+ /*\n * C ... td.\n */
+ * @fileoverview A model of the builtin Proxy object.
+ * @externs
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
+ /**\n * ... oxy\n */
+ * @param {*} target
+ * @param {Object} handler
+ * @constructor
+
+ * @returns {Proxy}
+ /**\n * ... xy}\n */ProxyrevocableA model of the builtin Proxy object.
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxyreturns@returnsfunctio ... er) {\n}{\n}Proxy.p ... n() {};Proxy.p ... on() {}Proxy.p ... vocableProxy.prototype/opt/codeql/javascript/tools/data/externs/lib/bdd.js/opt/codeql/javascript/tools/data/externs/lib
+ * Copyright 2018 Semmle
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ * @fileoverview Simple externs definitions for various BDD and TDD APIs.
+ *
+ * The goal is to declare global functions provided by frameworks like Chai,
+ * Mocha and Jasmine. No type information is included at the moment.
+ *
+ * @externs
+ @param {...*} args /** @pa ... args */afterafterAllafterEachassertbeforebeforeAllfdescribefitsetupspecifyspyOnsuitesuiteSetupsuiteTeardownteardownxdescribexitSimple externs definitions for various BDD and TDD APIs.
+* The goal is to declare global functions provided by frameworks like Chai,
+Mocha and Jasmine. No type information is included at the moment.
+*function it(args) {}/opt/codeql/javascript/tools/data/externs/lib/jquery-3.2.js
+ * Copyright 2017 The Closure Compiler Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+
+ * @fileoverview Externs for jQuery 3.1
+ *
+ * Note that some functions use different return types depending on the number
+ * of parameters passed in. In these cases, you may need to annotate the type
+ * of the result in your code, so the JSCompiler understands which type you're
+ * expecting. For example:
+ * var elt = /** @type {Element} * / (foo.get(0));
+ *
+ * @see http://api.jquery.com/
+ * @externs
+
+ * @typedef {(Window|Document|Element|Array|string|jQuery|
+ * NodeList)}
+ /**\n * ... t)}\n */ @typedef {function(...)|Array} /** @ty ... .)>} */
+ * @record
+ /**\n * @record\n */ @type {(Object|undefined)} /** @ty ... ed)} */ @type {(?boolean|undefined)} @type {(function(jQuery.jqXHR, (jQueryAjaxSettings|Object))|undefined)} @type {(function(jQuery.jqXHR, string)|undefined)} @type {(Object|undefined)} @type {(?string|boolean|undefined)} @type {(Object, ?>|jQueryAjaxSettings|undefined)} @type {(Object|undefined)} @type {(Object, ?>|?string|Array>|undefined)} @type {(function(string, string):?|undefined)} @type {(?string|undefined)} @type {(function(jQuery.jqXHR, string, string)|undefined)} @type {(Object, ?>|undefined)} @type {(?string|function()|undefined)} @type {(Object|undefined)} @type {(function(?, string, jQuery.jqXHR)|undefined)} @type {(?number|undefined)} @type {(function():(ActiveXObject|XMLHttpRequest)|undefined)}
+ * @record
+ * @extends {jQueryAjaxSettings}
+ /**\n * ... gs}\n */ @type {Object} /** @ty ... an>} */ @type {Object} /** @ty ... ng>} */ @return {undefined} /** @re ... ned} */
+ * @param {!IObject} headers
+ * @param {function(number, string, !IObject=, string=):undefined} completeCallback
+ * @return {undefined}
+
+ * @constructor
+ * @param {(jQuerySelector|Object|function())=} arg1
+ * @param {(Element|jQuery|Document|
+ * Object)=} arg2
+ * @throws {Error} on invalid selector
+ * @return {!jQuery}
+ * @implements {Iterable}
+
+ * @const
+ /**\n * @const\n */
+ * @param {jQuerySelector} arg1
+ * @param {Element=} context
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {jQuerySelector=} arg1
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {(string|function(number,String))} arg1
+ * @return {!jQuery}
+ /**\n * ... ry}\n */
+ * @param {(string|Element|Array|jQuery|function(this:Element,number,string):(string|!Element|!jQuery))} arg1
+ * @param {...(string|Element|Array|jQuery)} content
+ * @return {!jQuery}
+
+ * @param {(string|jQueryAjaxSettings|Object)} arg1
+ * @param {(jQueryAjaxSettings|Object)=} settings
+ * @return {!jQuery.jqXHR}
+ /**\n * ... HR}\n */
+ * @param {function(!jQuery.Event,XMLHttpRequest,(jQueryAjaxSettings|Object))} handler
+ * @return {!jQuery}
+
+ * @param {function(!jQuery.Event,jQuery.jqXHR,(jQueryAjaxSettings|Object),*)} handler
+ * @return {!jQuery}
+
+ * @param {(string|function((jQueryAjaxSettings|Object),(jQueryAjaxSettings|Object),jQuery.jqXHR))} dataTypes
+ * @param {function((jQueryAjaxSettings|Object),(jQueryAjaxSettings|Object),jQuery.jqXHR)=} handler
+ * @return {undefined}
+
+ * @param {function(!jQuery.Event,jQuery.jqXHR,(jQueryAjaxSettings|Object))} handler
+ * @return {!jQuery}
+ @const {jQueryAjaxSettingsExtra|Object} /** @co ... *>} */ @param {jQueryAjaxSettings|Object} options /** @pa ... ions */
+ * @param {function()} handler
+ * @return {!jQuery}
+
+ * @param {function(!jQuery.Event,XMLHttpRequest,(jQueryAjaxSettings|Object), ?)} handler
+ * @return {!jQuery}
+
+ * @param {string} dataType
+ * @param {function(!jQueryAjaxSettingsExtra, !jQueryAjaxSettings, !jQuery.jqXHR):(!jQueryAjaxTransport|undefined)} handler
+ * @return {undefined}
+
+ * @deprecated Please use .addBack(selector) instead.
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {Object} properties
+ * @param {(string|number|function()|Object)=} arg2
+ * @param {(string|function())=} easing
+ * @param {function()=} complete
+ * @return {!jQuery}
+
+ * @param {(string|Element|Array|jQuery|function(number,string))} arg1
+ * @param {...(string|Element|Array|jQuery)} content
+ * @return {!jQuery}
+
+ * @param {jQuerySelector} target
+ * @return {!jQuery}
+
+ * @param {(string|Object)} arg1
+ * @param {(string|number|boolean|function(number,string))=} arg2
+ * @return {(string|!jQuery)}
+ /**\n * ... y)}\n */
+ * @param {(string|Element|Array|jQuery|function(this:Element,number,string=):(string|!Element|!jQuery))} arg1
+ * @param {...(string|Element|Array|jQuery)} content
+ * @return {!jQuery}
+
+ * @param {(string|Object)} arg1
+ * @param {(Object|function(!jQuery.Event)|boolean)=} eventData
+ * @param {(function(!jQuery.Event)|boolean)=} arg3
+ * @return {!jQuery}
+ * @deprecated Please use .on instead.
+ /**\n * ... ad.\n */
+ * @param {(function(!jQuery.Event)|Object)=} arg1
+ * @param {function(!jQuery.Event)=} handler
+ * @return {!jQuery}
+
+ * @constructor
+ * @private
+
+ * @param {string=} flags
+ * @return {!jQuery.callbacks}
+ /**\n * ... ks}\n */
+ * @param {jQueryCallback} callbacks
+ * @return {!jQuery.callbacks}
+ @return {!jQuery.callbacks} /** @re ... cks} */
+ * @return {boolean}
+ * @nosideeffects
+
+ * @param {...*} var_args
+ * @return {!jQuery.callbacks}
+
+ * @param {function()=} callback
+ * @return {boolean}
+ * @nosideeffects
+
+ * @param {(function()|Array)} callbacks
+ * @return {!jQuery.callbacks}
+
+ * @param {jQuerySelector=} selector
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {string=} queueName
+ * @return {!jQuery}
+
+ * @param {boolean=} withDataAndEvents
+ * @param {boolean=} deepWithDataAndEvents
+ * @return {!jQuery}
+ * @suppress {checkTypes} see https://code.google.com/p/closure-compiler/issues/detail?id=583
+ /**\n * ... 583\n */
+ * @param {Element} container
+ * @param {Element} contained
+ * @return {boolean}
+ * @nosideeffects
+
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {(string|Object)} arg1
+ * @param {(string|number|function(number,*))=} arg2
+ * @return {(string|!jQuery)}
+ * @throws {Error}
+ @type {Object} /** @ty ... *>} */
+ * @param {Element} elem
+ * @param {string=} key
+ * @param {*=} value
+ * @return {*}
+ /**\n * ... {*}\n */
+ * @param {(string|Object)=} arg1
+ * @param {*=} value
+ * @return {*}
+
+ * @constructor
+ * @implements {jQuery.Promise}
+ * @param {function()=} opt_fn
+ * @see http://api.jquery.com/category/deferred-object/
+ /**\n * ... ct/\n */
+ * @constructor
+ * @extends {jQuery.deferred}
+ * @param {function()=} opt_fn
+ * @return {!jQuery.Deferred}
+
+ * @override
+ * @param {jQueryCallback} alwaysCallbacks
+ * @param {...jQueryCallback} alwaysCallbacks2
+ * @return {!jQuery.deferred}
+
+ * @override
+ * @param {function()} failCallback
+ * @return {!jQuery.Promise}
+ /**\n * ... se}\n */
+ * @override
+ * @param {jQueryCallback} doneCallbacks
+ * @param {...jQueryCallback} doneCallbacks2
+ * @return {!jQuery.deferred}
+
+ * @override
+ * @param {jQueryCallback} failCallbacks
+ * @param {...jQueryCallback} failCallbacks2
+ * @return {!jQuery.deferred}
+
+ * @param {...*} var_args
+ * @return {!jQuery.deferred}
+
+ * @param {Object} context
+ * @param {...*} var_args
+ * @return {!jQuery.deferred}
+
+ * @deprecated Please use deferred.then() instead.
+ * @override
+ * @param {function()=} doneFilter
+ * @param {function()=} failFilter
+ * @param {function()=} progressFilter
+ * @return {!jQuery.Promise}
+
+ * @override
+ * @param {jQueryCallback} progressCallbacks
+ * @param {...jQueryCallback} progressCallbacks2
+ * @return {!jQuery.deferred}
+
+ * @override
+ * @param {Object=} target
+ * @return {!jQuery.Promise}
+
+ * @param {Object} context
+ * @param {Array<*>=} args
+ * @return {!jQuery.deferred}
+
+ * @override
+ * @return {string}
+ * @nosideeffects
+
+ * @override
+ * @param {function()} doneCallbacks
+ * @param {function()=} failCallbacks
+ * @param {function()=} progressFilter
+ * @return {!jQuery.deferred}
+
+ * @param {number} duration
+ * @param {string=} queueName
+ * @return {!jQuery}
+
+ * @param {string} selector
+ * @param {(string|Object)} arg2
+ * @param {(function(!jQuery.Event)|Object)=} arg3
+ * @param {function(!jQuery.Event)=} handler
+ * @return {!jQuery}
+ * @deprecated Please use .on instead.
+
+ * @param {Element} elem
+ * @param {string=} queueName
+ * @return {undefined}
+
+ * @param {jQuerySelector=} selector
+ * @return {!jQuery}
+
+ * @param {Object} collection
+ * @param {function((number|string),?)} callback
+ * @return {Object}
+ /**\n * ... ct}\n */
+ * @param {function(number,Element)} fnc
+ * @return {!jQuery}
+ @return {!jQuery} /** @re ... ery} */
+ * @param {number} arg1
+ * @return {!jQuery}
+ * @nosideeffects
+
+ * @param {string} message
+ * @throws {Error}
+
+ * @param {string} arg1
+ * @return {string}
+ @type {Object} /** @ty ... ct>} */
+ * @constructor
+ * @param {string} eventType
+ * @param {Object=} properties
+ * @return {!jQuery.Event}
+ /**\n * ... nt}\n */ @type {Element} /** @ty ... ent} */ @type {Event} /** @type {Event} */ @type {Window} /** @ty ... dow} */
+ * @param {(Object|boolean)} arg1
+ * @param {...*} var_args
+ * @return {Object}
+
+ * @param {(string|number|function())=} duration
+ * @param {(function()|string)=} arg2
+ * @param {function()=} callback
+ * @return {!jQuery}
+
+ * @param {(string|number)} duration
+ * @param {number} opacity
+ * @param {(function()|string)=} arg3
+ * @param {function()=} callback
+ * @return {!jQuery}
+
+ * @param {(string|number|function())=} duration
+ * @param {(string|function())=} easing
+ * @param {function()=} callback
+ * @return {!jQuery}
+
+ * @param {(jQuerySelector|function(number,Element))} arg1
+ * @return {!jQuery}
+ * @see http://api.jquery.com/filter/
+ /**\n * ... er/\n */
+ * @param {jQuerySelector} arg1
+ * @return {!jQuery}
+ * @nosideeffects
+ @see http://docs.jquery.com/Plugins/Authoring /** @se ... ring */
+ * @param {(function(!jQuery.Event)|Object)} arg1
+ * @param {function(!jQuery.Event)=} handler
+ * @return {!jQuery}
+
+ * @param {(string|jQueryAjaxSettings|Object