From c2a6828036f6213f4982c2efaad05aac1304a326 Mon Sep 17 00:00:00 2001 From: tenios Date: Thu, 21 Sep 2023 00:13:07 +0200 Subject: [PATCH 01/34] migrated api, fixed toolchain (maybe) --- .babelrc | 2 +- .gitignore | 6 +- Components/DungeonMap.js | 68 +++---- Components/MapPlayer.js | 18 +- Extra/Settings/Changelog.md | 6 + Extra/Settings/SettingGui.js | 141 -------------- Render/RenderContext.js | 7 - .../babel-substitute-mappings.js | 179 ++++++++++++++++++ .../babel-substitute-mappings.mjs | 5 +- build.bat | 2 +- metadata.json | 2 +- 11 files changed, 226 insertions(+), 210 deletions(-) create mode 100644 babel-substitute-mappings/babel-substitute-mappings.js diff --git a/.babelrc b/.babelrc index 510c9ec..73c0e27 100644 --- a/.babelrc +++ b/.babelrc @@ -1,6 +1,6 @@ { "presets": [], "plugins": [ - "./babel-substitute-mappings/babel-substitute-mappings.mjs" + "./babel-substitute-mappings/babel-substitute-mappings.js" ] } \ No newline at end of file diff --git a/.gitignore b/.gitignore index fb07a88..a041ee1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ Data/roomdata.json out -node_modules \ No newline at end of file +node_modules +.gradle +.idea +build +.vscode \ No newline at end of file diff --git a/Components/DungeonMap.js b/Components/DungeonMap.js index 05c2be9..b409eaa 100644 --- a/Components/DungeonMap.js +++ b/Components/DungeonMap.js @@ -140,12 +140,8 @@ class DungeonMap { mess.addTextComponent(new TextComponent("&6" + p.minRooms + "-" + p.maxRooms).setHover("show_text", roomLore.trim())) - if (settings.settings.apiKey) { - mess.addTextComponent(new TextComponent("&7 rooms | &6" + p.secretsCollected + "&7 secrets")) - } - else { - mess.addTextComponent(new TextComponent("&7 rooms and got &c[NO API KEY]&7 secrets")) - } + mess.addTextComponent(new TextComponent("&7 rooms | &6" + p.secretsCollected + "&7 secrets")) + mess.addTextComponent(new TextComponent("&7 | &6" + p.deaths + "&7 deaths")) mess.chat() @@ -183,16 +179,15 @@ class DungeonMap { })) this.triggers.push(register("chat", (info) => { - let player = ChatLib.removeFormatting(info).split(" ")[0] - + let player = ChatLib.removeFormatting(info).split(" ")[0]; for (let p of this.players) { - if (p.username === player) { - p.deaths++ - } + if (p.username === player || p.username == Player.getName() && player.toLowerCase() === 'you') { + p.deaths++; + } } - - this.scanFirstDeathForSpiritPet(player) - }).setChatCriteria("&r&c ☠ ${info} and became a ghost&r&7.&r")) + + this.scanFirstDeathForSpiritPet(player); + }).setChatCriteria("&r&c ☠ ${info} became a ghost&r&7.&r")); this.triggers.push(register("chat", (info) => { this.roomsArr.forEach(r => { @@ -984,37 +979,22 @@ class DungeonMap { } scanFirstDeathForSpiritPet(username) { - if (this.firstDeath) return - this.firstDeath = true - - if (!this.nameToUuid[username.toLowerCase()]) return - let uuid = this.nameToUuid[username.toLowerCase()]?.replace(/-/g, "") - - let apiKey = settings.settings.apiKey - + if (this.firstDeath) return; + this.firstDeath = true; + + if (!this.nameToUuid[username.toLowerCase()]) return; + let uuid = this.nameToUuid[username.toLowerCase()]?.replace(/-/g, ""); + const printSpiritMessage = () => { - if (this.firstDeathHadSpirit) return ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} have a spirit pet.`) - ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} not have a spirit pet.`) - } - - if (apiKey) { - fetch(`https://api.hypixel.net/skyblock/profiles?key=${apiKey}&uuid=${uuid}`).json(data => { - if (!data.success) return - let latestProfile = data.profiles.find(a => a.selected) - if (!latestProfile) return // This shouldn't happen - this.firstDeathHadSpirit = latestProfile.members[uuid].pets.some(pet => pet.type === "SPIRIT" && pet.tier === "LEGENDARY") - printSpiritMessage() - }) - } - else { - // Works without api key, api key still recommended though for secrets tracking - fetch(`https://soopy.dev/api/v2/player_skyblock/${uuid}`).json(data => { - if (!data.success) return - this.firstDeathHadSpirit = data.data.profiles[data.data.stats.currentProfileId].members[uuid].pets.some(pet => pet.type === "SPIRIT" && pet.tier === "LEGENDARY") - printSpiritMessage() - }) - } - } + if (this.firstDeathHadSpirit) return ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} have a spirit pet.`); + ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} not have a spirit pet.`); + }; + + fetch(`https://api.tenios.dev/spiritPet/${uuid}`).json((spirit) => { + this.firstDeathHadSpirit = spirit + printSpiritMessage(); + }); + } secretCountActionBar(min, max) { if (!this.canUpdateRoom()) return diff --git a/Components/MapPlayer.js b/Components/MapPlayer.js index a804044..aa22855 100644 --- a/Components/MapPlayer.js +++ b/Components/MapPlayer.js @@ -314,20 +314,16 @@ register("step", () => { function getPlayerSecrets(uuid, cacheMs, callback) { if (secretsData.get(uuid)?.[0]?.timestamp > Date.now() - cacheMs) { - callback(secretsData.get(uuid)[1]) - return + callback(secretsData.get(uuid)[1]); + return; } - let apiKey = settings.settings.apiKey + fetch(`https://api.tenios.dev/secrets/${uuid}`).text((secretsNum) => { + let secrets = parseInt(secretsNum); + secretsData.set(uuid, [Date.now(), secrets]); - if (!apiKey) return - fetch(`https://api.hypixel.net/player?key=${apiKey}&uuid=${uuid}`).json(data => { - let secrets = data?.player?.achievements?.skyblock_treasure_hunter || 0 - - secretsData.set(uuid, [Date.now(), secrets]) - - callback(secretsData.get(uuid)[1]) - }) + callback(secretsData.get(uuid)[1]); + }); } const markerSelf = new Image("markerSelf.png", "https://i.imgur.com/mwpjgRz.png"); diff --git a/Extra/Settings/Changelog.md b/Extra/Settings/Changelog.md index 44bd478..ae08e07 100644 --- a/Extra/Settings/Changelog.md +++ b/Extra/Settings/Changelog.md @@ -135,4 +135,10 @@ First released version! @ver v1.0.15 ```diff ! Fixed score calc breaking from changed tab list +``` + +@ver v1.0.16 +```diff +! Migrated secret count api +! Fixed death counts for own player not working ``` \ No newline at end of file diff --git a/Extra/Settings/SettingGui.js b/Extra/Settings/SettingGui.js index 9fc7ab8..cb177cf 100644 --- a/Extra/Settings/SettingGui.js +++ b/Extra/Settings/SettingGui.js @@ -343,15 +343,6 @@ class SettingGui { this.addToggle("Spirit leap overlay", "spiritLeapOverlay", this.currentSettings.spiritLeapOverlay)[1].setLore(["You can click on player heads in overlay!", "Most people probs wont like the design though."]) - this.addSidebarElement(new ButtonWithArrow().setText("&0Load api key from other mods").addEvent(new SoopyMouseClickEvent().setHandler(() => { - findKey(key => { - this.setApiKey(key) - }) - })), 0.3, 0.4, 0.075) - this.addSidebarElement() // Adds a gap because the button diddnt auto add one - - this.apiKeySetting = this.addHiddenString("Api key", "apiKey", this.currentSettings.apiKey)[0] - this.addToggle("Show dev info", "devInfo", this.currentSettings.devInfo) // END OF SETTINGS @@ -402,21 +393,9 @@ class SettingGui { Renderer.drawRect(Renderer.color(0, 0, 0, this.backgroundOpacity.get()), 0, 0, Renderer.screen.getWidth(), Renderer.screen.getHeight()) } - register("chat", (key, event) => { // Api key detection - ChatLib.chat(MESSAGE_PREFIX + "Copied api key!") - - this.setApiKey(key) - }).setChatCriteria("&aYour new API key is &r&b${key}&r") - this.generateChangelog() } - setApiKey(key) { - this.apiKeySetting.setText(key) - - this.changed("apiKey", key) - } - /** * Will add a gear to the right of the last added setting * @param {function():Boolean} shouldShowFun @@ -738,126 +717,6 @@ class SettingGui { export default SettingGui - -function verifyApiKeySync(key) { - if (key) { - try { - var url = "https://api.hypixel.net/key?key=" + key - let data = fetch(url).json() - - return !!data.success - } catch (e) { - return false - } - } else { - return false - } -} - -const JavaString = Java.type("java.lang.String") -const JavaLong = Java.type("java.lang.Long") -const Files = Java.type("java.nio.file.Files") -const Paths = Java.type("java.nio.file.Paths") -/** - * NOTE: this will display a notification with key finding information - */ -function findKey(callback = () => { }) { - new Thread(() => { - - // NEU - try { - let testKey = JSON.parse(new JavaString(Files.readAllBytes(Paths.get("./config/notenoughupdates/configNew.json")))).apiKey.apiKey - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in NotEnoughUpdates!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in NotEnoughUpdates") - } - } - } catch (_) { } - - // SBE - try { - let testKey = JSON.parse(new JavaString(Files.readAllBytes(Paths.get("./config/SkyblockExtras.cfg")))).values.apiKey - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in SkyblockExtras!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in SkyblockExtras") - } - } - } catch (_) { } - // SKYTILS - try { - let testKey2 = new JavaString(Files.readAllBytes(Paths.get("./config/skytils/config.toml"))) - let testKey = undefined - testKey2.split("\n").forEach(line => { - if (line.startsWith(" hypixel_api_key = \"")) { - testKey = line.split("\"")[1] - } - }) - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in Skytils!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in Skytils") - } - } - } catch (_) { } - - // SOOPYADDONS DATA - try { - let testKey = FileLib.read("soopyAddonsData", "apikey.txt") - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in old soopyaddons version!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in soopyaddonsData") - } - } - } catch (_) { } - - // SOOPYV2 - try { - let testKey = JSON.parse(FileLib.read("soopyAddonsData", "soopyaddonsbetafeaturesdata.json")).globalSettings.subSettings.api_key.value - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in old soopyaddons version!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in soopyaddonsData") - } - } - } catch (_) { } - - // HypixelApiKeyManager - try { - let testKey = JSON.parse(FileLib.read("HypixelApiKeyManager", "localdata.json")).key - if (testKey) { - if (verifyApiKeySync(testKey)) { - new Notification("§aSuccess!", ["Found api key in HypixelApiKeyManager!"]) - callback(testKey) - return; - } else { - console.log("[BETERMAP] Found invalid key in HypixelApiKeyManager") - } - } - } catch (_) { } - - - new Notification("§cUnable to find api key", []) - }).start() -} - function isNumber(val) { if (val.includes(".")) return false val = "" + val; // Coerce num to be a string diff --git a/Render/RenderContext.js b/Render/RenderContext.js index 54fc602..ce6ebf7 100644 --- a/Render/RenderContext.js +++ b/Render/RenderContext.js @@ -35,7 +35,6 @@ * @property {Boolean} spiritLeapOverlay - Show an overlay on the spirit leap gui * @property {Boolean} forcePaul - Wether to force enable the +10 score for paul (eg if jerry mayor) * @property {Boolean} clearedRoomInfo - Show a summory of what rooms people cleared after run finishes - * @property {String} apiKey - The user's api key, or "" if unknown * @property {Boolean} devInfo - Wether to show def info in various places in the map * @property {[r:Number, g:Number, b:Number, a:number]} mapBorderColor - The RGBO value of the map border color * @property {[r:Number, g:Number, b:Number, a:number]} mapBackgroundColor - The RGBO value of the map backround color @@ -204,10 +203,6 @@ class RenderContext { return this.settings.boxDoors } - get apiKey() { - return this.settings.apiKey - } - get devInfo() { return this.settings.devInfo } @@ -449,7 +444,6 @@ class RenderContext { spiritLeapOverlay = false, forcePaul = false, clearedRoomInfo = true, - apiKey = "", devInfo = false, boxDoors = true, mapBorderColor = [0, 0, 0, 255], @@ -511,7 +505,6 @@ class RenderContext { spiritLeapOverlay, forcePaul, clearedRoomInfo, - apiKey, devInfo, boxDoors, mapBorderColor, diff --git a/babel-substitute-mappings/babel-substitute-mappings.js b/babel-substitute-mappings/babel-substitute-mappings.js new file mode 100644 index 0000000..c95fcec --- /dev/null +++ b/babel-substitute-mappings/babel-substitute-mappings.js @@ -0,0 +1,179 @@ +const request = require("sync-request") + +let [m, f] = createMappings() + +module.exports = function ({ types: t }) { + return { + visitor: { + Program(path, state) { + if (!isMappingsImported(path)) return + + replaceMappings(path, t, f, m) + } + } + }; +}; + +/** + * Also removes the import statement + */ +function isMappingsImported(mainPath) { + let isImported = false + + const MyVisitor = { + ImportDeclaration(path) { + let name = path.node.source.value + if (!name) return + + if (name.endsWith("mappings") || name.endsWith("mappings.js")) { + isImported = true + path.remove() + } + } + } + + mainPath.traverse(MyVisitor) + + return isImported +} + +function replaceMappings(mainPath, t, f, m) { + let isImported = false + + let data = { f, m } + + const MyVisitor = { + MemberExpression(path) { + if (path.node.object.object?.name === "f" || path.node.object.object?.name === "m") { + //3 part ed f.field.class + let what = path.node.object.object?.name + let method = path.node.object.property?.name + let clas = path.node.property?.name + if (!data[what][method][clas]) throw new Error("INVALID MAPPING (" + what + "." + method + "." + clas + ") D:") + path.replaceWith(t.stringLiteral(data[what][method][clas])) + } + if (path.node.object?.name === "f" || path.node.object?.name === "m") { + //3 part ed f.field.class + let what = path.node.object?.name + let method = path.node.property?.name + + if (!data[what][method]) throw new Error("INVALID MAPPING (" + what + "." + method + ") D:") + path.replaceWith(t.stringLiteral(data[what][method])) + } + } + } + + mainPath.traverse(MyVisitor) + + return isImported +} + +function createMappings() { + let m = {} + let f = {} + let joinedFile = String(request('GET', 'http://soopy.dev/api/soopyv2/joined.tsrg').getBody()) + joinedFile = joinedFile.split("\n") + let joinedData = {} + let joinedData2 = {} + let currThing = [] + joinedFile.forEach(line => { + if (line.startsWith(" ")) { + line = line.split(" ") + let thingo = line.pop() + let thingo2 = line.pop() + joinedData[thingo] = currThing[1].split("/").pop() + if (thingo2.includes(")")) { + joinedData2[thingo] = thingo2.replace("(", "").replace(";", "").replace(")", "_") + } + } else { + currThing = line.split(" ") + } + }) + let methodsFile = String(request('GET', 'http://soopy.dev/api/soopyv2/methods.csv').getBody()) + let methodsArr = methodsFile.split("\n") + methodsArr.shift() + let methodsData = {} + methodsArr.forEach(method => { + let [searge, name, side, desc] = method.split(",") + + if (!methodsData[name]) methodsData[name] = {} + methodsData[name][joinedData[searge]] = { + searge: searge, + name: name, + side: side, + desc: desc + } + }) + let fieldsFile = String(request('GET', 'http://soopy.dev/api/soopyv2/fields.csv').getBody()) + let fieldsArr = fieldsFile.split("\n") + fieldsArr.shift() + let fieldsData = {} + fieldsArr.forEach(method => { + let [searge, name, side, desc] = method.split(",") + + if (!fieldsData[name]) fieldsData[name] = {} + fieldsData[name][joinedData[searge]] = { + searge: searge, + name: name, + side: side, + desc: desc + } + }) + let methodNameKeys = Object.keys(methodsData) + methodNameKeys.forEach((methodName, i) => { + let keys = Object.keys(methodsData[methodName]) + if (keys.length === 1) { + m[methodName] = methodsData[methodName][keys[0]].searge + } else { + m[methodName] = {} + let keysData = {} + keys.forEach(key => { + if (!keysData[key.split("_").pop()]) keysData[key.split("_").pop()] = [] + + keysData[key.split("_").pop()].push(methodsData[methodName][key]) + }) + keys.forEach(key => { + if (keysData[key.split("_").pop()].length === 0) return + if (keysData[key.split("_").pop()].length === 1) { + m[methodName][key.split("_").pop()] = methodsData[methodName][key].searge + } else { + m[methodName][key.split("_").pop()] = {} + keysData[key.split("_").pop()].forEach((method) => { + m[methodName][key.split("_").pop()][joinedData2[method.searge]] = method.searge + }) + + keysData[key.split("_").pop()] = [] + } + }) + } + }) + let fieldNameKeys = Object.keys(fieldsData) + fieldNameKeys.forEach((fieldName, i) => { + let keys = Object.keys(fieldsData[fieldName]) + if (keys.length === 1) { + f[fieldName] = fieldsData[fieldName][keys[0]].searge + } else { + f[fieldName] = {} + let keysData = {} + keys.forEach(key => { + if (!keysData[key.split("_").pop()]) keysData[key.split("_").pop()] = [] + + keysData[key.split("_").pop()].push(fieldsData[fieldName][key]) + }) + keys.forEach(key => { + if (keysData[key.split("_").pop()].length === 0) return + if (keysData[key.split("_").pop()].length === 1) { + f[fieldName][key.split("_").pop()] = fieldsData[fieldName][key].searge + } else { + f[fieldName][key.split("_").pop()] = {} + keysData[key.split("_").pop()].forEach((field) => { + f[fieldName][key.split("_").pop()][joinedData2[field.searge]] = field.searge + }) + + keysData[key.split("_").pop()] = [] + } + }) + } + }) + return [m, f] +} \ No newline at end of file diff --git a/babel-substitute-mappings/babel-substitute-mappings.mjs b/babel-substitute-mappings/babel-substitute-mappings.mjs index 8bb5533..dd6ac00 100644 --- a/babel-substitute-mappings/babel-substitute-mappings.mjs +++ b/babel-substitute-mappings/babel-substitute-mappings.mjs @@ -1,7 +1,6 @@ -import fs from "fs" let [m, f] = createMappings() -export default function ({ types: t }) { +module.exports = function ({ types: t }) { return { visitor: { Program(path, state) { @@ -66,7 +65,7 @@ function replaceMappings(mainPath, t, f, m) { return isImported } -import request from "sync-request" +const request = require("sync-request"); function createMappings() { let m = {} let f = {} diff --git a/build.bat b/build.bat index bb2a8d9..66e45a9 100644 --- a/build.bat +++ b/build.bat @@ -1 +1 @@ -npx babel --delete-dir-on-start --retain-lines . -d "out/BetterMap" --copy-files --no-copy-ignored --ignore "**/babal-substitute-mappings/**","**/.git/**","**/build.bat","**/init.bat","**/node_modules/**" \ No newline at end of file +npx babel --delete-dir-on-start --retain-lines . -d "out/BetterMap" --copy-files --no-copy-ignored --ignore "**/babel-substitute-mappings/**","**/.git/**","**/build.bat","**/init.bat","**/node_modules/**" \ No newline at end of file diff --git a/metadata.json b/metadata.json index 6bfb93b..8b816a1 100644 --- a/metadata.json +++ b/metadata.json @@ -5,7 +5,7 @@ "entry": "index.js", "description": "Better Map !!!", "name": "BetterMap", - "version": "1.0.15", + "version": "1.0.16", "requires": [ "soopyApis", "guimanager", From ad5f4d4a338853b2a48707a82eae483d585b4a2b Mon Sep 17 00:00:00 2001 From: tenios Date: Mon, 16 Oct 2023 02:42:50 +0200 Subject: [PATCH 02/34] fixed heads being wonky when nicked --- Components/DungeonMap.js | 92 ++++++++++++++++++++----------------- Extra/Settings/Changelog.md | 5 ++ metadata.json | 2 +- 3 files changed, 57 insertions(+), 42 deletions(-) diff --git a/Components/DungeonMap.js b/Components/DungeonMap.js index b409eaa..101e6aa 100644 --- a/Components/DungeonMap.js +++ b/Components/DungeonMap.js @@ -47,6 +47,7 @@ class DungeonMap { this.floorNumber = this.floor == "E" ? 0 : parseInt(this.floor[this.floor.length - 1]) this.deadPlayers = deadPlayers + this.playerNick = null; this.lastChanged = Date.now() @@ -181,13 +182,13 @@ class DungeonMap { this.triggers.push(register("chat", (info) => { let player = ChatLib.removeFormatting(info).split(" ")[0]; for (let p of this.players) { - if (p.username === player || p.username == Player.getName() && player.toLowerCase() === 'you') { - p.deaths++; - } + if (p.username === player || p.username == Player.getName() && player.toLowerCase() === 'you') { + p.deaths++; + } } - + this.scanFirstDeathForSpiritPet(player); - }).setChatCriteria("&r&c ☠ ${info} became a ghost&r&7.&r")); + }).setChatCriteria("&r&c ☠ ${info} became a ghost&r&7.&r")); this.triggers.push(register("chat", (info) => { this.roomsArr.forEach(r => { @@ -370,49 +371,58 @@ class DungeonMap { * Update players from tab list, also sends locations of players in render distance to other players */ updatePlayers() { - if (!Player.getPlayer()) return //How tf is this null sometimes wtf - let pl = Player.getPlayer()[f.sendQueue.EntityPlayerSP][m.getPlayerInfoMap]().sort((a, b) => sorter.compare(a, b)) // Tab player list + if (!Player.getPlayer()) return; //How tf is this null sometimes wtf + let pl = Player.getPlayer()["field_71174_a"]["func_175106_d"]().sort((a, b) => sorter.compare(a, b)); // Tab player list - let i = 0 + let i = 0; - let thePlayer = undefined + let thePlayer = undefined; for (let p of pl) { - if (!p[m.getDisplayName.NetworkPlayerInfo]()) continue - let line = p[m.getDisplayName.NetworkPlayerInfo]()[m.getUnformattedText]() + if (!p["func_178854_k"]()) continue; + let line = p["func_178854_k"]()["func_150260_c"](); // https://regex101.com/r/cUzJoK/3 line = line.replace(/§[a-fnmz0-9r]/g, ''); //support dungeons guide custom name colors let match = line.match(/^\[(\d+)\] (?:\[\w+\] )*(\w+) (?:.)*?\((\w+)(?: (\w+))*\)$/); - if (!match) continue - let [_, sbLevel, name, clazz, level] = match - sbLevel = parseInt(sbLevel) + if (!match) continue; + let [_, sbLevel, name, clazz, level] = match; + sbLevel = parseInt(sbLevel); // This is a tab list line for a player - let playerName = getPlayerName(Player) - if (name === playerName) { // Move the current player to end of list - thePlayer = [p, name, match] - continue + let playerName = getPlayerName(Player); + if (name === playerName || name === this.playerNick) {// Move the current player to end of list + thePlayer = [p, name, match]; + continue; } - if (!this.players[i]) this.players[i] = new MapPlayer(p, this, name) - this.players[i].networkPlayerInfo = p - this.playersNameToId[name] = i - this.players[i].updateTablistInfo(match) + if (!this.players[i]) this.players[i] = new MapPlayer(p, this, name); + this.players[i].networkPlayerInfo = p; + this.playersNameToId[name] = i; + this.players[i].updateTablistInfo(match); - i++ + i++; } - if (thePlayer) { // Move current player to end of list - let [networkInfo, name, matchObject] = thePlayer - if (!this.players[i]) this.players[i] = new MapPlayer(networkInfo, this, name) - this.players[i].networkPlayerInfo = networkInfo - this.playersNameToId[thePlayer[1]] = i - this.players[i].updateTablistInfo(matchObject) + if (thePlayer) {// Move current player to end of list + let [networkInfo, name, matchObject] = thePlayer; + if (!this.players[i]) this.players[i] = new MapPlayer(networkInfo, this, name); + this.players[i].networkPlayerInfo = networkInfo; + this.playersNameToId[thePlayer[1]] = i; + if (this.playerNick) + this.playersNameToId[Player.getName()] = i; + this.players[i].updateTablistInfo(matchObject); + } else if (!this.playerNick) { + //find the players nick + pl.forEach(playerInfo => { + if (playerInfo.func_178845_a().getId() == Player.getUUID()) { + this.playerNick = playerInfo.func_178845_a().getName(); + } + }) } for (let player of this.players) { let room = player.getRoom(this); - if (player.currentRoomCache == room) continue - if (player.currentRoomCache) player.currentRoomCache.addEvent(RoomEvents.PLAYER_EXIT, player) - player.currentRoomCache = room - room?.addEvent(RoomEvents.PLAYER_ENTER, player) + if (player.currentRoomCache == room) continue; + if (player.currentRoomCache) player.currentRoomCache.addEvent(RoomEvents.PLAYER_EXIT, player); + player.currentRoomCache = room; + room?.addEvent(RoomEvents.PLAYER_ENTER, player); } } @@ -981,20 +991,20 @@ class DungeonMap { scanFirstDeathForSpiritPet(username) { if (this.firstDeath) return; this.firstDeath = true; - + if (!this.nameToUuid[username.toLowerCase()]) return; let uuid = this.nameToUuid[username.toLowerCase()]?.replace(/-/g, ""); - + const printSpiritMessage = () => { - if (this.firstDeathHadSpirit) return ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} have a spirit pet.`); - ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} not have a spirit pet.`); + if (this.firstDeathHadSpirit) return ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} have a spirit pet.`); + ChatLib.chat(`${MESSAGE_PREFIX}${username} ${username == "You" ? "do" : "does"} not have a spirit pet.`); }; - + fetch(`https://api.tenios.dev/spiritPet/${uuid}`).json((spirit) => { - this.firstDeathHadSpirit = spirit - printSpiritMessage(); + this.firstDeathHadSpirit = spirit + printSpiritMessage(); }); - } + } secretCountActionBar(min, max) { if (!this.canUpdateRoom()) return diff --git a/Extra/Settings/Changelog.md b/Extra/Settings/Changelog.md index ae08e07..14f5cff 100644 --- a/Extra/Settings/Changelog.md +++ b/Extra/Settings/Changelog.md @@ -141,4 +141,9 @@ First released version! ```diff ! Migrated secret count api ! Fixed death counts for own player not working +``` + +@ver v1.0.17 +```diff +! Fixed player heads being wonky when the player is nicked ``` \ No newline at end of file diff --git a/metadata.json b/metadata.json index 8b816a1..d3a4f09 100644 --- a/metadata.json +++ b/metadata.json @@ -5,7 +5,7 @@ "entry": "index.js", "description": "Better Map !!!", "name": "BetterMap", - "version": "1.0.16", + "version": "1.0.17", "requires": [ "soopyApis", "guimanager", From 99e46eafdc6256a1a383cab45080c987c4323178 Mon Sep 17 00:00:00 2001 From: tenios Date: Fri, 15 Mar 2024 22:09:53 +0100 Subject: [PATCH 03/34] fixed map loading + added assets --- Components/DungeonMap.js | 3 + Components/MapPlayer.js | 4 +- Extra/Settings/Changelog.md | 6 + Render/BossMapRendering/BossMapRenderer.js | 7 +- Render/BossMapRendering/imageData.json | 24 +- Render/RenderContext.js | 24 +- assets/NEUMapFailedRoom.png | Bin 0 -> 8166 bytes assets/NEUMapGreenCheck.png | Bin 0 -> 5396 bytes assets/NEUMapQuestionMark.png | Bin 0 -> 642 bytes assets/NEUMapWhiteCheck.png | Bin 0 -> 4574 bytes assets/f1_boss.png | Bin 0 -> 424252 bytes assets/f2_boss.png | Bin 0 -> 417107 bytes assets/f3_boss.png | Bin 0 -> 336845 bytes assets/f4_boss.png | Bin 0 -> 297785 bytes assets/f5_boss.png | Bin 0 -> 277366 bytes assets/f6_boss.png | Bin 0 -> 370302 bytes assets/f7_boss_end.png | Bin 0 -> 354022 bytes assets/f7_boss_s1.png | Bin 0 -> 297739 bytes assets/f7_boss_s2.png | Bin 0 -> 367358 bytes assets/f7_boss_s3.png | Bin 0 -> 340631 bytes assets/f7_boss_s4.png | Bin 0 -> 323668 bytes assets/f7_boss_s5.png | Bin 0 -> 269261 bytes assets/failedRoomVanilla.png | Bin 0 -> 97 bytes assets/greenCheckVanilla-new.png | Bin 0 -> 106 bytes assets/greenCheckVanilla-old.png | Bin 0 -> 86 bytes assets/markerOther.png | Bin 0 -> 121 bytes assets/markerSelf.png | Bin 0 -> 114 bytes assets/questionMarkVanilla-new.png | Bin 0 -> 96 bytes assets/questionMarkVanilla-old.png | Bin 0 -> 95 bytes assets/whiteCheckVanilla-new.png | Bin 0 -> 106 bytes assets/whiteCheckVanilla-old.png | Bin 0 -> 85 bytes cleanBuild.bat | 3 + index.js | 13 + metadata.json | 2 +- package-lock.json | 287 +++++++++++---------- 35 files changed, 201 insertions(+), 172 deletions(-) create mode 100644 assets/NEUMapFailedRoom.png create mode 100644 assets/NEUMapGreenCheck.png create mode 100644 assets/NEUMapQuestionMark.png create mode 100644 assets/NEUMapWhiteCheck.png create mode 100644 assets/f1_boss.png create mode 100644 assets/f2_boss.png create mode 100644 assets/f3_boss.png create mode 100644 assets/f4_boss.png create mode 100644 assets/f5_boss.png create mode 100644 assets/f6_boss.png create mode 100644 assets/f7_boss_end.png create mode 100644 assets/f7_boss_s1.png create mode 100644 assets/f7_boss_s2.png create mode 100644 assets/f7_boss_s3.png create mode 100644 assets/f7_boss_s4.png create mode 100644 assets/f7_boss_s5.png create mode 100644 assets/failedRoomVanilla.png create mode 100644 assets/greenCheckVanilla-new.png create mode 100644 assets/greenCheckVanilla-old.png create mode 100644 assets/markerOther.png create mode 100644 assets/markerSelf.png create mode 100644 assets/questionMarkVanilla-new.png create mode 100644 assets/questionMarkVanilla-old.png create mode 100644 assets/whiteCheckVanilla-new.png create mode 100644 assets/whiteCheckVanilla-old.png diff --git a/Components/DungeonMap.js b/Components/DungeonMap.js index 101e6aa..339ba65 100644 --- a/Components/DungeonMap.js +++ b/Components/DungeonMap.js @@ -101,6 +101,9 @@ class DungeonMap { this.keys = 0 this.bloodOpen = false + // The MapID that represents this dungeon, looked for if the player doesn't have a map in the hotbar. + this.mapId = undefined; + //initialize with 0, only if score is below threshold will they get set to 1 then set to 2 after said this.broadcast270message = 0; this.broadcast300message = 0; diff --git a/Components/MapPlayer.js b/Components/MapPlayer.js index aa22855..ce0416e 100644 --- a/Components/MapPlayer.js +++ b/Components/MapPlayer.js @@ -326,5 +326,5 @@ function getPlayerSecrets(uuid, cacheMs, callback) { }); } -const markerSelf = new Image("markerSelf.png", "https://i.imgur.com/mwpjgRz.png"); -const markerOther = new Image("markerOther.png", "https://i.imgur.com/xnoBx3p.png"); \ No newline at end of file +const markerSelf = Image.fromAsset("markerSelf.png"); +const markerOther = Image.fromAsset("markerOther.png"); \ No newline at end of file diff --git a/Extra/Settings/Changelog.md b/Extra/Settings/Changelog.md index 14f5cff..8e412d4 100644 --- a/Extra/Settings/Changelog.md +++ b/Extra/Settings/Changelog.md @@ -146,4 +146,10 @@ First released version! @ver v1.0.17 ```diff ! Fixed player heads being wonky when the player is nicked +``` + +@ver v1.0.18 +```diff +! Fixed map not loading while holding a bow (Credits @Desco1) +! Fixed some users being unable to load assets ``` \ No newline at end of file diff --git a/Render/BossMapRendering/BossMapRenderer.js b/Render/BossMapRendering/BossMapRenderer.js index 2e54d1c..4d230f5 100644 --- a/Render/BossMapRendering/BossMapRenderer.js +++ b/Render/BossMapRendering/BossMapRenderer.js @@ -7,13 +7,12 @@ class BossMapRenderer extends MapTab { constructor(mapRenderer) { super("Boss", mapRenderer) - const getBossImage = (imageName) => new Image("imgur_" + imageName, "https://i.imgur.com/" + imageName + ".png") - this.dungeonBossImages = {} new Thread(() => { let imageData = JSON.parse(FileLib.read("BetterMap", "Render/BossMapRendering/imageData.json")) Object.keys(imageData).forEach(v => { - for (let i of imageData[v]) i.image = getBossImage(i.image) + for (let i of imageData[v]) + i.image = Image.fromAsset(i.image) }) this.dungeonBossImages = imageData }).start() @@ -95,7 +94,7 @@ class BossMapRenderer extends MapTab { data.bounds[0], data.bounds[1] ] - let coords = [0,1,2].map(v => c.map(b => b[v])) // Transpose the matrix + let coords = [0, 1, 2].map(v => c.map(b => b[v])) // Transpose the matrix if (!coords.every(v => isBetween(...v))) return this.currentBossImage = data }) diff --git a/Render/BossMapRendering/imageData.json b/Render/BossMapRendering/imageData.json index 6461868..d49b804 100644 --- a/Render/BossMapRendering/imageData.json +++ b/Render/BossMapRendering/imageData.json @@ -1,7 +1,7 @@ { "1": [ { - "image": "1IwaBgM", + "image": "f1_boss.png", "bounds": [[-65, 70, -3], [-19, 90, 45]], "widthInWorld": 46, "heightInWorld": 48, @@ -10,7 +10,7 @@ ], "2": [ { - "image": "Hn1xSu3", + "image": "f2_boss.png", "bounds": [[-34, 54, -35], [18, 100, 15]], "widthInWorld": 52, "heightInWorld": 50, @@ -20,7 +20,7 @@ ], "3": [ { - "image": "h52JPEI", + "image": "f3_boss.png", "bounds": [[-33, 64, -34], [35, 118, 37]], "widthInWorld": 68, "heightInWorld": 73, @@ -30,7 +30,7 @@ ], "4": [ { - "image": "m0uqjFN", + "image": "f4_boss.png", "bounds": [[-37, 53, -37], [47, 114, 47]], "widthInWorld": 84, "heightInWorld": 84, @@ -40,7 +40,7 @@ ], "5": [ { - "image": "dCcouUx", + "image": "f5_boss.png", "bounds": [[-35, 53, -5], [45, 112, 82]], "widthInWorld": 80, "heightInWorld": 80, @@ -50,7 +50,7 @@ ], "6": [ { - "image": "C0iMHhB", + "image": "f6_boss.png", "bounds": [[-31, 51, -5], [13, 110, 94]], "widthInWorld": 44, "heightInWorld": 99, @@ -59,28 +59,28 @@ ], "7": [ { - "image": "dbRNrEM", + "image": "f7_boss_end.png", "bounds": [[14, 161, 115], [42, 189, 153]], "widthInWorld": 28, "heightInWorld": 38, "topLeftLocation": [14, 115] }, { - "image": "HO1CxQU", + "image": "f7_boss_s1.png", "bounds": [[33, 213, 11], [113, 255, 86]], "widthInWorld": 100, "heightInWorld": 75, "topLeftLocation": [33, 11] }, { - "image": "kMLGla2", + "image": "f7_boss_s2.png", "bounds": [[19, 160, -1], [127, 212, 107]], "widthInWorld": 108, "heightInWorld": 108, "topLeftLocation": [19, -1] }, { - "image": "9OjMNwt", + "image": "f7_boss_s3.png", "bounds": [[-3, 103, 29], [111, 159, 143]], "widthInWorld": 114, "heightInWorld": 114, @@ -88,14 +88,14 @@ "renderSize": 64 }, { - "image": "lCBf5Ix", + "image": "f7_boss_s4.png", "bounds": [[-3, 54, 19], [111, 102, 133]], "widthInWorld": 114, "heightInWorld": 94, "topLeftLocation": [-3, 19] }, { - "image": "TqOs3ki", + "image": "f7_boss_s5.png", "bounds": [[-5, 0, -5], [131, 53, 142]], "widthInWorld": 136, "heightInWorld": 147, diff --git a/Render/RenderContext.js b/Render/RenderContext.js index ce6ebf7..d186e92 100644 --- a/Render/RenderContext.js +++ b/Render/RenderContext.js @@ -626,19 +626,19 @@ TeniosMapColorMap.set('unknown', new Color(Renderer.color(64, 64, 64))); TeniosMapColorMap.set('wither', new Color(Renderer.color(0, 0, 0))); const HypixelTicksOld = new Map() -HypixelTicksOld.set("greenCheck", new Image("greenCheckVanilla-old.png", "https://i.imgur.com/h2WM1LO.png").image) -HypixelTicksOld.set("whiteCheck", new Image("whiteCheckVanilla-old.png", "https://i.imgur.com/hwEAcnI.png").image) -HypixelTicksOld.set("failedRoom", new Image("failedRoomVanilla.png", "https://i.imgur.com/WqW69z3.png").image) -HypixelTicksOld.set("questionMark", new Image("questionMarkVanilla-old.png", "https://i.imgur.com/1jyxH9I.png").image) +HypixelTicksOld.set("greenCheck", Image.fromAsset("greenCheckVanilla-old.png").image) +HypixelTicksOld.set("whiteCheck", Image.fromAsset("whiteCheckVanilla-old.png").image) +HypixelTicksOld.set("failedRoom", Image.fromAsset("failedRoomVanilla.png").image) +HypixelTicksOld.set("questionMark", Image.fromAsset("questionMarkVanilla-old.png").image) const HypixelTicksNew = new Map() -HypixelTicksNew.set("greenCheck", new Image("greenCheckVanilla-new.png", "https://i.imgur.com/KFGT3RL.png").image) -HypixelTicksNew.set("whiteCheck", new Image("whiteCheckVanilla-new.png", "https://i.imgur.com/pfDVZA0.png").image) -HypixelTicksNew.set("failedRoom", new Image("failedRoomVanilla.png", "https://i.imgur.com/WqW69z3.png").image) -HypixelTicksNew.set("questionMark", new Image("questionMarkVanilla-new.png", "https://i.imgur.com/xLI4gR6.png").image) +HypixelTicksNew.set("greenCheck", Image.fromAsset("greenCheckVanilla-new.png").image) +HypixelTicksNew.set("whiteCheck", Image.fromAsset("whiteCheckVanilla-new.png").image) +HypixelTicksNew.set("failedRoom", Image.fromAsset("failedRoomVanilla.png").image) +HypixelTicksNew.set("questionMark", Image.fromAsset("questionMarkVanilla-new.png").image) const NEUMapTicks = new Map() -NEUMapTicks.set("greenCheck", new Image("NEUMapGreenCheck.png", "https://i.imgur.com/vwiTAAf.png").image) //old: https://i.imgur.com/GQfTfmp.png -NEUMapTicks.set("whiteCheck", new Image("NEUMapWhiteCheck.png", "https://i.imgur.com/YOUsTg8.png").image) //old: https://i.imgur.com/9cZ28bJ.png -NEUMapTicks.set("failedRoom", new Image("NEUMapFailedRoom.png", "https://i.imgur.com/TM8LbGS.png").image) //old: https://i.imgur.com/YOUsTg8.png -NEUMapTicks.set("questionMark", new Image("NEUMapQuestionMark.png", "https://i.imgur.com/CPBuhXu.png").image) //old: https://i.imgur.com/kp92Inw.png +NEUMapTicks.set("greenCheck", Image.fromAsset("NEUMapGreenCheck.png").image) //old: https://i.imgur.com/GQfTfmp.png +NEUMapTicks.set("whiteCheck", Image.fromAsset("NEUMapWhiteCheck.png").image) //old: https://i.imgur.com/9cZ28bJ.png +NEUMapTicks.set("failedRoom", Image.fromAsset("NEUMapFailedRoom.png").image) //old: https://i.imgur.com/YOUsTg8.png +NEUMapTicks.set("questionMark", Image.fromAsset("NEUMapQuestionMark.png").image) //old: https://i.imgur.com/kp92Inw.png diff --git a/assets/NEUMapFailedRoom.png b/assets/NEUMapFailedRoom.png new file mode 100644 index 0000000000000000000000000000000000000000..020d3bbcb9006d4ab68bf19c250eb90396a5d148 GIT binary patch literal 8166 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 M07*qoM6N<$f`6QPy8r+H literal 0 HcmV?d00001 diff --git a/assets/NEUMapGreenCheck.png b/assets/NEUMapGreenCheck.png new file mode 100644 index 0000000000000000000000000000000000000000..aa558122af6e1ce3036a40a9dfacbb0e9fd9325c GIT binary patch literal 5396 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

aLS zk(fbk6v5C)0`IfEp&AmG&c(A1)+DqU*F3%hpZD`IfPLbBtz*D(a2K=Ju(C=>MH&GR zH43DljMa#s9X{f-iPXM`V4d$Gn!F|cZ>-)~eGg}%)5_Gq%YF?&QVxDQ0sD{Fb z0xvr$4HlUDaO_;d-DK1|M=Huz;BvTBU66#BI|z1i2r2v zQGb43!Sz}BTETbQlcv$a0cF3o&#n}w7gn*`k?*TdOUUcbO5hith@*p}IM_RI0~2<2 zai!ZCE@_t|E@Z$7F^Kc}NPd=s)Ry@vvyG6h)_6JFkwm83)0v=)Z6=v4%8B}WbdegZ zBdeXbT%n6hnr<2Tev(X%mT_T1Juh6B_pZ0w|IJXip^Lo>*wn;GT7*%7nm{;A%uB zE)tGVa)ajbaF?5weVJsgh?~Ow2{6HeeX==gZVYJj5EC82jBd0<^i}q2XM2!iIN6d( zS0_M%op>%4&<&0@c}CI7xK!`W)-b+`?BBoLYGZve0bnqluHwI5Z)8?3>YRHlV?|?o zxYkkoJJc1#nrV#nT7NQ=mcSUH&h^)utuhUzDrJ{o#W0e-o2i$3GqvWN6iB|CZKOif z)hoqhc5oG=o*U&@f4zQ;#ucv9UvD0#;KihZ_}JwP1(FQ8H(f8c6ePc!t+R}wyC#kO#E7{QTM`_pq{2F#Tyi-aiV5zg`Ubc2lR=M43wF?I}N z7Uf&bbt#-XXpe~`KK#9J?=Cq6p^m+K<(rLP5r`cuo-TkaHY8&Kh^_4n!GQ7pGtWFP z3(@&#;Zo{88@=deK!<|AqO z@@L|gFMl~jxBOMBUXHiy@jPXf*`imhc+LBjr^QD%U)_TKutox3T_eFzxq9^(3D(y_ zbi*;5o?9v3zVL+XetEUnD%-VxeT}%h`Mh|&tql3y7bW=pSH$zn55(r+9adfZ4~GJDZpWyUjHcL~e}#lqOH z{|lxG)`Zv?zybBnQb)bdZ81J839_f|8>&7C5lUdlMVHJ5$N1CeKmo3!K;-{`~25 z-O^-epj3^JWCb?3ev9So$t1aau0R)E#O9)TT*vZW*#H2507*naRL?1WUkwq&z^@FJ zDQk`SsO>n2I@p^_LEEGda$lAaRD=NTz6+&5N7GRA63dvfWb z2fH3+Sxi7Mh(5&37_Q~#U!R1&bTL66 ze^Z0nBB%l(jp?ycf(qQzV9_`?lK@pr;{_o7-OUzdnt6KMQGN!D2pmU2kuj7AWzwLa zAj+uG!iE?K%9UW8A@+J5-JTTu#t?^AfF2)2Xd_kuD^rix`Kqk=hF()#tFcSzbQ{C4 z`2Kby!ypjdBD{XEOBurASwMoD7`LmF|uNH9)iVdX>n9ZU}K? zQRWnKme&!B9yZBkR&@Z|KqS932$P^x4Tc9?`fzDO7-ZDqmd0@`Pg0{3@#$0T@p?>? zeupx1{r;g#MVwo`-Rb%p!|x=b+3 z-TE42VE1r;*hZfp-YbV~bxk<9OZM;EE-${YMxI=?LRPMLOxf@fANc7%sqeb z!3USjBf|XSpZZ9DV#QSc)2pTMnblJ8)Dx1ja)qSnmbAib$@+KVipS+I58N;79(qtV zE_g^b>$c_Lhh*0y3uNyjkBH5}N5yIJB5`_Zh3we;rtJ9oPqJ^@TVlKCeL1}6FXD9Y zBk^$fOni>4mte22#n)wn#6=vG)Hp}oACTnuLz0*6p`aEb)n!3aR}n%j+SZ0JIbIj7 ztT&EZXKNH$Z_i0AJShZ4Sm~7OyJ7?x01Bq8qE^1Yb)1VY#QagKI(9x<`cDMPg;qbZ zFlhEtZR&I=%U{64dfS4@Ea~dIoW})-(vb?#*OftDW+R28(ohvEb~Y%9N@BAHFvU;> zUAx0JOlnF_NMIeUv$6qX8plONkQt!9HY7M$4(#8}|4B#4G2^5)U~4Uj_JEm)aZ_)RZgxXPK4Jcb(DO4Im3nK;UUz|`QXg7=zZfIu+QN9x!9W?ewPb{Y5#P|y8N8547cxqR ztXkDnGn=U9{ls|#K*2Ca^m71oaNPoku|eUA+0tsP4fN_~>6}A+^rvIUXV~v%~j_W&LJ*3n&ArQr90Z$NP2Q2C0-HA@bvJI-Me=1IWp|` z?b$7fQMOWJ3Kyu=DOG@}QNsibqNnzhgT<}&2_4!7Ey}uTJ*Du7yX03SI zf2M25hhnq)Jvp@NJvp%BUD>nkZQ1vS`tqv9bGj->YQZ zgAd612Y)Z$EO=11J@T;ZdUSytTJ(rGFI^~}k1dwqm5+(0UUa3tL|vRjc5ZLqm1A7^(O(l1;D#NHF7dvXZevfWc`6 zu#PHM#u__o+~rKYmvmHn%IO9lZfBbPrL*35PFV@8Db!R3;25>6Y=R3w2>?R3CSsck4(JmM&jP#!)?^^K zvH==bhb<*6myOT{VwrF?!;K1nN6Zv4NO%x#qE@vpSuXa(5!n0BrpP@72N*oFleMgS z{ch%%vc_DFxxL~DuL{i887m@#xU`l(@;MCJ=uFFIKv%Y1y`C|T$Y zH5_hD)<|V>yhP}|_Vsk7G3VpyY37p7Da2pV#mhyFFEG;YXX{O}+^{KEV+X5o%kKfI zXaHCpH(c)H%E~A8cZ2)Nx@HAvHl|QO9==#$BuYaK(EDI6sR0SaG(QE^lq7(@y~OEU zhCvV(h=wJ5)$ns+LlcO)U_)2~y|j~~>?J>GzhuYml#HnDk`=v6;)AwIQuq#u4cH=) z{+lJ(bAtr9eJNg!>%`6WV{ujk{)nz22Y0-uApE}U|Mnf(z4dL``qk?MR48EqfDO3b zM^HurmQ@MMnw<6UL#8X!uYUDwW=aE)S-NCcGPZdDo`3vvADPO4QZ~uHgHnGT<%Bezz@nSiW7bK=wcSh#X$DP~4U-5}##D#AD4WIk@v( zvDx*mI34&97W1YL4ZS<0XQ(;U1LMAR2#-0Xm>C^Wwo(y4P6XL&juUGK1v0!o2 zg$%JWu%5Fgve_U3iyv44z!(b?x+{U@0_Xx29J5oC*-Qb)g`#PKE}(vTJOn#%9C`p_ zaXQr)q~~GI4f2%TdOnb_gk0mP8c%a>9l?^G7*7!AqN|H9;gp6I$ge)s^?M3d5k#kiROF-K+9ZG zP=vvUd;>HV3A1#_f@kAmPZkZI8O!~`?*X9`bH7TAUUZ+OE}6+|<~Y-7Dw)~l#=C@a zy<~cCFqZ(nm_JZU1FOZ~2*bb-OixOn@Qn5M00S_<-=CewAb0AZ#wXm+nTgI)lD1#U zG7d^ro}H9r+Dbw4e#ufmP7eK6G9q_Ks(fK zKu>^Z=lnAwE{S|zp{JxerwQ|#9c1mXa9{mySlfrB_ zDJu$*{46IaSLO>@J5#$GOTFffrU=~!%ZZi<={g=Mr%%L5cUwH0Ck$RlSD-k`M3Bq6 z=s_R?NmSDl)fNfFJT5K}inu;$dc}_FqKl-Tfv!*)?}?<)k2}3s8U`nQ%ma z4_(z!5fO|Hd$_qWQyNSa>=kS^Ko_WjIvY>cfoJ*~vO) zHUmtqutcXsZeOb=r~))EoQ@+q#PtPeO|ey8Hfv>}UwoCKCE5IcB&|^z@hTE_DyaMf zkj7$;_Jwd4BTf%jFF^9zXc55+LK#T9vXpgkD2GmFzM#Bny ze{vv&;Du%bP?xf*N5Qpi?v(*y7y|!!r^Co%ju$W!m?9R_<)*G#ne(JYfBC!XO=Ny?c6f|;65P(K~RwYf1=kct0z3 zrbZ=>#qR-g-O=u_?%k-1?&|C;*-4JlT;VDmm2T{(+*sx!mDx5@o^eP4*952&b3DbaDxp$qAVF;Y+=ds06hQr=RUGlt(+=QkS$*Gq~t$oT+yj3S4x(} z6`e;QUP<8HzxYwH!L~@5ukOKq-Ip#F|K&?0^zmg9`r?yv#O7mhvH659XE)nVB*0ZI zSdR@7>b^mNc(cTZe5)XQKp7!H)miVStfOYGd<0!-0Km7f5MIum>q%Q*8KEE+ATeN|y2yZeq^G7(xFXcw zSNuF(*=YzM85tHrAUteqBhd=P#y#yIfj%DMkK>e?HkNuBB`iIsV+D>>%WBheYbkQ3 zVie9BiCUhzkRjF!7VWHyU}|!bX*FSE<@&tP+1xuey$|R8g%JRT2T;Z5!`%v(F_;}(=q%?^hL5rzxR7C>p`R|wwZNFK z4jrYjF*}KR>JlnkAp;rz2Y>}Af$<`P8Ng&pntnWnA{uO{6Sj_F_#cd+?Pp`aoa=3i z}A)EZIT+}AZ5yWOVSQW ze&T*Ps_eHU-A3}`_exI8Zpnz=Evb<^B`I84aPT&X^4%nXE?-KZt|M4WyzD*`cU@bs z#yITz(2@ncU@r6d$8lf04uA&Z#b$u__iUGl%@X&uxTSvuke&zN`Nu!o1-)_#3^!-B z0HR(v`#Fh2p$;kp!$z=DU2UM6Fyd39mmV z;l5u>bl@h558Wy$5!)pzZntE|?UG#Gm*?6^nOeJr8Me||7f$u6mbx%ylVR+-(%Ggg zw(NH3TTSAjb{sft(|1 zVynx-biwf@`|!4~Pq+v194; z1AH$QYOoeJ{Z25F>e6@$c`%!oy@?A93%pux6q78#LNFdRVjfmiEx1`{Ee!}D1G5*?;k&w5=!`g%Q+-2ir|!v%07w)(^U3X#FC z5GF1Sz+-XTUq+y-O-<=Y3TXhq?#-IcK?oa6Ta>V-EV|KXUuaaM4CqXc8<|Rg5?C<+ z2pjG(8(HYs0pb8vbW?)yWffvUmhjKVa9iifPsgBhN5SsD8-sPu^`DBRvBO3S*UITR zKw=xf5^-4MGobvZv@llZj2q_}=2D=A1;g`V=8}^HtMS*Pza5-2#z1wh!F*mtxe|3-mK{ zjB`%U4Ph8CVT3%8|A6-@^L^FG_2720-b=c5>#FyZ6ICwKf zB`@WGQ;IX9=q+9f>&q%1}Mv3zIMq&fENKAk--k{Br61Gk9;`T^^ zTDe7P^_J&4N@t6LZ*7R2Y>ANW_82*LGDR+&Ns)_Zbvu_QJ<4*=b;hz);NbammYNLo zrYZm@%9t+XcjEYm@1>&3|Aa7W8tQw5C@c%bkRneKL{Y8WU0P7O43tOBr!ft0{qRQ6s%zA zWOv9?n&czN(P0wc?IAgtnGzcvC4O+(DHsMSTd`FJ8ms^cS8z&HsI*u6N_UMX7bJ8; zvYy*1Jx{!jb89X-!sGG1D0%YH1rE=B-H(uM1Nf7oBPBZ6j|n+Q%0h;!FOLfl4+U;y zu3`aCiHVS!l4!>I5MKnqAdw0QICp0&6i~{jmNl-|f-Um;6+|y&5_rL!ZeOe7F;LdJ zb-mRHU?}k5Sj30PD#!AB~W^m^c$wAXqOI4{$knrVbbh5)XWY6Miu-Rtdh%?l6*WglO36Y4i( zhJj&Jq%xQw20dpai?Ngl-IfN@Et%Ryrlwgz>y84wbqqHc?=B&5({2CbF({z@qcLV~+VAkI;kt&BQ{cm^MB|j@vaUvC(@29Db2lX^ z=_hl^%f*q&SD16jI+sHHJS9cvTT*=d-0vYo4b&s{Hq3}d*d#7AP>M6%>2Yd--g&8u z)Z`wP+Wf=PaMXdNceUAvr8M=Rlw{aQaqN{WeLst~375 z>j|U)VQcSSFkS%i}4?ZZ%mMx6*~Mn=3+ik?}`Elb%k7%xhVydGO3e!96YSuFkvz+sOslekrnOY-U! zlKjRCk`}#7G8Jg^^+!~gen{ExZYfj?wj%409Md0JONFbPQ`T~+Cyml}=T5~*Z+C*6 zIv%Bq0aSI8rN1YGa(4g*C|5zLYV0x?O*WrHwQBHOhFnol05gNw0&7%tL+lN1Qm_$g zCbLN>%3zEYNmherBIH7cQDHjM=)?ZI7g~I&!8~|6a!%j)=482%J3N;-*OQes#=2N_ zG^f)23q}d{3%8t~E{0&D)>>dMWu$N!LZlW91yzo$JS0>T`Rt zn(=(-M-M6>4PP>X7VM^^$D_|KT=O^%32A6;c>Z(@0UB{@>lnyZ(d!pu===LIV9xdb zgE3q1Q?6WUFBnL*T_+N=l43a|!oV!Oi)2_D~n@4+uADv*p^F6?ou}!-rR<^)EZ1Z<5B6qI6n^Nu z5j}wV4$3lS$LrbYXM8Y^3+5C`P|*EH7g4A~Az2E_KLA~bX<(7WB8w6kxct!czP~d_ z#xBIj8C?KS8w@uuU4*AYW%5!I%W~jmMBEpNJJaJ8bYFs{z|D$y;K`PBE`qT!QB=YT z4GEn z4I|XSV3dsYMw$E79m;DmJCaRzHGt#0>y2z$e^r5OY%pC}aVk}`U`Ro50{7EMPv*(Q zfN3l-V#)M2aZpq5{MXqAOWVFYh8u2l>L`uKqmB0#&9m`Cv)yf zUn0FNR~b_W_*LjRA7e8JTwgGB0DVPCA`_g#_5KD0_|f14z#;Jo-K?y0X`sirlOdRb zdjo|u+%IPEj~6p34Qg-*+rayPjBNlk<~{DYVZGJX%um7%OgzSt0YGusjS;~$x4{@zQ{1)+E^#8TGq46Ah zYi2Z{gbVK7s;9sKe()?+0n;4Hrx?b?GjVd0@_s3DL74{_ z2G|KSn|nGVnfznAzohD7kwoRB=`mfb(1LFWePeZTR^~N1q>Q>dl8xV+ij3M65@3+v zgx6Zj-K3_#nQZ`%S9-Ec10o)XjR8>L)0-E6wG~c$>nh233C) zb)x}tqSjxH7hkE&b&|#+FF981K_Lw+!k%ufj048U#xlbiARM6}9Hwl;-PKMCvLhrr zJw$Rcf+asETo>;IDbRgkev}mEMM+svf)wTkOKW4IRFnow*U5ak)sHu%NOw!JG}gpP zOMRj=)WyiTQ%TGg9_mY%8FcUI&m|ZkX$y-q?iXUaa0B0-X)s#N=(vOo+|gXdSeeLn zt&WR5Iy%iNsGrk&$o6~VrHn%(oBjN$Xx7jUs4>-C?ja{@{p5H#LI(cIlzgSNLK#v+ zh*abq(fj5lXO4$a{}@VGC^ecTgDfTh-@RVT>|(@L2hJta6%LtExXZzkaX%67rFaP9 z;Fk;d_r2*l-fzrH!|F{IF<3t27y)2I7c%I+hbx*rl68*YGvMaNb@;#Uwz2cm$+`eJ zRUfSP6m!i(+AC3O9w-gP3MTnF2TOgVUn)zI zB`MBBN{+@#Q9-oc$9O3%jFaO0SgEPZlHAM?sjrHb6Rj!I-jXUOj;G71_G~$QGFKX^ zp`V^D9W5#PfBw>3A1j@0X>#V&QE5IFCuchgbj#O!A0yp*-0`L)$x3r)HZxjovSlS= z&;I`0U}*aJ`YQAGCBOop5sQXb2fv57m>4xaL&%abHvz`s{)Z(s%1#QC)j$lfk=z6q z$@*zw<}kyl*gApPB-)GufHy@zxKL3ug5?4 z+;j5GGtcn2C!TmhR<2yh?a@ab?s)p~2Y3H*&BEQw7T&k}mDLM&KdyVc_Pnm0*k01t z-hFxLs(FN&fBd(P#}?jK^~zHV<(bDHk~f}PEYGfZSpNL{5ML&O&56Fe=-avJn{Q-BZVgEW!UsMy*X9K49=PHa?_n>#HbQoxfD+&E2v0OJNaawTxjz% zDpJrJwluiEq6}m}Eo>-Z4eNVIhPl|`FGJlwC}ExN2w{6UoEsKyWVFIHh;kOj5=RQi zs2Zx`6bx-y|A@>}WPpPG+8sVba75NI60aK6;vZ2Kgxb$x>N-P-%hzZ->$#08D~H98 zmU0xcK)+obD_ZBFlhCw+J>r32TZ6jTBi5S~7cCwxPGq+Ldk=Rvv9moSF_DqXj7^C3 z|LGXeaYwvw=%quj@+ zNM)1p|MhkoUC&^wDAR)MqY01XlU3iDZZ)!(!|)tr)5AddN*E}UYHXf2tq!m1y}PSS z95SCwhJ$N-qSWY6kCmC0h-zd&k?e2!oi`>c_+4-vM}~T+Ar`=#1SCFTZlYdz|K42^ z6&@~03Gw3L>LPYF2PGvTPTZBL0yybT_Vl2Rc}!FkOWiPs(J;ZbWsq7G8{C-!G;m);O{}_C*0Ujh=b@1jMliQa3*%)-2BymJ-FZGMBsM=?-6np z5Nr0=Iqqm@OPNb&H3GJ6`G#dpK5B68*|kG9f4xB*4%@Ql@Fx9xE#cK0ahn2#BV&eL|$C|sC@93cjT?N-jWYL{7^pr_+weOZk=q{ut7F&-pq-L35(}8``3xH z{YG8*H%W-!Zixum!&ZR+-=jH4q^iV6x{fEw$(A^2Z$u4mC|d&db|n*lhx#G-UZ9Ik zJ{eGdZ#)xWhRGz3vKQ*LG1D3jE;B4fU^Ns+xKd130j2~u-OX$D6kY&JfHdIAIv-`W zPSRZLBrPS*(ox|?Hrs}>o)Q=C@f=LIvCxsnp#gk*xhW4hu58#^5^`KOs1kwwz%Up? zlLkE}WYgZ6Z6)KrJyok?OlAU2ocCuDz4kCmHvs{$sz)X0*l z0gjviToV`;*Ddban+m9i*CJyX`2ft2*Z1ztHW`g$HSWw@Dq{xtExo>ILJt7MT)G9f z`Cv9d5^R{CJA`;}v(b#cV*2S$4V#)@qatP60^*wEcw~TE>w_Vr0fPtEkMVE4zjz%9 zZZJAwFtAKZ0T&tLa9txF4_#>X5k?m!c!!2^I3JM+NJTQJz76NlYXBn^uOoI3Fi%Yg zRiF)3!*CzVh7gxU?J$@uT*OGE3P92p=4oiK?Ax=$l3n z$SVE&)u$en#_7gjyHasgQ`7_UB;mo1DKKnwteHTUsH z@5^8Q@|QUP#*YasbIslqt{6KPNwy1C+u!c5Y|~$cyMn2^ zJD~gC79SbV;~63?9c#4WuaRsbk+-EPzG}x_~V7x}|3H(pd%Qo>G?f zpu_?T58_*J$Jrd*Pvt3OhaywCwN}}8i#NYx1RBrihSU|pbLegMGv}t~fU(@0X`rMc zvaoMmGr|uT>z&yOG9WOGzZ(M#m!FOyQ9A15 zB-{5JX$<;S8bZF3=D<(oM9Kzf@_tw9JwB4wL^T#t9Hpi#O3$N??dUF?M!29#_ofBm zq_V}!YD58;`+F5M&*;{J8tzQF(3PnMS)_CxkCd*KSZO^LEGL@LPy@#yjF2Q}P9*3S zFFjrHa^Y;UoI8~ur`luGzzLJ%4T1VvhD@NbeSa1c@Q?`)Ps+KIi89oiEvHXJ>h~qd zn9iZ^ZdOr5gc-d|{6bP$ChLIVSuk^{l#Ka5Z=1f!xW4ypRFd^#F2QSHy$=A)yEC

YZhL%B`O##S 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