diff options
author | RaindropsSys <contact@minteck.org> | 2023-08-21 10:24:10 +0200 |
---|---|---|
committer | RaindropsSys <contact@minteck.org> | 2023-08-21 10:24:10 +0200 |
commit | cc625b847ceed15d8916350fba87cf7b99cd2756 (patch) | |
tree | 736c647597c469c4db36aa1d4645636c1dae655b | |
parent | deb13ecc9857a7a56ef0bff894def4b259af25a1 (diff) | |
download | horses-cc625b847ceed15d8916350fba87cf7b99cd2756.tar.gz horses-cc625b847ceed15d8916350fba87cf7b99cd2756.tar.bz2 horses-cc625b847ceed15d8916350fba87cf7b99cd2756.zip |
v12.7
-rw-r--r-- | includes/refresh.php | 3 | ||||
-rw-r--r-- | includes/refresh2.php | 188 | ||||
-rw-r--r-- | includes/version.txt | 2 | ||||
-rw-r--r-- | includes/youtrack/import.js | 11 | ||||
-rw-r--r-- | includes/youtrack/index.js | 52 | ||||
-rw-r--r-- | includes/youtrack/list.json | 566 |
6 files changed, 622 insertions, 200 deletions
diff --git a/includes/refresh.php b/includes/refresh.php index 69ab51d..e324c16 100644 --- a/includes/refresh.php +++ b/includes/refresh.php @@ -1,5 +1,8 @@ <?php +require_once "./refresh2.php"; +return; + $secrets = json_decode(file_get_contents("./secrets.json"), true); $equivalents = json_decode(file_get_contents("./projects.json"), true); $descriptions = json_decode(file_get_contents("./descriptions.json"), true); diff --git a/includes/refresh2.php b/includes/refresh2.php new file mode 100644 index 0000000..8f91e28 --- /dev/null +++ b/includes/refresh2.php @@ -0,0 +1,188 @@ +<?php + +$secrets = json_decode(file_get_contents("./secrets.json"), true); +$equivalents = json_decode(file_get_contents("./projects.json"), true); +$descriptions = json_decode(file_get_contents("./descriptions.json"), true); +$projects = []; + +print("GitLab > equestria.dev\n"); + +$gitea = []; +$page = 1; +$current = json_decode(file_get_contents("https://source.equestria.dev/api/v4/groups/2/projects?page=$page&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); +array_push($gitea, ...$current); + +while (count($current) > 0) { + $page++; + $current = json_decode(file_get_contents("https://source.equestria.dev/api/v4/groups/2/projects?page=$page&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); + array_push($gitea, ...$current); +} + +foreach ($gitea as $project) { + if ($project["visibility"] !== "public") continue; + + print(" " . $project["name"] . "\n"); + $languages = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]/languages?private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); + + $readme_dl = json_decode(@file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]/repository/files/README.md?ref=HEAD&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); + $commit = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]/repository/commits?per_page=1&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true)[0]; + $stats = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]?statistics=true&per_page=1&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true)["statistics"]; + + if (isset($readme_dl) && $readme_dl !== false) { + $readme = base64_decode($readme_dl["content"]); + } else { + $readme = null; + } + + $projects[] = [ + "id" => md5($project["path_with_namespace"]), + "owner" => $project["namespace"]["path"], + "name" => $project["path"], + "display_name" => $project["name"] ?? $project["path"], + "description" => $project["description"], + "source" => $project["web_url"], + "icon" => $project["avatar_url"] ?? null, + "website" => $project["web_url"], + "size" => $stats["storage_size"], + "language" => array_keys($languages)[0] ?? null, + "languages" => $languages, + "update" => strtotime($project["updated_at"]), + "commit" => isset($commit) ? strtotime($commit["created_at"]) : strtotime($project["updated_at"]), + "archive" => $project["archived"], + "readme" => $readme + ]; +} + +print("GitLab > minteck.org\n"); + +$minteckorg = []; +$page = 1; +$current = json_decode(file_get_contents("https://source.equestria.dev/api/v4/groups/7/projects?page=$page&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); +array_push($minteckorg, ...$current); + +while (count($current) > 0) { + $page++; + $current = json_decode(file_get_contents("https://source.equestria.dev/api/v4/groups/7/projects?page=$page&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); + array_push($minteckorg, ...$current); +} + +foreach ($minteckorg as $project) { + if ($project["visibility"] !== "public") continue; + + print(" " . $project["name"] . "\n"); + $languages = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]/languages?private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true); + + $commit = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]/repository/commits?per_page=1&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true)[0]; + $stats = json_decode(file_get_contents("https://source.equestria.dev/api/v4/projects/$project[id]?statistics=true&per_page=1&private_token=" . $secrets["gitlab"], false, stream_context_create(["ssl"=>["verify_peer"=>false,"verify_peer_name"=>false]])), true)["statistics"]; + + $projects[] = [ + "id" => md5($project["path_with_namespace"]), + "owner" => $project["namespace"]["path"], + "name" => $project["path"], + "display_name" => $project["name"] ?? $project["path"], + "description" => $project["description"], + "source" => $project["web_url"], + "icon" => $project["avatar_url"] ?? null, + "website" => $project["web_url"], + "size" => $stats["storage_size"], + "language" => array_keys($languages)[0] ?? null, + "languages" => $languages, + "update" => strtotime($project["updated_at"]), + "commit" => isset($commit) ? strtotime($commit["created_at"]) : strtotime($project["updated_at"]) + ]; +} + +print("GitHub > CloudburstSys\n"); + +$cloudburst = json_decode(file_get_contents("https://api.github.com/users/CloudburstSys/repos?per_page=100", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] +])), true); + +foreach ($cloudburst as $project) { + print(" " . $project["name"] . "\n"); + + $languages = json_decode(file_get_contents("https://api.github.com/repos/CloudburstSys/$project[name]/languages", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] + ])), true); + + $commit = json_decode(file_get_contents("https://api.github.com/repos/CloudburstSys/$project[name]/commits?per_page=1", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] + ])), true)[0]; + + if (!$project["fork"]) { + $projects[] = [ + "id" => md5("conep.one/" . $project["id"]), + "owner" => "conep.one", + "name" => $project["name"], + "display_name" => $equivalents[$project["name"]] ?? $project["name"], + "description" => $descriptions[$project["name"]] ?? $project["description"], + "source" => $project["html_url"], + "icon" => null, + "website" => trim($project["homepage"] ?? "") === "" ? $project["html_url"] : $project["homepage"], + "size" => $project["size"], + "language" => $project["language"], + "languages" => $languages, + "update" => strtotime($project["updated_at"]), + "commit" => isset($commit) ? strtotime($commit["commit"]["author"]["date"]) : strtotime($project["updated_at"]) + ]; + } +} + + +print("GitHub > Minteck-Archives\n"); + +$minteckorg2 = json_decode(file_get_contents("https://api.github.com/orgs/Minteck-Archives/repos?per_page=100", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] +])), true); + +foreach ($minteckorg2 as $project) { + print(" " . $project["name"] . "\n"); + + $languages = json_decode(file_get_contents("https://api.github.com/repos/Minteck-Archives/$project[name]/languages", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] + ])), true); + + $commit = json_decode(file_get_contents("https://api.github.com/repos/Minteck-Archives/$project[name]/commits?per_page=1", false, stream_context_create([ + "http" => [ + "header" => "User-Agent: Mozilla/5.0 (+equestria.dev-horses/1.0) PHP/" . PHP_VERSION . "\r\nAuthorization: Bearer " . $secrets["github"] . "\r\n" + ] + ])), true)[0]; + + if (!$project["fork"]) { + $projects[] = [ + "id" => md5("minteck.org-github/" . $project["id"]), + "owner" => "minteck.org-github", + "name" => $project["name"], + "display_name" => $equivalents[$project["name"]] ?? $project["name"], + "description" => $descriptions[$project["name"]] ?? $project["description"], + "source" => $project["html_url"], + "icon" => null, + "website" => trim($project["homepage"] ?? "") === "" ? $project["html_url"] : $project["homepage"], + "size" => $project["size"], + "language" => $project["language"], + "languages" => $languages, + "update" => strtotime($project["updated_at"]), + "commit" => isset($commit) ? strtotime($commit["commit"]["author"]["date"]) : strtotime($project["updated_at"]) + ]; + } +} + +file_put_contents("./data/projects.json", json_encode($projects, JSON_PRETTY_PRINT)); + +$addresses = []; + +$addresses["france"] = exec("./getip.sh zephyrheights.equestria.dev"); +$addresses["germany"] = exec("./getip.sh bridlewood.equestria.dev"); +$addresses["uk"] = exec("./getip.sh cloudsdale.equestria.dev"); + +file_put_contents("./data/addresses.json", json_encode($addresses, JSON_PRETTY_PRINT));
\ No newline at end of file diff --git a/includes/version.txt b/includes/version.txt index 08d1c33..0510f29 100644 --- a/includes/version.txt +++ b/includes/version.txt @@ -1 +1 @@ -12.6.11
\ No newline at end of file +12.7.0
\ No newline at end of file diff --git a/includes/youtrack/import.js b/includes/youtrack/import.js new file mode 100644 index 0000000..4f12a00 --- /dev/null +++ b/includes/youtrack/import.js @@ -0,0 +1,11 @@ +const axios = require("axios"); +const secrets = require("../secrets.json"); +let projects = []; +let page = 1; +let results = [null]; + +while (results.length > 0) { + results = (await axios.get("https://source.equestria.dev/api/v4/groups/2/projects?page=" + page + "&private_token=" + secrets.gitlab)).data; + projects.push(...results); + page++; +}
\ No newline at end of file diff --git a/includes/youtrack/index.js b/includes/youtrack/index.js index 46fa4d7..b53b095 100644 --- a/includes/youtrack/index.js +++ b/includes/youtrack/index.js @@ -1,7 +1,6 @@ const axios = require('axios'); const secrets = require('../secrets.json'); const list = require('./list.json'); -const names = require('../projects.json'); const fs = require('fs'); let found = []; @@ -47,11 +46,10 @@ function generateShortName(name) { } })).data['access_token']; - (await axios.post("https://account.equestria.dev/hub/api/rest/services/6c532510-08b5-42f5-8199-c7277ad33274", { - key: "VCS", - vendor: "The Gitea Authors", - applicationName: "Gitea", - version: (await axios.get("https://git.equestria.dev/api/v1/version")).data.version + (await axios.post("https://account.equestria.dev/hub/api/rest/services/8e42c269-353c-43d1-ab27-b90eb297ff21", { + vendor: "GitLab Inc.", + applicationName: "GitLab Enterprise Edition", + version: (await axios.get("https://source.equestria.dev/api/v4/version?private_token=" + secrets.gitlab)).data.version }, { headers: { Authorization: "Bearer " + token @@ -63,13 +61,13 @@ function generateShortName(name) { let results = [null]; while (results.length > 0) { - results = (await axios.get("https://git.equestria.dev/api/v1/orgs/equestria.dev/repos?limit=1000&page=" + page + "&token=" + secrets.gitea)).data; + results = (await axios.get("https://source.equestria.dev/api/v4/groups/2/projects?page=" + page + "&private_token=" + secrets.gitlab)).data; projects.push(...results); page++; } for (let project of projects) { - console.log("[" + project.id + "] " + project.name + (project['archived'] && project['private'] ? " (archived, private)" : (project['archived'] ? " (archived)" : (project['private'] ? " (private)" : "")))); + console.log("[" + project.id + "] " + project.path + (project['archived'] && project['private'] ? " (archived, private)" : (project['archived'] ? " (archived)" : (project['private'] ? " (private)" : "")))); found.push(project.id.toString()); @@ -77,7 +75,7 @@ function generateShortName(name) { list[project.id] = { id: (await axios.post("https://bugs.equestria.dev/api/admin/projects", { name: project.name, - shortName: generateShortName(project.name), + shortName: generateShortName(project.path), leader: { id: "1-0" } @@ -86,7 +84,7 @@ function generateShortName(name) { Authorization: "Bearer " + secrets.youtrack } })).data.id, - shortName: generateShortName(project.name), + shortName: generateShortName(project.path), organization: { id: project['private'] ? "297eeed8-a9f2-45f6-8c17-6543f25930bb" : "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } @@ -180,7 +178,7 @@ function generateShortName(name) { if (yt !== "0-463") { if (gitea['archived']) { - if (gitea['private']) { + if (gitea['visibility'] !== "public") { (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { archived: true, organization: { @@ -205,7 +203,7 @@ function generateShortName(name) { } } - if (gitea['private']) { + if (gitea['visibility'] !== "public") { console.log(" Marking as private"); (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { organization: { @@ -238,23 +236,21 @@ function generateShortName(name) { } })).data; - if (Object.keys(names).includes(gitea['name'])) { - (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { - name: names[gitea['name']] - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; + (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { + name: gitea['name'] + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; - (await axios.post("https://bugs.equestria.dev/api/admin/projects/" + yt, { - name: names[gitea['name']] - }, { - headers: { - Authorization: "Bearer " + secrets.youtrack - } - })).data; - } + (await axios.post("https://bugs.equestria.dev/api/admin/projects/" + yt, { + name: gitea['name'] + }, { + headers: { + Authorization: "Bearer " + secrets.youtrack + } + })).data; if (gitea['avatar_url']) { (await axios.post("https://account.equestria.dev/hub/api/rest/projects/" + prj.id, { diff --git a/includes/youtrack/list.json b/includes/youtrack/list.json index 368c378..40b318e 100644 --- a/includes/youtrack/list.json +++ b/includes/youtrack/list.json @@ -1,392 +1,616 @@ { - "7": { - "id": "0-369", - "shortName": "ZN", + "2": { + "id": "0-461", + "shortName": "CHT", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "11": { - "id": "0-370", - "shortName": "DP3", + "4": { + "id": "0-409", + "shortName": "PNCH", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "13": { - "id": "0-371", - "shortName": "VPRL", + "8": { + "id": "0-467", + "shortName": "PRCT", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "14": { - "id": "0-372", - "shortName": "VS", + "10": { + "id": "0-399", + "shortName": "C", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "15": { - "id": "0-373", - "shortName": "DSGN", + "16": { + "id": "0-417", + "shortName": "DMN", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "17": { - "id": "0-374", - "shortName": "DP", + "id": "0-456", + "shortName": "TGPG", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, "18": { - "id": "0-375", - "shortName": "QSDB", + "id": "0-426", + "shortName": "BW", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "19": { - "id": "0-376", - "shortName": "BS", + "id": "0-420", + "shortName": "CHA", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "20": { - "id": "0-377", - "shortName": "BC", + "id": "0-458", + "shortName": "DRPR", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "21": { - "id": "0-378", - "shortName": "ELAC", + "id": "0-442", + "shortName": "BRHD", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "22": { + "id": "0-445", + "shortName": "WH", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "23": { + "id": "0-373", + "shortName": "DSGN", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "24": { - "id": "0-379", - "shortName": "PIT", + "id": "0-421", + "shortName": "DTZD", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "25": { - "id": "0-380", - "shortName": "SO", + "id": "0-452", + "shortName": "EDAI", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "26": { - "id": "0-381", - "shortName": "SB", + "id": "0-441", + "shortName": "EC", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "27": { + "id": "0-406", + "shortName": "GNTL", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "28": { + "id": "0-415", + "shortName": "BG", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "29": { + "id": "0-447", + "shortName": "HOME", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "30": { "id": "0-382", "shortName": "IS", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "29": { - "id": "0-383", - "shortName": "CP", + "31": { + "id": "0-454", + "shortName": "LWBT", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "32": { + "id": "0-446", + "shortName": "LA", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "33": { - "id": "0-384", - "shortName": "CH", + "id": "0-432", + "shortName": "MNBT", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "34": { - "id": "0-385", - "shortName": "HRHT", + "id": "0-434", + "shortName": "MNS", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, "35": { + "id": "0-402", + "shortName": "MSCH", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "36": { + "id": "0-403", + "shortName": "MSWN", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "37": { + "id": "0-422", + "shortName": "MSDL", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "38": { + "id": "0-416", + "shortName": "OSAL", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "39": { + "id": "0-401", + "shortName": "PLTT", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "40": { + "id": "0-431", + "shortName": "RA", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "41": { + "id": "0-439", + "shortName": "SRSN", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "42": { + "id": "0-418", + "shortName": "SE", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "43": { + "id": "0-369", + "shortName": "ZN", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "46": { + "id": "0-410", + "shortName": "TPSH", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "47": { "id": "0-386", "shortName": "TRRT", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "89": { - "id": "0-387", - "shortName": "HRSS", + "48": { + "id": "0-377", + "shortName": "BC", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "90": { - "id": "0-388", - "shortName": "STTS", + "49": { + "id": "0-376", + "shortName": "BS", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "91": { - "id": "0-389", - "shortName": "ET", + "50": { + "id": "0-414", + "shortName": "BR", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "92": { - "id": "0-390", - "shortName": "MS", + "51": { + "id": "0-459", + "shortName": "BRHR", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "93": { - "id": "0-391", - "shortName": "MT", + "52": { + "id": "0-443", + "shortName": "BTCH", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "53": { + "id": "0-384", + "shortName": "CH", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "94": { - "id": "0-392", - "shortName": "MO", + "54": { + "id": "0-428", + "shortName": "CHD", + "organization": { + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + } + }, + "55": { + "id": "0-383", + "shortName": "CP", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "95": { - "id": "0-393", - "shortName": "MI", + "59": { + "id": "0-464", + "shortName": "DERP", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "96": { - "id": "0-394", - "shortName": "LUNA", + "60": { + "id": "0-404", + "shortName": "DLT", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "97": { - "id": "0-395", - "shortName": "PNCN", + "61": { + "id": "0-407", + "shortName": "DA", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "98": { - "id": "0-396", - "shortName": "PTCH", + "62": { + "id": "0-419", + "shortName": "DK", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "99": { - "id": "0-397", - "shortName": "TMSK", + "63": { + "id": "0-378", + "shortName": "ELAC", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "100": { - "id": "0-398", - "shortName": "WING", + "64": { + "id": "0-389", + "shortName": "ET", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "101": { - "id": "0-399", - "shortName": "C", + "65": { + "id": "0-375", + "shortName": "QSDB", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "66": { + "id": "0-429", + "shortName": "QLNK", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "102": { - "id": "0-400", - "shortName": "WC", + "69": { + "id": "0-385", + "shortName": "HRHT", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "105": { - "id": "0-401", - "shortName": "PLTT", + "70": { + "id": "0-387", + "shortName": "HRSS", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "106": { - "id": "0-402", - "shortName": "MSCH", + "71": { + "id": "0-370", + "shortName": "DP3", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "107": { - "id": "0-403", - "shortName": "MSWN", + "73": { + "id": "0-394", + "shortName": "LUNA", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "108": { - "id": "0-404", - "shortName": "DLT", + "74": { + "id": "0-436", + "shortName": "LCHT", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "109": { - "id": "0-405", - "shortName": "PNSH", + "75": { + "id": "0-390", + "shortName": "MS", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "110": { - "id": "0-406", - "shortName": "GNTL", + "76": { + "id": "0-391", + "shortName": "MT", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "77": { + "id": "0-463", + "shortName": "MRHD", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "111": { - "id": "0-407", - "shortName": "DA", + "78": { + "id": "0-455", + "shortName": "MRNS", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "112": { - "id": "0-408", - "shortName": "PLEX", + "79": { + "id": "0-462", + "shortName": "MNSC", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "113": { - "id": "0-409", - "shortName": "PNCH", + "80": { + "id": "0-393", + "shortName": "MI", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "114": { - "id": "0-410", - "shortName": "TPSH", + "81": { + "id": "0-392", + "shortName": "MO", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "116": { - "id": "0-411", - "shortName": "NOTS", + "82": { + "id": "0-448", + "shortName": "MLCT", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "117": { - "id": "0-412", - "shortName": "PPN", + "83": { + "id": "0-411", + "shortName": "NOTS", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "118": { + "84": { "id": "0-413", "shortName": "PLWR", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "119": { - "id": "0-414", - "shortName": "BR", + "85": { + "id": "0-423", + "shortName": "PONE", "organization": { - "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "120": { - "id": "0-415", - "shortName": "BG", + "86": { + "id": "0-435", + "shortName": "PNDG", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "121": { - "id": "0-416", - "shortName": "OSAL", + "87": { + "id": "0-395", + "shortName": "PNCN", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "122": { - "id": "0-417", - "shortName": "DMN", + "88": { + "id": "0-466", + "shortName": "PNPL", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "123": { - "id": "0-418", - "shortName": "SE", + "89": { + "id": "0-405", + "shortName": "PNSH", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "126": { - "id": "0-419", - "shortName": "DK", + "90": { + "id": "0-396", + "shortName": "PTCH", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "127": { - "id": "0-420", - "shortName": "CHA", + "91": { + "id": "0-424", + "shortName": "PWLS", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "128": { - "id": "0-421", - "shortName": "DTZD", + "93": { + "id": "0-449", + "shortName": "PS", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "129": { - "id": "0-422", - "shortName": "MSDL", + "94": { + "id": "0-460", + "shortName": "SGJS", "organization": { - "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } }, - "130": { - "id": "0-423", - "shortName": "PONE", + "95": { + "id": "0-388", + "shortName": "STTS", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "96": { + "id": "0-381", + "shortName": "SB", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "97": { + "id": "0-380", + "shortName": "SO", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "98": { + "id": "0-397", + "shortName": "TMSK", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "99": { + "id": "0-457", + "shortName": "SNTR", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "100": { + "id": "0-465", + "shortName": "NCLL", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "101": { + "id": "0-371", + "shortName": "VPRL", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "102": { + "id": "0-372", + "shortName": "VS", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "103": { + "id": "0-450", + "shortName": "VLTT", "organization": { "id": "297eeed8-a9f2-45f6-8c17-6543f25930bb" } }, - "131": { - "id": "0-424", - "shortName": "PWLS", + "104": { + "id": "0-398", + "shortName": "WING", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "105": { + "id": "0-400", + "shortName": "WC", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "106": { + "id": "0-453", + "shortName": "MNGS", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "107": { + "id": "0-437", + "shortName": "LC", + "organization": { + "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" + } + }, + "108": { + "id": "0-408", + "shortName": "PLEX", "organization": { "id": "957f7b0e-3aa3-4c08-9fb2-d708e8b23ff4" } |