diff --git a/build/app.js b/build/app.js index ee31521..508c5a3 100644 --- a/build/app.js +++ b/build/app.js @@ -10,7 +10,7 @@ "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "HKCheckCompletion": () => /* binding */ HKCheckCompletion +/* harmony export */ "HKCheckCompletion": () => (/* binding */ HKCheckCompletion) /* harmony export */ }); /* harmony import */ var _hk_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hk-database.js */ "./src/js/hk-database.js"); /* harmony import */ var _page_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./page-functions.js */ "./src/js/page-functions.js"); @@ -2364,7 +2364,7 @@ document.getElementById("save-area-file").addEventListener("click", function (mo "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => __WEBPACK_DEFAULT_EXPORT__ +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); // ---------------- Hollow Knight Data Constant Objects ----------------- // @@ -3839,7 +3839,7 @@ var HK = { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => __WEBPACK_DEFAULT_EXPORT__ +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); var MAP = { "Tutorial_01": "King's_Pass", @@ -4249,8 +4249,8 @@ var MAP = { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "ObjectLength": () => /* binding */ ObjectLength, -/* harmony export */ "TranslateMapName": () => /* binding */ TranslateMapName +/* harmony export */ "ObjectLength": () => (/* binding */ ObjectLength), +/* harmony export */ "TranslateMapName": () => (/* binding */ TranslateMapName) /* harmony export */ }); /* harmony import */ var _hk_dictionary_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hk-dictionary.js */ "./src/js/hk-dictionary.js"); /* ---------------- Load main Hollow Knight database files ----------------- */ @@ -4303,12 +4303,12 @@ function TranslateMapName(mapCode) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "PrefillHTML": () => /* binding */ PrefillHTML, -/* harmony export */ "CompletionHTML": () => /* binding */ CompletionHTML, -/* harmony export */ "AppendHTML": () => /* binding */ AppendHTML, -/* harmony export */ "CheckboxHintsToggle": () => /* binding */ CheckboxHintsToggle, -/* harmony export */ "CheckboxSpoilersToggle": () => /* binding */ CheckboxSpoilersToggle, -/* harmony export */ "StorageAvailable": () => /* binding */ StorageAvailable +/* harmony export */ "PrefillHTML": () => (/* binding */ PrefillHTML), +/* harmony export */ "CompletionHTML": () => (/* binding */ CompletionHTML), +/* harmony export */ "AppendHTML": () => (/* binding */ AppendHTML), +/* harmony export */ "CheckboxHintsToggle": () => (/* binding */ CheckboxHintsToggle), +/* harmony export */ "CheckboxSpoilersToggle": () => (/* binding */ CheckboxSpoilersToggle), +/* harmony export */ "StorageAvailable": () => (/* binding */ StorageAvailable) /* harmony export */ }); var ROOT = document.documentElement; var SCROLL_BUTTON = document.querySelector(".scroll-up-button"); @@ -4806,7 +4806,7 @@ module.exports = __webpack_require__.p + "img/thumbnail1200x628.jpg"; /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ @@ -4841,6 +4841,8 @@ module.exports = __webpack_require__.p + "img/thumbnail1200x628.jpg"; /******/ })(); /******/ /************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { /*!*************************!*\ !*** ./src/js/index.js ***! diff --git a/build/app.js.map b/build/app.js.map index 31df6e4..3fbf2d1 100644 --- a/build/app.js.map +++ b/build/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://hollow-knight-completion-check/./src/js/HKCheckCompletion.js","webpack://hollow-knight-completion-check/./src/js/LoadSaveFile.js","webpack://hollow-knight-completion-check/./src/js/aes-js.js","webpack://hollow-knight-completion-check/./src/js/hk-database.js","webpack://hollow-knight-completion-check/./src/js/hk-dictionary.js","webpack://hollow-knight-completion-check/./src/js/hk-functions.js","webpack://hollow-knight-completion-check/./src/js/page-functions.js","webpack://hollow-knight-completion-check/./src/css/fontello.css?8283","webpack://hollow-knight-completion-check/./src/css/simpleicon.css?2a2f","webpack://hollow-knight-completion-check/./src/css/style.css?cd7d","webpack://hollow-knight-completion-check/webpack/bootstrap","webpack://hollow-knight-completion-check/webpack/runtime/define property getters","webpack://hollow-knight-completion-check/webpack/runtime/global","webpack://hollow-knight-completion-check/webpack/runtime/hasOwnProperty shorthand","webpack://hollow-knight-completion-check/webpack/runtime/make namespace object","webpack://hollow-knight-completion-check/webpack/runtime/publicPath","webpack://hollow-knight-completion-check/./src/js/index.js"],"names":["SYMBOL_FALSE","SYMBOL_TRUE","SYMBOL_EMPTY","FLEUR_DIVIDE","WIKI_LINK","completionSymbol","divStart","join","divStartCenter","divEnd","pSpan","benchHKCCBegin","benchHKCCEnd","HKCheckCompletion","jsonObject","Date","HKPlayerData","HKWorldItems","HKSceneData","hasOwnProperty","playerData","sceneData","persistentBoolItems","PrefillHTML","HK","ResetCompletion","CheckPlayTime","playTime","CheckCompletionPercent","completionPercentage","CheckSaveFileVersion","version","AppendHTML","CheckHealthMasks","maxHealthBase","permadeathMode","CheckSoulOrbs","maxMP","MPReserveMax","CheckNotches","charmSlots","charmSlotsFilled","CheckGeo","geo","geoPool","CheckIfDataTrue","CheckWorldDataTrue","CheckNailUpgrades","CheckSpellLevel","CheckWarriorDreams","CheckGodmasterDoors","CheckAdditionalThings","CheckHintsTrue","CompletionHTML","CheckboxHintsToggle","CheckboxSpoilersToggle","console","info","PrepareHTMLString","divId","textPrefix","textSuffix","wiki","icon","b","length","span","spoilerSpan","dash","includes","CurrentDataTrue","percent","id","CurrentDataFalse","CurrentDataBlank","seconds","Math","floor","minutes","hours","sec","textFill","document","getElementById","innerHTML","maxPercent","saveVersion","masks","maskImages","maskNormal","HEALTH_MASK_IMAGE","maskSteel","HEALTH_MASK_STEEL_IMAGE","maskImg","i","totalSoul","soulImages","soulNormal","SOUL_ORB_IMAGE","soulImg","total","geoValue","geoPoolValue","GEO_IMAGE","GEO_SHADE_IMAGE","totalNotches","filledNotches","overcharmedNotches","unusedNotches","notchImages","notchNormalImage","NOTCH_IMAGE","notchFilledImage","NOTCH_FILLED_IMAGE","notchOvercharmedImage","NOTCH_OVERCHARMED_IMAGE","dataObject","sFillText","name","spoiler","gotQueenFragment","gotKingFragment","grimmChildLevel","fireballLevel","quakeLevel","screamLevel","pantheon","map","element","completed","nail","nailSmithUpgrades","idText","worldData","orderedArray","size","ObjectLength","push","j","sceneName","activated","amount","countTotal","unbroken","broken","discoveredTotal","CountMaps","list","CountWorldItem","openedHiddenStation","journalEntriesTotal","LogMissingGrubs","zoteDead","zoteRescuedBuzzer","hasWalljump","max","abs","geoRocks","CountGeoRocks","hasSlykey","gaveSlykey","hasWhiteKey","usedWhiteKey","hasLoveKey","openedLoveDoor","FindWorldItem","dreamReward2","nameHeld","nameSold","killedVoidIdol_2","killedVoidIdol_3","nameNeglect","spoilerNeglect","killedZote","nameRivalry","spoilerRivalry","nameTrappedVengefly","spoilerTrappedVengefly","nameNotRescuedVengefly","spoilerNotRescuedVengefly","zoteRescuedDeepnest","nameTrappedDeepnest","spoilerTrappedDeepnest","nameColosseum","spoilerColosseum","nailsmithKilled","namePurity","spoilerPurity","nailsmithConvoArt","nameHappyCouple","spoilerHappyCouple","nailsmithSpared","nameSheoHutWaiting","spoilerSheoHutWaiting","nameUpgradeNail","spoilerUpgradeNail","CheckMrMushroomState","itemArea","itemId","mapArray","totalMaps","len","arrayLength","mode","geoRocksLog","hitsLeft","TranslateMapName","log","groupCollapsed","groupEnd","rescuedGrubsSceneList","missingGrubsList","x","mrMushroomState","killedHollowKnight","GruzMotherDefeated","k","defeatedDungDefender","hornetOutskirtsDefeated","hasAcidArmour","hasKingsBrand","hasShadowDash","HKReadTextArea","textAreaId","InitialHTMLPopulate","contents","value","JSON","parse","error","alert","divIdObj","intro","hints","hkObjArray","divObjArray","bosses","charms","equipment","nailArts","maskShards","vesselFragments","dreamers","colosseum","dreamNail","warriorDreams","grimmTroupe","lifeblood","godmaster","essential","achievements","statistics","entry","shift","nailUpgrades","spells","StorageAvailable","localStorage","getItem","checked","jsObj","SelectCopyInputText","mouseEvent","tooltipId","tooltipFill","target","window","getSelection","removeAllRanges","focus","select","setSelectionRange","execCommand","FillInnerHTML","elementId","addEventListener","e","aesjs","require","CSHARP_HEADER","BASE64_ARRAY","split","c","charCodeAt","BASE64_DECODE_TABLE","Map","ord","AES_KEY","TextEncoder","encode","ECB_STREAM_CIPHER","ModeOfOperation","ecb","benchLSFBegin","benchLSFEnd","benchTotal","LoadSaveFile","input","time","inputFileList","files","inputFileObject","inputReader","FileReader","readAsArrayBuffer","ProcessFileObject","inputArrayBuffer","result","decodedString","Uint8Array","slice","RemoveHeaders","Base64Decode","AESDecryption","TextDecoder","decode","buffer","csHeader","subarray","lengthCount","v","get","p","indexOf","end","output","continuous","undefined","cipherObject","decrypt","event","root","checkInt","parseInt","checkInts","arrayish","coerceArray","arg","copy","ArrayBuffer","isView","Array","prototype","call","isArray","Error","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","convertUtf8","toBytes","text","encodeURI","substr","fromBytes","bytes","String","fromCharCode","convertHex","Hex","numberOfRounds","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","key","Object","defineProperty","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","index","rconpointer","t","tt","r","encrypt","plaintext","a","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","ModeOfOperationCFB","segmentSize","_shiftRegister","encrypted","xorSegment","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","pkcs7pad","data","padder","pkcs7strip","cbc","cfb","ofb","ctr","utils","hex","utf8","padding","pkcs7","pad","strip","_arrayTest","module","exports","DIV_ID","h2","HINTS","hornet1Defeated","hasDash","Crossroads_04","slyRescued","hasLantern","hasSuperDash","hasDreamNail","killedInfectedKnight","hasDoubleJump","killedBlackKnight","lurienDefeated","dungDefenderOrHornet2","ismaTearOrShadeCloak","defeatedMegaJelly","monomonDefeated","hegemolDefeated","BOSSES","falseKnightDefeated","mageLordDefeated","collectorDefeated","defeatedMantisLords","killedMimicSpider","killedTraitorLord","BOSSES_WORLD","Crossroads_09","CHARMS","gotCharm_1","gotCharm_2","gotCharm_3","gotCharm_4","gotCharm_5","gotCharm_6","gotCharm_7","gotCharm_8","gotCharm_9","gotCharm_10","gotCharm_11","gotCharm_12","gotCharm_13","gotCharm_14","gotCharm_15","gotCharm_16","gotCharm_17","gotCharm_18","gotCharm_19","gotCharm_20","gotCharm_21","gotCharm_22","gotCharm_23","gotCharm_24","gotCharm_25","gotCharm_26","gotCharm_27","gotCharm_28","gotCharm_29","gotCharm_30","gotCharm_31","gotCharm_32","gotCharm_33","gotCharm_34","gotCharm_35","gotCharm_36","COLOSSEUM","colosseumBronzeCompleted","colosseumSilverCompleted","colosseumGoldCompleted","DREAMERS","DREAMNAIL","dreamNailUpgraded","mothDeparted","EQUIPMENT","MASKSHARDS","slyShellFrag1","slyShellFrag2","slyShellFrag3","slyShellFrag4","dreamReward7","MASKSHARDS_WORLD","Crossroads_13","Crossroads_38","Room_Bretta","Fungus2_01","Waterways_04b","Fungus1_36","Mines_32","Fungus2_25","Hive_04","Room_Mansion","VESSELFRAGMENTS","slyVesselFrag1","slyVesselFrag2","dreamReward5","vesselFragStagNest","VESSELFRAGMENTS_WORLD","Fungus1_13","Crossroads_37","Ruins2_09","Deepnest_38","Abyss_04","NAILARTS","hasDashSlash","hasUpwardSlash","hasCyclone","NAILUPGRADES","oldNail","sharpenedNail","channeledNail","coiledNail","pureNail","SPELLS","vengefulSpirit","shadeSoul","desolateDive","descendingDark","howlingWraiths","abyssShriek","WARRIORDREAMS","xeroDefeated","noEyesDefeated","elderHuDefeated","aladarSlugDefeated","mumCaterpillarDefeated","galienDefeated","markothDefeated","GRIMMTROUPE","gotCharm_37","gotCharm_38","gotCharm_39","gotCharm_40","killedGrimm","LIFEBLOOD","killedHiveKnight","GODMASTER_DOORS","pantheonMaster","pantheonArtist","pantheonSage","pantheonKnight","GODMASTER","hasGodfinder","ESSENTIAL","grubsCollected","dreamOrbs","stationsOpened","fountainGeo","brettaRescued","shopkeeperKey","elegantKey","loveKey","slySimpleKey","simpleKeyCityOfTears","simpleKeyAncientBasin","gotLurkerKey","paleOreAncientBasin","paleOreSeer","paleOreCrystalPeak","paleOreDeepnest","paleOreGrubfather","paleOreColosseum","waterwaysAcidDrained","hasTramPass","nightmareLanternLit","GRUBS_LIST","ACHIEVEMENTS","areaMaps","journalEntriesCompleted","journalNotesCompleted","hasJournal","hasHuntersMark","killedPrayerSlug","killedOrangeScuttler","killedPigeon","killedLazyFlyer","killedAcidFlyer","killedAcidWalker","killedPlantShooter","killedMushroomTurret","killedZapBug","killedCrystalCrawler","killedGorgeousHusk","killedWorm","killedBigCentipede","killedAbyssTendril","killedPaleLurker","falseKnightDreamDefeated","mageLordDreamDefeated","infectedKnightDreamDefeated","whiteDefenderDefeated","greyPrinceDefeated","salubraBlessing","gotShadeCharm","killedFinalBoss","bossDoorStateTier5","zoteStatus","nailsmithStatus","spoiler1","spoiler2","spoiler3","spoiler4","spoiler5","spoiler6","spoiler7","STATISTICS","nailDamage","whisperingRoots","relicsWandererJournal","relicsHallownestSeal","relicsKingsIdol","relicsArcaneEgg","min","rancidEggs","jinnEggsSold","xunFlowerBrokeTimes","notchShroomOgres","salubraNotch1","salubraNotch2","salubraNotch3","salubraNotch4","notchFogCanyon","gotGrimmNotch","hasDreamGate","fragileGreed_unbreakable","fragileHealth_unbreakable","fragileStrength_unbreakable","killedMenderBug","killedBindingSeal","killedGodseekerMask","killedVoidIdol_1","elderbugGaveFlower","givenGodseekerFlower","givenOroFlower","givenWhiteLadyFlower","givenEmilitiaFlower","whitePalaceSecretRoomVisited","killsBindingSeal","whiteDefenderDefeats","greyPrinceDefeats","MAP","object","mapCode","dictionary","translation","ROOT","documentElement","SCROLL_BUTTON","querySelector","ScrollToElement","scrollTo","top","behavior","ShowElement","classList","add","remove","HideElement","TogglePageScrollElement","ratio","scrollTotal","scrollHeight","clientHeight","scrollTop","domElement","h2id","mp","cl","hkGameCompletion","clGreen","clRed","cp","fillText","perc","content","param","checkboxId","setItem","allClassElements","querySelectorAll","type","storage","removeItem","DOMException","code"],"mappings":"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","file":"app.js","sourcesContent":["/* eslint-disable no-prototype-builtins */\r\n\r\n/* ---------------- Load main Hollow Knight database files ----------------- */\r\n\r\nimport HK from \"./hk-database.js\";\r\n\r\n/* ----------------- Helper functions --------------------------------------- */\r\n\r\nimport {\r\n PrefillHTML,\r\n CompletionHTML,\r\n AppendHTML,\r\n CheckboxHintsToggle,\r\n CheckboxSpoilersToggle,\r\n StorageAvailable\r\n} from \"./page-functions.js\";\r\n\r\nimport {\r\n ObjectLength,\r\n TranslateMapName\r\n} from \"./hk-functions.js\";\r\n\r\n// ---------------- Load image files (necessary for Webpack) ----------------- //\r\n\r\nimport HEALTH_MASK_IMAGE from \"../img/health-mask.png\";\r\nimport HEALTH_MASK_STEEL_IMAGE from \"../img/health-mask-steel.png\";\r\nimport SOUL_ORB_IMAGE from \"../img/soul-orb.png\";\r\nimport NOTCH_IMAGE from \"../img/notch.png\";\r\nimport NOTCH_FILLED_IMAGE from \"../img/notch-filled.png\";\r\nimport NOTCH_OVERCHARMED_IMAGE from \"../img/notch-overcharmed.png\";\r\nimport GEO_IMAGE from \"../img/geo.png\";\r\nimport GEO_SHADE_IMAGE from \"../img/geo-shade.png\";\r\n\r\n// ---------------- Constants ----------------- //\r\n\r\n// const DATA_UNKNOWN = \"Data unknown\";\r\nconst SYMBOL_FALSE = \"\"; // \"❌ \"\r\nconst SYMBOL_TRUE = \"\"; // \"✅ \"\r\n// const SYMBOL_INFO = \"\"; // \"ℹ \"\r\nconst SYMBOL_EMPTY = \"\";\r\nconst FLEUR_DIVIDE = \"
\";\r\nconst WIKI_LINK = \"https://hollowknight.fandom.com/wiki/\";\r\n\r\n// ---------------- Variables ----------------- //\r\n\r\n// let currentData = DATA_UNKNOWN;\r\nlet completionSymbol = SYMBOL_FALSE;\r\n\r\nlet divStart = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet divStartCenter = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet divEnd = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet pSpan = \"\";\r\n\r\nlet benchHKCCBegin, benchHKCCEnd;\r\n\r\n/* -------------------------- Functions ----------------------------- */\r\n\r\n/**\r\n * Main Function. Checks Hollow Knight game completion by analyzing the save file\r\n * @param {object} jsonObject Decoded save data in JavaScript Object Notation form (JSON)\r\n */\r\nfunction HKCheckCompletion(jsonObject) {\r\n\r\n // start benchmark\r\n benchHKCCBegin = new Date();\r\n\r\n let HKPlayerData;\r\n let HKWorldItems;\r\n let HKSceneData;\r\n\r\n if (jsonObject.hasOwnProperty(\"playerData\")) {\r\n HKPlayerData = jsonObject.playerData;\r\n } else return false;\r\n\r\n if (jsonObject.hasOwnProperty(\"sceneData\")) {\r\n HKSceneData = jsonObject.sceneData;\r\n if (jsonObject.sceneData.hasOwnProperty(\"persistentBoolItems\")) {\r\n HKWorldItems = jsonObject.sceneData.persistentBoolItems;\r\n } else return false;\r\n } else return false;\r\n\r\n // Pre-Cleaning and filling initial data (h2, id) needed for PrepareHTMLString()\r\n PrefillHTML(HK.DIV_ID);\r\n\r\n // Prevents adding current percent data after each function call (each click of Analyze button)\r\n ResetCompletion(HK.DIV_ID);\r\n\r\n // ================================================================================== //\r\n\r\n // ---------------- Time Played ----------------- //\r\n\r\n CheckPlayTime(HK.DIV_ID.intro, HKPlayerData.playTime);\r\n\r\n // ---------------- Game Completion Status ----------------- //\r\n\r\n CheckCompletionPercent(HK.DIV_ID.intro, HKPlayerData.completionPercentage);\r\n\r\n // ---------------- Game Completion Status ----------------- //\r\n\r\n CheckSaveFileVersion(HK.DIV_ID.intro, HKPlayerData.version);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.intro, FLEUR_DIVIDE);\r\n\r\n // ---------------- Health Masks ----------------- //\r\n\r\n CheckHealthMasks(HK.DIV_ID.intro, HKPlayerData.maxHealthBase, HKPlayerData.permadeathMode);\r\n\r\n // ---------------- Soul Orbs ----------------- //\r\n\r\n CheckSoulOrbs(HK.DIV_ID.intro, HKPlayerData.maxMP + HKPlayerData.MPReserveMax);\r\n\r\n // ---------------- Charm Notches (Slots) ----------------- //\r\n\r\n CheckNotches(HK.DIV_ID.intro, HKPlayerData.charmSlots, HKPlayerData.charmSlotsFilled);\r\n\r\n // ---------------- Geo Amount ----------------- //\r\n\r\n CheckGeo(HK.DIV_ID.intro, HKPlayerData.geo, HKPlayerData.geoPool);\r\n\r\n // ---------------- Bosses (Base Game) --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.bosses, HK.BOSSES, HKPlayerData);\r\n\r\n // ---------------- Gruz Mother and Mawlek (World Map) --------------------- //\r\n\r\n if (HKWorldItems) CheckWorldDataTrue(HK.DIV_ID.bosses, \"Battle Scene\", HK.BOSSES_WORLD, HKWorldItems);\r\n\r\n // ---------------- Charms --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.charms, HK.CHARMS, HKPlayerData);\r\n\r\n // ---------------- Colosseum of Fools --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.colosseum, HK.COLOSSEUM, HKPlayerData);\r\n\r\n // ---------------- Dreamers --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.dreamers, HK.DREAMERS, HKPlayerData);\r\n\r\n // ---------------- Dream Nail and Essence --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.dreamNail, HK.DREAMNAIL, HKPlayerData);\r\n\r\n // ---------------- Equipment --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.equipment, HK.EQUIPMENT, HKPlayerData);\r\n\r\n // ---------------- Nail Upgrades --------------------- //\r\n\r\n CheckNailUpgrades(HK.DIV_ID.nailUpgrades, HK.NAILUPGRADES, HKPlayerData);\r\n\r\n // ---------------- Mask Shards --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.maskShards, HK.MASKSHARDS, HKPlayerData);\r\n\r\n // ---------------- Mask Shards (World Map) --------------------- //\r\n\r\n CheckWorldDataTrue(HK.DIV_ID.maskShards, \"Heart Piece\", HK.MASKSHARDS_WORLD, HKWorldItems);\r\n\r\n // ---------------- Nail Arts --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.nailArts, HK.NAILARTS, HKPlayerData);\r\n\r\n // ---------------- Spells --------------------- //\r\n\r\n CheckSpellLevel(HK.DIV_ID.spells, HK.SPELLS, HKPlayerData);\r\n\r\n // ---------------- Vessel Fragments --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.vesselFragments, HK.VESSELFRAGMENTS, HKPlayerData);\r\n\r\n // ---------------- Vessel Fragments (World Map) --------------------- //\r\n\r\n CheckWorldDataTrue(HK.DIV_ID.vesselFragments, \"Vessel Fragment\", HK.VESSELFRAGMENTS_WORLD, HKWorldItems);\r\n\r\n // ---------------- Warrior Dreams --------------------- //\r\n\r\n CheckWarriorDreams(HK.DIV_ID.warriorDreams, HK.WARRIORDREAMS, HKPlayerData);\r\n\r\n // ---------------- Grimm Troupe Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.grimmTroupe, HK.GRIMMTROUPE, HKPlayerData);\r\n\r\n // ---------------- Lifeblood Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.lifeblood, HK.LIFEBLOOD, HKPlayerData);\r\n\r\n // ---------------- Godmaster Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.godmaster, HK.GODMASTER, HKPlayerData);\r\n\r\n CheckGodmasterDoors(HK.DIV_ID.godmaster, HK.GODMASTER_DOORS, HKPlayerData);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.godmaster, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Essential Things ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.essential, HK.ESSENTIAL, HKPlayerData, HKWorldItems);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.essential, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Achievements ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.achievements, HK.ACHIEVEMENTS, HKPlayerData, HKWorldItems);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.achievements, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Game Statistics ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.statistics, HK.STATISTICS, HKPlayerData, HKWorldItems, HKSceneData);\r\n\r\n // ------------------------- Hints ----------------------------- //\r\n\r\n CheckHintsTrue(HK.DIV_ID.hints, HK.HINTS, HKPlayerData, HKWorldItems);\r\n\r\n // ------------------------- Fill completion ----------------------------- //\r\n\r\n CompletionHTML(HK.DIV_ID, HKPlayerData.completionPercentage);\r\n\r\n // Prevents wrong checkbox behaviour (must run after everything is finished)\r\n CheckboxHintsToggle();\r\n CheckboxSpoilersToggle();\r\n\r\n // finish and show benchmark\r\n benchHKCCEnd = new Date();\r\n console.info(\"HKCheckCompletion() time (ms) =\", benchHKCCEnd - benchHKCCBegin);\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Generates and appends a new entry inside the HTML of a given ID\r\n * @param {object} divId object containing div ID and h2 title of the HTML element\r\n * @param {string} textPrefix Main name of the entry\r\n * @param {string} textSuffix Optional suffix after the main name (spoilers: locations, costs etc.)\r\n */\r\nfunction PrepareHTMLString(divId, textPrefix = \"Unknown Completion Element: \", textSuffix = \"Unknown Description Element\", wiki = \"\") {\r\n\r\n let icon = completionSymbol;\r\n let b = [\"\", \"\"];\r\n if (!textPrefix.length) b = [\"\", \"\"];\r\n if (wiki.length) b = [``, \"\"];\r\n\r\n let span = [\"\", \"\"];\r\n let spoilerSpan = [\"\", \"\"];\r\n if (divId === \"hints\") {\r\n span[0] = \"\";\r\n icon = \"\";\r\n }\r\n\r\n let dash = \"\";\r\n if (textSuffix.length && textPrefix.length) dash = \"— \";\r\n if (textPrefix.includes(\"\")) dash = \"\"\r\n\r\n // return divStart + icon + b[0] + textPrefix + b[1] + span[0] + pSpan + spoilerSpan[0] + dash + textSuffix + spoilerSpan[1] + span[1] + divEnd;\r\n return `\r\n ${divStart}\r\n ${icon}${b[0]}${textPrefix}${b[1]}${span[0]}${pSpan}${spoilerSpan[0]}${dash}${textSuffix}${spoilerSpan[1]}${span[1]}\r\n ${divEnd}\r\n `;\r\n}\r\n\r\n/**\r\n * Switches global variable to a \"completed\" symbol. Adds +1 or +2 to percent property.\r\n */\r\nfunction CurrentDataTrue(divId = \"\") {\r\n completionSymbol = SYMBOL_TRUE;\r\n if (divId) {\r\n divId.percent++;\r\n if (divId.id === \"hk-equipment\") divId.percent++; // double % for equipment\r\n }\r\n}\r\n\r\n/**\r\n * Switches global variable to a \"not completed\" symbol\r\n */\r\nfunction CurrentDataFalse() {\r\n completionSymbol = SYMBOL_FALSE;\r\n}\r\n\r\n/**\r\n * Switches global variable to an \"information\" symbol\r\n */\r\n/* function CurrentDataInfo() {\r\n completionSymbol = SYMBOL_INFO;\r\n} */\r\n\r\n/**\r\n * Switches global variable to no symbol (span with left padding)\r\n */\r\nfunction CurrentDataBlank() {\r\n completionSymbol = SYMBOL_EMPTY;\r\n}\r\n\r\n/**\r\n * Fills HTML with the playTime value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} playTime Number of total gameplay time in seconds\r\n */\r\nfunction CheckPlayTime(divId, playTime) {\r\n\r\n let icon = \"\";\r\n let seconds = Math.floor(playTime);\r\n let minutes = Math.floor((seconds / 60) % 60);\r\n let hours = Math.floor(seconds / 3600);\r\n let sec = Math.floor(seconds % 60);\r\n\r\n if (sec < 10) sec = \"0\" + sec;\r\n if (minutes < 10) minutes = \"0\" + minutes;\r\n\r\n let textFill = \"Time Played:\" + pSpan + \"\" + hours + \" h \" + minutes + \" min \" + sec + \" sec\";\r\n\r\n document.getElementById(divId.id).innerHTML += divStart + icon + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Searches for completionPercentage in playerData and fills HTML with the value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} completionPercentage Number of completion percentage\r\n */\r\nfunction CheckCompletionPercent(divId, completionPercentage) {\r\n\r\n (completionPercentage >= 112) ? CurrentDataTrue(): CurrentDataFalse();\r\n\r\n let textFill = \"Game Completion:\" + pSpan + \"\" + completionPercentage + \" %\" + pSpan + \"(out of \" + divId.maxPercent + \" %)\";\r\n document.getElementById(divId.id).innerHTML += divStart + completionSymbol + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Reads the \"version\" string from the save file and appends it to the selected div ID element\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {string} saveVersion Save File version in format 0.0.0.0\r\n */\r\nfunction CheckSaveFileVersion(divId, saveVersion = HK.DIV_ID.intro.saveVersion) {\r\n\r\n CurrentDataBlank();\r\n let textFill = `Save Version:${pSpan}${saveVersion}${pSpan}`;\r\n document.getElementById(divId.id).innerHTML += divStart + completionSymbol + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of health mask images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} masks Number of max health masks from the save (baseline without charms and lifeblood)\r\n * @param {number} permadeathMode Value of permadeathMode property. 0 = Normal, 1 = Steel Soul, 2 = Steel Soul broken save\r\n */\r\nfunction CheckHealthMasks(divId, masks = 5, permadeathMode = 0) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = \"Health:\";\r\n let maskImages = \"\";\r\n let maskNormal = `health mask image`;\r\n let maskSteel = `steel health mask image`;\r\n let maskImg = \"\";\r\n\r\n (permadeathMode > 0) ? maskImg = maskSteel: maskImg = maskNormal;\r\n\r\n for (let i = 0; i < masks; i++) {\r\n maskImages += maskImg;\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + maskImages + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of soul orbs images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} totalSoul Number of max Soul reserve from the save. 99 = full Soul Orb\r\n */\r\nfunction CheckSoulOrbs(divId, totalSoul) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = \"Soul:\";\r\n let soulImages = \"\";\r\n let soulNormal = `soul orb image`;\r\n let soulImg = soulNormal;\r\n\r\n for (let i = 0, total = totalSoul / 33; i < total; i++) {\r\n soulImages += soulImg;\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + soulImages + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with the Geo value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} geoValue Number of total Geo value\r\n */\r\nfunction CheckGeo(divId, geoValue = 0, geoPoolValue = 0) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = `Geo:geo symbol image${geoValue}`;\r\n\r\n // Show Shade Geo value and image only if Shade has at least 1 Geo on it\r\n if (geoPoolValue > 0) textFill += `\r\n ${pSpan}+shade geo symbol image${geoPoolValue}`;\r\n\r\n // Show also total Geo (Geo + Shade Geo) if player has at least 1 geo alongside the shade geo\r\n if (geoValue > 0 && geoPoolValue > 0) textFill += `${pSpan}=${pSpan}${geoValue+geoPoolValue}`;\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of notch images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} totalNotches Number of total Charm Notches the player has. 11 = max\r\n * @param {number} filledNotches Number of total used Charm Notches (including overcharmed notches). 15 = max\r\n */\r\nfunction CheckNotches(divId, totalNotches = 3, filledNotches = 0) {\r\n\r\n let {\r\n overcharmedNotches,\r\n unusedNotches\r\n } = 0;\r\n\r\n // How many overcharmed notches images to show\r\n overcharmedNotches = filledNotches - totalNotches;\r\n if (overcharmedNotches < 1) overcharmedNotches = 0;\r\n\r\n // How many unused notches images to show\r\n unusedNotches = totalNotches - filledNotches;\r\n if (unusedNotches < 1) unusedNotches = 0;\r\n\r\n // Correct number of filled/used notches images to show when player is overcharmed\r\n if (filledNotches > totalNotches) filledNotches = totalNotches;\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = `Notches:${pSpan}`;\r\n\r\n let notchImages = \"\";\r\n let notchNormalImage = `notch image`;\r\n let notchFilledImage = `notch image`;\r\n let notchOvercharmedImage = `notch image`;\r\n\r\n // First check filled (used) notches and fill them (skips if no filled notches)\r\n if (filledNotches > 0) {\r\n for (let i = 0; i < filledNotches; i++) {\r\n notchImages += notchFilledImage;\r\n }\r\n }\r\n\r\n // Second check overcharmed notches and fill them (skips if player is not overcharmed)\r\n if (overcharmedNotches > 0) {\r\n for (let i = 0; i < overcharmedNotches; i++) {\r\n notchImages += notchOvercharmedImage;\r\n }\r\n }\r\n\r\n // Lastly, fill all unused notches\r\n if (unusedNotches > 0) {\r\n for (let i = 0; i < unusedNotches; i++) {\r\n notchImages += notchNormalImage;\r\n }\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + notchImages + divEnd;\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is true or false, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified (use copy - data inside this object will be deleted)\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckIfDataTrue(divId, dataObject, playerData) {\r\n\r\n let {\r\n textPrefix,\r\n textSuffix,\r\n } = \"\";\r\n let sFillText = \"\";\r\n let wiki = \"\";\r\n\r\n for (let i in dataObject) {\r\n\r\n textPrefix = dataObject[i].name;\r\n textSuffix = dataObject[i].spoiler;\r\n (dataObject[i].hasOwnProperty(\"wiki\")) ? wiki = dataObject[i].wiki: wiki = \"\";\r\n\r\n switch (i) {\r\n case \"gotCharm_36\":\r\n // prevents green checkbox and adding 1% when only got one white fragment\r\n (playerData.gotQueenFragment === true && playerData.gotKingFragment === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n case \"gotCharm_37\":\r\n case \"gotCharm_38\":\r\n case \"gotCharm_39\":\r\n case \"gotCharm_40\":\r\n case \"killedGrimm\":\r\n case \"grimmChildLevel\":\r\n case \"killedHiveKnight\":\r\n case \"hasGodfinder\":\r\n // fades out the entries if save file is from older game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n if (i === \"grimmChildLevel\") {\r\n (playerData.grimmChildLevel >= 4) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n default:\r\n (playerData[i] === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n }\r\n\r\n sFillText += PrepareHTMLString(divId, textPrefix, textSuffix, wiki);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is 0 or > 0, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified (use copy - data inside this object will be deleted)\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckSpellLevel(divId, dataObject, playerData) {\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i in dataObject) {\r\n switch (i) {\r\n case \"vengefulSpirit\":\r\n case \"shadeSoul\":\r\n (playerData.fireballLevel >= dataObject[i].fireballLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n case \"desolateDive\":\r\n case \"descendingDark\":\r\n (playerData.quakeLevel >= dataObject[i].quakeLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n case \"howlingWraiths\":\r\n case \"abyssShriek\":\r\n (playerData.screamLevel >= dataObject[i].screamLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is 0 or > 0, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckWarriorDreams(divId, dataObject, playerData) {\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i in dataObject) {\r\n (playerData[i] >= 2) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the Godmaster Pantheons 1-4 are completed by the player, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing pantheon data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search in the save file\r\n */\r\nfunction CheckGodmasterDoors(divId, dataObject, playerData) {\r\n\r\n // appends \"pantheon\" to every array element\r\n // same as names in the database object\r\n let pantheon = [\"Master\", \"Artist\", \"Sage\", \"Knight\"].map((element) => \"pantheon\" + element);\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i = 0; i < 4; i++) {\r\n // compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(\"bossDoorStateTier\" + (i + 1)) === false) {\r\n CurrentDataBlank();\r\n sFillText += PrepareHTMLString(\r\n divId,\r\n `${dataObject[pantheon[i]].name}`,\r\n `${dataObject[pantheon[i]].spoiler}`,\r\n dataObject[pantheon[i]].wiki\r\n );\r\n } else {\r\n (playerData[\"bossDoorStateTier\" + (i + 1)].completed === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(\r\n divId,\r\n dataObject[pantheon[i]].name,\r\n dataObject[pantheon[i]].spoiler,\r\n dataObject[pantheon[i]].wiki\r\n );\r\n }\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies the level of player's nail upgrades, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing nail upgrades data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search in the save file\r\n */\r\nfunction CheckNailUpgrades(divId, dataObject, playerData) {\r\n\r\n // appends \"Nail\" to every array element\r\n // same as names in the database object\r\n let nail = [\"old\", \"sharpened\", \"channeled\", \"coiled\", \"pure\"].map((element) => element + \"Nail\");\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i = 0; i < 5; i++) {\r\n (playerData.nailSmithUpgrades >= i) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[nail[i]].name, dataObject[nail[i]].spoiler, dataObject[nail[i]].wiki);\r\n }\r\n if (divId.percent) divId.percent--; // subject one for the Old Nail\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object are true or false, and appends HTML accordingly. Creates a copy of dataObject.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {string} idText Text string inside save data to search for\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} worldData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckWorldDataTrue(divId, idText, dataObject, worldData) {\r\n let orderedArray = [];\r\n let size = ObjectLength(dataObject);\r\n let sFillText = \"\";\r\n\r\n // Order the items before displaying them (creates a copy of dataObject)\r\n for (let i in dataObject) {\r\n orderedArray.push([i, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki, false]);\r\n }\r\n\r\n // Search for completed items and mark them for display\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n for (let j = 0; j < size; j++) {\r\n if (worldData[i].id === idText && worldData[i].sceneName === orderedArray[j][0] && worldData[i].activated === true) {\r\n orderedArray[j][4] = true;\r\n }\r\n }\r\n }\r\n\r\n // Display the items as they were initially ordered\r\n for (let i = 0; i < size; i++) {\r\n CurrentDataFalse();\r\n if (orderedArray[i][4] === true) CurrentDataTrue(divId);\r\n sFillText += PrepareHTMLString(divId, orderedArray[i][1], orderedArray[i][2], orderedArray[i][3]);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object are true or false, or checks what values they have, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n * @param {object} worldData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckAdditionalThings(divId, dataObject, playerData, worldData, sceneData) {\r\n\r\n let {\r\n textPrefix,\r\n textSuffix,\r\n wiki\r\n } = \"\";\r\n let sFillText = \"\";\r\n\r\n // Start main loop\r\n for (let i in dataObject) {\r\n textPrefix = dataObject[i].name;\r\n (dataObject[i].hasOwnProperty(\"spoiler\")) ? textSuffix = dataObject[i].spoiler: textSuffix = \"\";\r\n (dataObject[i].hasOwnProperty(\"wiki\")) ? wiki = dataObject[i].wiki: wiki = \"\";\r\n\r\n let {\r\n amount,\r\n countTotal,\r\n total,\r\n unbroken,\r\n broken,\r\n discoveredTotal\r\n } = 0;\r\n\r\n switch (i) {\r\n case \"areaMaps\":\r\n case \"grubsCollected\":\r\n case \"dreamOrbs\":\r\n case \"fountainGeo\":\r\n case \"nailDamage\":\r\n case \"stationsOpened\":\r\n case \"charmSlots\":\r\n case \"whisperingRoots\":\r\n case \"journalEntriesCompleted\":\r\n case \"journalNotesCompleted\":\r\n case \"whiteDefenderDefeats\":\r\n case \"greyPrinceDefeats\":\r\n if (i === \"areaMaps\") {\r\n amount = CountMaps(dataObject[i].list);\r\n } else if (i === \"whisperingRoots\") {\r\n amount = CountWorldItem(\"Dream Plant\");\r\n } else {\r\n amount = playerData[i];\r\n }\r\n if (i === \"stationsOpened\") {\r\n if (playerData.openedHiddenStation === true) amount++;\r\n }\r\n countTotal = amount;\r\n if (i === \"journalEntriesCompleted\" || i === \"journalNotesCompleted\") {\r\n countTotal = amount + \" / \" + playerData.journalEntriesTotal;\r\n }\r\n if (i === \"grubsCollected\") LogMissingGrubs();\r\n\r\n textPrefix += \": \" + countTotal;\r\n\r\n if (i === \"greyPrinceDefeats\") {\r\n // backwards compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${dataObject[i].name}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n } else if (playerData.zoteDead === true || (playerData.zoteRescuedBuzzer === false && playerData.hasWalljump === true)) {\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n }\r\n }\r\n\r\n if (i === \"whiteDefenderDefeats\") {\r\n // backwards compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${dataObject[i].name}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n }\r\n (amount >= dataObject[i].max) ? CurrentDataTrue(): CurrentDataBlank();\r\n break;\r\n case \"geoPool\":\r\n case \"rancidEggs\":\r\n case \"jinnEggsSold\":\r\n case \"xunFlowerBrokeTimes\":\r\n textPrefix += \": \" + Math.abs(playerData[i]);\r\n (i === \"geoPool\" && playerData[i] > 0) ? CurrentDataBlank(): CurrentDataTrue();\r\n\r\n if (i === \"jinnEggsSold\") {\r\n // fade out if not on Steel Soul\r\n if (playerData.permadeathMode < 1) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n }\r\n\r\n break;\r\n case \"geoRocks\":\r\n discoveredTotal = sceneData.geoRocks.length;\r\n\r\n unbroken = CountGeoRocks(discoveredTotal, \"unbroken\");\r\n broken = CountGeoRocks(discoveredTotal, \"broken\");\r\n\r\n textPrefix += `: ${unbroken} | ${broken} | ${discoveredTotal}`;\r\n CurrentDataTrue();\r\n break;\r\n case \"shopkeeperKey\":\r\n (playerData.hasSlykey === true || playerData.gaveSlykey === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"elegantKey\":\r\n (playerData.hasWhiteKey === true || playerData.usedWhiteKey === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"loveKey\":\r\n (playerData.hasLoveKey === true || playerData.openedLoveDoor === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"simpleKeyCityOfTears\": // #2\r\n (FindWorldItem(\"Ruins1_17\", \"Shiny Item\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"simpleKeyAncientBasin\": // #3\r\n (FindWorldItem(\"Abyss_20\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"gotLurkerKey\":\r\n case \"nightmareLanternLit\":\r\n case \"killedPaleLurker\":\r\n case \"whiteDefenderDefeated\":\r\n case \"gotGrimmNotch\":\r\n case \"fragileGreed_unbreakable\":\r\n case \"fragileHealth_unbreakable\":\r\n case \"fragileStrength_unbreakable\":\r\n case \"killedBindingSeal\":\r\n case \"killedGodseekerMask\":\r\n case \"givenGodseekerFlower\":\r\n case \"givenOroFlower\":\r\n case \"givenWhiteLadyFlower\":\r\n case \"givenEmilitiaFlower\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreAncientBasin\": // #1\r\n (FindWorldItem(\"Abyss_17\", \"Battle Scene Ore\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreSeer\": // #2\r\n (playerData.dreamReward2 === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreCrystalPeak\": // #3\r\n (FindWorldItem(\"Mines_34\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreDeepnest\": // #4\r\n (FindWorldItem(\"Deepnest_32\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreGrubfather\": // #5\r\n (FindWorldItem(\"Crossroads_38\", \"Shiny Item Ore\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreColosseum\": // #6\r\n (FindWorldItem(\"Room_Colosseum_Silver\", \"Shiny Item\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"relicsWandererJournal\":\r\n case \"relicsHallownestSeal\":\r\n case \"relicsKingsIdol\":\r\n case \"relicsArcaneEgg\":\r\n total = playerData[dataObject[i].nameHeld] + playerData[dataObject[i].nameSold];\r\n (total >= dataObject[i].max) ? CurrentDataTrue(): CurrentDataBlank();\r\n textPrefix += \": \" + total;\r\n break;\r\n case \"bossDoorStateTier5\":\r\n if (playerData.hasOwnProperty(\"bossDoorStateTier5\") === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n } else {\r\n (playerData[i].completed === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n }\r\n break;\r\n case \"killsBindingSeal\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] == 0) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"killedVoidIdol_1\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n if (playerData[i] === false && (playerData.killedVoidIdol_2 === true || playerData.killedVoidIdol_3 === true)) CurrentDataTrue();\r\n break;\r\n case \"killedVoidIdol_2\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n if (playerData[i] === false && playerData.killedVoidIdol_3 === true) CurrentDataTrue();\r\n break;\r\n case \"killedVoidIdol_3\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"greyPrinceDefeated\":\r\n // compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n } else if (playerData.zoteDead === true || (playerData.zoteRescuedBuzzer === false && playerData.hasWalljump === true)) {\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataBlank();\r\n if (playerData.zoteRescuedBuzzer === true && playerData[i] === false) CurrentDataFalse();\r\n break;\r\n case \"zoteStatus\":\r\n CurrentDataFalse();\r\n if (playerData.zoteDead === true) {\r\n textPrefix = dataObject[i].nameNeglect;\r\n textSuffix = dataObject[i].spoilerNeglect;\r\n CurrentDataTrue();\r\n } else if (playerData.killedZote === true) {\r\n textPrefix = dataObject[i].nameRivalry;\r\n textSuffix = dataObject[i].spoilerRivalry;\r\n CurrentDataTrue();\r\n } else if (playerData.zoteRescuedBuzzer === false) {\r\n if (playerData.hasWalljump === false) {\r\n textPrefix = dataObject[i].nameTrappedVengefly;\r\n textSuffix = dataObject[i].spoilerTrappedVengefly;\r\n } else if (playerData.hasWalljump === true) {\r\n textPrefix = dataObject[i].nameNotRescuedVengefly;\r\n textSuffix = dataObject[i].spoilerNotRescuedVengefly;\r\n }\r\n } else if (playerData.zoteRescuedBuzzer === true) {\r\n if (playerData.zoteRescuedDeepnest === false) {\r\n textPrefix = dataObject[i].nameTrappedDeepnest;\r\n textSuffix = dataObject[i].spoilerTrappedDeepnest;\r\n } else if (playerData.zoteRescuedDeepnest === true) {\r\n if (playerData.killedZote === false) {\r\n textPrefix = dataObject[i].nameColosseum;\r\n textSuffix = dataObject[i].spoilerColosseum;\r\n }\r\n }\r\n }\r\n break;\r\n case \"nailsmithStatus\":\r\n CurrentDataFalse();\r\n if (playerData.nailsmithKilled === true) {\r\n textPrefix = dataObject[i].namePurity;\r\n textSuffix = dataObject[i].spoilerPurity;\r\n CurrentDataTrue();\r\n } else if (playerData.nailsmithConvoArt === true) {\r\n textPrefix = dataObject[i].nameHappyCouple;\r\n textSuffix = dataObject[i].spoilerHappyCouple;\r\n CurrentDataTrue();\r\n } else if (playerData.nailsmithSpared === true) {\r\n textPrefix = dataObject[i].nameSheoHutWaiting;\r\n textSuffix = dataObject[i].spoilerSheoHutWaiting;\r\n } else {\r\n textPrefix = dataObject[i].nameUpgradeNail;\r\n textSuffix = dataObject[i].spoilerUpgradeNail;\r\n }\r\n break;\r\n case \"mrMushroomState\":\r\n sFillText += CheckMrMushroomState(divId, dataObject[i], playerData[i]);\r\n break;\r\n default:\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n } // end switch (i)\r\n\r\n if (i === \"mrMushroomState\") continue;\r\n sFillText += PrepareHTMLString(divId, textPrefix, textSuffix, wiki);\r\n } // end for (let i in dataObject)\r\n\r\n AppendHTML(divId, sFillText);\r\n\r\n // ==========================================\r\n // -------------- Methods ---------------- //\r\n\r\n /**\r\n * Searches for a given item in the in-game area and returns true when found and collected.\r\n * @param {string} itemArea Code of the in-game area on the map\r\n * @param {string} itemId Name of the item\r\n * @returns {boolean}\r\n */\r\n function FindWorldItem(itemArea = \"\", itemId = \"Shiny Item\") {\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id === itemId) {\r\n if (worldData[i].sceneName === itemArea) {\r\n if (worldData[i].activated === true) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Searches for a given item that the player has found and returns the amount of them that the player completed.\r\n * @param {string} itemId Name of the item\r\n * @returns {number}\r\n */\r\n function CountWorldItem(itemId = \"\") {\r\n let total = 0;\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id === itemId) {\r\n if (worldData[i].activated === true) total++;\r\n }\r\n }\r\n return total;\r\n }\r\n\r\n /**\r\n * Counts the number of maps the player has acquired (from the list in an array)\r\n * @param {array} mapArray Array of strings with area map names\r\n * @returns {number}\r\n */\r\n function CountMaps(mapArray) {\r\n let totalMaps = 0;\r\n for (let i = 0, len = mapArray.length; i < len; i++) {\r\n if (playerData[mapArray[i]] === true) totalMaps++\r\n }\r\n return totalMaps;\r\n }\r\n\r\n /**\r\n * Counts the total amount of Geo Rocks Unbroken or Broken. Logs to console all the Unbroken IDs and Map locations.\r\n * @param {number} arrayLength How many items the Geo Rocks array is currently storing (for iteration)\r\n * @param {string} mode Choose which Geo Rocks to count (broken or unbroken)\r\n */\r\n function CountGeoRocks(arrayLength, mode = \"unbroken\") {\r\n\r\n let countTotal = 0;\r\n let geoRocksLog = [];\r\n\r\n if (mode === \"unbroken\") {\r\n for (let i = 0; i < arrayLength; i++) {\r\n if (sceneData.geoRocks[i].hitsLeft > 0) {\r\n countTotal++;\r\n geoRocksLog.push(`#${countTotal} 🏔️ ${sceneData.geoRocks[i].id} 🗺️ ${TranslateMapName(sceneData.geoRocks[i].sceneName)} ⌨️ ${sceneData.geoRocks[i].sceneName}`);\r\n }\r\n }\r\n\r\n if (!countTotal) {\r\n console.log(\"%cAll Geo Rocks Broken!\", \"color: #16c60c; font-weight: 700;\");\r\n } else {\r\n console.groupCollapsed(`%cUnbroken Geo Rocks (${countTotal}):`, \"color: #16c60c; font-weight: 700;\");\r\n\r\n for (let i = 0, length = geoRocksLog.length; i < length; i++) {\r\n console.log(geoRocksLog[i]);\r\n }\r\n\r\n console.groupEnd();\r\n }\r\n } else {\r\n for (let i = 0; i < arrayLength; i++) {\r\n if (sceneData.geoRocks[i].hitsLeft === 0) countTotal++;\r\n }\r\n }\r\n\r\n return countTotal;\r\n }\r\n\r\n /**\r\n * Compares and logs all unrescued Grubs in a list: IDs and map locations\r\n */\r\n function LogMissingGrubs() {\r\n\r\n let rescuedGrubsSceneList = [];\r\n\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id.includes(\"Grub Bottle\")) {\r\n if (worldData[i].activated === true) {\r\n // There are 3 duplicates of the same map scene name from older game save files. Prevents adding duplicates\r\n /* if (worldData[i].sceneName === \"Ruins2_11\" && worldData[i].id === \"Grub Bottle (1)\") {\r\n continue;\r\n } else if (worldData[i].sceneName === \"Ruins2_11\" && worldData[i].id === \"Grub Bottle (2)\") {\r\n continue;\r\n } else { */\r\n rescuedGrubsSceneList.push(worldData[i].sceneName);\r\n // }\r\n }\r\n }\r\n }\r\n\r\n // Filtering the reference database Grub list to include only the missing values\r\n let missingGrubsList = HK.GRUBS_LIST.filter(x => !rescuedGrubsSceneList.includes(x));\r\n let length = missingGrubsList.length;\r\n\r\n if (!length) {\r\n console.log(\"%cAll Grubs Rescued!\", \"color: #16c60c; font-weight: 700;\");\r\n } else {\r\n console.groupCollapsed(`%cUnrescued Grubs (${length}):`, \"color: #16c60c; font-weight: 700;\");\r\n\r\n for (let i = 0; i < length; i++) {\r\n console.log(`#${HK.GRUBS_LIST.indexOf(missingGrubsList[i]) + 1} 🗺️ ${TranslateMapName(missingGrubsList[i])} ⌨️ ${missingGrubsList[i]}`);\r\n }\r\n\r\n console.groupEnd();\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Checks and fills all the 7 locations of Mr Mushroom.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject object containing the Mr Mushroom name and spoilers/locations\r\n * @param {number} mrMushroomState playerData.mrMushroomState read from the save file. (0-8)\r\n */\r\nfunction CheckMrMushroomState(divId, dataObject, mrMushroomState = 0) {\r\n\r\n let sFillText = \"\";\r\n\r\n if (mrMushroomState > 1) {\r\n for (let i = 1; i <= 7; i++) {\r\n (mrMushroomState > i) ? CurrentDataTrue(): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, `${dataObject.name} #${i}`, dataObject[\"spoiler\" + i], dataObject.wiki);\r\n }\r\n } else {\r\n CurrentDataFalse();\r\n for (let i = 1; i <= 7; i++) {\r\n sFillText += PrepareHTMLString(divId, `${dataObject.name} #${i}`, dataObject[\"spoiler\" + i], dataObject.wiki);\r\n }\r\n }\r\n\r\n return sFillText;\r\n}\r\n\r\n/**\r\n * Checks, validates and shows hints to the player depending on their save progression, in chronological order. Shows only hint for the last uncompleted event. If Hollow Knight is defeated, shows a dummy text.\r\n * @param {object} divId object containing div hints ID and h2 title\r\n * @param {object} dataObject object containing all hints data\r\n * @param {object} playerData object containing HK Player Data to look in\r\n * @param {object} worldData object containing HK World Data to look in\r\n * @returns {bool} true when defeated Hollow Knight, false if not\r\n */\r\nfunction CheckHintsTrue(divId, dataObject, playerData, worldData) {\r\n\r\n let sFillText = \"\";\r\n\r\n if (playerData.killedHollowKnight === true) {\r\n // a text to show when player already finished their first playthrough (killed Hollow Knight first time)\r\n AppendHTML(divId, \"...a successful Knight who doesn't need hints anymore. The Knight explores the world of Hallownest patiently in constant search of its remaining secrets...\");\r\n return true;\r\n }\r\n\r\n for (let i in dataObject) {\r\n if (playerData[i] === true) {\r\n continue;\r\n } else if (i === \"fireballLevel\") {\r\n if (playerData[i] >= 1) {\r\n continue;\r\n } else {\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"Crossroads_04\") {\r\n let GruzMotherDefeated = false;\r\n\r\n for (let k = 0, length = worldData.length; k < length; k++) {\r\n if (worldData[k].id === \"Battle Scene\" && worldData[k].sceneName === \"Crossroads_04\" && worldData[k].activated === true) {\r\n GruzMotherDefeated = true;\r\n break;\r\n }\r\n }\r\n if (GruzMotherDefeated) {\r\n continue; // next dataObject (i)\r\n } else {\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"dungDefenderOrHornet2\") {\r\n if (playerData.defeatedDungDefender === true) {\r\n continue;\r\n } else if (playerData.hornetOutskirtsDefeated === true) {\r\n continue;\r\n } else { // if no Dung Defender or Hornet 2\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"ismaTearOrShadeCloak\") {\r\n if (playerData.hasAcidArmour === true) {\r\n continue;\r\n } else if (playerData.hasKingsBrand === true) {\r\n if (playerData.hasShadowDash === true) {\r\n continue;\r\n } else { // if Kings Brand but no Shade Cloak\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else { // if no Isma's Tear or Kings Brand\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else { // if anything from the hints list is not done\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } // end: for (let i in dataObject)\r\n\r\n AppendHTML(divId, sFillText);\r\n} // function CheckHintsTrue()\r\n\r\n/**\r\n * Pre-Cleans HTML. Reads contents inside text area and parses it to a JavaScript object. If not empty, runs HKCheckCompletion() to check data.\r\n */\r\nfunction HKReadTextArea(textAreaId = \"\") {\r\n\r\n // refresh and prepare document for filling with data from the save\r\n InitialHTMLPopulate(HK.DIV_ID);\r\n\r\n let contents = document.getElementById(textAreaId).value;\r\n\r\n if (contents.length) {\r\n\r\n try {\r\n let jsonObject = JSON.parse(contents);\r\n // console.log(jsonObject);\r\n if (jsonObject.hasOwnProperty(\"playerData\")) HKCheckCompletion(jsonObject);\r\n // console.log(jsonObject);\r\n } catch (error) {\r\n alert(`This seems like not a valid Hollow Knight save. ${error}`);\r\n console.info(`This seems like not a valid Hollow Knight save. ${error}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Populate all HTML with given ID and their initial data set as false (used at DOM load)\r\n * @param {object} divIdObj JavaScript Object containing all HTML IDs to populate\r\n */\r\nfunction InitialHTMLPopulate(divIdObj) {\r\n\r\n let sFillText = \"\";\r\n\r\n CurrentDataFalse();\r\n\r\n PrefillHTML(divIdObj);\r\n\r\n // Play Time\r\n CheckPlayTime(divIdObj.intro, 0)\r\n\r\n // Game Completion\r\n CheckCompletionPercent(divIdObj.intro, 0);\r\n\r\n // Save File Version\r\n CheckSaveFileVersion(divIdObj.intro);\r\n\r\n // Fleur Divide\r\n AppendHTML(divIdObj.intro, FLEUR_DIVIDE);\r\n\r\n // Health Masks\r\n CheckHealthMasks(divIdObj.intro);\r\n\r\n // Soul Orbs\r\n CheckSoulOrbs(divIdObj.intro, 99);\r\n\r\n // Charm Notches\r\n CheckNotches(divIdObj.intro);\r\n\r\n // Geo\r\n CheckGeo(divIdObj.intro);\r\n\r\n // Keep symbol False\r\n CurrentDataFalse();\r\n\r\n // First Hint Only\r\n AppendHTML(divIdObj.hints, HK.HINTS.fireballLevel.spoiler);\r\n\r\n // Temp arrays storing references (addresses) to objects for looping through them (duplicates important)\r\n let hkObjArray = [HK.BOSSES, HK.BOSSES_WORLD, HK.CHARMS, HK.EQUIPMENT, HK.NAILARTS, HK.MASKSHARDS, HK.MASKSHARDS_WORLD, HK.VESSELFRAGMENTS, HK.VESSELFRAGMENTS_WORLD, HK.DREAMERS, HK.COLOSSEUM, HK.DREAMNAIL, HK.WARRIORDREAMS, HK.GRIMMTROUPE, HK.LIFEBLOOD, HK.GODMASTER, HK.ESSENTIAL, HK.ACHIEVEMENTS, HK.STATISTICS];\r\n\r\n // duplicates and order important - must be the same as in hkObjArray[]\r\n let divObjArray = [divIdObj.bosses, divIdObj.bosses, divIdObj.charms, divIdObj.equipment, divIdObj.nailArts, divIdObj.maskShards, divIdObj.maskShards, divIdObj.vesselFragments, divIdObj.vesselFragments, divIdObj.dreamers, divIdObj.colosseum, divIdObj.dreamNail, divIdObj.warriorDreams, divIdObj.grimmTroupe, divIdObj.lifeblood, divIdObj.godmaster, divIdObj.essential, divIdObj.achievements, divIdObj.statistics];\r\n\r\n // Looped filling to reduce redundancy\r\n do {\r\n for (let entry in hkObjArray[0]) {\r\n if (entry === \"mrMushroomState\") continue;\r\n sFillText += PrepareHTMLString(divObjArray[0], hkObjArray[0][entry].name, hkObjArray[0][entry].spoiler, hkObjArray[0][entry].wiki);\r\n }\r\n if (divObjArray[0]) {\r\n AppendHTML(divObjArray[0], sFillText);\r\n }\r\n sFillText = \"\";\r\n divObjArray.shift();\r\n } while (hkObjArray.shift());\r\n\r\n // Nail Upgrades Misc\r\n sFillText = \"\";\r\n for (let i in HK.NAILUPGRADES) {\r\n sFillText += PrepareHTMLString(divIdObj.nailUpgrades, HK.NAILUPGRADES[i].name, HK.NAILUPGRADES[i].spoiler, HK.NAILUPGRADES[i].wiki);\r\n }\r\n AppendHTML(divIdObj.nailUpgrades, sFillText);\r\n\r\n // Spells Misc\r\n sFillText = \"\";\r\n for (let i in HK.SPELLS) {\r\n sFillText += PrepareHTMLString(divIdObj.spells, HK.SPELLS[i].name, HK.SPELLS[i].spoiler, HK.SPELLS[i].wiki);\r\n }\r\n AppendHTML(divIdObj.spells, sFillText);\r\n\r\n // Godmaster Doors Misc\r\n sFillText = \"\";\r\n for (let i in HK.GODMASTER_DOORS) {\r\n sFillText += PrepareHTMLString(divIdObj.godmaster, HK.GODMASTER_DOORS[i].name, HK.GODMASTER_DOORS[i].spoiler, HK.GODMASTER_DOORS[i].wiki);\r\n }\r\n AppendHTML(divIdObj.godmaster, sFillText);\r\n\r\n // Mr Mushroom 1 - 7\r\n sFillText = CheckMrMushroomState(divIdObj.achievements, HK.ACHIEVEMENTS.mrMushroomState);\r\n AppendHTML(divIdObj.achievements, sFillText);\r\n\r\n // Fleur Dividers\r\n AppendHTML(divIdObj.godmaster, FLEUR_DIVIDE);\r\n AppendHTML(divIdObj.essential, FLEUR_DIVIDE);\r\n AppendHTML(divIdObj.achievements, FLEUR_DIVIDE);\r\n\r\n // Check local storage first to set proper checkbox state before the below functions start (default is always unchecked)\r\n if (StorageAvailable('localStorage')) {\r\n if (localStorage.getItem(\"hkCheckboxHints\") === \"checked\") document.getElementById(\"checkbox-hints\").checked = true;\r\n if (localStorage.getItem(\"hkCheckboxSpoilers\") === \"checked\") document.getElementById(\"checkbox-spoilers\").checked = true;\r\n }\r\n\r\n // if (localStorage.getItem(\"hkCheckboxHints\") === \"checked\") document.getElementById(\"checkbox-hints\").checked = true;\r\n // if (localStorage.getItem(\"hkCheckboxSpoilers\") === \"checked\") document.getElementById(\"checkbox-spoilers\").checked = true;\r\n\r\n // Prevents wrong checkbox behaviour (must run after everything is finished)\r\n CheckboxHintsToggle();\r\n CheckboxSpoilersToggle();\r\n}\r\n\r\n/**\r\n * Zero-fill all \"percent\" properties in the JSON Object (reset to default)\r\n * @param {object} jsObj object containing the \"percent\" properties to be reset to 0\r\n */\r\nfunction ResetCompletion(jsObj) {\r\n\r\n for (let i in jsObj) {\r\n if (jsObj[i].hasOwnProperty(\"percent\")) jsObj[i].percent = 0;\r\n }\r\n}\r\n\r\n/**\r\n * Focuses, selects and copies to clipboard contents inside a clicked element. Includes optional tooltip update after the copying is done.\r\n * @param {MouseEvent} mouseEvent from the clicked element (AddEventListener)\r\n * @param {string} tooltipId Element ID of the tooltip to update\r\n * @param {string} tooltipFill Updated contents of the tooltip\r\n */\r\nfunction SelectCopyInputText(mouseEvent, tooltipId = \"\", tooltipFill = \"\") {\r\n\r\n const element = document.getElementById(mouseEvent.target.id);\r\n\r\n // this prevents the un-selected effect after clicking the second time (clears all selection first)\r\n if (window.getSelection) {\r\n window.getSelection().removeAllRanges();\r\n }\r\n\r\n element.focus(); // best to focus the element first before selecting\r\n element.select();\r\n element.setSelectionRange(0, 99999); // for mobile devices\r\n\r\n // Copy the text inside the text field to clipboard\r\n document.execCommand(\"copy\");\r\n\r\n // optional tooltip showing\r\n if (tooltipFill.length && tooltipId.length) FillInnerHTML(tooltipId, tooltipFill);\r\n}\r\n\r\n/**\r\n * Fills the innerHTML of a given HTML Element with provided contents\r\n * @param {string} elementId Element ID to update\r\n * @param {string} textFill Updated contents (innerHTML)\r\n */\r\nfunction FillInnerHTML(elementId, textFill) {\r\n\r\n const element = document.getElementById(elementId);\r\n element.innerHTML = textFill;\r\n}\r\n\r\n/* ----------------------- Event Listeners -------------------------- */\r\n\r\n// Populate HTML at load (before img and css)\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n InitialHTMLPopulate(HK.DIV_ID);\r\n});\r\n\r\n// Does an action when the save file location input text is clicked once (auto select & copy to clipboard)\r\ndocument.getElementById(\"save-location-input\").addEventListener(\"click\", (e) => {\r\n SelectCopyInputText(e, \"save-location-input-tooltip\", \"Copied save file location to clipboard\");\r\n}, false);\r\n\r\n// Choose File input field\r\ndocument.getElementById(\"save-location-input\").addEventListener(\"mouseout\", () => {\r\n FillInnerHTML(\"save-location-input-tooltip\", \"Click once to copy to clipboard\");\r\n}, false);\r\n\r\n// Analyze Text button\r\ndocument.getElementById(\"save-area-read\").addEventListener(\"click\", () => {\r\n HKReadTextArea(\"save-area\");\r\n}, false);\r\n\r\nexport {\r\n // to use in LoadSaveFile.js for auto-analyzing file after decoding\r\n HKCheckCompletion\r\n};","/* \r\n Parts of the code thanks to bloodorca https://github.com/bloodorca/hollow (base64.js, functions.js) with slight modifications.\r\n The steps used there for decryption were taken from KayDeeTee https://github.com/KayDeeTee/Hollow-Knight-SaveManager\r\n Without these two people the existence of this tool wouldn't be possible :)\r\n*/\r\n\r\n// ---------------- Constants ----------------- //\r\n\r\n// AES JS for file decryption\r\nconst aesjs = require(\"./aes-js.js\");\r\n// For reading the text area after save decoding\r\nimport {\r\n HKCheckCompletion\r\n} from \"./HKCheckCompletion.js\";\r\n\r\nconst CSHARP_HEADER = [0, 1, 0, 0, 0, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0]; // 22 bytes\r\n\r\nconst BASE64_ARRAY = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".split(\"\").map(c => c.charCodeAt(0));\r\nconst BASE64_DECODE_TABLE = new Map(BASE64_ARRAY.map((ord, i) => [ord, i]));\r\n\r\nconst AES_KEY = new TextEncoder().encode('UKu52ePUBwetZ9wNX88o54dnfKRu0T1l'); // encodes a string to Uint8Array (prepare for AES JS)\r\nconst ECB_STREAM_CIPHER = new aesjs.ModeOfOperation.ecb(AES_KEY); // create a new AES stream cipher object using the encoded key\r\n\r\n// ---------------- Variables ----------------- //\r\n\r\nlet benchLSFBegin, benchLSFEnd, benchTotal;\r\n\r\n// ---------------- Functions ----------------- //\r\n\r\n/**\r\n * Main input tag file function. Selects the first file, reads it as an Array Buffer, starts the processing of the file when loaded.\r\n * Starts benchmarking.\r\n * @param {FileList} input FileList object containing a list of File objects. The FileList behaves like an array, so you can check its length property to get the number of selected files.\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction LoadSaveFile(input, time) {\r\n\r\n const inputFileList = input.files;\r\n // console.info(\"Input length: \" + input.files.length)\r\n // Cease further processing if user canceled the file input dialog\r\n if (inputFileList.length < 1) return false;\r\n\r\n // start benchmark\r\n benchLSFBegin = time;\r\n\r\n // Prepares a File object from the first file of the input files for reading as an Array Buffer\r\n let inputFileObject = inputFileList[0];\r\n\r\n // Cleans the file list to avoid problems after subsequent use\r\n // document.getElementById(\"save-area-file\").value = \"\";\r\n\r\n // 1. read file\r\n // The ArrayBuffer object is used to represent a generic, fixed-length raw binary data buffer.\r\n // It is an array of bytes, often referred to in other languages as a \"byte array\".\r\n\r\n // new FileReader()\r\n let inputReader = new FileReader();\r\n // readAsArrayBuffer(file)\r\n inputReader.readAsArrayBuffer(inputFileObject);\r\n // addEventListener(\"load\", function) - to decode the file when loaded\r\n inputReader.addEventListener(\"load\", ProcessFileObject);\r\n}\r\n\r\n/**\r\n * Reads the File object as an Array Buffer and does all other operations (decoding, decryption, conversion to string, pasting to text area).\r\n * Launches the HKReadTextArea() function automatically after pasting the string to text area\r\n */\r\nfunction ProcessFileObject() {\r\n let inputArrayBuffer = this.result;\r\n let decodedString;\r\n\r\n // 2. Decode file\r\n\r\n try {\r\n // Uint8Array(ArrayBuffer) uint8_t equivalent in C\r\n inputArrayBuffer = new Uint8Array(inputArrayBuffer);\r\n\r\n // ArrayBuffer.slice()\r\n // The slice() method copies up to, but not including, the byte indicated by the end parameter.\r\n inputArrayBuffer.slice();\r\n\r\n // remove C# header and LengthPrefixedString header (ArrayBuffer)\r\n inputArrayBuffer = RemoveHeaders(inputArrayBuffer);\r\n\r\n // base64 Decoding (ArrayBuffer)\r\n inputArrayBuffer = Base64Decode(inputArrayBuffer);\r\n\r\n // AES decryption (ECB) removes pkcs7 padding (ArrayBuffer)\r\n inputArrayBuffer = AESDecryption(inputArrayBuffer);\r\n\r\n // Convert ArrayBuffer to string/text TextDecoder().decode(ArrayBuffer)\r\n decodedString = new TextDecoder().decode(inputArrayBuffer);\r\n\r\n // finish and show benchmark\r\n benchLSFEnd = new Date();\r\n console.info(\"LoadSaveFile() time (ms) =\", benchLSFEnd - benchLSFBegin);\r\n\r\n // 4. Analyze the decoded string immediately\r\n try {\r\n HKCheckCompletion(JSON.parse(decodedString));\r\n } catch (error) {\r\n alert(`This seems like not a valid Hollow Knight save. ${error}`);\r\n console.info(`This seems like not a valid Hollow Knight save. ${error}`);\r\n }\r\n\r\n // 5. Paste decoded string file to text area\r\n document.getElementById(\"save-area\").value = \"\";\r\n document.getElementById(\"save-area\").value = decodedString;\r\n\r\n /* (async () => {\r\n document.getElementById(\"save-area\").value = \"\";\r\n document.getElementById(\"save-area\").value = await decodedString;\r\n })(); */\r\n\r\n // finish total and show benchmark\r\n benchTotal = new Date();\r\n console.info(\"Total time (ms) =\", benchTotal - benchLSFBegin);\r\n\r\n // alert(`Decoded String: ${decodedString}`);\r\n // alert(`Array Buffer: ${inputArrayBuffer}`);\r\n } catch (error) {\r\n alert(`The file cannot be decoded. ${error}`);\r\n console.info(`The file cannot be decoded. ${error}`);\r\n }\r\n}\r\n\r\n/**\r\n * Removes C# header, LengthPrefixedString header and byte 11 at the end of the Uint8 Array Buffer\r\n * @param {Uint8Array} buffer Uint8Array buffer for removing the header from\r\n * @param {Uint8Array} csHeader Uint8Array for the C# header length calculation\r\n * @returns {Uint8Array}\r\n */\r\nfunction RemoveHeaders(buffer, csHeader = CSHARP_HEADER) {\r\n // Remove the fixed C# header and byte 11 at the end. \r\n buffer = buffer.subarray(csHeader.length, buffer.length - 1);\r\n\r\n // Remove LengthPrefixedString header\r\n let lengthCount = 0;\r\n for (let i = 0; i < 5; i++) {\r\n lengthCount++;\r\n if ((buffer[i] & 0x80) == 0) {\r\n break;\r\n }\r\n }\r\n\r\n return buffer.subarray(lengthCount);\r\n}\r\n\r\n/**\r\n * Decodes an Array Buffer using a Base64 decode table\r\n * @param {Uint8Array} buffer Uint8Array Buffer to decode\r\n * @returns {Uint8Array}\r\n */\r\nfunction Base64Decode(buffer) {\r\n buffer = new Uint8Array(buffer).slice();\r\n buffer = buffer.map(v => BASE64_DECODE_TABLE.get(v));\r\n\r\n // The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.\r\n let p = buffer.indexOf(64);\r\n let end;\r\n\r\n if (p != -1) {\r\n end = p;\r\n } else {\r\n end = buffer.length;\r\n }\r\n\r\n buffer = buffer.subarray(0, end);\r\n\r\n let output = new Uint8Array(3 * buffer.length / 4);\r\n let continuous = Math.floor(buffer.length / 4) * 4;\r\n\r\n for (let i = 0; i < continuous; i += 4) {\r\n let k = 3 * i / 4;\r\n output[k] = buffer[i] << 2 | buffer[i + 1] >> 4;\r\n output[k + 1] = (buffer[i + 1] & 0x0F) << 4 | buffer[i + 2] >> 2;\r\n output[k + 2] = (buffer[i + 2] & 0x03) << 6 | buffer[i + 3];\r\n }\r\n if (buffer[continuous] != undefined) {\r\n let k = 3 * continuous / 4;\r\n output[k] = buffer[continuous] << 2 | buffer[continuous + 1] >> 4;\r\n if (buffer[continuous + 2] != undefined) {\r\n output[k + 1] = (buffer[continuous + 1] & 0x0F) << 4 | buffer[continuous + 2] >> 2;\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\n/**\r\n * Decrypt an Uint8Array Buffer using aesjs (ECB) and a predefined AES key + remove pkcs7 padding\r\n * @param {Uint8Array} buffer Uint8Array buffer to decrypt\r\n * @returns {Uint8Array}\r\n */\r\nfunction AESDecryption(buffer, cipherObject = ECB_STREAM_CIPHER) {\r\n let output = cipherObject.decrypt(buffer);\r\n return output.subarray(0, -output[output.length - 1]);\r\n}\r\n\r\n// Assign actions (functions) to launch when a specific element is used\r\ndocument.getElementById(\"save-area-file\").addEventListener(\"change\", (event) => {\r\n LoadSaveFile(event.target, new Date());\r\n});\r\ndocument.getElementById(\"save-area-file\").addEventListener(\"click\", (mouseEvent) => {\r\n mouseEvent.target.value = \"\";\r\n});","/* eslint-disable */\n\"use strict\";\n\n(function (root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) {\n return false;\n }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function () {\n function toBytes(text) {\n var result = [],\n i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [],\n i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function () {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {\n 16: 10,\n 24: 12,\n 32: 14\n }\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function (key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function () {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC,\n tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0,\n r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function (plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16),\n tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function (ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16),\n tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function (key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function (plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function (ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function (key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function (plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function (ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function (key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) {\n segmentSize = 1;\n }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function (plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function (ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function (key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function (plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function (initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) {\n initialValue = 1;\n }\n\n if (typeof (initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function (value) {\n if (typeof (value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function (bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function () {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function (key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function (plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) {\n throw new Error('PKCS#7 invalid length');\n }\n\n var padder = data[data.length - 1];\n if (padder > 16) {\n throw new Error('PKCS#7 padding byte out of range');\n }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof (define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);","// ---------------- Hollow Knight Data Constant Objects ----------------- //\r\n/*\r\n This is the whole database for the tool, based on the .json save file data\r\n*/\r\n\r\nconst HK = {\r\n DIV_ID: {\r\n intro: {\r\n h2: \"Game Status\",\r\n id: \"hk-intro\",\r\n maxPercent: 112,\r\n saveVersion: \"0.0.0.0\"\r\n },\r\n hints: {\r\n h2: \"My friend Elderbug once told me about...\",\r\n id: \"hk-hints\",\r\n },\r\n bosses: {\r\n h2: \"Bosses\",\r\n id: \"hk-bosses\",\r\n percent: 0,\r\n maxPercent: 14\r\n },\r\n charms: {\r\n h2: \"Charms\",\r\n id: \"hk-charms\",\r\n percent: 0,\r\n maxPercent: 36\r\n },\r\n equipment: {\r\n h2: \"Equipment\",\r\n id: \"hk-equipment\",\r\n percent: 0,\r\n maxPercent: 14\r\n },\r\n nailUpgrades: {\r\n h2: \"Nail Upgrades\",\r\n id: \"hk-nailupgrades\",\r\n percent: 0,\r\n maxPercent: 4\r\n },\r\n nailArts: {\r\n h2: \"Nail Arts\",\r\n id: \"hk-nailarts\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n spells: {\r\n h2: \"Spells\",\r\n id: \"hk-spells\",\r\n percent: 0,\r\n maxPercent: 6\r\n },\r\n maskShards: {\r\n h2: \"Mask Shards\",\r\n id: \"hk-maskshards\",\r\n percent: 0,\r\n maxPercent: 4\r\n },\r\n vesselFragments: {\r\n h2: \"Vessel Fragments\",\r\n id: \"hk-vesselfragments\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n dreamNail: {\r\n h2: \"Dream Nail and Essence\",\r\n id: \"hk-dreamnail\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n warriorDreams: {\r\n h2: \"Warrior Dreams\",\r\n id: \"hk-warriordreams\",\r\n percent: 0,\r\n maxPercent: 7\r\n },\r\n dreamers: {\r\n h2: \"Dreamers\",\r\n id: \"hk-dreamers\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n colosseum: {\r\n h2: \"Colosseum of Fools\",\r\n id: \"hk-colosseum\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n grimmTroupe: {\r\n h2: \"Grimm Troupe Content Pack\",\r\n id: \"hk-grimmtroupe\",\r\n percent: 0,\r\n maxPercent: 6\r\n },\r\n lifeblood: {\r\n h2: \"Lifeblood Content Pack\",\r\n id: \"hk-lifeblood\",\r\n percent: 0,\r\n maxPercent: 1\r\n },\r\n godmaster: {\r\n h2: \"Godmaster Content Pack\",\r\n id: \"hk-godmaster\",\r\n percent: 0,\r\n maxPercent: 5\r\n },\r\n essential: {\r\n h2: \"Game Completion Essentials\",\r\n id: \"hk-essential\"\r\n },\r\n achievements: {\r\n h2: \"Achievements Essentials\",\r\n id: \"hk-achievements\"\r\n },\r\n statistics: {\r\n h2: \"Game Statistics\",\r\n id: \"hk-statistics\"\r\n }\r\n },\r\n // hk-hints\r\n HINTS: {\r\n fireballLevel: {\r\n spoiler: \"...a mysterious shaman living in a dwelling below the town of Dirtmouth\"\r\n },\r\n hornet1Defeated: {\r\n spoiler: \"...a skilled protector guarding ruins in a lush green forest\"\r\n },\r\n hasDash: {\r\n spoiler: \"...an old cloak lying on a green path near a broken shell\"\r\n },\r\n hasWalljump: {\r\n spoiler: \"...a sharp claw lying forgotten somewhere amidst the insect village\"\r\n },\r\n Crossroads_04: {\r\n spoiler: \"...a mother sleeping peacefully below the town of Dirtmouth\"\r\n },\r\n slyRescued: {\r\n spoiler: \"...a fellow town bug who seems to be lost somewhere in the crossroads\"\r\n },\r\n hasLantern: {\r\n spoiler: \"...a precious item able to carry some light to even the darkest places\"\r\n },\r\n hasSuperDash: {\r\n spoiler: \"...some powerful crystal beating somewhere deep inside the mines\"\r\n },\r\n hasDreamNail: {\r\n spoiler: \"...a weapon from a dream world only found where the souls can peacefully rest\"\r\n },\r\n killedInfectedKnight: {\r\n spoiler: \"...a shattered corpse forgotten in a windy cave in the ancient depths below the city\"\r\n },\r\n hasDoubleJump: {\r\n spoiler: \"...something incredibly light dropped by a monarchfly in the ancient depths below the city\"\r\n },\r\n killedBlackKnight: {\r\n spoiler: \"...discarded shells of black guards lying on the floor of a high spire\"\r\n },\r\n lurienDefeated: {\r\n spoiler: \"...a dreamer sleeping somewhere at the top of a high spire\"\r\n },\r\n dungDefenderOrHornet2: {\r\n spoiler: \"...a skilled combatant living at the heart of the sewers or watching over a shell amidst ash falling from the sky\"\r\n },\r\n ismaTearOrShadeCloak: {\r\n spoiler: \"...something precious in a grove accessed from the waterways or a massive royal door guarding a cloak behind the darkness\"\r\n },\r\n defeatedMegaJelly: {\r\n spoiler: \"...an intelligent being floating inside hidden archives behind the fog\"\r\n },\r\n monomonDefeated: {\r\n spoiler: \"...a dreamer sleeping somewhere hidden in a foggy area\"\r\n },\r\n hegemolDefeated: {\r\n spoiler: \"...a dreamer sleeping near a spider nest area\"\r\n },\r\n killedHollowKnight: {\r\n spoiler: \"...a disturbance inside a black temple\"\r\n },\r\n },\r\n // hk-bosses\r\n BOSSES: {\r\n falseKnightDefeated: {\r\n name: \"False Knight\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"False_Knight\"\r\n }, // \"Battle Scene\" - \"Crossroads_10\" ?\r\n hornet1Defeated: {\r\n name: \"Hornet Protector\",\r\n spoiler: \"Greenpath\",\r\n wiki: \"Hornet_Protector\"\r\n },\r\n defeatedDungDefender: {\r\n name: \"Dung Defender\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Dung_Defender\"\r\n },\r\n mageLordDefeated: {\r\n name: \"Soul Master\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Soul_Master\"\r\n },\r\n killedBlackKnight: {\r\n name: \"Watcher Knights\",\r\n spoiler: \"City of Tears: Watcher's Spire\",\r\n wiki: \"Watcher_Knight\"\r\n },\r\n collectorDefeated: {\r\n name: \"The Collector\",\r\n spoiler: \"City of Tears: Tower of Love\",\r\n wiki: \"Collector\"\r\n },\r\n defeatedMantisLords: {\r\n name: \"Mantis Lords\",\r\n spoiler: \"Mantis Village\",\r\n wiki: \"Mantis_Lords\"\r\n },\r\n defeatedMegaJelly: {\r\n name: \"Uumuu\",\r\n spoiler: \"Fog Canyon: Teacher's Archives\",\r\n wiki: \"Uumuu\"\r\n },\r\n hornetOutskirtsDefeated: {\r\n name: \"Hornet Sentinel\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"Hornet_Sentinel\"\r\n },\r\n killedInfectedKnight: {\r\n name: \"Broken Vessel\",\r\n spoiler: \"Ancient Basin\",\r\n wiki: \"Broken_Vessel\"\r\n },\r\n killedMimicSpider: {\r\n name: \"Nosk\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Nosk\"\r\n }, // \"Battle Scene\" - \"Deepnest_32\" ?\r\n killedTraitorLord: {\r\n name: \"Traitor Lord\",\r\n spoiler: \"Queen's Gardens\",\r\n wiki: \"Traitor_Lord\"\r\n } // \"Battle Scene\" - \"Fungus3_23\" ?\r\n },\r\n // hk-bosses\r\n // \"Battle Scene\" sceneData.persistentBoolItems.id\r\n BOSSES_WORLD: {\r\n Crossroads_04: {\r\n name: \"Gruz Mother\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Gruz_Mother\"\r\n }, // killedBigFly\r\n Crossroads_09: {\r\n name: \"Brooding Mawlek\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Brooding_Mawlek\"\r\n } // killedMawlek\r\n },\r\n // reference: https://radiance.host/apidocs/Charms.html\r\n CHARMS: {\r\n gotCharm_1: {\r\n name: \"#1 Gathering Swarm\",\r\n spoiler: \"Sly: 300 Geo\",\r\n wiki: \"Gathering_Swarm\"\r\n }, // 1\r\n gotCharm_2: {\r\n name: \"#2 Wayward Compass\",\r\n spoiler: \"Iselda: 220 Geo\",\r\n wiki: \"Wayward_Compass\"\r\n }, // 1\r\n gotCharm_3: {\r\n name: \"#3 Grubsong\",\r\n spoiler: \"Grubfather: 10 Grubs rescued\",\r\n wiki: \"Grubsong\"\r\n }, // 1\r\n gotCharm_4: {\r\n name: \"#4 Stalwart Shell\",\r\n spoiler: \"Sly: 200 Geo\",\r\n wiki: \"Stalwart_Shell\"\r\n }, // 2\r\n gotCharm_5: {\r\n name: \"#5 Baldur Shell\",\r\n spoiler: \"Howling Cliffs\",\r\n wiki: \"Baldur_Shell\"\r\n }, // 2\r\n gotCharm_6: {\r\n name: \"#6 Fury of the Fallen\",\r\n spoiler: \"King's Pass\",\r\n wiki: \"Fury_of_the_Fallen\"\r\n }, // 2\r\n gotCharm_7: {\r\n name: \"#7 Quick Focus\",\r\n spoiler: \"Salubra: 800 Geo\",\r\n wiki: \"Quick_Focus\"\r\n }, // 3\r\n gotCharm_8: {\r\n name: \"#8 Lifeblood Heart\",\r\n spoiler: \"Salubra: 250 Geo\",\r\n wiki: \"Lifeblood_Heart\"\r\n }, // 2\r\n gotCharm_9: {\r\n name: \"#9 Lifeblood Core\",\r\n spoiler: \"The Abyss: 15 Lifeblood masks\",\r\n wiki: \"Lifeblood_Core\"\r\n }, // 3\r\n gotCharm_10: {\r\n name: \"#10 Defender's Crest\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Defender's_Crest\"\r\n }, // 1\r\n gotCharm_11: {\r\n name: \"#11 Flukenest\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Flukenest\"\r\n }, // 3\r\n gotCharm_12: {\r\n name: \"#12 Thorns of Agony\",\r\n spoiler: \"Greenpath\",\r\n wiki: \"Thorns_of_Agony\"\r\n }, // 1\r\n gotCharm_13: {\r\n name: \"#13 Mark of Pride\",\r\n spoiler: \"Mantis Village\",\r\n wiki: \"Mark_of_Pride\"\r\n }, // 3\r\n gotCharm_14: {\r\n name: \"#14 Steady Body\",\r\n spoiler: \"Salubra: 120 Geo\",\r\n wiki: \"Steady_Body\"\r\n }, // 1\r\n gotCharm_15: {\r\n name: \"#15 Heavy Blow\",\r\n spoiler: \"Sly: 350 Geo + Shopkeeper's Key\",\r\n wiki: \"Heavy_Blow\"\r\n }, // 2\r\n gotCharm_16: {\r\n name: \"#16 Sharp Shadow\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Sharp_Shadow\"\r\n }, // 2\r\n gotCharm_17: {\r\n name: \"#17 Spore Shroom\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Spore_Shroom\"\r\n }, // 1\r\n gotCharm_18: {\r\n name: \"#18 Longnail\",\r\n spoiler: \"Salubra: 300 Geo\",\r\n wiki: \"Longnail\"\r\n }, // 2\r\n gotCharm_19: {\r\n name: \"#19 Shaman Stone\",\r\n spoiler: \"Salubra: 220 Geo\",\r\n wiki: \"Shaman_Stone\"\r\n }, // 3\r\n gotCharm_20: {\r\n name: \"#20 Soul Catcher\",\r\n spoiler: \"Forgotten Crossroads: Ancestral Mound\",\r\n wiki: \"Soul_Catcher\"\r\n }, // 2\r\n gotCharm_21: {\r\n name: \"#21 Soul Eater\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Soul_Eater\"\r\n }, // 4\r\n gotCharm_22: {\r\n name: \"#22 Glowing Womb\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Glowing_Womb\"\r\n }, // 2\r\n gotCharm_23: {\r\n name: \"#23 Fragile Heart\",\r\n spoiler: \"Leg Eater: 350/280 Geo\",\r\n wiki: \"Fragile_Heart\"\r\n }, // 2\r\n gotCharm_24: {\r\n name: \"#24 Fragile Greed\",\r\n spoiler: \"Leg Eater: 250/200 Geo\",\r\n wiki: \"Fragile_Greed\"\r\n }, // 2\r\n gotCharm_25: {\r\n name: \"#25 Fragile Strength\",\r\n spoiler: \"Leg Eater: 600/480 Geo\",\r\n wiki: \"Fragile_Strength\"\r\n }, // 3\r\n gotCharm_26: {\r\n name: \"#26 Nailmaster’s Glory\",\r\n spoiler: \"Sly: All Nail Arts\",\r\n wiki: \"Nailmaster's_Glory\"\r\n }, // 1\r\n gotCharm_27: {\r\n name: \"#27 Joni’s Blessing\",\r\n spoiler: \"Howling Cliffs: Joni's Repose\",\r\n wiki: \"Joni's_Blessing\"\r\n }, // 4\r\n gotCharm_28: {\r\n name: \"#28 Shape of Unn\",\r\n spoiler: \"Greenpath: Lake of Unn\",\r\n wiki: \"Shape_of_Unn\"\r\n }, // 2\r\n gotCharm_29: {\r\n name: \"#29 Hiveblood\",\r\n spoiler: \"The Hive\",\r\n wiki: \"Hiveblood\"\r\n }, // 4\r\n gotCharm_30: {\r\n name: \"#30 Dream Wielder\",\r\n spoiler: \"Seer: 500 Essence\",\r\n wiki: \"Dream_Wielder\"\r\n }, // 1\r\n gotCharm_31: {\r\n name: \"#31 Dashmaster\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Dashmaster\"\r\n }, // 2\r\n gotCharm_32: {\r\n name: \"#32 Quick Slash\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"Quick_Slash\"\r\n }, // 3\r\n gotCharm_33: {\r\n name: \"#33 Spell Twister\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Spell_Twister\"\r\n }, // 2\r\n gotCharm_34: {\r\n name: \"#34 Deep Focus\",\r\n spoiler: \"Crystal Peak\",\r\n wiki: \"Deep_Focus\"\r\n }, // 4\r\n gotCharm_35: {\r\n name: \"#35 Grubberfly’s Elegy\",\r\n spoiler: \"Grubfather: 46 Grubs rescued\",\r\n wiki: \"Grubberfly's_Elegy\"\r\n }, // 3\r\n gotCharm_36: {\r\n name: \"#36 Kingsoul\",\r\n spoiler: \"Queen's Gardens + Ancient Basin\",\r\n wiki: \"Kingsoul\"\r\n }, // 5\r\n },\r\n COLOSSEUM: {\r\n colosseumBronzeCompleted: {\r\n name: \"Trial of the Warrior\",\r\n spoiler: \"Little Fool: 100 Geo\",\r\n wiki: \"Trial_of_the_Warrior\"\r\n },\r\n colosseumSilverCompleted: {\r\n name: \"Trial of the Conqueror\",\r\n spoiler: \"Little Fool: 450 Geo + Warrior completed\",\r\n wiki: \"Trial_of_the_Conqueror\"\r\n },\r\n colosseumGoldCompleted: {\r\n name: \"Trial of the Fool\",\r\n spoiler: \"Little Fool: 800 Geo + Conqueror completed\",\r\n wiki: \"Trial_of_the_Fool\"\r\n },\r\n },\r\n DREAMERS: {\r\n lurienDefeated: {\r\n name: \"Lurien the Watcher\",\r\n spoiler: \"City of Tears: Watcher's Spire\",\r\n wiki: \"Lurien\"\r\n },\r\n monomonDefeated: {\r\n name: \"Monomon the Teacher\",\r\n spoiler: \"Fog Canyon: Teacher's Archives\",\r\n wiki: \"Monomon\"\r\n },\r\n hegemolDefeated: {\r\n name: \"Herrah the Beast\",\r\n spoiler: \"Deepnest: Distant Village\",\r\n wiki: \"Herrah\"\r\n }\r\n },\r\n DREAMNAIL: {\r\n hasDreamNail: {\r\n name: \"Dream Nail acquired\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Dream_Nail\"\r\n },\r\n dreamNailUpgraded: {\r\n name: \"Awoken Dream Nail\",\r\n spoiler: \"Seer: 1800 Essence\",\r\n wiki: \"Dream_Nail#Awoken_Dream_Nail\"\r\n },\r\n mothDeparted: {\r\n name: \"Hear the Seer's final words\",\r\n spoiler: \"Seer: 2400 Essence\",\r\n wiki: \"Seer\"\r\n }\r\n },\r\n EQUIPMENT: {\r\n hasDash: {\r\n name: \"Mothwing Cloak\",\r\n spoiler: \"Greenpath: Dash ability\",\r\n wiki: \"Mothwing_Cloak\"\r\n },\r\n hasWalljump: {\r\n name: \"Mantis Claw\",\r\n spoiler: \"Mantis Village: Wall Jump ability\",\r\n wiki: \"Mantis_Claw\"\r\n },\r\n hasSuperDash: {\r\n name: \"Crystal Heart\",\r\n spoiler: \"Crystal Peak: Super Dash ability\",\r\n wiki: \"Crystal_Heart\"\r\n },\r\n hasDoubleJump: {\r\n name: \"Monarch Wings\",\r\n spoiler: \"Ancient Basin: Double Jump ability\",\r\n wiki: \"Monarch_Wings\"\r\n },\r\n hasAcidArmour: {\r\n name: \"Isma's Tear\",\r\n spoiler: \"Royal Waterways: Acid Armour ability\",\r\n wiki: \"Isma's_Tear\"\r\n },\r\n hasKingsBrand: {\r\n name: \"King's Brand\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"King's_Brand\"\r\n },\r\n hasShadowDash: {\r\n name: \"Shade Cloak\",\r\n spoiler: \"The Abyss: Shadow Dash ability\",\r\n wiki: \"Shade_Cloak\"\r\n }\r\n },\r\n MASKSHARDS: {\r\n slyShellFrag1: {\r\n name: \"Mask Shard #1\",\r\n spoiler: \"Sly: 150 Geo\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag2: {\r\n name: \"Mask Shard #2\",\r\n spoiler: \"Sly: 500 Geo\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag3: {\r\n name: \"Mask Shard #3\",\r\n spoiler: \"Sly: 800 Geo + Shopkeeper's Key\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag4: {\r\n name: \"Mask Shard #4\",\r\n spoiler: \"Sly: 1500 Geo + Shopkeeper's Key\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n dreamReward7: {\r\n name: \"Mask Shard #5\",\r\n spoiler: \"Seer: 1500 Essence\",\r\n wiki: \"Mask_Shard\"\r\n }\r\n },\r\n // \"Heart Piece\" sceneData.persistentBoolItems.id\r\n MASKSHARDS_WORLD: {\r\n Crossroads_13: {\r\n name: \"Mask Shard #6\",\r\n spoiler: \"Forgotten Crossroads: below Hot Springs\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Crossroads_09: {\r\n name: \"Mask Shard #7\",\r\n spoiler: \"Forgotten Crossroads: Brooding Mawlek\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Crossroads_38: {\r\n name: \"Mask Shard #8\",\r\n spoiler: \"Grubfather: 5 Grubs rescued\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Room_Bretta: {\r\n name: \"Mask Shard #9\",\r\n spoiler: \"Dirtmouth: Bretta's Room, rescue Bretta\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus2_01: {\r\n name: \"Mask Shard #10\",\r\n spoiler: \"Queen's Station, requires Mantis Claw\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Waterways_04b: {\r\n name: \"Mask Shard #11\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus1_36: {\r\n name: \"Mask Shard #12\",\r\n spoiler: \"Greenpath: Stone Sanctuary\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Mines_32: {\r\n name: \"Mask Shard #13\",\r\n spoiler: \"Crystal Peak: Enraged Guardian\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus2_25: {\r\n name: \"Mask Shard #14\",\r\n spoiler: \"Deepnest: entrance from Fungal Wastes\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Hive_04: {\r\n name: \"Mask Shard #15\",\r\n spoiler: \"The Hive, use Hive Guardian\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Room_Mansion: {\r\n name: \"Mask Shard #16\",\r\n spoiler: \"Resting Grounds: Delicate Flower\",\r\n wiki: \"Mask_Shard\"\r\n }\r\n },\r\n VESSELFRAGMENTS: {\r\n slyVesselFrag1: {\r\n name: \"Vessel Fragment #1\",\r\n spoiler: \"Sly: 550 Geo\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n slyVesselFrag2: {\r\n name: \"Vessel Fragment #2\",\r\n spoiler: \"Sly: 900 Geo + Shopkeeper's Key\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n dreamReward5: {\r\n name: \"Vessel Fragment #3\",\r\n spoiler: \"Seer: 700 Essence\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n vesselFragStagNest: {\r\n name: \"Vessel Fragment #4\",\r\n spoiler: \"Stag Nest\",\r\n wiki: \"Vessel_Fragment\"\r\n }\r\n },\r\n // \"Vessel Fragment\" sceneData.persistentBoolItems.id\r\n VESSELFRAGMENTS_WORLD: {\r\n Fungus1_13: {\r\n name: \"Vessel Fragment #5\",\r\n spoiler: \"Greenpath: near Queen's Gardens exit\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Crossroads_37: {\r\n name: \"Vessel Fragment #6\",\r\n spoiler: \"Forgotten Crossroads: unlock City of Tears lift\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Ruins2_09: {\r\n name: \"Vessel Fragment #7\",\r\n spoiler: \"Above King's Station\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Deepnest_38: {\r\n name: \"Vessel Fragment #8\",\r\n spoiler: \"Deepnest: Goam platforming challenge\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Abyss_04: {\r\n name: \"Vessel Fragment #9\",\r\n spoiler: \"Ancient Basin Fountain: 3000 Geo\",\r\n wiki: \"Vessel_Fragment\"\r\n }\r\n },\r\n NAILARTS: {\r\n /* this is correct - somehow Team Cherry switched the names here */\r\n hasDashSlash: {\r\n name: \"Great Slash\",\r\n spoiler: \"Nailmaster Sheo: Greenpath\",\r\n wiki: \"Great_Slash\"\r\n },\r\n /* this is correct - somehow Team Cherry switched the names here */\r\n hasUpwardSlash: {\r\n name: \"Dash Slash\",\r\n spoiler: \"Nailmaster Oro: Kingdom's Edge, 800 Geo\",\r\n wiki: \"Dash_Slash\"\r\n },\r\n hasCyclone: {\r\n name: \"Cyclone Slash\",\r\n spoiler: \"Nailmaster Mato: Howling Cliffs\",\r\n wiki: \"Cyclone_Slash\"\r\n },\r\n },\r\n NAILUPGRADES: {\r\n oldNail: {\r\n name: \"#0 Old Nail\",\r\n spoiler: \"Starting Weapon\",\r\n wiki: \"Nail\"\r\n },\r\n sharpenedNail: {\r\n name: \"#1 Sharpened Nail\",\r\n spoiler: \"Nailsmith: 250 Geo\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n channeledNail: {\r\n name: \"#2 Channeled Nail\",\r\n spoiler: \"Nailsmith: 800 Geo + 1 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n coiledNail: {\r\n name: \"#3 Coiled Nail\",\r\n spoiler: \"Nailsmith: 2000 Geo + 2 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n pureNail: {\r\n name: \"#4 Pure Nail\",\r\n spoiler: \"Nailsmith: 4000 Geo + 3 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n }\r\n },\r\n SPELLS: {\r\n vengefulSpirit: {\r\n fireballLevel: 1,\r\n name: \"Vengeful Spirit\",\r\n spoiler: \"Forgotten Crossroads: Ancestral Mound\",\r\n wiki: \"Vengeful_Spirit\"\r\n },\r\n shadeSoul: {\r\n fireballLevel: 2,\r\n name: \"Shade Soul\",\r\n spoiler: \"City of Tears: Soul Sanctum + Elegant Key\",\r\n wiki: \"Shade_Soul\"\r\n },\r\n desolateDive: {\r\n quakeLevel: 1,\r\n name: \"Desolate Dive\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Desolate_Dive\"\r\n },\r\n descendingDark: {\r\n quakeLevel: 2,\r\n name: \"Descending Dark\",\r\n spoiler: \"Crystal Peak: Crystallised Mound\",\r\n wiki: \"Descending_Dark\"\r\n },\r\n howlingWraiths: {\r\n screamLevel: 1,\r\n name: \"Howling Wraiths\",\r\n spoiler: \"Fog Canyon: Overgrown Mound\",\r\n wiki: \"Howling_Wraiths\"\r\n },\r\n abyssShriek: {\r\n screamLevel: 2,\r\n name: \"Abyss Shriek\",\r\n spoiler: \"The Abyss, use Howling Wraiths on podium\",\r\n wiki: \"Abyss_Shriek\"\r\n }\r\n },\r\n WARRIORDREAMS: {\r\n xeroDefeated: {\r\n name: \"Xero\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Xero\"\r\n },\r\n noEyesDefeated: {\r\n name: \"No Eyes\",\r\n spoiler: \"Greenpath: Stone Sanctuary\",\r\n wiki: \"No_Eyes\"\r\n },\r\n elderHuDefeated: {\r\n name: \"Elder Hu\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Elder_Hu\"\r\n },\r\n aladarSlugDefeated: {\r\n name: \"Gorb\",\r\n spoiler: \"Howling Cliffs\",\r\n wiki: \"Gorb\"\r\n },\r\n mumCaterpillarDefeated: {\r\n name: \"Marmu\",\r\n spoiler: \"Queen's Gardens\",\r\n wiki: \"Marmu\"\r\n },\r\n galienDefeated: {\r\n name: \"Galien\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Galien\"\r\n },\r\n markothDefeated: {\r\n name: \"Markoth\",\r\n spoiler: \"Kingdom's Edge, requires Shade Cloak\",\r\n wiki: \"Markoth\"\r\n },\r\n },\r\n GRIMMTROUPE: {\r\n gotCharm_37: {\r\n name: \"Charm #37 Sprintmaster\",\r\n spoiler: \"Sly: 400 Geo + Shopkeeper's Key\",\r\n wiki: \"Sprintmaster\"\r\n },\r\n gotCharm_38: {\r\n name: \"Charm #38 Dreamshield\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Dreamshield\"\r\n },\r\n gotCharm_39: {\r\n name: \"Charm #39 Weaversong\",\r\n spoiler: \"Deepnest: Weaver's Den\",\r\n wiki: \"Weaversong\"\r\n },\r\n gotCharm_40: {\r\n name: \"Charm #40 Grimmchild / Carefree Melody\",\r\n spoiler: \"Dirtmouth\",\r\n wiki: \"Grimmchild\"\r\n },\r\n killedGrimm: {\r\n name: \"Troupe Leader Grimm\",\r\n spoiler: \"Dirtmouth, collect 6 flames\",\r\n wiki: \"Grimm\"\r\n },\r\n grimmChildLevel: {\r\n name: \"Nightmare King Grimm / Banishment\",\r\n spoiler: \"Dirtmouth or Howling Cliffs\",\r\n wiki: \"Category:The_Grimm_Troupe#Banishment\"\r\n }\r\n },\r\n LIFEBLOOD: {\r\n killedHiveKnight: {\r\n name: \"Hive Knight\",\r\n spoiler: \"The Hive, guards Hiveblood charm\",\r\n wiki: \"Hive_Knight\"\r\n }\r\n },\r\n GODMASTER_DOORS: {\r\n pantheonMaster: {\r\n name: \"#1 Pantheon of the Master\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Master\"\r\n },\r\n pantheonArtist: {\r\n name: \"#2 Pantheon of the Artist\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Artist\"\r\n },\r\n pantheonSage: {\r\n name: \"#3 Pantheon of the Sage\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Sage\"\r\n },\r\n pantheonKnight: {\r\n name: \"#4 Pantheon of the Knight\",\r\n spoiler: \"Godhome, complete #1, #2 and #3\",\r\n wiki: \"Pantheon_of_the_Knight\"\r\n }\r\n },\r\n GODMASTER: {\r\n hasGodfinder: {\r\n name: \"Godtuner\",\r\n spoiler: \"Junk Pit, requires Simple Key\",\r\n wiki: \"Godtuner\"\r\n }\r\n },\r\n ESSENTIAL: {\r\n grubsCollected: {\r\n name: \"Grubs Rescued\",\r\n spoiler: \"out of 46 total\",\r\n max: 46,\r\n wiki: \"Grub\"\r\n },\r\n dreamOrbs: {\r\n name: \"Essence Collected\",\r\n spoiler: \"Dream Nail (2400 for completion)\",\r\n max: 2400,\r\n wiki: \"Dream_Nail#Essence\"\r\n },\r\n stationsOpened: {\r\n name: \"Stag Stations opened\",\r\n spoiler: \"out of 10 total\",\r\n max: 10,\r\n wiki: \"Fast_Travel_(Hollow_Knight)#Locations_and_Prices\"\r\n },\r\n fountainGeo: {\r\n name: \"Geo in Fountain\",\r\n spoiler: \"Ancient Basin: 3000 Geo maximum\",\r\n max: 3000,\r\n wiki: \"Ancient_Basin#Description\"\r\n },\r\n slyRescued: {\r\n name: \"Sly Rescued\",\r\n spoiler: \"Forgotten Crossroads, near Gruz Mother\",\r\n wiki: \"Sly\"\r\n },\r\n brettaRescued: {\r\n name: \"Bretta Rescued\",\r\n spoiler: \"Fungal Wastes, near Dashmaster charm statue\",\r\n wiki: \"Bretta\"\r\n },\r\n hasLantern: {\r\n name: \"Lumafly Lantern\",\r\n spoiler: \"Sly: 1800 Geo\",\r\n wiki: \"Lumafly_Lantern\"\r\n },\r\n shopkeeperKey: {\r\n name: \"Shopkeeper's Key\",\r\n spoiler: \"Crystal Peak, below Quirrel location\",\r\n wiki: \"Shopkeeper's_Key\"\r\n },\r\n elegantKey: {\r\n name: \"Elegant Key\",\r\n spoiler: \"Sly: 800 Geo + Shopkeeper's Key\",\r\n wiki: \"Elegant_Key\"\r\n },\r\n loveKey: {\r\n name: \"Love Key\",\r\n spoiler: \"Queen's Gardens, near Fungal Wastes\",\r\n wiki: \"Love_Key\"\r\n },\r\n slySimpleKey: {\r\n name: \"Simple Key #1\",\r\n spoiler: \"Sly: 950 Geo\",\r\n wiki: \"Simple_Key\"\r\n },\r\n simpleKeyCityOfTears: {\r\n name: \"Simple Key #2\",\r\n spoiler: \"City of Tears, below west Stag Station\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n simpleKeyAncientBasin: {\r\n name: \"Simple Key #3\",\r\n spoiler: \"Ancient Basin, below Broken Vessel\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n gotLurkerKey: {\r\n name: \"Simple Key #4\",\r\n spoiler: \"Colosseum of Fools: Pale Lurker's Retreat\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n paleOreAncientBasin: {\r\n name: \"Pale Ore #1\",\r\n spoiler: \"Ancient Basin, near Cloth location\",\r\n wiki: \"Pale_Ore\"\r\n },\r\n paleOreSeer: {\r\n name: \"Pale Ore #2\",\r\n spoiler: \"Seer: 300 Essence\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreCrystalPeak: {\r\n name: \"Pale Ore #3\",\r\n spoiler: \"Crystal Peak: Hallownest's Crown\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreDeepnest: {\r\n name: \"Pale Ore #4\",\r\n spoiler: \"Deepnest, Nosk reward\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreGrubfather: {\r\n name: \"Pale Ore #5\",\r\n spoiler: \"Grubfather: 31 Grubs rescued\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreColosseum: {\r\n name: \"Pale Ore #6\",\r\n spoiler: \"Colosseum of Fools: Trial of the Conqueror\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n waterwaysAcidDrained: {\r\n name: \"Acid Drained\",\r\n spoiler: \"Royal Waterways, lever after Dung Defender\",\r\n wiki: \"Royal_Waterways#Sub-area:_Isma.27s_Grove\"\r\n },\r\n hasTramPass: {\r\n name: \"Tram Pass\",\r\n spoiler: \"Deepnest, Failed Tramway\",\r\n wiki: \"Tram_Pass\"\r\n },\r\n gotQueenFragment: {\r\n name: \"White Fragment: Queen\",\r\n spoiler: \"White Lady, Queen's Gardens\",\r\n wiki: \"Kingsoul#How_to_Acquire\"\r\n },\r\n gotKingFragment: {\r\n name: \"White Fragment: King\",\r\n spoiler: \"Pale King, White Palace\",\r\n wiki: \"Kingsoul#How_to_Acquire\"\r\n },\r\n nightmareLanternLit: {\r\n name: \"Nightmare Lantern Lit\",\r\n spoiler: \"Howling Cliffs, corpse of a large bug\",\r\n wiki: \"Howling_Cliffs#Nightmare_Lantern_Chamber\"\r\n }\r\n },\r\n GRUBS_LIST: [\"Crossroads_35\", \"Crossroads_03\", \"Crossroads_05\", \"Crossroads_48\", \"Crossroads_31\", \"Fungus1_06\", \"Fungus1_07\", \"Fungus1_21\", \"Fungus1_28\", \"Fungus2_18\", \"Ruins1_05\", \"Mines_04\", \"Mines_03\", \"Mines_31\", \"Mines_19\", \"Ruins1_32\", \"RestingGrounds_10\", \"Ruins_House_01\", \"Mines_35\", \"Mines_16\", \"Waterways_04\", \"Waterways_13\", \"Abyss_19\", \"Abyss_17\", \"Mines_24\", \"Fungus1_13\", \"Fungus3_47\", \"Fungus3_10\", \"Fungus3_48\", \"Fungus3_22\", \"Ruins2_07\", \"Ruins2_11\", \"Ruins2_11\", \"Ruins2_11\", \"Deepnest_East_11\", \"Deepnest_East_14\", \"Fungus2_20\", \"Ruins2_03\", \"Deepnest_36\", \"Deepnest_03\", \"Deepnest_31\", \"Deepnest_39\", \"Deepnest_Spider_Town\", \"Waterways_14\", \"Hive_03\", \"Hive_04\"],\r\n ACHIEVEMENTS: {\r\n areaMaps: {\r\n name: \"Area Maps\",\r\n spoiler: \"Cornifer and Iselda (out of 13)\",\r\n max: 13,\r\n list: [\r\n \"mapCrossroads\", \"mapGreenpath\", \"mapFogCanyon\", \"mapRoyalGardens\", \"mapFungalWastes\", \"mapCity\", \"mapWaterways\", \"mapMines\", \"mapDeepnest\", \"mapCliffs\", \"mapOutskirts\", \"mapRestingGrounds\", \"mapAbyss\"\r\n ],\r\n wiki: \"Map_and_Quill#Maps\"\r\n },\r\n journalEntriesCompleted: {\r\n name: \"Creatures Encountered\",\r\n spoiler: \"Hunter's Journal (164 max)\",\r\n max: 164,\r\n wiki: \"Category:Enemies_(Hollow_Knight)#Compendium\"\r\n },\r\n journalNotesCompleted: {\r\n name: \"Hunter Notes Completed\",\r\n spoiler: \"Hunter's Journal (164 max)\",\r\n max: 164,\r\n wiki: \"Category:Enemies_(Hollow_Knight)#Compendium\"\r\n },\r\n hasJournal: {\r\n name: \"Hunter's Journal\",\r\n spoiler: \"Greenpath: Hunter\",\r\n wiki: \"Hunter%27s_Journal\"\r\n },\r\n hasHuntersMark: {\r\n name: \"Hunter's Mark\",\r\n spoiler: \"Greenpath: Hunter\",\r\n wiki: \"Hunter's_Mark\"\r\n },\r\n killedPrayerSlug: {\r\n name: \"Journal: Maggot\",\r\n spoiler: \"Forgotten Crossroads: False Knight secret room\",\r\n wiki: \"Maggot\"\r\n },\r\n killedOrangeScuttler: {\r\n name: \"Journal: Lightseed\",\r\n spoiler: \"Infected Crossroads\",\r\n wiki: \"Lightseed\"\r\n },\r\n killedPigeon: {\r\n name: \"Journal: Maskfly\",\r\n spoiler: \"Greenpath, Queen's Gardens\",\r\n wiki: \"Maskfly\"\r\n },\r\n killedLazyFlyer: {\r\n name: \"Journal: Aluba\",\r\n spoiler: \"Lake of Unn, Queen's Gardens (near White Lady)\",\r\n wiki: \"Aluba\"\r\n },\r\n killedAcidFlyer: {\r\n name: \"Journal: Duranda\",\r\n spoiler: \"Greenpath: Nailmaster Sheo's tent path\",\r\n wiki: \"Duranda\"\r\n },\r\n killedAcidWalker: {\r\n name: \"Journal: Durandoo\",\r\n spoiler: \"Greenpath, Queen's Gardens\",\r\n wiki: \"Durandoo\"\r\n },\r\n killedPlantShooter: {\r\n name: \"Journal: Gulka\",\r\n spoiler: \"Greenpath: west of Stone Sanctuary\",\r\n wiki: \"Gulka\"\r\n },\r\n killedMushroomTurret: {\r\n name: \"Journal: Sporg\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Sporg\"\r\n },\r\n killedZapBug: {\r\n name: \"Journal: Charged Lumafly\",\r\n spoiler: \"Fog Canyon: Teacher's Archives (tank)\",\r\n wiki: \"Charged_Lumafly\"\r\n },\r\n killedCrystalCrawler: {\r\n name: \"Journal: Crystal Crawler\",\r\n spoiler: \"Crystal Peak\",\r\n wiki: \"Crystal_Crawler\"\r\n },\r\n killedGorgeousHusk: {\r\n name: \"Journal: Gorgeous Husk\",\r\n spoiler: \"City of Tears: secret room\",\r\n wiki: \"Gorgeous_Husk\"\r\n },\r\n killedWorm: {\r\n name: \"Journal: Goam\",\r\n spoiler: \"Infected Crossroads: near Fungal Wastes entrance\",\r\n wiki: \"Goam\"\r\n },\r\n killedBigCentipede: {\r\n name: \"Journal: Garpede\",\r\n spoiler: \"Deepnest: east of Hot Spring\",\r\n wiki: \"Garpede\"\r\n },\r\n killedAbyssTendril: {\r\n name: \"Journal: Void Tendrils\",\r\n spoiler: \"The Abyss: secret room\",\r\n wiki: \"Void_Tendrils\"\r\n },\r\n killedPaleLurker: {\r\n name: \"Journal: Pale Lurker\",\r\n spoiler: \"Colosseum of Fools: secret area\",\r\n wiki: \"Pale_Lurker\"\r\n },\r\n falseKnightDreamDefeated: {\r\n name: \"Failed Champion\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Failed_Champion\"\r\n },\r\n mageLordDreamDefeated: {\r\n name: \"Soul Tyrant\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Soul_Tyrant\"\r\n },\r\n infectedKnightDreamDefeated: {\r\n name: \"Lost Kin\",\r\n spoiler: \"Ancient Basin\",\r\n wiki: \"Lost_Kin\"\r\n },\r\n whiteDefenderDefeated: {\r\n name: \"White Defender\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"White_Defender\"\r\n },\r\n greyPrinceDefeated: {\r\n name: \"Grey Prince Zote\",\r\n spoiler: \"Dirtmouth: Bretta's Room (per save choice)\",\r\n wiki: \"Grey_Prince_Zote\"\r\n },\r\n killedHollowKnight: {\r\n name: \"Hollow Knight\",\r\n spoiler: \"Forgotten Crossroads: Black Egg Temple\",\r\n wiki: \"Hollow_Knight\"\r\n },\r\n salubraBlessing: {\r\n name: \"Salubra's Blessing\",\r\n spoiler: \"Salubra: 800 Geo + all 40 Charms found\",\r\n wiki: \"Salubra's_Blessing\"\r\n },\r\n gotShadeCharm: {\r\n name: \"Void Heart\",\r\n spoiler: \"Kingsoul + Birthplace\",\r\n wiki: \"Void_Heart\"\r\n },\r\n killedFinalBoss: {\r\n name: \"Radiance\",\r\n spoiler: \"Forgotten Crossroads: Black Egg Temple\",\r\n wiki: \"Radiance\"\r\n },\r\n bossDoorStateTier5: {\r\n name: \"Embrace the Void\",\r\n spoiler: \"Godhome: Pantheon of Hallownest\",\r\n wiki: \"Pantheon_of_Hallownest\"\r\n },\r\n zoteStatus: {\r\n name: \"Zote Status\",\r\n nameNeglect: \"Zote Choice: Neglect\",\r\n nameRivalry: \"Zote Choice: Rivalry\",\r\n nameTrappedVengefly: \"Zote Status: Vengefly\",\r\n nameNotRescuedVengefly: \"Zote Status: Greenpath\",\r\n nameTrappedDeepnest: \"Zote Status: Deepnest\",\r\n nameColosseum: \"Zote Status: Colosseum of Fools\",\r\n spoiler: \"One achievement per save file\",\r\n spoilerNeglect: \"Left Zote to die\",\r\n spoilerRivalry: \"Defeated Zote in the Colosseum of Fools\",\r\n spoilerTrappedVengefly: \"Greenpath, defeat Vengefly King\",\r\n spoilerNotRescuedVengefly: \"Check what happened with Zote\",\r\n spoilerTrappedDeepnest: \"Deepnest, free from cobwebs\",\r\n spoilerColosseum: \"Trial of the Warrior\",\r\n wiki: \"Zote\"\r\n },\r\n nailsmithStatus: {\r\n name: \"Nailsmith Status\",\r\n nameHappyCouple: \"Nailsmith Choice: Happy Couple\",\r\n namePurity: \"Nailsmith Choice: Purity\",\r\n nameSheoHutWaiting: \"Nailsmith Status: Sheo\",\r\n nameUpgradeNail: \"Nailsmith Status: Waiting\",\r\n spoiler: \"One achievement per save file\",\r\n spoilerHappyCouple: \"Found a new calling\",\r\n spoilerPurity: \"Slain with Pure Nail\",\r\n spoilerSheoHutWaiting: \"Waiting at Sheo's Hut\",\r\n spoilerUpgradeNail: \"Upgrade Nail to Pure Nail\",\r\n wiki: \"Nailsmith\"\r\n },\r\n mrMushroomState: {\r\n name: \"Mr Mushroom\",\r\n spoiler1: \"Fungal Wastes, near Cornifer\",\r\n spoiler2: \"Kingdom's Edge, near Isma's Grove\",\r\n spoiler3: \"Deepnest, near Galien\",\r\n spoiler4: \"Howling Cliffs, near Nailmaster Mato\",\r\n spoiler5: \"Ancient Basin, near Monarch Wings\",\r\n spoiler6: \"Fog Canyon, near Overgrown Mound\",\r\n spoiler7: \"King's Pass, game starting location\",\r\n wiki: \"Mister_Mushroom\"\r\n }\r\n /* \r\n Mr Mushroom data\r\n case SplitName.MrMushroom1: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 2; break;\r\n case SplitName.MrMushroom2: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 3; break;\r\n case SplitName.MrMushroom3: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 4; break;\r\n case SplitName.MrMushroom4: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 5; break;\r\n case SplitName.MrMushroom5: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 6; break;\r\n case SplitName.MrMushroom6: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 7; break;\r\n case SplitName.MrMushroom7: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 8; break;\r\n\r\n \"mrMushroomState\": 4, < this is the current location of Mr Mushroom (Howling Cliffs)\r\n\r\n 1. Spawn of self, their minds unite, (Fungal Wastes)\r\n 2. Aside the source of acid blight, (Kingdom's Edge, near Isma's Grove)\r\n 3. Aglow in darkest, winding depths, (Deepnest, near Galien)\r\n 4. Winds all howl above fossilstone steps, (Howling Cliffs)\r\n 5. Monarchflys in air set still, (Ancient Basin, near the Monarch Wings location)\r\n 6. To Root's domain and snail once shrill, (Fog Canyon, near Overgrown Mound)\r\n 7. Path of Wyrm, at new lands entered, (King's Pass)\r\n 8. There journeys end. The kingdom ventured.\r\n */\r\n },\r\n STATISTICS: {\r\n nailDamage: {\r\n name: \"Nail Damage\",\r\n spoiler: \"Nailsmith upgrades, City of Tears\",\r\n max: 21,\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n charmSlots: {\r\n name: \"Charm Notches\",\r\n spoiler: \"out of 11 total\",\r\n max: 11,\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n whisperingRoots: {\r\n name: \"Whispering Roots completed\",\r\n spoiler: \"Dream Nail (out of 15)\",\r\n max: 15,\r\n wiki: \"Whispering_Root\"\r\n },\r\n relicsWandererJournal: {\r\n name: \"Relic #1 found total\",\r\n nameHeld: \"trinket1\",\r\n nameSold: \"soldTrinket1\",\r\n spoiler: \"Wanderer's Journal (out of 14)\",\r\n max: 14,\r\n wiki: \"Wanderer's_Journal\"\r\n },\r\n relicsHallownestSeal: {\r\n name: \"Relic #2 found total\",\r\n nameHeld: \"trinket2\",\r\n nameSold: \"soldTrinket2\",\r\n spoiler: \"Hallownest Seal (out of 17)\",\r\n max: 17,\r\n wiki: \"Hallownest_Seal\"\r\n },\r\n relicsKingsIdol: {\r\n name: \"Relic #3 found total\",\r\n nameHeld: \"trinket3\",\r\n nameSold: \"soldTrinket3\",\r\n spoiler: \"King's Idol (out of 8)\",\r\n max: 8,\r\n wiki: \"King's_Idol\"\r\n },\r\n relicsArcaneEgg: {\r\n name: \"Relic #4 found total\",\r\n nameHeld: \"trinket4\",\r\n nameSold: \"soldTrinket4\",\r\n spoiler: \"Arcane Egg (4 max, 1 missable)\",\r\n max: 4,\r\n wiki: \"Arcane_Egg\"\r\n },\r\n geoRocks: {\r\n name: \"Geo Rocks\",\r\n spoiler: \"Unbroken/Broken/Discovered Total\",\r\n wiki: \"Geo#How_to_Acquire\"\r\n },\r\n // not ghostCoins\r\n geoPool: {\r\n name: \"Shade Geo\",\r\n spoiler: \"Amount of Geo the Shade is currently holding\",\r\n min: 0,\r\n wiki: \"Shade\"\r\n },\r\n rancidEggs: {\r\n name: \"Rancid Eggs\",\r\n spoiler: \"Find: Hallownest, Buy: Sly, Tuk\",\r\n wiki: \"Rancid_Egg\"\r\n },\r\n jinnEggsSold: {\r\n name: \"Rancid Eggs sold to Jinn\",\r\n spoiler: \"Only in Steel Soul Mode\",\r\n wiki: \"Jinn\"\r\n },\r\n xunFlowerBrokeTimes: {\r\n name: \"Delicate Flowers broken\",\r\n spoiler: \"Resting Grounds: Grey Mourner\",\r\n wiki: \"Delicate_Flower\"\r\n },\r\n notchShroomOgres: {\r\n name: \"Charm Notch #1\",\r\n spoiler: \"Fungal Wastes: Shroom Ogres room\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch1: {\r\n name: \"Charm Notch #2\",\r\n spoiler: \"Salubra: 120 Geo + 5 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch2: {\r\n name: \"Charm Notch #3\",\r\n spoiler: \"Salubra: 500 Geo + 10 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch3: {\r\n name: \"Charm Notch #4\",\r\n spoiler: \"Salubra: 900 Geo + 18 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch4: {\r\n name: \"Charm Notch #5\",\r\n spoiler: \"Salubra: 1400 Geo + 25 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n colosseumBronzeCompleted: {\r\n name: \"Charm Notch #6\",\r\n spoiler: \"Colosseum of Fools: Trial of the Warrior\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n notchFogCanyon: {\r\n name: \"Charm Notch #7\",\r\n spoiler: \"Fog Canyon: explosive eggs room\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n gotGrimmNotch: {\r\n name: \"Charm Notch #8\",\r\n spoiler: \"Dirtmouth: Troupe Leader Grimm\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n hasDreamGate: {\r\n name: \"Dreamgate\",\r\n spoiler: \"Seer: 900 Essence\",\r\n wiki: \"Dreamgate\"\r\n },\r\n fragileGreed_unbreakable: {\r\n name: \"Unbreakable Greed\",\r\n spoiler: \"Divine: Fragile Greed + 9000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n fragileHealth_unbreakable: {\r\n name: \"Unbreakable Heart\",\r\n spoiler: \"Divine: Fragile Heart + 12000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n fragileStrength_unbreakable: {\r\n name: \"Unbreakable Strength\",\r\n spoiler: \"Divine: Fragile Strength + 15000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n killedMenderBug: {\r\n name: \"Journal: Menderbug\",\r\n spoiler: \"Forgotten Crossroads + destroy sign\",\r\n wiki: \"Menderbug\"\r\n },\r\n killedBindingSeal: {\r\n name: \"Journal: Seal of Binding\",\r\n spoiler: \"White Palace: Path of Pain completion\",\r\n wiki: \"Seal_of_Binding\"\r\n },\r\n killedGodseekerMask: {\r\n name: \"Journal: Weathered Mask\",\r\n spoiler: \"Godhome: Land of Storms\",\r\n wiki: \"Weathered_Mask\"\r\n },\r\n killedVoidIdol_1: {\r\n name: \"Journal: Void Idol Attuned\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n killedVoidIdol_2: {\r\n name: \"Journal: Void Idol Ascended\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n killedVoidIdol_3: {\r\n name: \"Journal: Void Idol Radiant\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n elderbugGaveFlower: {\r\n name: \"Delicate Flower: Elderbug\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenGodseekerFlower: {\r\n name: \"Delicate Flower: Godseeker\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenOroFlower: {\r\n name: \"Delicate Flower: Nailmaster Oro\",\r\n spoiler: \"D. from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenWhiteLadyFlower: {\r\n name: \"Delicate Flower: White Lady\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenEmilitiaFlower: {\r\n name: \"Delicate Flower: Emilitia\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n whitePalaceSecretRoomVisited: {\r\n name: \"White Palace Secret Room visited\",\r\n spoiler: \"Help identify this room!\",\r\n wiki: \"White_Palace#Secret_rooms\"\r\n },\r\n killsBindingSeal: {\r\n name: \"Path of Pain\",\r\n spoiler: \"White Palace: main secret area\",\r\n wiki: \"White_Palace#Sub-area:_Path_of_Pain\"\r\n },\r\n whiteDefenderDefeats: {\r\n name: \"White Defender times defeated\",\r\n spoiler: \"Royal Waterways (5 max)\",\r\n max: 5,\r\n wiki: \"White_Defender\"\r\n },\r\n greyPrinceDefeats: {\r\n name: \"Grey Prince Zote times defeated\",\r\n spoiler: \"Dirtmouth (10 max)\",\r\n max: 10,\r\n wiki: \"Grey_Prince_Zote\"\r\n },\r\n }\r\n};\r\n\r\nexport default HK;","const MAP = {\r\n \"Tutorial_01\": \"King's_Pass\",\r\n \"Town\": \"Dirtmouth\",\r\n \"Room_shop\": \"Sly\",\r\n \"Room_Sly_Storeroom\": \"Sly_Basement\",\r\n \"Room_Town_Stag_Station\": \"Dirtmouth_Stag\",\r\n \"Room_mapper\": \"Iselda\",\r\n \"Room_Bretta\": \"Bretta\",\r\n \"Room_Bretta_Basement\": \"Bretta_Basement\",\r\n \"Room_Ouiji\": \"Jiji\",\r\n \"Room_Jinn\": \"Jinn\",\r\n \"Room_Tram_RG\": \"Upper_Tram\",\r\n \"Room_Tram\": \"Lower_Tram\",\r\n \"Crossroads_01\": \"Crossroads_Well\",\r\n \"Crossroads_02\": \"Crossroads_Outside_Temple\",\r\n \"Crossroads_03\": \"Crossroads_Outside_Stag\",\r\n \"Crossroads_04\": \"Crossroads_Gruz_Mother\",\r\n \"Crossroads_05\": \"Crossroads_Central_Grub\",\r\n \"Crossroads_06\": \"Crossroads_Outside_Mound\",\r\n \"Crossroads_07\": \"Crossroads_Gruzzer\",\r\n \"Crossroads_08\": \"Crossroads_Aspid_Arena\",\r\n \"Crossroads_09\": \"Crossroads_Mawlek_Boss\",\r\n \"Crossroads_10\": \"Crossroads_False_Knight_Arena\",\r\n \"Crossroads_11_alt\": \"Crossroads_Greenpath_Entrance\",\r\n \"Crossroads_12\": \"Crossroads_Corridor_to_Acid_Grub\",\r\n \"Crossroads_13\": \"Crossroads_Goam_Mask_Shard\",\r\n \"Crossroads_14\": \"Crossroads_Outside_Myla\",\r\n \"Crossroads_15\": \"Crossroads_Corridor_to_Tram\",\r\n \"Crossroads_16\": \"Crossroads_Above_Lever\",\r\n \"Crossroads_18\": \"Crossroads_Fungal_Entrance\",\r\n \"Crossroads_19\": \"Crossroads_Before_Gruz_Mother\",\r\n \"Crossroads_21\": \"Crossroads_Outside_False_Knight\",\r\n \"Crossroads_22\": \"Crossroads_Glowing_Womb_Arena\",\r\n \"Crossroads_25\": \"Crossroads_Mawlek_Entrance\",\r\n \"Crossroads_27\": \"Crossroads_Outside_Tram\",\r\n \"Crossroads_30\": \"Crossroads_Hot_Spring\",\r\n \"Crossroads_31\": \"Crossroads_Spike_Grub\",\r\n \"Crossroads_33\": \"Crossroads_Cornifer\",\r\n \"Crossroads_35\": \"Crossroads_Acid_Grub\",\r\n \"Crossroads_36\": \"Crossroads_Mawlek_Middle\",\r\n \"Crossroads_37\": \"Crossroads_Vessel_Fragment\",\r\n \"Crossroads_38\": \"Crossroads_Grubfather\",\r\n \"Crossroads_39\": \"Crossroads_Corridor_Right_of_Temple\",\r\n \"Crossroads_40\": \"Crossroads_Corridor_Right_of_Central_Grub\",\r\n \"Crossroads_42\": \"Crossroads_Right_Of_Mask_Shard\",\r\n \"Crossroads_43\": \"Crossroads_Corridor_to_Elevator\",\r\n \"Crossroads_45\": \"Crossroads_Myla\",\r\n \"Crossroads_46\": \"Crossroads_Tram\",\r\n \"Crossroads_47\": \"Crossroads_Stag\",\r\n \"Crossroads_48\": \"Crossroads_Guarded_Grub\",\r\n \"Crossroads_49\": \"Crossroads_Elevator\",\r\n \"Crossroads_52\": \"Crossroads_Goam_Journal\",\r\n \"Crossroads_ShamanTemple\": \"Crossroads_Ancestral_Mound\",\r\n \"Room_Mender_House\": \"Crossroads_Menderbug\",\r\n \"Room_Charm_Shop\": \"Crossroads_Salubra\",\r\n \"Room_ruinhouse\": \"Crossroads_Rescue_Sly\",\r\n \"Room_temple\": \"Crossroads_Inside_Temple\",\r\n \"Fungus1_01\": \"Greenpath_Entrance\",\r\n \"Fungus1_01b\": \"Greenpath_Waterfall_Bench\",\r\n \"Fungus1_02\": \"Greenpath_First_Hornet_Sighting\",\r\n \"Fungus1_03\": \"Greenpath_Storerooms\",\r\n \"Fungus1_04\": \"Greenpath_Hornet\",\r\n \"Fungus1_05\": \"Greenpath_Outside_Thorns\",\r\n \"Fungus1_06\": \"Greenpath_Cornifer\",\r\n \"Fungus1_07\": \"Greenpath_Outside_Hunter\",\r\n \"Fungus1_08\": \"Greenpath_Hunter\",\r\n \"Fungus1_09\": \"Greenpath_Sheo_Gauntlet\",\r\n \"Fungus1_10\": \"Greenpath_Acid_Bridge\",\r\n \"Fungus1_11\": \"Greenpath_Above_Fog_Canyon\",\r\n \"Fungus1_12\": \"Greenpath_MMC_Corridor\",\r\n \"Fungus1_13\": \"Greenpath_Whispering_Root\",\r\n \"Fungus1_14\": \"Greenpath_Thorns_of_Agony\",\r\n \"Fungus1_15\": \"Greenpath_Outside_Sheo\",\r\n \"Fungus1_16_alt\": \"Greenpath_Stag\",\r\n \"Fungus1_17\": \"Greenpath_Charger_Corridor\",\r\n \"Fungus1_19\": \"Greenpath_Above_Sanctuary_Bench\",\r\n \"Fungus1_20_v02\": \"Greenpath_Vengefly_King\",\r\n \"Fungus1_21\": \"Greenpath_Outside_Hornet\",\r\n \"Fungus1_22\": \"Greenpath_Outside_Stag\",\r\n \"Fungus1_25\": \"Greenpath_Corridor_to_Unn\",\r\n \"Fungus1_26\": \"Greenpath_Lake_Of_Unn\",\r\n \"Fungus1_29\": \"Greenpath_Massive_Moss_Charger\",\r\n \"Fungus1_30\": \"Greenpath_Below_Toll_Bench\",\r\n \"Fungus1_31\": \"Greenpath_Toll\",\r\n \"Fungus1_32\": \"Greenpath_Moss_Knight_Arena\",\r\n \"Fungus1_34\": \"Greenpath_Stone_Sanctuary_Entrance\",\r\n \"Fungus1_35\": \"Greenpath_Stone_Sanctuary\",\r\n \"Fungus1_36\": \"Greenpath_Stone_Sanctuary_Mask_Shard\",\r\n \"Fungus1_37\": \"Greenpath_Sanctuary_Bench\",\r\n \"Fungus1_Slug\": \"Greenpath_Unn\",\r\n \"Room_nailmaster_02\": \"Greenpath_Sheo\",\r\n \"Room_Slug_Shrine\": \"Greenpath_Unn_Bench\",\r\n \"Deepnest_01\": \"Fungal_Deepnest_Fall\",\r\n \"Fungus2_01\": \"Fungal_Queen's_Station\",\r\n \"Fungus2_02\": \"Fungal_Queen's_Stag\",\r\n \"Fungus2_03\": \"Fungal_Outside_Queen's\",\r\n \"Fungus2_04\": \"Fungal_Below_Ogres\",\r\n \"Fungus2_05\": \"Fungal_Shrumal_Ogres\",\r\n \"Fungus2_06\": \"Fungal_Outside_Leg_Eater\",\r\n \"Fungus2_07\": \"Fungal_Shrumal_Warrior_Acid_Bridge\",\r\n \"Fungus2_08\": \"Fungal_Outside_Elder_Hu\",\r\n \"Fungus2_09\": \"Fungal_Cloth_Corridor\",\r\n \"Fungus2_10\": \"Fungal_Left_Of_Pilgrim's_Way\",\r\n \"Fungus2_11\": \"Fungal_Right_of_Bouncy_Grub\",\r\n \"Fungus2_12\": \"Fungal_Mantis_Corridor\",\r\n \"Fungus2_13\": \"Fungal_Bretta_Bench\",\r\n \"Fungus2_14\": \"Fungal_Mantis_Village\",\r\n \"Fungus2_15\": \"Fungal_Mantis_Lords\",\r\n \"Fungus2_17\": \"Fungal_Above_Mantis_Village\",\r\n \"Fungus2_18\": \"Fungal_Cornifer\",\r\n \"Fungus2_19\": \"Fungal_Right_Of_Spore_Shroom\",\r\n \"Fungus2_20\": \"Fungal_Spore_Shroom\",\r\n \"Fungus2_21\": \"Fungal_Pilgrim's_Way\",\r\n \"Fungus2_23\": \"Fungal_Dashmaster\",\r\n \"Fungus2_26\": \"Fungal_Leg_Eater\",\r\n \"Fungus2_28\": \"Fungal_Shrumal_Warrior_Loop\",\r\n \"Fungus2_29\": \"Fungal_Core_Upper\",\r\n \"Fungus2_30\": \"Fungal_Core_Lower\",\r\n \"Fungus2_31\": \"Fungal_Mantis_Rewards\",\r\n \"Fungus2_32\": \"Fungal_Elder_Hu\",\r\n \"Fungus2_33\": \"Fungal_Leg_Eater_Root\",\r\n \"Fungus2_34\": \"Fungal_Willoh\",\r\n \"Fungus3_01\": \"Fog_Upper_West_Tall\",\r\n \"Fungus3_02\": \"Fog_Lower_West_Tall\",\r\n \"Fungus3_03\": \"Fog_Queen's_Gardens_Acid_Entrance\",\r\n \"Fungus3_24\": \"Fog_Corridor_to_Overgrown_Mound\",\r\n \"Fungus3_25\": \"Fog_Cornifer\",\r\n \"Fungus3_25b\": \"Fog_Corridor_to_Cornifer\",\r\n \"Fungus3_26\": \"Fog_East_Tall\",\r\n \"Fungus3_27\": \"Fog_Corridor_to_Archives\",\r\n \"Fungus3_28\": \"Fog_Charm_Notch\",\r\n \"Fungus3_30\": \"Fog_Lifeblood\",\r\n \"Fungus3_35\": \"Fog_Millibelle\",\r\n \"Fungus3_44\": \"Fog_Overgrown_Mound_Entrance\",\r\n \"Fungus3_47\": \"Fog_Archives_Entrance\",\r\n \"Fungus3_archive\": \"Fog_Archives_Bench\",\r\n \"Fungus3_archive_02\": \"Fog_Uumuu_Arena\",\r\n \"Room_Fungus_Shaman\": \"Fog_Overgrown_Mound\",\r\n \"Cliffs_01\": \"Cliffs_Main\",\r\n \"Cliffs_02\": \"Cliffs_Gorb\",\r\n \"Cliffs_03\": \"Cliffs_Stag_Nest\",\r\n \"Cliffs_04\": \"Cliffs_Joni's_Dark\",\r\n \"Cliffs_05\": \"Cliffs_Joni's_Pickup\",\r\n \"Cliffs_06\": \"Cliffs_Grimm_Lantern\",\r\n \"Fungus1_28\": \"Cliffs_Baldur's_Shell\",\r\n \"Room_nailmaster\": \"Cliffs_Mato\",\r\n \"Mines_01\": \"Crystal_Dive_Entrance\",\r\n \"Mines_02\": \"Crystal_Dark_Entrance\",\r\n \"Mines_03\": \"Crystal_Spike_Grub\",\r\n \"Mines_04\": \"Crystal_Entrance_Conveyors\",\r\n \"Mines_05\": \"Crystal_Above_Spike_Grub\",\r\n \"Mines_06\": \"Crystal_Deep_Focus_Gauntlet\",\r\n \"Mines_07\": \"Crystal_Dark_Room\",\r\n \"Mines_10\": \"Crystal_Elevator_Entrance\",\r\n \"Mines_11\": \"Crystal_Left_Of_Guardian\",\r\n \"Mines_13\": \"Crystal_Top_Corridor\",\r\n \"Mines_16\": \"Crystal_Mimic\",\r\n \"Mines_17\": \"Crystal_Corridor_to_Spike_Grub\",\r\n \"Mines_18\": \"Crystal_Guardian_Bench\",\r\n \"Mines_19\": \"Crystal_Grub_Crushers\",\r\n \"Mines_20\": \"Crystal_East_Tall\",\r\n \"Mines_23\": \"Crystal_Crown_Whispering_Root\",\r\n \"Mines_24\": \"Crystal_Crown_Grub\",\r\n \"Mines_25\": \"Crystal_Crown_Climb\",\r\n \"Mines_28\": \"Crystal_Outside_Mound\",\r\n \"Mines_29\": \"Crystal_Dark_Bench\",\r\n \"Mines_30\": \"Crystal_Cornifer\",\r\n \"Mines_31\": \"Crystal_Crystal_Heart_Gauntlet\",\r\n \"Mines_32\": \"Crystal_Enraged_Guardian_Arena\",\r\n \"Mines_33\": \"Crossroads_Peak_Dark_Toll\",\r\n \"Mines_34\": \"Crystal_Crown_Peak\",\r\n \"Mines_35\": \"Crystal_Mound\",\r\n \"Mines_36\": \"Crystal_Deep_Focus\",\r\n \"Mines_37\": \"Crystal_Chest_Crushers\",\r\n \"Abyss_02\": \"Basin_Broken_Bridge\",\r\n \"Abyss_03\": \"Basin_Tram\",\r\n \"Abyss_04\": \"Basin_Fountain\",\r\n \"Abyss_05\": \"Basin_Palace_Grounds\",\r\n \"Abyss_17\": \"Basin_Cloth\",\r\n \"Abyss_18\": \"Basin_Corridor_to_Broken_Vessel\",\r\n \"Abyss_19\": \"Basin_Broken_Vessel_Grub\",\r\n \"Abyss_20\": \"Basin_Simple_Key\",\r\n \"Abyss_21\": \"Basin_Monarch_Wings\",\r\n \"Abyss_22\": \"Basin_Hidden_Station\",\r\n \"Abyss_06_Core\": \"Abyss_Core\",\r\n \"Abyss_08\": \"Abyss_Lifeblood_Core\",\r\n \"Abyss_09\": \"Abyss_Lighthouse_Climb\",\r\n \"Abyss_10\": \"Abyss_Shade_Cloak\",\r\n \"Abyss_12\": \"Abyss_Shriek\",\r\n \"Abyss_15\": \"Abyss_Birthplace\",\r\n \"Abyss_16\": \"Abyss_Corridor_to_Lighthouse\",\r\n \"Abyss_Lighthouse_room\": \"Abyss_Lighthouse\",\r\n \"Crossroads_46b\": \"Grounds_Tram\",\r\n \"Crossroads_50\": \"Grounds_Blue_Lake\",\r\n \"RestingGrounds_02\": \"Grounds_Xero\",\r\n \"RestingGrounds_04\": \"Grounds_Dream_Nail_Entrance\",\r\n \"RestingGrounds_05\": \"Grounds_Whispering_Root\",\r\n \"RestingGrounds_06\": \"Grounds_Corridor_Below_Xero\",\r\n \"RestingGrounds_07\": \"Grounds_Seer\",\r\n \"RestingGrounds_08\": \"Grounds_Spirit's_Glade\",\r\n \"RestingGrounds_09\": \"Grounds_Stag\",\r\n \"RestingGrounds_10\": \"Grounds_Crypts\",\r\n \"RestingGrounds_12\": \"Grounds_Outside_Grey_Mourner\",\r\n \"RestingGrounds_17\": \"Grounds_Dreamshield\",\r\n \"Room_Mansion\": \"Grounds_Grey_Mourner\",\r\n \"Ruins2_10\": \"Grounds_Elevator\",\r\n \"Abyss_03_c\": \"Edge_Tram\",\r\n \"Deepnest_East_01\": \"Edge_Left_Of_Hive\",\r\n \"Deepnest_East_02\": \"Edge_Above_Hive\",\r\n \"Deepnest_East_03\": \"Edge_Entrance\",\r\n \"Deepnest_East_04\": \"Edge_Bardoon\",\r\n \"Deepnest_East_06\": \"Edge_Outside_Oro\",\r\n \"Deepnest_East_07\": \"Edge_Whispering_Root\",\r\n \"Deepnest_East_08\": \"Edge_Great_Hopper_Idol\",\r\n \"Deepnest_East_09\": \"Edge_Corridor_Outside_Colosseum\",\r\n \"Deepnest_East_10\": \"Edge_Markoth_Arena\",\r\n \"Deepnest_East_11\": \"Edge_Below_Camp_Bench\",\r\n \"Deepnest_East_12\": \"Edge_Hornet_Sentinel_Corridor\",\r\n \"Deepnest_East_13\": \"Edge_Camp_Bench\",\r\n \"Deepnest_East_14\": \"Edge_Below_Oro\",\r\n \"Deepnest_East_14b\": \"Edge_Quick_Slash\",\r\n \"Deepnest_East_15\": \"Edge_Lifeblood\",\r\n \"Deepnest_East_16\": \"Edge_Oro_Scarecrow\",\r\n \"Deepnest_East_17\": \"Edge_420_Geo_Rock\",\r\n \"Deepnest_East_18\": \"Edge_Outside_Markoth\",\r\n \"Deepnest_East_Hornet\": \"Edge_Hornet_Sentinel_Arena\",\r\n \"GG_Lurker\": \"Edge_Pale_Lurker\",\r\n \"Room_Colosseum_01\": \"Edge_Colo_Entrance\",\r\n \"Room_Colosseum_02\": \"Edge_Colo_Bench\",\r\n \"Room_Colosseum_Bronze\": \"Edge_Colo_1_Arena\",\r\n \"Room_Colosseum_Gold\": \"Edge_Colo_3_Arena\",\r\n \"Room_Colosseum_Silver\": \"Edge_Colo_2_Arena\",\r\n \"Room_Colosseum_Spectate\": \"Edge_Colo_Spectate\",\r\n \"Room_nailmaster_03\": \"Edge_Oro\",\r\n \"Room_Wyrm\": \"Edge_Cast-Off_Shell\",\r\n \"Abyss_01\": \"City_Broken_Elevator\",\r\n \"Crossroads_49b\": \"City_Left_Elevator\",\r\n \"Room_nailsmith\": \"City_Nailsmith\",\r\n \"Ruins_Bathhouse\": \"City_Pleasure_House_Bench\",\r\n \"Ruins_Elevator\": \"City_Pleasure_House_Elevator\",\r\n \"Ruins_House_01\": \"City_Guarded_Grub\",\r\n \"Ruins_House_02\": \"City_Gorgeous_Husk\",\r\n \"Ruins_House_03\": \"City_Emilitia\",\r\n \"Ruins1_01\": \"City_Pilgrim's_Entrance\",\r\n \"Ruins1_02\": \"City_Quirrel_Bench\",\r\n \"Ruins1_03\": \"City_Rafters\",\r\n \"Ruins1_04\": \"City_Outside_Nailsmith\",\r\n \"Ruins1_05\": \"City_Grub_Above_Lemm\",\r\n \"Ruins1_05b\": \"City_Lemm\",\r\n \"Ruins1_05c\": \"City_Egg_Above_Lemm\",\r\n \"Ruins1_06\": \"City_Corridor_to_Storerooms\",\r\n \"Ruins1_09\": \"City_Soul_Twister_Arena\",\r\n \"Ruins1_17\": \"City_Whispering_Root\",\r\n \"Ruins1_18\": \"City_Corridor_to_Spire\",\r\n \"Ruins1_23\": \"City_Sanctum_Entrance\",\r\n \"Ruins1_24\": \"City_Soul_Master_Arena\",\r\n \"Ruins1_25\": \"City_Sanctum_East_Elevators\",\r\n \"Ruins1_27\": \"City_Hollow_Knight_Fountain\",\r\n \"Ruins1_28\": \"City_Storerooms\",\r\n \"Ruins1_29\": \"City_Storerooms_Stag\",\r\n \"Ruins1_30\": \"City_Sanctum_Spell_Twister\",\r\n \"Ruins1_31\": \"City_Toll_Bench\",\r\n \"Ruins1_31b\": \"City_Shade_Soul_Arena\",\r\n \"Ruins1_32\": \"City_Soul_Master_Rewards\",\r\n \"Ruins2_01\": \"City_Spire_Second_Floor\",\r\n \"Ruins2_01_b\": \"City_Spire_First_Floor\",\r\n \"Ruins2_03\": \"City_Spire_Fourth_Floor\",\r\n \"Ruins2_03b\": \"City_Spire_Third_Floor\",\r\n \"Ruins2_04\": \"City_Right_Hub\",\r\n \"Ruins2_05\": \"City_Above_King's\",\r\n \"Ruins2_06\": \"City_King's_Station\",\r\n \"Ruins2_07\": \"City_Grub_Below_King's\",\r\n \"Ruins2_08\": \"City_King's_Stag\",\r\n \"Ruins2_09\": \"City_King's_Vessel_Fragment\",\r\n \"Ruins2_10b\": \"City_Right_Elevator\",\r\n \"Ruins2_11\": \"City_Collector_Arena\",\r\n \"Ruins2_11_b\": \"City_Tower_of_Love\",\r\n \"Ruins2_Watcher_Room\": \"City_Lurien_Elevator\",\r\n \"Hive_01\": \"Hive_Entrance\",\r\n \"Hive_02\": \"Hive_Whispering_Root\",\r\n \"Hive_03\": \"Hive_Outside_Grub\",\r\n \"Hive_03_c\": \"Hive_Outside_Shortcut\",\r\n \"Hive_04\": \"Hive_Mask_Shard\",\r\n \"Hive_05\": \"Hive_Knight_Arena\",\r\n \"GG_Pipeway\": \"Waterways_Flukemunga_Corridor\",\r\n \"GG_Waterways\": \"Waterways_Junk_Pit\",\r\n \"Room_GG_Shortcut\": \"Waterways_Fluke_Hermit\",\r\n \"Waterways_01\": \"Waterways_Entrance\",\r\n \"Waterways_02\": \"Waterways_Main_Bench\",\r\n \"Waterways_03\": \"Waterways_Tuk\",\r\n \"Waterways_04\": \"Waterways_Hidden_Grub\",\r\n \"Waterways_04b\": \"Waterways_Mask_Shard\",\r\n \"Waterways_05\": \"Waterways_Dung_Defender_Arena\",\r\n \"Waterways_06\": \"Waterways_Corridor_to_Broken_Elevator\",\r\n \"Waterways_07\": \"Waterways_Left_Of_Isma's_Grove\",\r\n \"Waterways_08\": \"Waterways_Outside_Flukemarm\",\r\n \"Waterways_09\": \"Waterways_Cornifer\",\r\n \"Waterways_12\": \"Waterways_Flukemarm_Arena\",\r\n \"Waterways_13\": \"Waterways_Isma's_Grove\",\r\n \"Waterways_14\": \"Waterways_Edge_Acid_Corridor\",\r\n \"Waterways_15\": \"Waterways_Dung_Defender's_Cave\",\r\n \"Abyss_03_b\": \"Deepnest_Tram\",\r\n \"Deepnest_01b\": \"Deepnest_Upper_Cornifer\",\r\n \"Deepnest_02\": \"Deepnest_Outside_Mimics\",\r\n \"Deepnest_03\": \"Deepnest_Left_Of_Hot_Spring\",\r\n \"Deepnest_09\": \"Deepnest_Distant_Village_Stag\",\r\n \"Deepnest_10\": \"Deepnest_Distant_Village\",\r\n \"Deepnest_14\": \"Deepnest_Failed_Tramway_Bench\",\r\n \"Deepnest_16\": \"Deepnest_After_Lower_Cornifer\",\r\n \"Deepnest_17\": \"Deepnest_Garpede_Corridor_Below_Cornifer\",\r\n \"Deepnest_26\": \"Deepnest_Failed_Tramway_Lifeblood\",\r\n \"Deepnest_26b\": \"Deepnest_Tram_Pass\",\r\n \"Deepnest_30\": \"Deepnest_Hot_Spring\",\r\n \"Deepnest_31\": \"Deepnest_Nosk_Corridor\",\r\n \"Deepnest_32\": \"Deepnest_Nosk_Arena\",\r\n \"Deepnest_33\": \"Deepnest_Zote_Arena\",\r\n \"Deepnest_34\": \"Deepnest_First_Devout\",\r\n \"Deepnest_35\": \"Deepnest_Outside_Galien\",\r\n \"Deepnest_36\": \"Deepnest_Mimics\",\r\n \"Deepnest_37\": \"Deepnest_Corridor_to_Tram\",\r\n \"Deepnest_38\": \"Deepnest_Vessel_Fragment\",\r\n \"Deepnest_39\": \"Deepnest_Whispering_Root\",\r\n \"Deepnest_40\": \"Deepnest_Galien_Arena\",\r\n \"Deepnest_41\": \"Deepnest_Midwife\",\r\n \"Deepnest_42\": \"Deepnest_Outside_Mask_Maker\",\r\n \"Deepnest_44\": \"Deepnest_Sharp_Shadow\",\r\n \"Deepnest_45_v02\": \"Deepnest_Weaver's_Den\",\r\n \"Deepnest_Spider_Town\": \"Deepnest_Beast's_Den\",\r\n \"Fungus2_25\": \"Deepnest_Lower_Cornifer\",\r\n \"Room_Mask_Maker\": \"Deepnest_Mask_Maker\",\r\n \"Room_spider_small\": \"Deepnest_Brumm\",\r\n \"Deepnest_43\": \"Gardens_Corridor_To_Deepnest\",\r\n \"Fungus1_23\": \"Gardens_First_Loodle_Corridor\",\r\n \"Fungus1_24\": \"Gardens_Cornifer\",\r\n \"Fungus3_04\": \"Gardens_Before_Petra_Arena\",\r\n \"Fungus3_05\": \"Gardens_Petra_Arena\",\r\n \"Fungus3_08\": \"Gardens_Lower_Petra_Corridor\",\r\n \"Fungus3_10\": \"Gardens_Main_Arena\",\r\n \"Fungus3_11\": \"Gardens_Whispering_Root\",\r\n \"Fungus3_13\": \"Gardens_Outside_Stag\",\r\n \"Fungus3_21\": \"Gardens_Corridor_to_Traitor_Lord\",\r\n \"Fungus3_22\": \"Gardens_Upper_Grub\",\r\n \"Fungus3_23\": \"Gardens_Traitor_Lord_Arena\",\r\n \"Fungus3_34\": \"Gardens_Entrance\",\r\n \"Fungus3_39\": \"Gardens_Moss_Prophet\",\r\n \"Fungus3_49\": \"Gardens_Traitor's_Child's_Grave\",\r\n \"Fungus3_40\": \"Gardens_Gardens_Stag\",\r\n \"Fungus3_48\": \"Gardens_Outside_White_Lady\",\r\n \"Fungus3_50\": \"Gardens_Toll_Bench\",\r\n \"Room_Queen\": \"Gardens_White_Lady\",\r\n \"White_Palace_01\": \"Palace_Entrance\",\r\n \"White_Palace_02\": \"Palace_First_Mold\",\r\n \"White_Palace_03_hub\": \"Palace_Hub\",\r\n \"White_Palace_04\": \"Palace_Left_Of_Hub\",\r\n \"White_Palace_05\": \"Palace_Saw_Room\",\r\n \"White_Palace_06\": \"Palace_Balcony\",\r\n \"White_Palace_07\": \"Palace_Lamp_Pogo\",\r\n \"White_Palace_08\": \"Palace_Workshop\",\r\n \"White_Palace_09\": \"Palace_Throne\",\r\n \"White_Palace_11\": \"Palace_Outside\",\r\n \"White_Palace_12\": \"Palace_Spike_Drop\",\r\n \"White_Palace_13\": \"Palace_Thorn_Jump\",\r\n \"White_Palace_14\": \"Palace_Hell_Corridor\",\r\n \"White_Palace_15\": \"Palace_Caged_Lever\",\r\n \"White_Palace_16\": \"Palace_Saw_Climb\",\r\n \"White_Palace_17\": \"POP_Lever\",\r\n \"White_Palace_18\": \"POP_Entrance\",\r\n \"White_Palace_19\": \"POP_Vertical\",\r\n \"White_Palace_20\": \"POP_Final\",\r\n \"Dream_Final_Boss\": \"Egg_Radiance\",\r\n \"Room_Final_Boss_Atrium\": \"Egg_Bench\",\r\n \"Room_Final_Boss_Core\": \"Egg_Hollow_Knight\",\r\n \"Grimm_Divine\": \"Grimm_Divine\",\r\n \"Grimm_Main_Tent\": \"Grimm_Tent\",\r\n \"Grimm_Nightmare\": \"Grimm_NKG\",\r\n \"Dream_01_False_Knight\": \"Dream_Failed_Champion\",\r\n \"Dream_02_Mage_Lord\": \"Dream_Soul_Tyrant\",\r\n \"Dream_03_Infected_Knight\": \"Dream_Lost_Kin\",\r\n \"Dream_04_White_Defender\": \"Dream_White_Defender\",\r\n \"Dream_Abyss\": \"Dream_Abyss\",\r\n \"Dream_Backer_Shrine\": \"Dream_Outside_Shrine\",\r\n \"Dream_Guardian_Hegemol\": \"Dream_Herrah\",\r\n \"Dream_Guardian_Lurien\": \"Dream_Lurien\",\r\n \"Dream_Guardian_Monomon\": \"Dream_Monomon\",\r\n \"Dream_Mighty_Zote\": \"Dream_Grey_Prince_Zote\",\r\n \"Dream_Nailcollection\": \"Dream_Nail\",\r\n \"Dream_Room_Believer_Shrine\": \"Dream_Shrine_of_Believers\",\r\n \"GG_Atrium\": \"Godhome_Atrium\",\r\n \"GG_Atrium_Roof\": \"Godhome_Roof\",\r\n \"GG_Blue_Room\": \"Godhome_Lifeblood\",\r\n \"GG_Land_Of_Storms\": \"Godhome_Land_Of_Storms\",\r\n \"GG_Mighty_Zote\": \"GG_Enchanting_Vigorous_Diligent_Overwhelming_Gorgeous_Passionate_Terrifying_Beautiful_Zote\",\r\n \"GG_Unlock_Wastes\": \"Godhome_Godtuner\",\r\n \"GG_Workshop\": \"Godhome_Hall_Of_Gods\"\r\n};\r\n\r\nexport default MAP;","/* ---------------- Load main Hollow Knight database files ----------------- */\r\n\r\nimport MAP from \"./hk-dictionary.js\";\r\n\r\n/* -------------------------- Functions ----------------------------- */\r\n\r\n/**\r\n * Checks the length of a JavaScript Object like Array.length\r\n * @param {object} object JavaScript Object\r\n * @return {number} length of the Object\r\n */\r\nfunction ObjectLength(object) {\r\n let length = 0;\r\n for (let key in object) {\r\n if (object.hasOwnProperty(key)) {\r\n ++length;\r\n }\r\n }\r\n return length;\r\n}\r\n\r\n/**\r\n * Returns a translated map location name string.\r\n * @param {string} mapCode Code of the Hollow Knight map location the game developers use\r\n * @param {object} dictionary Main data source for translation\r\n */\r\nfunction TranslateMapName(mapCode, dictionary = MAP) {\r\n\r\n let translation = mapCode;\r\n if (dictionary.hasOwnProperty(mapCode)) translation = dictionary[mapCode];\r\n\r\n return translation;\r\n}\r\n\r\n/* ------------------------- Exports ------------------------------- */\r\n\r\nexport {\r\n ObjectLength,\r\n TranslateMapName\r\n};","const ROOT = document.documentElement;\r\nconst SCROLL_BUTTON = document.querySelector(\".scroll-up-button\");\r\n\r\nfunction ScrollToElement(element) {\r\n\r\n /* Scroll to the element top */\r\n element.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n}\r\n\r\nfunction ShowElement(element) {\r\n\r\n element.classList.add(\"visible-block\");\r\n element.classList.add(\"opacity-full\");\r\n element.classList.remove(\"hidden\");\r\n}\r\n\r\nfunction HideElement(element) {\r\n\r\n element.classList.remove(\"visible-block\");\r\n element.classList.remove(\"opacity-full\");\r\n element.classList.add(\"hidden\");\r\n}\r\n\r\nfunction TogglePageScrollElement(root, element, ratio) {\r\n\r\n /* Maximum number of pixels that can be scrolled by the user */\r\n let scrollTotal = root.scrollHeight - root.clientHeight;\r\n\r\n if ((root.scrollTop / scrollTotal) > ratio) {\r\n /* Show button */\r\n ShowElement(element);\r\n } else {\r\n /* Hide button */\r\n HideElement(element);\r\n }\r\n}\r\n\r\n/**\r\n * Cleans \"generated\" and fills all HTML elements of ids from a given list. Creates only div with id, and h2 with title inside it.\r\n * @param {object} jsObj Object with HTML data to fill\r\n */\r\nfunction PrefillHTML(jsObj, element = \"generated\") {\r\n\r\n let domElement = document.getElementById(element);\r\n let sFillText = \"\";\r\n // Clean \"generated\" div\r\n domElement.innerHTML = \"\";\r\n\r\n let id = \"\";\r\n let h2 = \"\";\r\n let h2id = \"\";\r\n let mp = \"\"; // max Percent\r\n let cl = \"\"; // class\r\n\r\n for (let i in jsObj) {\r\n id = jsObj[i].id;\r\n h2 = jsObj[i].h2;\r\n h2id = \"h2-\" + jsObj[i].id;\r\n\r\n mp = `
${(i === \"intro\") ? 0: jsObj[i].maxPercent}%
`;\r\n if (!jsObj[i].hasOwnProperty(\"maxPercent\")) mp = \"\";\r\n\r\n sFillText += `\r\n
\r\n

${h2}${mp}

\r\n
\r\n `;\r\n }\r\n\r\n domElement.innerHTML = sFillText;\r\n}\r\n\r\n/**\r\n * Replaces the h2 titles with a current percent/max percent values as read from the save file\r\n * @param {object} jsObj Object with HTML data to fill\r\n * @param {number} hkGameCompletion Total completion percentage in a save file\r\n */\r\nfunction CompletionHTML(jsObj, hkGameCompletion) {\r\n\r\n let h2 = \"\";\r\n let h2id = \"\";\r\n let cl = \"\";\r\n let clGreen = \"box-green\";\r\n let clRed = \"box-red\";\r\n let cp = 0; // current Percent\r\n let mp = 0; // max Percent\r\n let fillText = \"\";\r\n\r\n for (let i in jsObj) {\r\n h2 = jsObj[i].h2;\r\n h2id = \"h2-\" + jsObj[i].id;\r\n\r\n (jsObj[i].hasOwnProperty(\"percent\")) ? cp = jsObj[i].percent: cp = 0;\r\n if (i === \"intro\") cp = hkGameCompletion;\r\n\r\n // Don't use percent-box for Essentials, Achievements, Statistics\r\n if (!jsObj[i].hasOwnProperty(\"maxPercent\")) {\r\n fillText = \"\";\r\n }\r\n // otherwise use percent-box with values cp/mp%\r\n else {\r\n\r\n mp = jsObj[i].maxPercent;\r\n\r\n if (i === \"maskShards\") {\r\n let perc = jsObj[i].percent;\r\n (perc % 4) ? cp = Math.floor(perc / 4): cp = perc / 4;\r\n } else if (i === \"vesselFragments\") {\r\n let perc = jsObj[i].percent;\r\n (perc % 3) ? cp = Math.floor(perc / 3): cp = perc / 3;\r\n }\r\n\r\n // switches the box to red when a section (h2) is 0\r\n if (cp === 0) {\r\n cl = ` ${clRed}`;\r\n }\r\n // switches the box to green when a section (h2) is completed\r\n else if (cp === mp) {\r\n cl = ` ${clGreen}`;\r\n }\r\n // default is blue (partially completed and starting value)\r\n else cl = \"\";\r\n\r\n // needed for Game Status to show percentage properly (adds a slash for all boxes except the Game Status one)\r\n if (jsObj[i].hasOwnProperty(\"percent\")) cp += \"/\";\r\n\r\n fillText = `
${(i === \"intro\") ? cp: cp + jsObj[i].maxPercent}%
`;\r\n }\r\n\r\n document.getElementById(h2id).innerHTML = h2 + fillText;\r\n }\r\n}\r\n\r\n/**\r\n * Adds HTML string to an element with a given ID.\r\n * @param {object} divId object containing div ID of the HTML element to append to\r\n * @param {string} content HTML contents to append\r\n */\r\nfunction AppendHTML(divId, content) {\r\n document.getElementById(divId.id).innerHTML += \"\\n\" + content;\r\n}\r\n\r\n/**\r\n * Toggles display of \"hk-hints\". On click with no parameters or on demand when called with a parameter\r\n * @param {string} param \"hide\", \"show\" or none (optional)\r\n */\r\nfunction CheckboxHintsToggle(param = \"none\") {\r\n let checkboxId = document.getElementById(\"checkbox-hints\");\r\n\r\n switch (param) {\r\n case \"hide\":\r\n document.getElementById(\"hk-hints\").classList.add(\"hidden\");\r\n checkboxId.value = \"hints-off\";\r\n checkboxId.checked = false;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"unchecked\");\r\n }\r\n break;\r\n case \"show\":\r\n document.getElementById(\"hk-hints\").classList.remove(\"hidden\");\r\n checkboxId.value = \"hints-on\";\r\n checkboxId.checked = true;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"checked\");\r\n }\r\n break;\r\n default:\r\n // This runs when the checkbox is not checked\r\n if (checkboxId.checked === false) {\r\n document.getElementById(\"hk-hints\").classList.add(\"hidden\");\r\n checkboxId.value = \"hints-off\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"unchecked\");\r\n }\r\n }\r\n // This runs when the checkbox is checked\r\n else {\r\n document.getElementById(\"hk-hints\").classList.remove(\"hidden\");\r\n checkboxId.value = \"hints-on\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"checked\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Toggles display of \".spoiler-span\" class. On click with no parameters or on demand when called with a parameter\r\n * @param {string} param \"hide\", \"show\" or none (optional)\r\n */\r\nfunction CheckboxSpoilersToggle(param = \"none\") {\r\n let checkboxId = document.getElementById(\"checkbox-spoilers\");\r\n let allClassElements = document.querySelectorAll(\".spoiler-span\");\r\n let length = allClassElements.length;\r\n\r\n switch (param) {\r\n case \"hide\":\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.add(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-off\";\r\n checkboxId.checked = false;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"unchecked\");\r\n }\r\n break;\r\n case \"show\":\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.remove(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-on\";\r\n checkboxId.checked = true;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"checked\");\r\n }\r\n break;\r\n default:\r\n // This runs when the checkbox is not checked\r\n if (checkboxId.checked === false) {\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.add(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-off\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"unchecked\");\r\n }\r\n break;\r\n }\r\n // This runs when the checkbox is checked\r\n else {\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.remove(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-on\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"checked\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Detects whether Storage is both supported and available.\r\n * MDN WebDocs https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#feature-detecting_localstorage\r\n * @param {Storage} type type of storage. Ex. \"localStorage\" or \"sessionStorage\"\r\n * @returns {Boolean}\r\n */\r\nfunction StorageAvailable(type) {\r\n var storage;\r\n try {\r\n storage = window[type];\r\n var x = '__storage_test__';\r\n storage.setItem(x, x);\r\n storage.removeItem(x);\r\n return true;\r\n } catch (e) {\r\n return e instanceof DOMException && (\r\n // everything except Firefox\r\n e.code === 22 ||\r\n // Firefox\r\n e.code === 1014 ||\r\n // test name field too, because code might not be present\r\n // everything except Firefox\r\n e.name === 'QuotaExceededError' ||\r\n // Firefox\r\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\r\n // acknowledge QuotaExceededError only if there's something already stored\r\n (storage && storage.length !== 0);\r\n }\r\n}\r\n\r\n/* ----------------------- Event Listeners -------------------------- */\r\n\r\ndocument.addEventListener(\"scroll\", () => {\r\n TogglePageScrollElement(\r\n /* the document element root () */\r\n ROOT,\r\n /* Which element to toggle visibility */\r\n SCROLL_BUTTON,\r\n /* How far the user has to scroll to show the element */\r\n 0.1);\r\n});\r\n\r\nSCROLL_BUTTON.addEventListener(\"click\", () => {\r\n ScrollToElement(ROOT);\r\n});\r\n\r\n// Checkboxes functions\r\ndocument.getElementById(\"checkbox-hints\").addEventListener(\"click\", CheckboxHintsToggle, false);\r\ndocument.getElementById(\"checkbox-spoilers\").addEventListener(\"click\", CheckboxSpoilersToggle, false);\r\n\r\n/* ------------------------- Exports ------------------------------- */\r\n\r\nexport {\r\n PrefillHTML,\r\n CompletionHTML,\r\n AppendHTML,\r\n CheckboxHintsToggle,\r\n CheckboxSpoilersToggle,\r\n StorageAvailable\r\n};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// Handle cookies\r\n// require(\"./cookies.js\");\r\n\r\n// CSS\r\n// require(\"../css/cookieconsent.css\");\r\nrequire(\"../css/fontello.css\");\r\nrequire(\"../css/simpleicon.css\");\r\nrequire(\"../css/style.css\");\r\n\r\n// required for meta tags (social) to be visible by Webpack\r\nrequire(\"../img/thumbnail1200x628.jpg\");\r\n\r\nrequire(\"./page-functions.js\");\r\n\r\n// Instantly load test save file from .json (fast Debugging script)\r\n// require(\"./LoadJson.js\");\r\n\r\n// Main script for analyzing the decoded save file and generating the page on the fly\r\n// require(\"./HKCheckCompletion.js\");\r\nrequire(\"./HKCheckCompletion.js\");\r\n\r\n// Load Save File for opening files, decoding, decryption\r\nrequire(\"./LoadSaveFile.js\");"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://hollow-knight-completion-check/./src/js/HKCheckCompletion.js","webpack://hollow-knight-completion-check/./src/js/LoadSaveFile.js","webpack://hollow-knight-completion-check/./src/js/aes-js.js","webpack://hollow-knight-completion-check/./src/js/hk-database.js","webpack://hollow-knight-completion-check/./src/js/hk-dictionary.js","webpack://hollow-knight-completion-check/./src/js/hk-functions.js","webpack://hollow-knight-completion-check/./src/js/page-functions.js","webpack://hollow-knight-completion-check/./src/css/fontello.css?8283","webpack://hollow-knight-completion-check/./src/css/simpleicon.css?2a2f","webpack://hollow-knight-completion-check/./src/css/style.css?cd7d","webpack://hollow-knight-completion-check/webpack/bootstrap","webpack://hollow-knight-completion-check/webpack/runtime/define property getters","webpack://hollow-knight-completion-check/webpack/runtime/global","webpack://hollow-knight-completion-check/webpack/runtime/hasOwnProperty shorthand","webpack://hollow-knight-completion-check/webpack/runtime/make namespace object","webpack://hollow-knight-completion-check/webpack/runtime/publicPath","webpack://hollow-knight-completion-check/./src/js/index.js"],"names":["SYMBOL_FALSE","SYMBOL_TRUE","SYMBOL_EMPTY","FLEUR_DIVIDE","WIKI_LINK","completionSymbol","divStart","join","divStartCenter","divEnd","pSpan","benchHKCCBegin","benchHKCCEnd","HKCheckCompletion","jsonObject","Date","HKPlayerData","HKWorldItems","HKSceneData","hasOwnProperty","playerData","sceneData","persistentBoolItems","PrefillHTML","HK","ResetCompletion","CheckPlayTime","playTime","CheckCompletionPercent","completionPercentage","CheckSaveFileVersion","version","AppendHTML","CheckHealthMasks","maxHealthBase","permadeathMode","CheckSoulOrbs","maxMP","MPReserveMax","CheckNotches","charmSlots","charmSlotsFilled","CheckGeo","geo","geoPool","CheckIfDataTrue","CheckWorldDataTrue","CheckNailUpgrades","CheckSpellLevel","CheckWarriorDreams","CheckGodmasterDoors","CheckAdditionalThings","CheckHintsTrue","CompletionHTML","CheckboxHintsToggle","CheckboxSpoilersToggle","console","info","PrepareHTMLString","divId","textPrefix","textSuffix","wiki","icon","b","length","span","spoilerSpan","dash","includes","CurrentDataTrue","percent","id","CurrentDataFalse","CurrentDataBlank","seconds","Math","floor","minutes","hours","sec","textFill","document","getElementById","innerHTML","maxPercent","saveVersion","masks","maskImages","maskNormal","HEALTH_MASK_IMAGE","maskSteel","HEALTH_MASK_STEEL_IMAGE","maskImg","i","totalSoul","soulImages","soulNormal","SOUL_ORB_IMAGE","soulImg","total","geoValue","geoPoolValue","GEO_IMAGE","GEO_SHADE_IMAGE","totalNotches","filledNotches","overcharmedNotches","unusedNotches","notchImages","notchNormalImage","NOTCH_IMAGE","notchFilledImage","NOTCH_FILLED_IMAGE","notchOvercharmedImage","NOTCH_OVERCHARMED_IMAGE","dataObject","sFillText","name","spoiler","gotQueenFragment","gotKingFragment","grimmChildLevel","fireballLevel","quakeLevel","screamLevel","pantheon","map","element","completed","nail","nailSmithUpgrades","idText","worldData","orderedArray","size","ObjectLength","push","j","sceneName","activated","amount","countTotal","unbroken","broken","discoveredTotal","CountMaps","list","CountWorldItem","openedHiddenStation","journalEntriesTotal","LogMissingGrubs","zoteDead","zoteRescuedBuzzer","hasWalljump","max","abs","geoRocks","CountGeoRocks","hasSlykey","gaveSlykey","hasWhiteKey","usedWhiteKey","hasLoveKey","openedLoveDoor","FindWorldItem","dreamReward2","nameHeld","nameSold","killedVoidIdol_2","killedVoidIdol_3","nameNeglect","spoilerNeglect","killedZote","nameRivalry","spoilerRivalry","nameTrappedVengefly","spoilerTrappedVengefly","nameNotRescuedVengefly","spoilerNotRescuedVengefly","zoteRescuedDeepnest","nameTrappedDeepnest","spoilerTrappedDeepnest","nameColosseum","spoilerColosseum","nailsmithKilled","namePurity","spoilerPurity","nailsmithConvoArt","nameHappyCouple","spoilerHappyCouple","nailsmithSpared","nameSheoHutWaiting","spoilerSheoHutWaiting","nameUpgradeNail","spoilerUpgradeNail","CheckMrMushroomState","itemArea","itemId","mapArray","totalMaps","len","arrayLength","mode","geoRocksLog","hitsLeft","TranslateMapName","log","groupCollapsed","groupEnd","rescuedGrubsSceneList","missingGrubsList","x","mrMushroomState","killedHollowKnight","GruzMotherDefeated","k","defeatedDungDefender","hornetOutskirtsDefeated","hasAcidArmour","hasKingsBrand","hasShadowDash","HKReadTextArea","textAreaId","InitialHTMLPopulate","contents","value","JSON","parse","error","alert","divIdObj","intro","hints","hkObjArray","divObjArray","bosses","charms","equipment","nailArts","maskShards","vesselFragments","dreamers","colosseum","dreamNail","warriorDreams","grimmTroupe","lifeblood","godmaster","essential","achievements","statistics","entry","shift","nailUpgrades","spells","StorageAvailable","localStorage","getItem","checked","jsObj","SelectCopyInputText","mouseEvent","tooltipId","tooltipFill","target","window","getSelection","removeAllRanges","focus","select","setSelectionRange","execCommand","FillInnerHTML","elementId","addEventListener","e","aesjs","require","CSHARP_HEADER","BASE64_ARRAY","split","c","charCodeAt","BASE64_DECODE_TABLE","Map","ord","AES_KEY","TextEncoder","encode","ECB_STREAM_CIPHER","ModeOfOperation","ecb","benchLSFBegin","benchLSFEnd","benchTotal","LoadSaveFile","input","time","inputFileList","files","inputFileObject","inputReader","FileReader","readAsArrayBuffer","ProcessFileObject","inputArrayBuffer","result","decodedString","Uint8Array","slice","RemoveHeaders","Base64Decode","AESDecryption","TextDecoder","decode","buffer","csHeader","subarray","lengthCount","v","get","p","indexOf","end","output","continuous","undefined","cipherObject","decrypt","event","root","checkInt","parseInt","checkInts","arrayish","coerceArray","arg","copy","ArrayBuffer","isView","Array","prototype","call","isArray","Error","createArray","copyArray","sourceArray","targetArray","targetStart","sourceStart","sourceEnd","set","convertUtf8","toBytes","text","encodeURI","substr","fromBytes","bytes","String","fromCharCode","convertHex","Hex","numberOfRounds","rcon","S","Si","T1","T2","T3","T4","T5","T6","T7","T8","U1","U2","U3","U4","convertToInt32","AES","key","Object","defineProperty","_prepare","rounds","_Ke","_Kd","roundKeyCount","KC","tk","index","rconpointer","t","tt","r","encrypt","plaintext","a","ciphertext","ModeOfOperationECB","description","_aes","block","ModeOfOperationCBC","iv","_lastCipherblock","ModeOfOperationCFB","segmentSize","_shiftRegister","encrypted","xorSegment","ModeOfOperationOFB","_lastPrecipher","_lastPrecipherIndex","Counter","initialValue","_counter","setValue","setBytes","increment","ModeOfOperationCTR","counter","_remainingCounter","_remainingCounterIndex","pkcs7pad","data","padder","pkcs7strip","cbc","cfb","ofb","ctr","utils","hex","utf8","padding","pkcs7","pad","strip","_arrayTest","module","exports","DIV_ID","h2","HINTS","hornet1Defeated","hasDash","Crossroads_04","slyRescued","hasLantern","hasSuperDash","hasDreamNail","killedInfectedKnight","hasDoubleJump","killedBlackKnight","lurienDefeated","dungDefenderOrHornet2","ismaTearOrShadeCloak","defeatedMegaJelly","monomonDefeated","hegemolDefeated","BOSSES","falseKnightDefeated","mageLordDefeated","collectorDefeated","defeatedMantisLords","killedMimicSpider","killedTraitorLord","BOSSES_WORLD","Crossroads_09","CHARMS","gotCharm_1","gotCharm_2","gotCharm_3","gotCharm_4","gotCharm_5","gotCharm_6","gotCharm_7","gotCharm_8","gotCharm_9","gotCharm_10","gotCharm_11","gotCharm_12","gotCharm_13","gotCharm_14","gotCharm_15","gotCharm_16","gotCharm_17","gotCharm_18","gotCharm_19","gotCharm_20","gotCharm_21","gotCharm_22","gotCharm_23","gotCharm_24","gotCharm_25","gotCharm_26","gotCharm_27","gotCharm_28","gotCharm_29","gotCharm_30","gotCharm_31","gotCharm_32","gotCharm_33","gotCharm_34","gotCharm_35","gotCharm_36","COLOSSEUM","colosseumBronzeCompleted","colosseumSilverCompleted","colosseumGoldCompleted","DREAMERS","DREAMNAIL","dreamNailUpgraded","mothDeparted","EQUIPMENT","MASKSHARDS","slyShellFrag1","slyShellFrag2","slyShellFrag3","slyShellFrag4","dreamReward7","MASKSHARDS_WORLD","Crossroads_13","Crossroads_38","Room_Bretta","Fungus2_01","Waterways_04b","Fungus1_36","Mines_32","Fungus2_25","Hive_04","Room_Mansion","VESSELFRAGMENTS","slyVesselFrag1","slyVesselFrag2","dreamReward5","vesselFragStagNest","VESSELFRAGMENTS_WORLD","Fungus1_13","Crossroads_37","Ruins2_09","Deepnest_38","Abyss_04","NAILARTS","hasDashSlash","hasUpwardSlash","hasCyclone","NAILUPGRADES","oldNail","sharpenedNail","channeledNail","coiledNail","pureNail","SPELLS","vengefulSpirit","shadeSoul","desolateDive","descendingDark","howlingWraiths","abyssShriek","WARRIORDREAMS","xeroDefeated","noEyesDefeated","elderHuDefeated","aladarSlugDefeated","mumCaterpillarDefeated","galienDefeated","markothDefeated","GRIMMTROUPE","gotCharm_37","gotCharm_38","gotCharm_39","gotCharm_40","killedGrimm","LIFEBLOOD","killedHiveKnight","GODMASTER_DOORS","pantheonMaster","pantheonArtist","pantheonSage","pantheonKnight","GODMASTER","hasGodfinder","ESSENTIAL","grubsCollected","dreamOrbs","stationsOpened","fountainGeo","brettaRescued","shopkeeperKey","elegantKey","loveKey","slySimpleKey","simpleKeyCityOfTears","simpleKeyAncientBasin","gotLurkerKey","paleOreAncientBasin","paleOreSeer","paleOreCrystalPeak","paleOreDeepnest","paleOreGrubfather","paleOreColosseum","waterwaysAcidDrained","hasTramPass","nightmareLanternLit","GRUBS_LIST","ACHIEVEMENTS","areaMaps","journalEntriesCompleted","journalNotesCompleted","hasJournal","hasHuntersMark","killedPrayerSlug","killedOrangeScuttler","killedPigeon","killedLazyFlyer","killedAcidFlyer","killedAcidWalker","killedPlantShooter","killedMushroomTurret","killedZapBug","killedCrystalCrawler","killedGorgeousHusk","killedWorm","killedBigCentipede","killedAbyssTendril","killedPaleLurker","falseKnightDreamDefeated","mageLordDreamDefeated","infectedKnightDreamDefeated","whiteDefenderDefeated","greyPrinceDefeated","salubraBlessing","gotShadeCharm","killedFinalBoss","bossDoorStateTier5","zoteStatus","nailsmithStatus","spoiler1","spoiler2","spoiler3","spoiler4","spoiler5","spoiler6","spoiler7","STATISTICS","nailDamage","whisperingRoots","relicsWandererJournal","relicsHallownestSeal","relicsKingsIdol","relicsArcaneEgg","min","rancidEggs","jinnEggsSold","xunFlowerBrokeTimes","notchShroomOgres","salubraNotch1","salubraNotch2","salubraNotch3","salubraNotch4","notchFogCanyon","gotGrimmNotch","hasDreamGate","fragileGreed_unbreakable","fragileHealth_unbreakable","fragileStrength_unbreakable","killedMenderBug","killedBindingSeal","killedGodseekerMask","killedVoidIdol_1","elderbugGaveFlower","givenGodseekerFlower","givenOroFlower","givenWhiteLadyFlower","givenEmilitiaFlower","whitePalaceSecretRoomVisited","killsBindingSeal","whiteDefenderDefeats","greyPrinceDefeats","MAP","object","mapCode","dictionary","translation","ROOT","documentElement","SCROLL_BUTTON","querySelector","ScrollToElement","scrollTo","top","behavior","ShowElement","classList","add","remove","HideElement","TogglePageScrollElement","ratio","scrollTotal","scrollHeight","clientHeight","scrollTop","domElement","h2id","mp","cl","hkGameCompletion","clGreen","clRed","cp","fillText","perc","content","param","checkboxId","setItem","allClassElements","querySelectorAll","type","storage","removeItem","DOMException","code"],"mappings":"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","file":"app.js","sourcesContent":["/* eslint-disable no-prototype-builtins */\r\n\r\n/* ---------------- Load main Hollow Knight database files ----------------- */\r\n\r\nimport HK from \"./hk-database.js\";\r\n\r\n/* ----------------- Helper functions --------------------------------------- */\r\n\r\nimport {\r\n PrefillHTML,\r\n CompletionHTML,\r\n AppendHTML,\r\n CheckboxHintsToggle,\r\n CheckboxSpoilersToggle,\r\n StorageAvailable\r\n} from \"./page-functions.js\";\r\n\r\nimport {\r\n ObjectLength,\r\n TranslateMapName\r\n} from \"./hk-functions.js\";\r\n\r\n// ---------------- Load image files (necessary for Webpack) ----------------- //\r\n\r\nimport HEALTH_MASK_IMAGE from \"../img/health-mask.png\";\r\nimport HEALTH_MASK_STEEL_IMAGE from \"../img/health-mask-steel.png\";\r\nimport SOUL_ORB_IMAGE from \"../img/soul-orb.png\";\r\nimport NOTCH_IMAGE from \"../img/notch.png\";\r\nimport NOTCH_FILLED_IMAGE from \"../img/notch-filled.png\";\r\nimport NOTCH_OVERCHARMED_IMAGE from \"../img/notch-overcharmed.png\";\r\nimport GEO_IMAGE from \"../img/geo.png\";\r\nimport GEO_SHADE_IMAGE from \"../img/geo-shade.png\";\r\n\r\n// ---------------- Constants ----------------- //\r\n\r\n// const DATA_UNKNOWN = \"Data unknown\";\r\nconst SYMBOL_FALSE = \"\"; // \"❌ \"\r\nconst SYMBOL_TRUE = \"\"; // \"✅ \"\r\n// const SYMBOL_INFO = \"\"; // \"ℹ \"\r\nconst SYMBOL_EMPTY = \"\";\r\nconst FLEUR_DIVIDE = \"
\";\r\nconst WIKI_LINK = \"https://hollowknight.fandom.com/wiki/\";\r\n\r\n// ---------------- Variables ----------------- //\r\n\r\n// let currentData = DATA_UNKNOWN;\r\nlet completionSymbol = SYMBOL_FALSE;\r\n\r\nlet divStart = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet divStartCenter = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet divEnd = [\r\n \"
\"\r\n].join(\"\\n\");\r\n\r\nlet pSpan = \"\";\r\n\r\nlet benchHKCCBegin, benchHKCCEnd;\r\n\r\n/* -------------------------- Functions ----------------------------- */\r\n\r\n/**\r\n * Main Function. Checks Hollow Knight game completion by analyzing the save file\r\n * @param {object} jsonObject Decoded save data in JavaScript Object Notation form (JSON)\r\n */\r\nfunction HKCheckCompletion(jsonObject) {\r\n\r\n // start benchmark\r\n benchHKCCBegin = new Date();\r\n\r\n let HKPlayerData;\r\n let HKWorldItems;\r\n let HKSceneData;\r\n\r\n if (jsonObject.hasOwnProperty(\"playerData\")) {\r\n HKPlayerData = jsonObject.playerData;\r\n } else return false;\r\n\r\n if (jsonObject.hasOwnProperty(\"sceneData\")) {\r\n HKSceneData = jsonObject.sceneData;\r\n if (jsonObject.sceneData.hasOwnProperty(\"persistentBoolItems\")) {\r\n HKWorldItems = jsonObject.sceneData.persistentBoolItems;\r\n } else return false;\r\n } else return false;\r\n\r\n // Pre-Cleaning and filling initial data (h2, id) needed for PrepareHTMLString()\r\n PrefillHTML(HK.DIV_ID);\r\n\r\n // Prevents adding current percent data after each function call (each click of Analyze button)\r\n ResetCompletion(HK.DIV_ID);\r\n\r\n // ================================================================================== //\r\n\r\n // ---------------- Time Played ----------------- //\r\n\r\n CheckPlayTime(HK.DIV_ID.intro, HKPlayerData.playTime);\r\n\r\n // ---------------- Game Completion Status ----------------- //\r\n\r\n CheckCompletionPercent(HK.DIV_ID.intro, HKPlayerData.completionPercentage);\r\n\r\n // ---------------- Game Completion Status ----------------- //\r\n\r\n CheckSaveFileVersion(HK.DIV_ID.intro, HKPlayerData.version);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.intro, FLEUR_DIVIDE);\r\n\r\n // ---------------- Health Masks ----------------- //\r\n\r\n CheckHealthMasks(HK.DIV_ID.intro, HKPlayerData.maxHealthBase, HKPlayerData.permadeathMode);\r\n\r\n // ---------------- Soul Orbs ----------------- //\r\n\r\n CheckSoulOrbs(HK.DIV_ID.intro, HKPlayerData.maxMP + HKPlayerData.MPReserveMax);\r\n\r\n // ---------------- Charm Notches (Slots) ----------------- //\r\n\r\n CheckNotches(HK.DIV_ID.intro, HKPlayerData.charmSlots, HKPlayerData.charmSlotsFilled);\r\n\r\n // ---------------- Geo Amount ----------------- //\r\n\r\n CheckGeo(HK.DIV_ID.intro, HKPlayerData.geo, HKPlayerData.geoPool);\r\n\r\n // ---------------- Bosses (Base Game) --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.bosses, HK.BOSSES, HKPlayerData);\r\n\r\n // ---------------- Gruz Mother and Mawlek (World Map) --------------------- //\r\n\r\n if (HKWorldItems) CheckWorldDataTrue(HK.DIV_ID.bosses, \"Battle Scene\", HK.BOSSES_WORLD, HKWorldItems);\r\n\r\n // ---------------- Charms --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.charms, HK.CHARMS, HKPlayerData);\r\n\r\n // ---------------- Colosseum of Fools --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.colosseum, HK.COLOSSEUM, HKPlayerData);\r\n\r\n // ---------------- Dreamers --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.dreamers, HK.DREAMERS, HKPlayerData);\r\n\r\n // ---------------- Dream Nail and Essence --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.dreamNail, HK.DREAMNAIL, HKPlayerData);\r\n\r\n // ---------------- Equipment --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.equipment, HK.EQUIPMENT, HKPlayerData);\r\n\r\n // ---------------- Nail Upgrades --------------------- //\r\n\r\n CheckNailUpgrades(HK.DIV_ID.nailUpgrades, HK.NAILUPGRADES, HKPlayerData);\r\n\r\n // ---------------- Mask Shards --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.maskShards, HK.MASKSHARDS, HKPlayerData);\r\n\r\n // ---------------- Mask Shards (World Map) --------------------- //\r\n\r\n CheckWorldDataTrue(HK.DIV_ID.maskShards, \"Heart Piece\", HK.MASKSHARDS_WORLD, HKWorldItems);\r\n\r\n // ---------------- Nail Arts --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.nailArts, HK.NAILARTS, HKPlayerData);\r\n\r\n // ---------------- Spells --------------------- //\r\n\r\n CheckSpellLevel(HK.DIV_ID.spells, HK.SPELLS, HKPlayerData);\r\n\r\n // ---------------- Vessel Fragments --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.vesselFragments, HK.VESSELFRAGMENTS, HKPlayerData);\r\n\r\n // ---------------- Vessel Fragments (World Map) --------------------- //\r\n\r\n CheckWorldDataTrue(HK.DIV_ID.vesselFragments, \"Vessel Fragment\", HK.VESSELFRAGMENTS_WORLD, HKWorldItems);\r\n\r\n // ---------------- Warrior Dreams --------------------- //\r\n\r\n CheckWarriorDreams(HK.DIV_ID.warriorDreams, HK.WARRIORDREAMS, HKPlayerData);\r\n\r\n // ---------------- Grimm Troupe Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.grimmTroupe, HK.GRIMMTROUPE, HKPlayerData);\r\n\r\n // ---------------- Lifeblood Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.lifeblood, HK.LIFEBLOOD, HKPlayerData);\r\n\r\n // ---------------- Godmaster Content Pack --------------------- //\r\n\r\n CheckIfDataTrue(HK.DIV_ID.godmaster, HK.GODMASTER, HKPlayerData);\r\n\r\n CheckGodmasterDoors(HK.DIV_ID.godmaster, HK.GODMASTER_DOORS, HKPlayerData);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.godmaster, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Essential Things ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.essential, HK.ESSENTIAL, HKPlayerData, HKWorldItems);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.essential, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Achievements ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.achievements, HK.ACHIEVEMENTS, HKPlayerData, HKWorldItems);\r\n\r\n // ---------------- Fleur Divide ----------------- //\r\n\r\n AppendHTML(HK.DIV_ID.achievements, FLEUR_DIVIDE);\r\n\r\n // ------------------------- Game Statistics ----------------------------- //\r\n\r\n CheckAdditionalThings(HK.DIV_ID.statistics, HK.STATISTICS, HKPlayerData, HKWorldItems, HKSceneData);\r\n\r\n // ------------------------- Hints ----------------------------- //\r\n\r\n CheckHintsTrue(HK.DIV_ID.hints, HK.HINTS, HKPlayerData, HKWorldItems);\r\n\r\n // ------------------------- Fill completion ----------------------------- //\r\n\r\n CompletionHTML(HK.DIV_ID, HKPlayerData.completionPercentage);\r\n\r\n // Prevents wrong checkbox behaviour (must run after everything is finished)\r\n CheckboxHintsToggle();\r\n CheckboxSpoilersToggle();\r\n\r\n // finish and show benchmark\r\n benchHKCCEnd = new Date();\r\n console.info(\"HKCheckCompletion() time (ms) =\", benchHKCCEnd - benchHKCCBegin);\r\n\r\n return true;\r\n}\r\n\r\n/**\r\n * Generates and appends a new entry inside the HTML of a given ID\r\n * @param {object} divId object containing div ID and h2 title of the HTML element\r\n * @param {string} textPrefix Main name of the entry\r\n * @param {string} textSuffix Optional suffix after the main name (spoilers: locations, costs etc.)\r\n */\r\nfunction PrepareHTMLString(divId, textPrefix = \"Unknown Completion Element: \", textSuffix = \"Unknown Description Element\", wiki = \"\") {\r\n\r\n let icon = completionSymbol;\r\n let b = [\"\", \"\"];\r\n if (!textPrefix.length) b = [\"\", \"\"];\r\n if (wiki.length) b = [``, \"\"];\r\n\r\n let span = [\"\", \"\"];\r\n let spoilerSpan = [\"\", \"\"];\r\n if (divId === \"hints\") {\r\n span[0] = \"\";\r\n icon = \"\";\r\n }\r\n\r\n let dash = \"\";\r\n if (textSuffix.length && textPrefix.length) dash = \"— \";\r\n if (textPrefix.includes(\"\")) dash = \"\"\r\n\r\n // return divStart + icon + b[0] + textPrefix + b[1] + span[0] + pSpan + spoilerSpan[0] + dash + textSuffix + spoilerSpan[1] + span[1] + divEnd;\r\n return `\r\n ${divStart}\r\n ${icon}${b[0]}${textPrefix}${b[1]}${span[0]}${pSpan}${spoilerSpan[0]}${dash}${textSuffix}${spoilerSpan[1]}${span[1]}\r\n ${divEnd}\r\n `;\r\n}\r\n\r\n/**\r\n * Switches global variable to a \"completed\" symbol. Adds +1 or +2 to percent property.\r\n */\r\nfunction CurrentDataTrue(divId = \"\") {\r\n completionSymbol = SYMBOL_TRUE;\r\n if (divId) {\r\n divId.percent++;\r\n if (divId.id === \"hk-equipment\") divId.percent++; // double % for equipment\r\n }\r\n}\r\n\r\n/**\r\n * Switches global variable to a \"not completed\" symbol\r\n */\r\nfunction CurrentDataFalse() {\r\n completionSymbol = SYMBOL_FALSE;\r\n}\r\n\r\n/**\r\n * Switches global variable to an \"information\" symbol\r\n */\r\n/* function CurrentDataInfo() {\r\n completionSymbol = SYMBOL_INFO;\r\n} */\r\n\r\n/**\r\n * Switches global variable to no symbol (span with left padding)\r\n */\r\nfunction CurrentDataBlank() {\r\n completionSymbol = SYMBOL_EMPTY;\r\n}\r\n\r\n/**\r\n * Fills HTML with the playTime value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} playTime Number of total gameplay time in seconds\r\n */\r\nfunction CheckPlayTime(divId, playTime) {\r\n\r\n let icon = \"\";\r\n let seconds = Math.floor(playTime);\r\n let minutes = Math.floor((seconds / 60) % 60);\r\n let hours = Math.floor(seconds / 3600);\r\n let sec = Math.floor(seconds % 60);\r\n\r\n if (sec < 10) sec = \"0\" + sec;\r\n if (minutes < 10) minutes = \"0\" + minutes;\r\n\r\n let textFill = \"Time Played:\" + pSpan + \"\" + hours + \" h \" + minutes + \" min \" + sec + \" sec\";\r\n\r\n document.getElementById(divId.id).innerHTML += divStart + icon + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Searches for completionPercentage in playerData and fills HTML with the value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} completionPercentage Number of completion percentage\r\n */\r\nfunction CheckCompletionPercent(divId, completionPercentage) {\r\n\r\n (completionPercentage >= 112) ? CurrentDataTrue(): CurrentDataFalse();\r\n\r\n let textFill = \"Game Completion:\" + pSpan + \"\" + completionPercentage + \" %\" + pSpan + \"(out of \" + divId.maxPercent + \" %)\";\r\n document.getElementById(divId.id).innerHTML += divStart + completionSymbol + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Reads the \"version\" string from the save file and appends it to the selected div ID element\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {string} saveVersion Save File version in format 0.0.0.0\r\n */\r\nfunction CheckSaveFileVersion(divId, saveVersion = HK.DIV_ID.intro.saveVersion) {\r\n\r\n CurrentDataBlank();\r\n let textFill = `Save Version:${pSpan}${saveVersion}${pSpan}`;\r\n document.getElementById(divId.id).innerHTML += divStart + completionSymbol + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of health mask images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} masks Number of max health masks from the save (baseline without charms and lifeblood)\r\n * @param {number} permadeathMode Value of permadeathMode property. 0 = Normal, 1 = Steel Soul, 2 = Steel Soul broken save\r\n */\r\nfunction CheckHealthMasks(divId, masks = 5, permadeathMode = 0) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = \"Health:\";\r\n let maskImages = \"\";\r\n let maskNormal = `health mask image`;\r\n let maskSteel = `steel health mask image`;\r\n let maskImg = \"\";\r\n\r\n (permadeathMode > 0) ? maskImg = maskSteel: maskImg = maskNormal;\r\n\r\n for (let i = 0; i < masks; i++) {\r\n maskImages += maskImg;\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + maskImages + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of soul orbs images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} totalSoul Number of max Soul reserve from the save. 99 = full Soul Orb\r\n */\r\nfunction CheckSoulOrbs(divId, totalSoul) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = \"Soul:\";\r\n let soulImages = \"\";\r\n let soulNormal = `soul orb image`;\r\n let soulImg = soulNormal;\r\n\r\n for (let i = 0, total = totalSoul / 33; i < total; i++) {\r\n soulImages += soulImg;\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + soulImages + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with the Geo value of the save file\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} geoValue Number of total Geo value\r\n */\r\nfunction CheckGeo(divId, geoValue = 0, geoPoolValue = 0) {\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = `Geo:geo symbol image${geoValue}`;\r\n\r\n // Show Shade Geo value and image only if Shade has at least 1 Geo on it\r\n if (geoPoolValue > 0) textFill += `\r\n ${pSpan}+shade geo symbol image${geoPoolValue}`;\r\n\r\n // Show also total Geo (Geo + Shade Geo) if player has at least 1 geo alongside the shade geo\r\n if (geoValue > 0 && geoPoolValue > 0) textFill += `${pSpan}=${pSpan}${geoValue+geoPoolValue}`;\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + divEnd;\r\n}\r\n\r\n/**\r\n * Fills HTML with appropriate number of notch images\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {number} totalNotches Number of total Charm Notches the player has. 11 = max\r\n * @param {number} filledNotches Number of total used Charm Notches (including overcharmed notches). 15 = max\r\n */\r\nfunction CheckNotches(divId, totalNotches = 3, filledNotches = 0) {\r\n\r\n let {\r\n overcharmedNotches,\r\n unusedNotches\r\n } = 0;\r\n\r\n // How many overcharmed notches images to show\r\n overcharmedNotches = filledNotches - totalNotches;\r\n if (overcharmedNotches < 1) overcharmedNotches = 0;\r\n\r\n // How many unused notches images to show\r\n unusedNotches = totalNotches - filledNotches;\r\n if (unusedNotches < 1) unusedNotches = 0;\r\n\r\n // Correct number of filled/used notches images to show when player is overcharmed\r\n if (filledNotches > totalNotches) filledNotches = totalNotches;\r\n\r\n let icon = SYMBOL_EMPTY;\r\n let textFill = `Notches:${pSpan}`;\r\n\r\n let notchImages = \"\";\r\n let notchNormalImage = `notch image`;\r\n let notchFilledImage = `notch image`;\r\n let notchOvercharmedImage = `notch image`;\r\n\r\n // First check filled (used) notches and fill them (skips if no filled notches)\r\n if (filledNotches > 0) {\r\n for (let i = 0; i < filledNotches; i++) {\r\n notchImages += notchFilledImage;\r\n }\r\n }\r\n\r\n // Second check overcharmed notches and fill them (skips if player is not overcharmed)\r\n if (overcharmedNotches > 0) {\r\n for (let i = 0; i < overcharmedNotches; i++) {\r\n notchImages += notchOvercharmedImage;\r\n }\r\n }\r\n\r\n // Lastly, fill all unused notches\r\n if (unusedNotches > 0) {\r\n for (let i = 0; i < unusedNotches; i++) {\r\n notchImages += notchNormalImage;\r\n }\r\n }\r\n\r\n document.getElementById(divId.id).innerHTML += divStartCenter + icon + textFill + notchImages + divEnd;\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is true or false, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified (use copy - data inside this object will be deleted)\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckIfDataTrue(divId, dataObject, playerData) {\r\n\r\n let {\r\n textPrefix,\r\n textSuffix,\r\n } = \"\";\r\n let sFillText = \"\";\r\n let wiki = \"\";\r\n\r\n for (let i in dataObject) {\r\n\r\n textPrefix = dataObject[i].name;\r\n textSuffix = dataObject[i].spoiler;\r\n (dataObject[i].hasOwnProperty(\"wiki\")) ? wiki = dataObject[i].wiki: wiki = \"\";\r\n\r\n switch (i) {\r\n case \"gotCharm_36\":\r\n // prevents green checkbox and adding 1% when only got one white fragment\r\n (playerData.gotQueenFragment === true && playerData.gotKingFragment === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n case \"gotCharm_37\":\r\n case \"gotCharm_38\":\r\n case \"gotCharm_39\":\r\n case \"gotCharm_40\":\r\n case \"killedGrimm\":\r\n case \"grimmChildLevel\":\r\n case \"killedHiveKnight\":\r\n case \"hasGodfinder\":\r\n // fades out the entries if save file is from older game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n if (i === \"grimmChildLevel\") {\r\n (playerData.grimmChildLevel >= 4) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n break;\r\n default:\r\n (playerData[i] === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n }\r\n\r\n sFillText += PrepareHTMLString(divId, textPrefix, textSuffix, wiki);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is 0 or > 0, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified (use copy - data inside this object will be deleted)\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckSpellLevel(divId, dataObject, playerData) {\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i in dataObject) {\r\n switch (i) {\r\n case \"vengefulSpirit\":\r\n case \"shadeSoul\":\r\n (playerData.fireballLevel >= dataObject[i].fireballLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n case \"desolateDive\":\r\n case \"descendingDark\":\r\n (playerData.quakeLevel >= dataObject[i].quakeLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n case \"howlingWraiths\":\r\n case \"abyssShriek\":\r\n (playerData.screamLevel >= dataObject[i].screamLevel) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object is 0 or > 0, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckWarriorDreams(divId, dataObject, playerData) {\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i in dataObject) {\r\n (playerData[i] >= 2) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the Godmaster Pantheons 1-4 are completed by the player, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing pantheon data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search in the save file\r\n */\r\nfunction CheckGodmasterDoors(divId, dataObject, playerData) {\r\n\r\n // appends \"pantheon\" to every array element\r\n // same as names in the database object\r\n let pantheon = [\"Master\", \"Artist\", \"Sage\", \"Knight\"].map((element) => \"pantheon\" + element);\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i = 0; i < 4; i++) {\r\n // compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(\"bossDoorStateTier\" + (i + 1)) === false) {\r\n CurrentDataBlank();\r\n sFillText += PrepareHTMLString(\r\n divId,\r\n `${dataObject[pantheon[i]].name}`,\r\n `${dataObject[pantheon[i]].spoiler}`,\r\n dataObject[pantheon[i]].wiki\r\n );\r\n } else {\r\n (playerData[\"bossDoorStateTier\" + (i + 1)].completed === true) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(\r\n divId,\r\n dataObject[pantheon[i]].name,\r\n dataObject[pantheon[i]].spoiler,\r\n dataObject[pantheon[i]].wiki\r\n );\r\n }\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies the level of player's nail upgrades, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing nail upgrades data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search in the save file\r\n */\r\nfunction CheckNailUpgrades(divId, dataObject, playerData) {\r\n\r\n // appends \"Nail\" to every array element\r\n // same as names in the database object\r\n let nail = [\"old\", \"sharpened\", \"channeled\", \"coiled\", \"pure\"].map((element) => element + \"Nail\");\r\n\r\n let sFillText = \"\";\r\n\r\n for (let i = 0; i < 5; i++) {\r\n (playerData.nailSmithUpgrades >= i) ? CurrentDataTrue(divId): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, dataObject[nail[i]].name, dataObject[nail[i]].spoiler, dataObject[nail[i]].wiki);\r\n }\r\n if (divId.percent) divId.percent--; // subject one for the Old Nail\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object are true or false, and appends HTML accordingly. Creates a copy of dataObject.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {string} idText Text string inside save data to search for\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} worldData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckWorldDataTrue(divId, idText, dataObject, worldData) {\r\n let orderedArray = [];\r\n let size = ObjectLength(dataObject);\r\n let sFillText = \"\";\r\n\r\n // Order the items before displaying them (creates a copy of dataObject)\r\n for (let i in dataObject) {\r\n orderedArray.push([i, dataObject[i].name, dataObject[i].spoiler, dataObject[i].wiki, false]);\r\n }\r\n\r\n // Search for completed items and mark them for display\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n for (let j = 0; j < size; j++) {\r\n if (worldData[i].id === idText && worldData[i].sceneName === orderedArray[j][0] && worldData[i].activated === true) {\r\n orderedArray[j][4] = true;\r\n }\r\n }\r\n }\r\n\r\n // Display the items as they were initially ordered\r\n for (let i = 0; i < size; i++) {\r\n CurrentDataFalse();\r\n if (orderedArray[i][4] === true) CurrentDataTrue(divId);\r\n sFillText += PrepareHTMLString(divId, orderedArray[i][1], orderedArray[i][2], orderedArray[i][3]);\r\n }\r\n\r\n AppendHTML(divId, sFillText);\r\n}\r\n\r\n/**\r\n * Verifies if the data in a specific object are true or false, or checks what values they have, and appends HTML accordingly.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject Object containing data to be verified\r\n * @param {object} playerData Reference/pointer to specific data where to search\r\n * @param {object} worldData Reference/pointer to specific data where to search\r\n */\r\nfunction CheckAdditionalThings(divId, dataObject, playerData, worldData, sceneData) {\r\n\r\n let {\r\n textPrefix,\r\n textSuffix,\r\n wiki\r\n } = \"\";\r\n let sFillText = \"\";\r\n\r\n // Start main loop\r\n for (let i in dataObject) {\r\n textPrefix = dataObject[i].name;\r\n (dataObject[i].hasOwnProperty(\"spoiler\")) ? textSuffix = dataObject[i].spoiler: textSuffix = \"\";\r\n (dataObject[i].hasOwnProperty(\"wiki\")) ? wiki = dataObject[i].wiki: wiki = \"\";\r\n\r\n let {\r\n amount,\r\n countTotal,\r\n total,\r\n unbroken,\r\n broken,\r\n discoveredTotal\r\n } = 0;\r\n\r\n switch (i) {\r\n case \"areaMaps\":\r\n case \"grubsCollected\":\r\n case \"dreamOrbs\":\r\n case \"fountainGeo\":\r\n case \"nailDamage\":\r\n case \"stationsOpened\":\r\n case \"charmSlots\":\r\n case \"whisperingRoots\":\r\n case \"journalEntriesCompleted\":\r\n case \"journalNotesCompleted\":\r\n case \"whiteDefenderDefeats\":\r\n case \"greyPrinceDefeats\":\r\n if (i === \"areaMaps\") {\r\n amount = CountMaps(dataObject[i].list);\r\n } else if (i === \"whisperingRoots\") {\r\n amount = CountWorldItem(\"Dream Plant\");\r\n } else {\r\n amount = playerData[i];\r\n }\r\n if (i === \"stationsOpened\") {\r\n if (playerData.openedHiddenStation === true) amount++;\r\n }\r\n countTotal = amount;\r\n if (i === \"journalEntriesCompleted\" || i === \"journalNotesCompleted\") {\r\n countTotal = amount + \" / \" + playerData.journalEntriesTotal;\r\n }\r\n if (i === \"grubsCollected\") LogMissingGrubs();\r\n\r\n textPrefix += \": \" + countTotal;\r\n\r\n if (i === \"greyPrinceDefeats\") {\r\n // backwards compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${dataObject[i].name}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n } else if (playerData.zoteDead === true || (playerData.zoteRescuedBuzzer === false && playerData.hasWalljump === true)) {\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n }\r\n }\r\n\r\n if (i === \"whiteDefenderDefeats\") {\r\n // backwards compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${dataObject[i].name}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n }\r\n (amount >= dataObject[i].max) ? CurrentDataTrue(): CurrentDataBlank();\r\n break;\r\n case \"geoPool\":\r\n case \"rancidEggs\":\r\n case \"jinnEggsSold\":\r\n case \"xunFlowerBrokeTimes\":\r\n textPrefix += \": \" + Math.abs(playerData[i]);\r\n (i === \"geoPool\" && playerData[i] > 0) ? CurrentDataBlank(): CurrentDataTrue();\r\n\r\n if (i === \"jinnEggsSold\") {\r\n // fade out if not on Steel Soul\r\n if (playerData.permadeathMode < 1) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n }\r\n\r\n break;\r\n case \"geoRocks\":\r\n discoveredTotal = sceneData.geoRocks.length;\r\n\r\n unbroken = CountGeoRocks(discoveredTotal, \"unbroken\");\r\n broken = CountGeoRocks(discoveredTotal, \"broken\");\r\n\r\n textPrefix += `: ${unbroken} | ${broken} | ${discoveredTotal}`;\r\n CurrentDataTrue();\r\n break;\r\n case \"shopkeeperKey\":\r\n (playerData.hasSlykey === true || playerData.gaveSlykey === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"elegantKey\":\r\n (playerData.hasWhiteKey === true || playerData.usedWhiteKey === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"loveKey\":\r\n (playerData.hasLoveKey === true || playerData.openedLoveDoor === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"simpleKeyCityOfTears\": // #2\r\n (FindWorldItem(\"Ruins1_17\", \"Shiny Item\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"simpleKeyAncientBasin\": // #3\r\n (FindWorldItem(\"Abyss_20\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"gotLurkerKey\":\r\n case \"nightmareLanternLit\":\r\n case \"killedPaleLurker\":\r\n case \"whiteDefenderDefeated\":\r\n case \"gotGrimmNotch\":\r\n case \"fragileGreed_unbreakable\":\r\n case \"fragileHealth_unbreakable\":\r\n case \"fragileStrength_unbreakable\":\r\n case \"killedBindingSeal\":\r\n case \"killedGodseekerMask\":\r\n case \"givenGodseekerFlower\":\r\n case \"givenOroFlower\":\r\n case \"givenWhiteLadyFlower\":\r\n case \"givenEmilitiaFlower\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreAncientBasin\": // #1\r\n (FindWorldItem(\"Abyss_17\", \"Battle Scene Ore\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreSeer\": // #2\r\n (playerData.dreamReward2 === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreCrystalPeak\": // #3\r\n (FindWorldItem(\"Mines_34\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreDeepnest\": // #4\r\n (FindWorldItem(\"Deepnest_32\", \"Shiny Item Stand\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreGrubfather\": // #5\r\n (FindWorldItem(\"Crossroads_38\", \"Shiny Item Ore\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"paleOreColosseum\": // #6\r\n (FindWorldItem(\"Room_Colosseum_Silver\", \"Shiny Item\")) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"relicsWandererJournal\":\r\n case \"relicsHallownestSeal\":\r\n case \"relicsKingsIdol\":\r\n case \"relicsArcaneEgg\":\r\n total = playerData[dataObject[i].nameHeld] + playerData[dataObject[i].nameSold];\r\n (total >= dataObject[i].max) ? CurrentDataTrue(): CurrentDataBlank();\r\n textPrefix += \": \" + total;\r\n break;\r\n case \"bossDoorStateTier5\":\r\n if (playerData.hasOwnProperty(\"bossDoorStateTier5\") === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n } else {\r\n (playerData[i].completed === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n }\r\n break;\r\n case \"killsBindingSeal\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] == 0) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"killedVoidIdol_1\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n if (playerData[i] === false && (playerData.killedVoidIdol_2 === true || playerData.killedVoidIdol_3 === true)) CurrentDataTrue();\r\n break;\r\n case \"killedVoidIdol_2\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n if (playerData[i] === false && playerData.killedVoidIdol_3 === true) CurrentDataTrue();\r\n break;\r\n case \"killedVoidIdol_3\":\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n break;\r\n case \"greyPrinceDefeated\":\r\n // compatibility with earlier game versions\r\n if (playerData.hasOwnProperty(i) === false) {\r\n CurrentDataBlank();\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n break;\r\n } else if (playerData.zoteDead === true || (playerData.zoteRescuedBuzzer === false && playerData.hasWalljump === true)) {\r\n textPrefix = `${textPrefix}`;\r\n textSuffix = `${textSuffix}`;\r\n }\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataBlank();\r\n if (playerData.zoteRescuedBuzzer === true && playerData[i] === false) CurrentDataFalse();\r\n break;\r\n case \"zoteStatus\":\r\n CurrentDataFalse();\r\n if (playerData.zoteDead === true) {\r\n textPrefix = dataObject[i].nameNeglect;\r\n textSuffix = dataObject[i].spoilerNeglect;\r\n CurrentDataTrue();\r\n } else if (playerData.killedZote === true) {\r\n textPrefix = dataObject[i].nameRivalry;\r\n textSuffix = dataObject[i].spoilerRivalry;\r\n CurrentDataTrue();\r\n } else if (playerData.zoteRescuedBuzzer === false) {\r\n if (playerData.hasWalljump === false) {\r\n textPrefix = dataObject[i].nameTrappedVengefly;\r\n textSuffix = dataObject[i].spoilerTrappedVengefly;\r\n } else if (playerData.hasWalljump === true) {\r\n textPrefix = dataObject[i].nameNotRescuedVengefly;\r\n textSuffix = dataObject[i].spoilerNotRescuedVengefly;\r\n }\r\n } else if (playerData.zoteRescuedBuzzer === true) {\r\n if (playerData.zoteRescuedDeepnest === false) {\r\n textPrefix = dataObject[i].nameTrappedDeepnest;\r\n textSuffix = dataObject[i].spoilerTrappedDeepnest;\r\n } else if (playerData.zoteRescuedDeepnest === true) {\r\n if (playerData.killedZote === false) {\r\n textPrefix = dataObject[i].nameColosseum;\r\n textSuffix = dataObject[i].spoilerColosseum;\r\n }\r\n }\r\n }\r\n break;\r\n case \"nailsmithStatus\":\r\n CurrentDataFalse();\r\n if (playerData.nailsmithKilled === true) {\r\n textPrefix = dataObject[i].namePurity;\r\n textSuffix = dataObject[i].spoilerPurity;\r\n CurrentDataTrue();\r\n } else if (playerData.nailsmithConvoArt === true) {\r\n textPrefix = dataObject[i].nameHappyCouple;\r\n textSuffix = dataObject[i].spoilerHappyCouple;\r\n CurrentDataTrue();\r\n } else if (playerData.nailsmithSpared === true) {\r\n textPrefix = dataObject[i].nameSheoHutWaiting;\r\n textSuffix = dataObject[i].spoilerSheoHutWaiting;\r\n } else {\r\n textPrefix = dataObject[i].nameUpgradeNail;\r\n textSuffix = dataObject[i].spoilerUpgradeNail;\r\n }\r\n break;\r\n case \"mrMushroomState\":\r\n sFillText += CheckMrMushroomState(divId, dataObject[i], playerData[i]);\r\n break;\r\n default:\r\n (playerData[i] === true) ? CurrentDataTrue(): CurrentDataFalse();\r\n } // end switch (i)\r\n\r\n if (i === \"mrMushroomState\") continue;\r\n sFillText += PrepareHTMLString(divId, textPrefix, textSuffix, wiki);\r\n } // end for (let i in dataObject)\r\n\r\n AppendHTML(divId, sFillText);\r\n\r\n // ==========================================\r\n // -------------- Methods ---------------- //\r\n\r\n /**\r\n * Searches for a given item in the in-game area and returns true when found and collected.\r\n * @param {string} itemArea Code of the in-game area on the map\r\n * @param {string} itemId Name of the item\r\n * @returns {boolean}\r\n */\r\n function FindWorldItem(itemArea = \"\", itemId = \"Shiny Item\") {\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id === itemId) {\r\n if (worldData[i].sceneName === itemArea) {\r\n if (worldData[i].activated === true) return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Searches for a given item that the player has found and returns the amount of them that the player completed.\r\n * @param {string} itemId Name of the item\r\n * @returns {number}\r\n */\r\n function CountWorldItem(itemId = \"\") {\r\n let total = 0;\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id === itemId) {\r\n if (worldData[i].activated === true) total++;\r\n }\r\n }\r\n return total;\r\n }\r\n\r\n /**\r\n * Counts the number of maps the player has acquired (from the list in an array)\r\n * @param {array} mapArray Array of strings with area map names\r\n * @returns {number}\r\n */\r\n function CountMaps(mapArray) {\r\n let totalMaps = 0;\r\n for (let i = 0, len = mapArray.length; i < len; i++) {\r\n if (playerData[mapArray[i]] === true) totalMaps++\r\n }\r\n return totalMaps;\r\n }\r\n\r\n /**\r\n * Counts the total amount of Geo Rocks Unbroken or Broken. Logs to console all the Unbroken IDs and Map locations.\r\n * @param {number} arrayLength How many items the Geo Rocks array is currently storing (for iteration)\r\n * @param {string} mode Choose which Geo Rocks to count (broken or unbroken)\r\n */\r\n function CountGeoRocks(arrayLength, mode = \"unbroken\") {\r\n\r\n let countTotal = 0;\r\n let geoRocksLog = [];\r\n\r\n if (mode === \"unbroken\") {\r\n for (let i = 0; i < arrayLength; i++) {\r\n if (sceneData.geoRocks[i].hitsLeft > 0) {\r\n countTotal++;\r\n geoRocksLog.push(`#${countTotal} 🏔️ ${sceneData.geoRocks[i].id} 🗺️ ${TranslateMapName(sceneData.geoRocks[i].sceneName)} ⌨️ ${sceneData.geoRocks[i].sceneName}`);\r\n }\r\n }\r\n\r\n if (!countTotal) {\r\n console.log(\"%cAll Geo Rocks Broken!\", \"color: #16c60c; font-weight: 700;\");\r\n } else {\r\n console.groupCollapsed(`%cUnbroken Geo Rocks (${countTotal}):`, \"color: #16c60c; font-weight: 700;\");\r\n\r\n for (let i = 0, length = geoRocksLog.length; i < length; i++) {\r\n console.log(geoRocksLog[i]);\r\n }\r\n\r\n console.groupEnd();\r\n }\r\n } else {\r\n for (let i = 0; i < arrayLength; i++) {\r\n if (sceneData.geoRocks[i].hitsLeft === 0) countTotal++;\r\n }\r\n }\r\n\r\n return countTotal;\r\n }\r\n\r\n /**\r\n * Compares and logs all unrescued Grubs in a list: IDs and map locations\r\n */\r\n function LogMissingGrubs() {\r\n\r\n let rescuedGrubsSceneList = [];\r\n\r\n for (let i = 0, length = worldData.length; i < length; i++) {\r\n if (worldData[i].id.includes(\"Grub Bottle\")) {\r\n if (worldData[i].activated === true) {\r\n // There are 3 duplicates of the same map scene name from older game save files. Prevents adding duplicates\r\n /* if (worldData[i].sceneName === \"Ruins2_11\" && worldData[i].id === \"Grub Bottle (1)\") {\r\n continue;\r\n } else if (worldData[i].sceneName === \"Ruins2_11\" && worldData[i].id === \"Grub Bottle (2)\") {\r\n continue;\r\n } else { */\r\n rescuedGrubsSceneList.push(worldData[i].sceneName);\r\n // }\r\n }\r\n }\r\n }\r\n\r\n // Filtering the reference database Grub list to include only the missing values\r\n let missingGrubsList = HK.GRUBS_LIST.filter(x => !rescuedGrubsSceneList.includes(x));\r\n let length = missingGrubsList.length;\r\n\r\n if (!length) {\r\n console.log(\"%cAll Grubs Rescued!\", \"color: #16c60c; font-weight: 700;\");\r\n } else {\r\n console.groupCollapsed(`%cUnrescued Grubs (${length}):`, \"color: #16c60c; font-weight: 700;\");\r\n\r\n for (let i = 0; i < length; i++) {\r\n console.log(`#${HK.GRUBS_LIST.indexOf(missingGrubsList[i]) + 1} 🗺️ ${TranslateMapName(missingGrubsList[i])} ⌨️ ${missingGrubsList[i]}`);\r\n }\r\n\r\n console.groupEnd();\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * Checks and fills all the 7 locations of Mr Mushroom.\r\n * @param {object} divId ID of the HTML element for data appending\r\n * @param {object} dataObject object containing the Mr Mushroom name and spoilers/locations\r\n * @param {number} mrMushroomState playerData.mrMushroomState read from the save file. (0-8)\r\n */\r\nfunction CheckMrMushroomState(divId, dataObject, mrMushroomState = 0) {\r\n\r\n let sFillText = \"\";\r\n\r\n if (mrMushroomState > 1) {\r\n for (let i = 1; i <= 7; i++) {\r\n (mrMushroomState > i) ? CurrentDataTrue(): CurrentDataFalse();\r\n sFillText += PrepareHTMLString(divId, `${dataObject.name} #${i}`, dataObject[\"spoiler\" + i], dataObject.wiki);\r\n }\r\n } else {\r\n CurrentDataFalse();\r\n for (let i = 1; i <= 7; i++) {\r\n sFillText += PrepareHTMLString(divId, `${dataObject.name} #${i}`, dataObject[\"spoiler\" + i], dataObject.wiki);\r\n }\r\n }\r\n\r\n return sFillText;\r\n}\r\n\r\n/**\r\n * Checks, validates and shows hints to the player depending on their save progression, in chronological order. Shows only hint for the last uncompleted event. If Hollow Knight is defeated, shows a dummy text.\r\n * @param {object} divId object containing div hints ID and h2 title\r\n * @param {object} dataObject object containing all hints data\r\n * @param {object} playerData object containing HK Player Data to look in\r\n * @param {object} worldData object containing HK World Data to look in\r\n * @returns {bool} true when defeated Hollow Knight, false if not\r\n */\r\nfunction CheckHintsTrue(divId, dataObject, playerData, worldData) {\r\n\r\n let sFillText = \"\";\r\n\r\n if (playerData.killedHollowKnight === true) {\r\n // a text to show when player already finished their first playthrough (killed Hollow Knight first time)\r\n AppendHTML(divId, \"...a successful Knight who doesn't need hints anymore. The Knight explores the world of Hallownest patiently in constant search of its remaining secrets...\");\r\n return true;\r\n }\r\n\r\n for (let i in dataObject) {\r\n if (playerData[i] === true) {\r\n continue;\r\n } else if (i === \"fireballLevel\") {\r\n if (playerData[i] >= 1) {\r\n continue;\r\n } else {\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"Crossroads_04\") {\r\n let GruzMotherDefeated = false;\r\n\r\n for (let k = 0, length = worldData.length; k < length; k++) {\r\n if (worldData[k].id === \"Battle Scene\" && worldData[k].sceneName === \"Crossroads_04\" && worldData[k].activated === true) {\r\n GruzMotherDefeated = true;\r\n break;\r\n }\r\n }\r\n if (GruzMotherDefeated) {\r\n continue; // next dataObject (i)\r\n } else {\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"dungDefenderOrHornet2\") {\r\n if (playerData.defeatedDungDefender === true) {\r\n continue;\r\n } else if (playerData.hornetOutskirtsDefeated === true) {\r\n continue;\r\n } else { // if no Dung Defender or Hornet 2\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else if (i === \"ismaTearOrShadeCloak\") {\r\n if (playerData.hasAcidArmour === true) {\r\n continue;\r\n } else if (playerData.hasKingsBrand === true) {\r\n if (playerData.hasShadowDash === true) {\r\n continue;\r\n } else { // if Kings Brand but no Shade Cloak\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else { // if no Isma's Tear or Kings Brand\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } else { // if anything from the hints list is not done\r\n sFillText += PrepareHTMLString(divId, \"\", dataObject[i].spoiler);\r\n break;\r\n }\r\n } // end: for (let i in dataObject)\r\n\r\n AppendHTML(divId, sFillText);\r\n} // function CheckHintsTrue()\r\n\r\n/**\r\n * Pre-Cleans HTML. Reads contents inside text area and parses it to a JavaScript object. If not empty, runs HKCheckCompletion() to check data.\r\n */\r\nfunction HKReadTextArea(textAreaId = \"\") {\r\n\r\n // refresh and prepare document for filling with data from the save\r\n InitialHTMLPopulate(HK.DIV_ID);\r\n\r\n let contents = document.getElementById(textAreaId).value;\r\n\r\n if (contents.length) {\r\n\r\n try {\r\n let jsonObject = JSON.parse(contents);\r\n // console.log(jsonObject);\r\n if (jsonObject.hasOwnProperty(\"playerData\")) HKCheckCompletion(jsonObject);\r\n // console.log(jsonObject);\r\n } catch (error) {\r\n alert(`This seems like not a valid Hollow Knight save. ${error}`);\r\n console.info(`This seems like not a valid Hollow Knight save. ${error}`);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Populate all HTML with given ID and their initial data set as false (used at DOM load)\r\n * @param {object} divIdObj JavaScript Object containing all HTML IDs to populate\r\n */\r\nfunction InitialHTMLPopulate(divIdObj) {\r\n\r\n let sFillText = \"\";\r\n\r\n CurrentDataFalse();\r\n\r\n PrefillHTML(divIdObj);\r\n\r\n // Play Time\r\n CheckPlayTime(divIdObj.intro, 0)\r\n\r\n // Game Completion\r\n CheckCompletionPercent(divIdObj.intro, 0);\r\n\r\n // Save File Version\r\n CheckSaveFileVersion(divIdObj.intro);\r\n\r\n // Fleur Divide\r\n AppendHTML(divIdObj.intro, FLEUR_DIVIDE);\r\n\r\n // Health Masks\r\n CheckHealthMasks(divIdObj.intro);\r\n\r\n // Soul Orbs\r\n CheckSoulOrbs(divIdObj.intro, 99);\r\n\r\n // Charm Notches\r\n CheckNotches(divIdObj.intro);\r\n\r\n // Geo\r\n CheckGeo(divIdObj.intro);\r\n\r\n // Keep symbol False\r\n CurrentDataFalse();\r\n\r\n // First Hint Only\r\n AppendHTML(divIdObj.hints, HK.HINTS.fireballLevel.spoiler);\r\n\r\n // Temp arrays storing references (addresses) to objects for looping through them (duplicates important)\r\n let hkObjArray = [HK.BOSSES, HK.BOSSES_WORLD, HK.CHARMS, HK.EQUIPMENT, HK.NAILARTS, HK.MASKSHARDS, HK.MASKSHARDS_WORLD, HK.VESSELFRAGMENTS, HK.VESSELFRAGMENTS_WORLD, HK.DREAMERS, HK.COLOSSEUM, HK.DREAMNAIL, HK.WARRIORDREAMS, HK.GRIMMTROUPE, HK.LIFEBLOOD, HK.GODMASTER, HK.ESSENTIAL, HK.ACHIEVEMENTS, HK.STATISTICS];\r\n\r\n // duplicates and order important - must be the same as in hkObjArray[]\r\n let divObjArray = [divIdObj.bosses, divIdObj.bosses, divIdObj.charms, divIdObj.equipment, divIdObj.nailArts, divIdObj.maskShards, divIdObj.maskShards, divIdObj.vesselFragments, divIdObj.vesselFragments, divIdObj.dreamers, divIdObj.colosseum, divIdObj.dreamNail, divIdObj.warriorDreams, divIdObj.grimmTroupe, divIdObj.lifeblood, divIdObj.godmaster, divIdObj.essential, divIdObj.achievements, divIdObj.statistics];\r\n\r\n // Looped filling to reduce redundancy\r\n do {\r\n for (let entry in hkObjArray[0]) {\r\n if (entry === \"mrMushroomState\") continue;\r\n sFillText += PrepareHTMLString(divObjArray[0], hkObjArray[0][entry].name, hkObjArray[0][entry].spoiler, hkObjArray[0][entry].wiki);\r\n }\r\n if (divObjArray[0]) {\r\n AppendHTML(divObjArray[0], sFillText);\r\n }\r\n sFillText = \"\";\r\n divObjArray.shift();\r\n } while (hkObjArray.shift());\r\n\r\n // Nail Upgrades Misc\r\n sFillText = \"\";\r\n for (let i in HK.NAILUPGRADES) {\r\n sFillText += PrepareHTMLString(divIdObj.nailUpgrades, HK.NAILUPGRADES[i].name, HK.NAILUPGRADES[i].spoiler, HK.NAILUPGRADES[i].wiki);\r\n }\r\n AppendHTML(divIdObj.nailUpgrades, sFillText);\r\n\r\n // Spells Misc\r\n sFillText = \"\";\r\n for (let i in HK.SPELLS) {\r\n sFillText += PrepareHTMLString(divIdObj.spells, HK.SPELLS[i].name, HK.SPELLS[i].spoiler, HK.SPELLS[i].wiki);\r\n }\r\n AppendHTML(divIdObj.spells, sFillText);\r\n\r\n // Godmaster Doors Misc\r\n sFillText = \"\";\r\n for (let i in HK.GODMASTER_DOORS) {\r\n sFillText += PrepareHTMLString(divIdObj.godmaster, HK.GODMASTER_DOORS[i].name, HK.GODMASTER_DOORS[i].spoiler, HK.GODMASTER_DOORS[i].wiki);\r\n }\r\n AppendHTML(divIdObj.godmaster, sFillText);\r\n\r\n // Mr Mushroom 1 - 7\r\n sFillText = CheckMrMushroomState(divIdObj.achievements, HK.ACHIEVEMENTS.mrMushroomState);\r\n AppendHTML(divIdObj.achievements, sFillText);\r\n\r\n // Fleur Dividers\r\n AppendHTML(divIdObj.godmaster, FLEUR_DIVIDE);\r\n AppendHTML(divIdObj.essential, FLEUR_DIVIDE);\r\n AppendHTML(divIdObj.achievements, FLEUR_DIVIDE);\r\n\r\n // Check local storage first to set proper checkbox state before the below functions start (default is always unchecked)\r\n if (StorageAvailable('localStorage')) {\r\n if (localStorage.getItem(\"hkCheckboxHints\") === \"checked\") document.getElementById(\"checkbox-hints\").checked = true;\r\n if (localStorage.getItem(\"hkCheckboxSpoilers\") === \"checked\") document.getElementById(\"checkbox-spoilers\").checked = true;\r\n }\r\n\r\n // if (localStorage.getItem(\"hkCheckboxHints\") === \"checked\") document.getElementById(\"checkbox-hints\").checked = true;\r\n // if (localStorage.getItem(\"hkCheckboxSpoilers\") === \"checked\") document.getElementById(\"checkbox-spoilers\").checked = true;\r\n\r\n // Prevents wrong checkbox behaviour (must run after everything is finished)\r\n CheckboxHintsToggle();\r\n CheckboxSpoilersToggle();\r\n}\r\n\r\n/**\r\n * Zero-fill all \"percent\" properties in the JSON Object (reset to default)\r\n * @param {object} jsObj object containing the \"percent\" properties to be reset to 0\r\n */\r\nfunction ResetCompletion(jsObj) {\r\n\r\n for (let i in jsObj) {\r\n if (jsObj[i].hasOwnProperty(\"percent\")) jsObj[i].percent = 0;\r\n }\r\n}\r\n\r\n/**\r\n * Focuses, selects and copies to clipboard contents inside a clicked element. Includes optional tooltip update after the copying is done.\r\n * @param {MouseEvent} mouseEvent from the clicked element (AddEventListener)\r\n * @param {string} tooltipId Element ID of the tooltip to update\r\n * @param {string} tooltipFill Updated contents of the tooltip\r\n */\r\nfunction SelectCopyInputText(mouseEvent, tooltipId = \"\", tooltipFill = \"\") {\r\n\r\n const element = document.getElementById(mouseEvent.target.id);\r\n\r\n // this prevents the un-selected effect after clicking the second time (clears all selection first)\r\n if (window.getSelection) {\r\n window.getSelection().removeAllRanges();\r\n }\r\n\r\n element.focus(); // best to focus the element first before selecting\r\n element.select();\r\n element.setSelectionRange(0, 99999); // for mobile devices\r\n\r\n // Copy the text inside the text field to clipboard\r\n document.execCommand(\"copy\");\r\n\r\n // optional tooltip showing\r\n if (tooltipFill.length && tooltipId.length) FillInnerHTML(tooltipId, tooltipFill);\r\n}\r\n\r\n/**\r\n * Fills the innerHTML of a given HTML Element with provided contents\r\n * @param {string} elementId Element ID to update\r\n * @param {string} textFill Updated contents (innerHTML)\r\n */\r\nfunction FillInnerHTML(elementId, textFill) {\r\n\r\n const element = document.getElementById(elementId);\r\n element.innerHTML = textFill;\r\n}\r\n\r\n/* ----------------------- Event Listeners -------------------------- */\r\n\r\n// Populate HTML at load (before img and css)\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n InitialHTMLPopulate(HK.DIV_ID);\r\n});\r\n\r\n// Does an action when the save file location input text is clicked once (auto select & copy to clipboard)\r\ndocument.getElementById(\"save-location-input\").addEventListener(\"click\", (e) => {\r\n SelectCopyInputText(e, \"save-location-input-tooltip\", \"Copied save file location to clipboard\");\r\n}, false);\r\n\r\n// Choose File input field\r\ndocument.getElementById(\"save-location-input\").addEventListener(\"mouseout\", () => {\r\n FillInnerHTML(\"save-location-input-tooltip\", \"Click once to copy to clipboard\");\r\n}, false);\r\n\r\n// Analyze Text button\r\ndocument.getElementById(\"save-area-read\").addEventListener(\"click\", () => {\r\n HKReadTextArea(\"save-area\");\r\n}, false);\r\n\r\nexport {\r\n // to use in LoadSaveFile.js for auto-analyzing file after decoding\r\n HKCheckCompletion\r\n};","/* \r\n Parts of the code thanks to bloodorca https://github.com/bloodorca/hollow (base64.js, functions.js) with slight modifications.\r\n The steps used there for decryption were taken from KayDeeTee https://github.com/KayDeeTee/Hollow-Knight-SaveManager\r\n Without these two people the existence of this tool wouldn't be possible :)\r\n*/\r\n\r\n// ---------------- Constants ----------------- //\r\n\r\n// AES JS for file decryption\r\nconst aesjs = require(\"./aes-js.js\");\r\n// For reading the text area after save decoding\r\nimport {\r\n HKCheckCompletion\r\n} from \"./HKCheckCompletion.js\";\r\n\r\nconst CSHARP_HEADER = [0, 1, 0, 0, 0, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 6, 1, 0, 0, 0]; // 22 bytes\r\n\r\nconst BASE64_ARRAY = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".split(\"\").map(c => c.charCodeAt(0));\r\nconst BASE64_DECODE_TABLE = new Map(BASE64_ARRAY.map((ord, i) => [ord, i]));\r\n\r\nconst AES_KEY = new TextEncoder().encode('UKu52ePUBwetZ9wNX88o54dnfKRu0T1l'); // encodes a string to Uint8Array (prepare for AES JS)\r\nconst ECB_STREAM_CIPHER = new aesjs.ModeOfOperation.ecb(AES_KEY); // create a new AES stream cipher object using the encoded key\r\n\r\n// ---------------- Variables ----------------- //\r\n\r\nlet benchLSFBegin, benchLSFEnd, benchTotal;\r\n\r\n// ---------------- Functions ----------------- //\r\n\r\n/**\r\n * Main input tag file function. Selects the first file, reads it as an Array Buffer, starts the processing of the file when loaded.\r\n * Starts benchmarking.\r\n * @param {FileList} input FileList object containing a list of File objects. The FileList behaves like an array, so you can check its length property to get the number of selected files.\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction LoadSaveFile(input, time) {\r\n\r\n const inputFileList = input.files;\r\n // console.info(\"Input length: \" + input.files.length)\r\n // Cease further processing if user canceled the file input dialog\r\n if (inputFileList.length < 1) return false;\r\n\r\n // start benchmark\r\n benchLSFBegin = time;\r\n\r\n // Prepares a File object from the first file of the input files for reading as an Array Buffer\r\n let inputFileObject = inputFileList[0];\r\n\r\n // Cleans the file list to avoid problems after subsequent use\r\n // document.getElementById(\"save-area-file\").value = \"\";\r\n\r\n // 1. read file\r\n // The ArrayBuffer object is used to represent a generic, fixed-length raw binary data buffer.\r\n // It is an array of bytes, often referred to in other languages as a \"byte array\".\r\n\r\n // new FileReader()\r\n let inputReader = new FileReader();\r\n // readAsArrayBuffer(file)\r\n inputReader.readAsArrayBuffer(inputFileObject);\r\n // addEventListener(\"load\", function) - to decode the file when loaded\r\n inputReader.addEventListener(\"load\", ProcessFileObject);\r\n}\r\n\r\n/**\r\n * Reads the File object as an Array Buffer and does all other operations (decoding, decryption, conversion to string, pasting to text area).\r\n * Launches the HKReadTextArea() function automatically after pasting the string to text area\r\n */\r\nfunction ProcessFileObject() {\r\n let inputArrayBuffer = this.result;\r\n let decodedString;\r\n\r\n // 2. Decode file\r\n\r\n try {\r\n // Uint8Array(ArrayBuffer) uint8_t equivalent in C\r\n inputArrayBuffer = new Uint8Array(inputArrayBuffer);\r\n\r\n // ArrayBuffer.slice()\r\n // The slice() method copies up to, but not including, the byte indicated by the end parameter.\r\n inputArrayBuffer.slice();\r\n\r\n // remove C# header and LengthPrefixedString header (ArrayBuffer)\r\n inputArrayBuffer = RemoveHeaders(inputArrayBuffer);\r\n\r\n // base64 Decoding (ArrayBuffer)\r\n inputArrayBuffer = Base64Decode(inputArrayBuffer);\r\n\r\n // AES decryption (ECB) removes pkcs7 padding (ArrayBuffer)\r\n inputArrayBuffer = AESDecryption(inputArrayBuffer);\r\n\r\n // Convert ArrayBuffer to string/text TextDecoder().decode(ArrayBuffer)\r\n decodedString = new TextDecoder().decode(inputArrayBuffer);\r\n\r\n // finish and show benchmark\r\n benchLSFEnd = new Date();\r\n console.info(\"LoadSaveFile() time (ms) =\", benchLSFEnd - benchLSFBegin);\r\n\r\n // 4. Analyze the decoded string immediately\r\n try {\r\n HKCheckCompletion(JSON.parse(decodedString));\r\n } catch (error) {\r\n alert(`This seems like not a valid Hollow Knight save. ${error}`);\r\n console.info(`This seems like not a valid Hollow Knight save. ${error}`);\r\n }\r\n\r\n // 5. Paste decoded string file to text area\r\n document.getElementById(\"save-area\").value = \"\";\r\n document.getElementById(\"save-area\").value = decodedString;\r\n\r\n /* (async () => {\r\n document.getElementById(\"save-area\").value = \"\";\r\n document.getElementById(\"save-area\").value = await decodedString;\r\n })(); */\r\n\r\n // finish total and show benchmark\r\n benchTotal = new Date();\r\n console.info(\"Total time (ms) =\", benchTotal - benchLSFBegin);\r\n\r\n // alert(`Decoded String: ${decodedString}`);\r\n // alert(`Array Buffer: ${inputArrayBuffer}`);\r\n } catch (error) {\r\n alert(`The file cannot be decoded. ${error}`);\r\n console.info(`The file cannot be decoded. ${error}`);\r\n }\r\n}\r\n\r\n/**\r\n * Removes C# header, LengthPrefixedString header and byte 11 at the end of the Uint8 Array Buffer\r\n * @param {Uint8Array} buffer Uint8Array buffer for removing the header from\r\n * @param {Uint8Array} csHeader Uint8Array for the C# header length calculation\r\n * @returns {Uint8Array}\r\n */\r\nfunction RemoveHeaders(buffer, csHeader = CSHARP_HEADER) {\r\n // Remove the fixed C# header and byte 11 at the end. \r\n buffer = buffer.subarray(csHeader.length, buffer.length - 1);\r\n\r\n // Remove LengthPrefixedString header\r\n let lengthCount = 0;\r\n for (let i = 0; i < 5; i++) {\r\n lengthCount++;\r\n if ((buffer[i] & 0x80) == 0) {\r\n break;\r\n }\r\n }\r\n\r\n return buffer.subarray(lengthCount);\r\n}\r\n\r\n/**\r\n * Decodes an Array Buffer using a Base64 decode table\r\n * @param {Uint8Array} buffer Uint8Array Buffer to decode\r\n * @returns {Uint8Array}\r\n */\r\nfunction Base64Decode(buffer) {\r\n buffer = new Uint8Array(buffer).slice();\r\n buffer = buffer.map(v => BASE64_DECODE_TABLE.get(v));\r\n\r\n // The indexOf() method returns the first index at which a given element can be found in the array, or -1 if it is not present.\r\n let p = buffer.indexOf(64);\r\n let end;\r\n\r\n if (p != -1) {\r\n end = p;\r\n } else {\r\n end = buffer.length;\r\n }\r\n\r\n buffer = buffer.subarray(0, end);\r\n\r\n let output = new Uint8Array(3 * buffer.length / 4);\r\n let continuous = Math.floor(buffer.length / 4) * 4;\r\n\r\n for (let i = 0; i < continuous; i += 4) {\r\n let k = 3 * i / 4;\r\n output[k] = buffer[i] << 2 | buffer[i + 1] >> 4;\r\n output[k + 1] = (buffer[i + 1] & 0x0F) << 4 | buffer[i + 2] >> 2;\r\n output[k + 2] = (buffer[i + 2] & 0x03) << 6 | buffer[i + 3];\r\n }\r\n if (buffer[continuous] != undefined) {\r\n let k = 3 * continuous / 4;\r\n output[k] = buffer[continuous] << 2 | buffer[continuous + 1] >> 4;\r\n if (buffer[continuous + 2] != undefined) {\r\n output[k + 1] = (buffer[continuous + 1] & 0x0F) << 4 | buffer[continuous + 2] >> 2;\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\n/**\r\n * Decrypt an Uint8Array Buffer using aesjs (ECB) and a predefined AES key + remove pkcs7 padding\r\n * @param {Uint8Array} buffer Uint8Array buffer to decrypt\r\n * @returns {Uint8Array}\r\n */\r\nfunction AESDecryption(buffer, cipherObject = ECB_STREAM_CIPHER) {\r\n let output = cipherObject.decrypt(buffer);\r\n return output.subarray(0, -output[output.length - 1]);\r\n}\r\n\r\n// Assign actions (functions) to launch when a specific element is used\r\ndocument.getElementById(\"save-area-file\").addEventListener(\"change\", (event) => {\r\n LoadSaveFile(event.target, new Date());\r\n});\r\ndocument.getElementById(\"save-area-file\").addEventListener(\"click\", (mouseEvent) => {\r\n mouseEvent.target.value = \"\";\r\n});","/* eslint-disable */\n\"use strict\";\n\n(function (root) {\n\n function checkInt(value) {\n return (parseInt(value) === value);\n }\n\n function checkInts(arrayish) {\n if (!checkInt(arrayish.length)) {\n return false;\n }\n\n for (var i = 0; i < arrayish.length; i++) {\n if (!checkInt(arrayish[i]) || arrayish[i] < 0 || arrayish[i] > 255) {\n return false;\n }\n }\n\n return true;\n }\n\n function coerceArray(arg, copy) {\n\n // ArrayBuffer view\n if (arg.buffer && ArrayBuffer.isView(arg) && arg.name === 'Uint8Array') {\n\n if (copy) {\n if (arg.slice) {\n arg = arg.slice();\n } else {\n arg = Array.prototype.slice.call(arg);\n }\n }\n\n return arg;\n }\n\n // It's an array; check it is a valid representation of a byte\n if (Array.isArray(arg)) {\n if (!checkInts(arg)) {\n throw new Error('Array contains invalid value: ' + arg);\n }\n\n return new Uint8Array(arg);\n }\n\n // Something else, but behaves like an array (maybe a Buffer? Arguments?)\n if (checkInt(arg.length) && checkInts(arg)) {\n return new Uint8Array(arg);\n }\n\n throw new Error('unsupported array-like object');\n }\n\n function createArray(length) {\n return new Uint8Array(length);\n }\n\n function copyArray(sourceArray, targetArray, targetStart, sourceStart, sourceEnd) {\n if (sourceStart != null || sourceEnd != null) {\n if (sourceArray.slice) {\n sourceArray = sourceArray.slice(sourceStart, sourceEnd);\n } else {\n sourceArray = Array.prototype.slice.call(sourceArray, sourceStart, sourceEnd);\n }\n }\n targetArray.set(sourceArray, targetStart);\n }\n\n\n\n var convertUtf8 = (function () {\n function toBytes(text) {\n var result = [],\n i = 0;\n text = encodeURI(text);\n while (i < text.length) {\n var c = text.charCodeAt(i++);\n\n // if it is a % sign, encode the following 2 bytes as a hex value\n if (c === 37) {\n result.push(parseInt(text.substr(i, 2), 16))\n i += 2;\n\n // otherwise, just the actual byte\n } else {\n result.push(c)\n }\n }\n\n return coerceArray(result);\n }\n\n function fromBytes(bytes) {\n var result = [],\n i = 0;\n\n while (i < bytes.length) {\n var c = bytes[i];\n\n if (c < 128) {\n result.push(String.fromCharCode(c));\n i++;\n } else if (c > 191 && c < 224) {\n result.push(String.fromCharCode(((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f)));\n i += 2;\n } else {\n result.push(String.fromCharCode(((c & 0x0f) << 12) | ((bytes[i + 1] & 0x3f) << 6) | (bytes[i + 2] & 0x3f)));\n i += 3;\n }\n }\n\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n var convertHex = (function () {\n function toBytes(text) {\n var result = [];\n for (var i = 0; i < text.length; i += 2) {\n result.push(parseInt(text.substr(i, 2), 16));\n }\n\n return result;\n }\n\n // http://ixti.net/development/javascript/2011/11/11/base64-encodedecode-of-utf8-in-browser-with-js.html\n var Hex = '0123456789abcdef';\n\n function fromBytes(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i++) {\n var v = bytes[i];\n result.push(Hex[(v & 0xf0) >> 4] + Hex[v & 0x0f]);\n }\n return result.join('');\n }\n\n return {\n toBytes: toBytes,\n fromBytes: fromBytes,\n }\n })();\n\n\n // Number of rounds by keysize\n var numberOfRounds = {\n 16: 10,\n 24: 12,\n 32: 14\n }\n\n // Round constant words\n var rcon = [0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91];\n\n // S-box and Inverse S-box (S is for Substitution)\n var S = [0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16];\n var Si = [0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d];\n\n // Transformations for encryption\n var T1 = [0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a];\n var T2 = [0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616];\n var T3 = [0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16];\n var T4 = [0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c];\n\n // Transformations for decryption\n var T5 = [0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742];\n var T6 = [0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857];\n var T7 = [0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8];\n var T8 = [0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0];\n\n // Transformations for decryption key expansion\n var U1 = [0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3];\n var U2 = [0x00000000, 0x0b0e090d, 0x161c121a, 0x1d121b17, 0x2c382434, 0x27362d39, 0x3a24362e, 0x312a3f23, 0x58704868, 0x537e4165, 0x4e6c5a72, 0x4562537f, 0x74486c5c, 0x7f466551, 0x62547e46, 0x695a774b, 0xb0e090d0, 0xbbee99dd, 0xa6fc82ca, 0xadf28bc7, 0x9cd8b4e4, 0x97d6bde9, 0x8ac4a6fe, 0x81caaff3, 0xe890d8b8, 0xe39ed1b5, 0xfe8ccaa2, 0xf582c3af, 0xc4a8fc8c, 0xcfa6f581, 0xd2b4ee96, 0xd9bae79b, 0x7bdb3bbb, 0x70d532b6, 0x6dc729a1, 0x66c920ac, 0x57e31f8f, 0x5ced1682, 0x41ff0d95, 0x4af10498, 0x23ab73d3, 0x28a57ade, 0x35b761c9, 0x3eb968c4, 0x0f9357e7, 0x049d5eea, 0x198f45fd, 0x12814cf0, 0xcb3bab6b, 0xc035a266, 0xdd27b971, 0xd629b07c, 0xe7038f5f, 0xec0d8652, 0xf11f9d45, 0xfa119448, 0x934be303, 0x9845ea0e, 0x8557f119, 0x8e59f814, 0xbf73c737, 0xb47dce3a, 0xa96fd52d, 0xa261dc20, 0xf6ad766d, 0xfda37f60, 0xe0b16477, 0xebbf6d7a, 0xda955259, 0xd19b5b54, 0xcc894043, 0xc787494e, 0xaedd3e05, 0xa5d33708, 0xb8c12c1f, 0xb3cf2512, 0x82e51a31, 0x89eb133c, 0x94f9082b, 0x9ff70126, 0x464de6bd, 0x4d43efb0, 0x5051f4a7, 0x5b5ffdaa, 0x6a75c289, 0x617bcb84, 0x7c69d093, 0x7767d99e, 0x1e3daed5, 0x1533a7d8, 0x0821bccf, 0x032fb5c2, 0x32058ae1, 0x390b83ec, 0x241998fb, 0x2f1791f6, 0x8d764dd6, 0x867844db, 0x9b6a5fcc, 0x906456c1, 0xa14e69e2, 0xaa4060ef, 0xb7527bf8, 0xbc5c72f5, 0xd50605be, 0xde080cb3, 0xc31a17a4, 0xc8141ea9, 0xf93e218a, 0xf2302887, 0xef223390, 0xe42c3a9d, 0x3d96dd06, 0x3698d40b, 0x2b8acf1c, 0x2084c611, 0x11aef932, 0x1aa0f03f, 0x07b2eb28, 0x0cbce225, 0x65e6956e, 0x6ee89c63, 0x73fa8774, 0x78f48e79, 0x49deb15a, 0x42d0b857, 0x5fc2a340, 0x54ccaa4d, 0xf741ecda, 0xfc4fe5d7, 0xe15dfec0, 0xea53f7cd, 0xdb79c8ee, 0xd077c1e3, 0xcd65daf4, 0xc66bd3f9, 0xaf31a4b2, 0xa43fadbf, 0xb92db6a8, 0xb223bfa5, 0x83098086, 0x8807898b, 0x9515929c, 0x9e1b9b91, 0x47a17c0a, 0x4caf7507, 0x51bd6e10, 0x5ab3671d, 0x6b99583e, 0x60975133, 0x7d854a24, 0x768b4329, 0x1fd13462, 0x14df3d6f, 0x09cd2678, 0x02c32f75, 0x33e91056, 0x38e7195b, 0x25f5024c, 0x2efb0b41, 0x8c9ad761, 0x8794de6c, 0x9a86c57b, 0x9188cc76, 0xa0a2f355, 0xabacfa58, 0xb6bee14f, 0xbdb0e842, 0xd4ea9f09, 0xdfe49604, 0xc2f68d13, 0xc9f8841e, 0xf8d2bb3d, 0xf3dcb230, 0xeecea927, 0xe5c0a02a, 0x3c7a47b1, 0x37744ebc, 0x2a6655ab, 0x21685ca6, 0x10426385, 0x1b4c6a88, 0x065e719f, 0x0d507892, 0x640a0fd9, 0x6f0406d4, 0x72161dc3, 0x791814ce, 0x48322bed, 0x433c22e0, 0x5e2e39f7, 0x552030fa, 0x01ec9ab7, 0x0ae293ba, 0x17f088ad, 0x1cfe81a0, 0x2dd4be83, 0x26dab78e, 0x3bc8ac99, 0x30c6a594, 0x599cd2df, 0x5292dbd2, 0x4f80c0c5, 0x448ec9c8, 0x75a4f6eb, 0x7eaaffe6, 0x63b8e4f1, 0x68b6edfc, 0xb10c0a67, 0xba02036a, 0xa710187d, 0xac1e1170, 0x9d342e53, 0x963a275e, 0x8b283c49, 0x80263544, 0xe97c420f, 0xe2724b02, 0xff605015, 0xf46e5918, 0xc544663b, 0xce4a6f36, 0xd3587421, 0xd8567d2c, 0x7a37a10c, 0x7139a801, 0x6c2bb316, 0x6725ba1b, 0x560f8538, 0x5d018c35, 0x40139722, 0x4b1d9e2f, 0x2247e964, 0x2949e069, 0x345bfb7e, 0x3f55f273, 0x0e7fcd50, 0x0571c45d, 0x1863df4a, 0x136dd647, 0xcad731dc, 0xc1d938d1, 0xdccb23c6, 0xd7c52acb, 0xe6ef15e8, 0xede11ce5, 0xf0f307f2, 0xfbfd0eff, 0x92a779b4, 0x99a970b9, 0x84bb6bae, 0x8fb562a3, 0xbe9f5d80, 0xb591548d, 0xa8834f9a, 0xa38d4697];\n var U3 = [0x00000000, 0x0d0b0e09, 0x1a161c12, 0x171d121b, 0x342c3824, 0x3927362d, 0x2e3a2436, 0x23312a3f, 0x68587048, 0x65537e41, 0x724e6c5a, 0x7f456253, 0x5c74486c, 0x517f4665, 0x4662547e, 0x4b695a77, 0xd0b0e090, 0xddbbee99, 0xcaa6fc82, 0xc7adf28b, 0xe49cd8b4, 0xe997d6bd, 0xfe8ac4a6, 0xf381caaf, 0xb8e890d8, 0xb5e39ed1, 0xa2fe8cca, 0xaff582c3, 0x8cc4a8fc, 0x81cfa6f5, 0x96d2b4ee, 0x9bd9bae7, 0xbb7bdb3b, 0xb670d532, 0xa16dc729, 0xac66c920, 0x8f57e31f, 0x825ced16, 0x9541ff0d, 0x984af104, 0xd323ab73, 0xde28a57a, 0xc935b761, 0xc43eb968, 0xe70f9357, 0xea049d5e, 0xfd198f45, 0xf012814c, 0x6bcb3bab, 0x66c035a2, 0x71dd27b9, 0x7cd629b0, 0x5fe7038f, 0x52ec0d86, 0x45f11f9d, 0x48fa1194, 0x03934be3, 0x0e9845ea, 0x198557f1, 0x148e59f8, 0x37bf73c7, 0x3ab47dce, 0x2da96fd5, 0x20a261dc, 0x6df6ad76, 0x60fda37f, 0x77e0b164, 0x7aebbf6d, 0x59da9552, 0x54d19b5b, 0x43cc8940, 0x4ec78749, 0x05aedd3e, 0x08a5d337, 0x1fb8c12c, 0x12b3cf25, 0x3182e51a, 0x3c89eb13, 0x2b94f908, 0x269ff701, 0xbd464de6, 0xb04d43ef, 0xa75051f4, 0xaa5b5ffd, 0x896a75c2, 0x84617bcb, 0x937c69d0, 0x9e7767d9, 0xd51e3dae, 0xd81533a7, 0xcf0821bc, 0xc2032fb5, 0xe132058a, 0xec390b83, 0xfb241998, 0xf62f1791, 0xd68d764d, 0xdb867844, 0xcc9b6a5f, 0xc1906456, 0xe2a14e69, 0xefaa4060, 0xf8b7527b, 0xf5bc5c72, 0xbed50605, 0xb3de080c, 0xa4c31a17, 0xa9c8141e, 0x8af93e21, 0x87f23028, 0x90ef2233, 0x9de42c3a, 0x063d96dd, 0x0b3698d4, 0x1c2b8acf, 0x112084c6, 0x3211aef9, 0x3f1aa0f0, 0x2807b2eb, 0x250cbce2, 0x6e65e695, 0x636ee89c, 0x7473fa87, 0x7978f48e, 0x5a49deb1, 0x5742d0b8, 0x405fc2a3, 0x4d54ccaa, 0xdaf741ec, 0xd7fc4fe5, 0xc0e15dfe, 0xcdea53f7, 0xeedb79c8, 0xe3d077c1, 0xf4cd65da, 0xf9c66bd3, 0xb2af31a4, 0xbfa43fad, 0xa8b92db6, 0xa5b223bf, 0x86830980, 0x8b880789, 0x9c951592, 0x919e1b9b, 0x0a47a17c, 0x074caf75, 0x1051bd6e, 0x1d5ab367, 0x3e6b9958, 0x33609751, 0x247d854a, 0x29768b43, 0x621fd134, 0x6f14df3d, 0x7809cd26, 0x7502c32f, 0x5633e910, 0x5b38e719, 0x4c25f502, 0x412efb0b, 0x618c9ad7, 0x6c8794de, 0x7b9a86c5, 0x769188cc, 0x55a0a2f3, 0x58abacfa, 0x4fb6bee1, 0x42bdb0e8, 0x09d4ea9f, 0x04dfe496, 0x13c2f68d, 0x1ec9f884, 0x3df8d2bb, 0x30f3dcb2, 0x27eecea9, 0x2ae5c0a0, 0xb13c7a47, 0xbc37744e, 0xab2a6655, 0xa621685c, 0x85104263, 0x881b4c6a, 0x9f065e71, 0x920d5078, 0xd9640a0f, 0xd46f0406, 0xc372161d, 0xce791814, 0xed48322b, 0xe0433c22, 0xf75e2e39, 0xfa552030, 0xb701ec9a, 0xba0ae293, 0xad17f088, 0xa01cfe81, 0x832dd4be, 0x8e26dab7, 0x993bc8ac, 0x9430c6a5, 0xdf599cd2, 0xd25292db, 0xc54f80c0, 0xc8448ec9, 0xeb75a4f6, 0xe67eaaff, 0xf163b8e4, 0xfc68b6ed, 0x67b10c0a, 0x6aba0203, 0x7da71018, 0x70ac1e11, 0x539d342e, 0x5e963a27, 0x498b283c, 0x44802635, 0x0fe97c42, 0x02e2724b, 0x15ff6050, 0x18f46e59, 0x3bc54466, 0x36ce4a6f, 0x21d35874, 0x2cd8567d, 0x0c7a37a1, 0x017139a8, 0x166c2bb3, 0x1b6725ba, 0x38560f85, 0x355d018c, 0x22401397, 0x2f4b1d9e, 0x642247e9, 0x692949e0, 0x7e345bfb, 0x733f55f2, 0x500e7fcd, 0x5d0571c4, 0x4a1863df, 0x47136dd6, 0xdccad731, 0xd1c1d938, 0xc6dccb23, 0xcbd7c52a, 0xe8e6ef15, 0xe5ede11c, 0xf2f0f307, 0xfffbfd0e, 0xb492a779, 0xb999a970, 0xae84bb6b, 0xa38fb562, 0x80be9f5d, 0x8db59154, 0x9aa8834f, 0x97a38d46];\n var U4 = [0x00000000, 0x090d0b0e, 0x121a161c, 0x1b171d12, 0x24342c38, 0x2d392736, 0x362e3a24, 0x3f23312a, 0x48685870, 0x4165537e, 0x5a724e6c, 0x537f4562, 0x6c5c7448, 0x65517f46, 0x7e466254, 0x774b695a, 0x90d0b0e0, 0x99ddbbee, 0x82caa6fc, 0x8bc7adf2, 0xb4e49cd8, 0xbde997d6, 0xa6fe8ac4, 0xaff381ca, 0xd8b8e890, 0xd1b5e39e, 0xcaa2fe8c, 0xc3aff582, 0xfc8cc4a8, 0xf581cfa6, 0xee96d2b4, 0xe79bd9ba, 0x3bbb7bdb, 0x32b670d5, 0x29a16dc7, 0x20ac66c9, 0x1f8f57e3, 0x16825ced, 0x0d9541ff, 0x04984af1, 0x73d323ab, 0x7ade28a5, 0x61c935b7, 0x68c43eb9, 0x57e70f93, 0x5eea049d, 0x45fd198f, 0x4cf01281, 0xab6bcb3b, 0xa266c035, 0xb971dd27, 0xb07cd629, 0x8f5fe703, 0x8652ec0d, 0x9d45f11f, 0x9448fa11, 0xe303934b, 0xea0e9845, 0xf1198557, 0xf8148e59, 0xc737bf73, 0xce3ab47d, 0xd52da96f, 0xdc20a261, 0x766df6ad, 0x7f60fda3, 0x6477e0b1, 0x6d7aebbf, 0x5259da95, 0x5b54d19b, 0x4043cc89, 0x494ec787, 0x3e05aedd, 0x3708a5d3, 0x2c1fb8c1, 0x2512b3cf, 0x1a3182e5, 0x133c89eb, 0x082b94f9, 0x01269ff7, 0xe6bd464d, 0xefb04d43, 0xf4a75051, 0xfdaa5b5f, 0xc2896a75, 0xcb84617b, 0xd0937c69, 0xd99e7767, 0xaed51e3d, 0xa7d81533, 0xbccf0821, 0xb5c2032f, 0x8ae13205, 0x83ec390b, 0x98fb2419, 0x91f62f17, 0x4dd68d76, 0x44db8678, 0x5fcc9b6a, 0x56c19064, 0x69e2a14e, 0x60efaa40, 0x7bf8b752, 0x72f5bc5c, 0x05bed506, 0x0cb3de08, 0x17a4c31a, 0x1ea9c814, 0x218af93e, 0x2887f230, 0x3390ef22, 0x3a9de42c, 0xdd063d96, 0xd40b3698, 0xcf1c2b8a, 0xc6112084, 0xf93211ae, 0xf03f1aa0, 0xeb2807b2, 0xe2250cbc, 0x956e65e6, 0x9c636ee8, 0x877473fa, 0x8e7978f4, 0xb15a49de, 0xb85742d0, 0xa3405fc2, 0xaa4d54cc, 0xecdaf741, 0xe5d7fc4f, 0xfec0e15d, 0xf7cdea53, 0xc8eedb79, 0xc1e3d077, 0xdaf4cd65, 0xd3f9c66b, 0xa4b2af31, 0xadbfa43f, 0xb6a8b92d, 0xbfa5b223, 0x80868309, 0x898b8807, 0x929c9515, 0x9b919e1b, 0x7c0a47a1, 0x75074caf, 0x6e1051bd, 0x671d5ab3, 0x583e6b99, 0x51336097, 0x4a247d85, 0x4329768b, 0x34621fd1, 0x3d6f14df, 0x267809cd, 0x2f7502c3, 0x105633e9, 0x195b38e7, 0x024c25f5, 0x0b412efb, 0xd7618c9a, 0xde6c8794, 0xc57b9a86, 0xcc769188, 0xf355a0a2, 0xfa58abac, 0xe14fb6be, 0xe842bdb0, 0x9f09d4ea, 0x9604dfe4, 0x8d13c2f6, 0x841ec9f8, 0xbb3df8d2, 0xb230f3dc, 0xa927eece, 0xa02ae5c0, 0x47b13c7a, 0x4ebc3774, 0x55ab2a66, 0x5ca62168, 0x63851042, 0x6a881b4c, 0x719f065e, 0x78920d50, 0x0fd9640a, 0x06d46f04, 0x1dc37216, 0x14ce7918, 0x2bed4832, 0x22e0433c, 0x39f75e2e, 0x30fa5520, 0x9ab701ec, 0x93ba0ae2, 0x88ad17f0, 0x81a01cfe, 0xbe832dd4, 0xb78e26da, 0xac993bc8, 0xa59430c6, 0xd2df599c, 0xdbd25292, 0xc0c54f80, 0xc9c8448e, 0xf6eb75a4, 0xffe67eaa, 0xe4f163b8, 0xedfc68b6, 0x0a67b10c, 0x036aba02, 0x187da710, 0x1170ac1e, 0x2e539d34, 0x275e963a, 0x3c498b28, 0x35448026, 0x420fe97c, 0x4b02e272, 0x5015ff60, 0x5918f46e, 0x663bc544, 0x6f36ce4a, 0x7421d358, 0x7d2cd856, 0xa10c7a37, 0xa8017139, 0xb3166c2b, 0xba1b6725, 0x8538560f, 0x8c355d01, 0x97224013, 0x9e2f4b1d, 0xe9642247, 0xe0692949, 0xfb7e345b, 0xf2733f55, 0xcd500e7f, 0xc45d0571, 0xdf4a1863, 0xd647136d, 0x31dccad7, 0x38d1c1d9, 0x23c6dccb, 0x2acbd7c5, 0x15e8e6ef, 0x1ce5ede1, 0x07f2f0f3, 0x0efffbfd, 0x79b492a7, 0x70b999a9, 0x6bae84bb, 0x62a38fb5, 0x5d80be9f, 0x548db591, 0x4f9aa883, 0x4697a38d];\n\n function convertToInt32(bytes) {\n var result = [];\n for (var i = 0; i < bytes.length; i += 4) {\n result.push(\n (bytes[i] << 24) |\n (bytes[i + 1] << 16) |\n (bytes[i + 2] << 8) |\n bytes[i + 3]\n );\n }\n return result;\n }\n\n var AES = function (key) {\n if (!(this instanceof AES)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n Object.defineProperty(this, 'key', {\n value: coerceArray(key, true)\n });\n\n this._prepare();\n }\n\n\n AES.prototype._prepare = function () {\n\n var rounds = numberOfRounds[this.key.length];\n if (rounds == null) {\n throw new Error('invalid key size (must be 16, 24 or 32 bytes)');\n }\n\n // encryption round keys\n this._Ke = [];\n\n // decryption round keys\n this._Kd = [];\n\n for (var i = 0; i <= rounds; i++) {\n this._Ke.push([0, 0, 0, 0]);\n this._Kd.push([0, 0, 0, 0]);\n }\n\n var roundKeyCount = (rounds + 1) * 4;\n var KC = this.key.length / 4;\n\n // convert the key into ints\n var tk = convertToInt32(this.key);\n\n // copy values into round key arrays\n var index;\n for (var i = 0; i < KC; i++) {\n index = i >> 2;\n this._Ke[index][i % 4] = tk[i];\n this._Kd[rounds - index][i % 4] = tk[i];\n }\n\n // key expansion (fips-197 section 5.2)\n var rconpointer = 0;\n var t = KC,\n tt;\n while (t < roundKeyCount) {\n tt = tk[KC - 1];\n tk[0] ^= ((S[(tt >> 16) & 0xFF] << 24) ^\n (S[(tt >> 8) & 0xFF] << 16) ^\n (S[tt & 0xFF] << 8) ^\n S[(tt >> 24) & 0xFF] ^\n (rcon[rconpointer] << 24));\n rconpointer += 1;\n\n // key expansion (for non-256 bit)\n if (KC != 8) {\n for (var i = 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n\n // key expansion for 256-bit keys is \"slightly different\" (fips-197)\n } else {\n for (var i = 1; i < (KC / 2); i++) {\n tk[i] ^= tk[i - 1];\n }\n tt = tk[(KC / 2) - 1];\n\n tk[KC / 2] ^= (S[tt & 0xFF] ^\n (S[(tt >> 8) & 0xFF] << 8) ^\n (S[(tt >> 16) & 0xFF] << 16) ^\n (S[(tt >> 24) & 0xFF] << 24));\n\n for (var i = (KC / 2) + 1; i < KC; i++) {\n tk[i] ^= tk[i - 1];\n }\n }\n\n // copy values into round key arrays\n var i = 0,\n r, c;\n while (i < KC && t < roundKeyCount) {\n r = t >> 2;\n c = t % 4;\n this._Ke[r][c] = tk[i];\n this._Kd[rounds - r][c] = tk[i++];\n t++;\n }\n }\n\n // inverse-cipher-ify the decryption round key (fips-197 section 5.3)\n for (var r = 1; r < rounds; r++) {\n for (var c = 0; c < 4; c++) {\n tt = this._Kd[r][c];\n this._Kd[r][c] = (U1[(tt >> 24) & 0xFF] ^\n U2[(tt >> 16) & 0xFF] ^\n U3[(tt >> 8) & 0xFF] ^\n U4[tt & 0xFF]);\n }\n }\n }\n\n AES.prototype.encrypt = function (plaintext) {\n if (plaintext.length != 16) {\n throw new Error('invalid plaintext size (must be 16 bytes)');\n }\n\n var rounds = this._Ke.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(plaintext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Ke[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T1[(t[i] >> 24) & 0xff] ^\n T2[(t[(i + 1) % 4] >> 16) & 0xff] ^\n T3[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T4[t[(i + 3) % 4] & 0xff] ^\n this._Ke[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16),\n tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Ke[rounds][i];\n result[4 * i] = (S[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (S[(t[(i + 1) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (S[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (S[t[(i + 3) % 4] & 0xff] ^ tt) & 0xff;\n }\n\n return result;\n }\n\n AES.prototype.decrypt = function (ciphertext) {\n if (ciphertext.length != 16) {\n throw new Error('invalid ciphertext size (must be 16 bytes)');\n }\n\n var rounds = this._Kd.length - 1;\n var a = [0, 0, 0, 0];\n\n // convert plaintext to (ints ^ key)\n var t = convertToInt32(ciphertext);\n for (var i = 0; i < 4; i++) {\n t[i] ^= this._Kd[0][i];\n }\n\n // apply round transforms\n for (var r = 1; r < rounds; r++) {\n for (var i = 0; i < 4; i++) {\n a[i] = (T5[(t[i] >> 24) & 0xff] ^\n T6[(t[(i + 3) % 4] >> 16) & 0xff] ^\n T7[(t[(i + 2) % 4] >> 8) & 0xff] ^\n T8[t[(i + 1) % 4] & 0xff] ^\n this._Kd[r][i]);\n }\n t = a.slice();\n }\n\n // the last round is special\n var result = createArray(16),\n tt;\n for (var i = 0; i < 4; i++) {\n tt = this._Kd[rounds][i];\n result[4 * i] = (Si[(t[i] >> 24) & 0xff] ^ (tt >> 24)) & 0xff;\n result[4 * i + 1] = (Si[(t[(i + 3) % 4] >> 16) & 0xff] ^ (tt >> 16)) & 0xff;\n result[4 * i + 2] = (Si[(t[(i + 2) % 4] >> 8) & 0xff] ^ (tt >> 8)) & 0xff;\n result[4 * i + 3] = (Si[t[(i + 1) % 4] & 0xff] ^ tt) & 0xff;\n }\n\n return result;\n }\n\n\n /**\n * Mode Of Operation - Electonic Codebook (ECB)\n */\n var ModeOfOperationECB = function (key) {\n if (!(this instanceof ModeOfOperationECB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Electronic Code Block\";\n this.name = \"ecb\";\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationECB.prototype.encrypt = function (plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n block = this._aes.encrypt(block);\n copyArray(block, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationECB.prototype.decrypt = function (ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n copyArray(block, plaintext, i);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Block Chaining (CBC)\n */\n var ModeOfOperationCBC = function (key, iv) {\n if (!(this instanceof ModeOfOperationCBC)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Block Chaining\";\n this.name = \"cbc\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastCipherblock = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCBC.prototype.encrypt = function (plaintext) {\n plaintext = coerceArray(plaintext);\n\n if ((plaintext.length % 16) !== 0) {\n throw new Error('invalid plaintext size (must be multiple of 16 bytes)');\n }\n\n var ciphertext = createArray(plaintext.length);\n var block = createArray(16);\n\n for (var i = 0; i < plaintext.length; i += 16) {\n copyArray(plaintext, block, 0, i, i + 16);\n\n for (var j = 0; j < 16; j++) {\n block[j] ^= this._lastCipherblock[j];\n }\n\n this._lastCipherblock = this._aes.encrypt(block);\n copyArray(this._lastCipherblock, ciphertext, i);\n }\n\n return ciphertext;\n }\n\n ModeOfOperationCBC.prototype.decrypt = function (ciphertext) {\n ciphertext = coerceArray(ciphertext);\n\n if ((ciphertext.length % 16) !== 0) {\n throw new Error('invalid ciphertext size (must be multiple of 16 bytes)');\n }\n\n var plaintext = createArray(ciphertext.length);\n var block = createArray(16);\n\n for (var i = 0; i < ciphertext.length; i += 16) {\n copyArray(ciphertext, block, 0, i, i + 16);\n block = this._aes.decrypt(block);\n\n for (var j = 0; j < 16; j++) {\n plaintext[i + j] = block[j] ^ this._lastCipherblock[j];\n }\n\n copyArray(ciphertext, this._lastCipherblock, 0, i, i + 16);\n }\n\n return plaintext;\n }\n\n\n /**\n * Mode Of Operation - Cipher Feedback (CFB)\n */\n var ModeOfOperationCFB = function (key, iv, segmentSize) {\n if (!(this instanceof ModeOfOperationCFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Cipher Feedback\";\n this.name = \"cfb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 size)');\n }\n\n if (!segmentSize) {\n segmentSize = 1;\n }\n\n this.segmentSize = segmentSize;\n\n this._shiftRegister = coerceArray(iv, true);\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCFB.prototype.encrypt = function (plaintext) {\n if ((plaintext.length % this.segmentSize) != 0) {\n throw new Error('invalid plaintext size (must be segmentSize bytes)');\n }\n\n var encrypted = coerceArray(plaintext, true);\n\n var xorSegment;\n for (var i = 0; i < encrypted.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n for (var j = 0; j < this.segmentSize; j++) {\n encrypted[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(encrypted, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return encrypted;\n }\n\n ModeOfOperationCFB.prototype.decrypt = function (ciphertext) {\n if ((ciphertext.length % this.segmentSize) != 0) {\n throw new Error('invalid ciphertext size (must be segmentSize bytes)');\n }\n\n var plaintext = coerceArray(ciphertext, true);\n\n var xorSegment;\n for (var i = 0; i < plaintext.length; i += this.segmentSize) {\n xorSegment = this._aes.encrypt(this._shiftRegister);\n\n for (var j = 0; j < this.segmentSize; j++) {\n plaintext[i + j] ^= xorSegment[j];\n }\n\n // Shift the register\n copyArray(this._shiftRegister, this._shiftRegister, 0, this.segmentSize);\n copyArray(ciphertext, this._shiftRegister, 16 - this.segmentSize, i, i + this.segmentSize);\n }\n\n return plaintext;\n }\n\n /**\n * Mode Of Operation - Output Feedback (OFB)\n */\n var ModeOfOperationOFB = function (key, iv) {\n if (!(this instanceof ModeOfOperationOFB)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Output Feedback\";\n this.name = \"ofb\";\n\n if (!iv) {\n iv = createArray(16);\n\n } else if (iv.length != 16) {\n throw new Error('invalid initialation vector size (must be 16 bytes)');\n }\n\n this._lastPrecipher = coerceArray(iv, true);\n this._lastPrecipherIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationOFB.prototype.encrypt = function (plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._lastPrecipherIndex === 16) {\n this._lastPrecipher = this._aes.encrypt(this._lastPrecipher);\n this._lastPrecipherIndex = 0;\n }\n encrypted[i] ^= this._lastPrecipher[this._lastPrecipherIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationOFB.prototype.decrypt = ModeOfOperationOFB.prototype.encrypt;\n\n\n /**\n * Counter object for CTR common mode of operation\n */\n var Counter = function (initialValue) {\n if (!(this instanceof Counter)) {\n throw Error('Counter must be instanitated with `new`');\n }\n\n // We allow 0, but anything false-ish uses the default 1\n if (initialValue !== 0 && !initialValue) {\n initialValue = 1;\n }\n\n if (typeof (initialValue) === 'number') {\n this._counter = createArray(16);\n this.setValue(initialValue);\n\n } else {\n this.setBytes(initialValue);\n }\n }\n\n Counter.prototype.setValue = function (value) {\n if (typeof (value) !== 'number' || parseInt(value) != value) {\n throw new Error('invalid counter value (must be an integer)');\n }\n\n for (var index = 15; index >= 0; --index) {\n this._counter[index] = value % 256;\n value = value >> 8;\n }\n }\n\n Counter.prototype.setBytes = function (bytes) {\n bytes = coerceArray(bytes, true);\n\n if (bytes.length != 16) {\n throw new Error('invalid counter bytes size (must be 16 bytes)');\n }\n\n this._counter = bytes;\n };\n\n Counter.prototype.increment = function () {\n for (var i = 15; i >= 0; i--) {\n if (this._counter[i] === 255) {\n this._counter[i] = 0;\n } else {\n this._counter[i]++;\n break;\n }\n }\n }\n\n\n /**\n * Mode Of Operation - Counter (CTR)\n */\n var ModeOfOperationCTR = function (key, counter) {\n if (!(this instanceof ModeOfOperationCTR)) {\n throw Error('AES must be instanitated with `new`');\n }\n\n this.description = \"Counter\";\n this.name = \"ctr\";\n\n if (!(counter instanceof Counter)) {\n counter = new Counter(counter)\n }\n\n this._counter = counter;\n\n this._remainingCounter = null;\n this._remainingCounterIndex = 16;\n\n this._aes = new AES(key);\n }\n\n ModeOfOperationCTR.prototype.encrypt = function (plaintext) {\n var encrypted = coerceArray(plaintext, true);\n\n for (var i = 0; i < encrypted.length; i++) {\n if (this._remainingCounterIndex === 16) {\n this._remainingCounter = this._aes.encrypt(this._counter._counter);\n this._remainingCounterIndex = 0;\n this._counter.increment();\n }\n encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++];\n }\n\n return encrypted;\n }\n\n // Decryption is symetric\n ModeOfOperationCTR.prototype.decrypt = ModeOfOperationCTR.prototype.encrypt;\n\n\n ///////////////////////\n // Padding\n\n // See:https://tools.ietf.org/html/rfc2315\n function pkcs7pad(data) {\n data = coerceArray(data, true);\n var padder = 16 - (data.length % 16);\n var result = createArray(data.length + padder);\n copyArray(data, result);\n for (var i = data.length; i < result.length; i++) {\n result[i] = padder;\n }\n return result;\n }\n\n function pkcs7strip(data) {\n data = coerceArray(data, true);\n if (data.length < 16) {\n throw new Error('PKCS#7 invalid length');\n }\n\n var padder = data[data.length - 1];\n if (padder > 16) {\n throw new Error('PKCS#7 padding byte out of range');\n }\n\n var length = data.length - padder;\n for (var i = 0; i < padder; i++) {\n if (data[length + i] !== padder) {\n throw new Error('PKCS#7 invalid padding byte');\n }\n }\n\n var result = createArray(length);\n copyArray(data, result, 0, 0, length);\n return result;\n }\n\n ///////////////////////\n // Exporting\n\n\n // The block cipher\n var aesjs = {\n AES: AES,\n Counter: Counter,\n\n ModeOfOperation: {\n ecb: ModeOfOperationECB,\n cbc: ModeOfOperationCBC,\n cfb: ModeOfOperationCFB,\n ofb: ModeOfOperationOFB,\n ctr: ModeOfOperationCTR\n },\n\n utils: {\n hex: convertHex,\n utf8: convertUtf8\n },\n\n padding: {\n pkcs7: {\n pad: pkcs7pad,\n strip: pkcs7strip\n }\n },\n\n _arrayTest: {\n coerceArray: coerceArray,\n createArray: createArray,\n copyArray: copyArray,\n }\n };\n\n\n // node.js\n if (typeof exports !== 'undefined') {\n module.exports = aesjs\n\n // RequireJS/AMD\n // http://www.requirejs.org/docs/api.html\n // https://github.com/amdjs/amdjs-api/wiki/AMD\n } else if (typeof (define) === 'function' && define.amd) {\n define(aesjs);\n\n // Web Browsers\n } else {\n\n // If there was an existing library at \"aesjs\" make sure it's still available\n if (root.aesjs) {\n aesjs._aesjs = root.aesjs;\n }\n\n root.aesjs = aesjs;\n }\n\n\n})(this);","// ---------------- Hollow Knight Data Constant Objects ----------------- //\r\n/*\r\n This is the whole database for the tool, based on the .json save file data\r\n*/\r\n\r\nconst HK = {\r\n DIV_ID: {\r\n intro: {\r\n h2: \"Game Status\",\r\n id: \"hk-intro\",\r\n maxPercent: 112,\r\n saveVersion: \"0.0.0.0\"\r\n },\r\n hints: {\r\n h2: \"My friend Elderbug once told me about...\",\r\n id: \"hk-hints\",\r\n },\r\n bosses: {\r\n h2: \"Bosses\",\r\n id: \"hk-bosses\",\r\n percent: 0,\r\n maxPercent: 14\r\n },\r\n charms: {\r\n h2: \"Charms\",\r\n id: \"hk-charms\",\r\n percent: 0,\r\n maxPercent: 36\r\n },\r\n equipment: {\r\n h2: \"Equipment\",\r\n id: \"hk-equipment\",\r\n percent: 0,\r\n maxPercent: 14\r\n },\r\n nailUpgrades: {\r\n h2: \"Nail Upgrades\",\r\n id: \"hk-nailupgrades\",\r\n percent: 0,\r\n maxPercent: 4\r\n },\r\n nailArts: {\r\n h2: \"Nail Arts\",\r\n id: \"hk-nailarts\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n spells: {\r\n h2: \"Spells\",\r\n id: \"hk-spells\",\r\n percent: 0,\r\n maxPercent: 6\r\n },\r\n maskShards: {\r\n h2: \"Mask Shards\",\r\n id: \"hk-maskshards\",\r\n percent: 0,\r\n maxPercent: 4\r\n },\r\n vesselFragments: {\r\n h2: \"Vessel Fragments\",\r\n id: \"hk-vesselfragments\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n dreamNail: {\r\n h2: \"Dream Nail and Essence\",\r\n id: \"hk-dreamnail\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n warriorDreams: {\r\n h2: \"Warrior Dreams\",\r\n id: \"hk-warriordreams\",\r\n percent: 0,\r\n maxPercent: 7\r\n },\r\n dreamers: {\r\n h2: \"Dreamers\",\r\n id: \"hk-dreamers\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n colosseum: {\r\n h2: \"Colosseum of Fools\",\r\n id: \"hk-colosseum\",\r\n percent: 0,\r\n maxPercent: 3\r\n },\r\n grimmTroupe: {\r\n h2: \"Grimm Troupe Content Pack\",\r\n id: \"hk-grimmtroupe\",\r\n percent: 0,\r\n maxPercent: 6\r\n },\r\n lifeblood: {\r\n h2: \"Lifeblood Content Pack\",\r\n id: \"hk-lifeblood\",\r\n percent: 0,\r\n maxPercent: 1\r\n },\r\n godmaster: {\r\n h2: \"Godmaster Content Pack\",\r\n id: \"hk-godmaster\",\r\n percent: 0,\r\n maxPercent: 5\r\n },\r\n essential: {\r\n h2: \"Game Completion Essentials\",\r\n id: \"hk-essential\"\r\n },\r\n achievements: {\r\n h2: \"Achievements Essentials\",\r\n id: \"hk-achievements\"\r\n },\r\n statistics: {\r\n h2: \"Game Statistics\",\r\n id: \"hk-statistics\"\r\n }\r\n },\r\n // hk-hints\r\n HINTS: {\r\n fireballLevel: {\r\n spoiler: \"...a mysterious shaman living in a dwelling below the town of Dirtmouth\"\r\n },\r\n hornet1Defeated: {\r\n spoiler: \"...a skilled protector guarding ruins in a lush green forest\"\r\n },\r\n hasDash: {\r\n spoiler: \"...an old cloak lying on a green path near a broken shell\"\r\n },\r\n hasWalljump: {\r\n spoiler: \"...a sharp claw lying forgotten somewhere amidst the insect village\"\r\n },\r\n Crossroads_04: {\r\n spoiler: \"...a mother sleeping peacefully below the town of Dirtmouth\"\r\n },\r\n slyRescued: {\r\n spoiler: \"...a fellow town bug who seems to be lost somewhere in the crossroads\"\r\n },\r\n hasLantern: {\r\n spoiler: \"...a precious item able to carry some light to even the darkest places\"\r\n },\r\n hasSuperDash: {\r\n spoiler: \"...some powerful crystal beating somewhere deep inside the mines\"\r\n },\r\n hasDreamNail: {\r\n spoiler: \"...a weapon from a dream world only found where the souls can peacefully rest\"\r\n },\r\n killedInfectedKnight: {\r\n spoiler: \"...a shattered corpse forgotten in a windy cave in the ancient depths below the city\"\r\n },\r\n hasDoubleJump: {\r\n spoiler: \"...something incredibly light dropped by a monarchfly in the ancient depths below the city\"\r\n },\r\n killedBlackKnight: {\r\n spoiler: \"...discarded shells of black guards lying on the floor of a high spire\"\r\n },\r\n lurienDefeated: {\r\n spoiler: \"...a dreamer sleeping somewhere at the top of a high spire\"\r\n },\r\n dungDefenderOrHornet2: {\r\n spoiler: \"...a skilled combatant living at the heart of the sewers or watching over a shell amidst ash falling from the sky\"\r\n },\r\n ismaTearOrShadeCloak: {\r\n spoiler: \"...something precious in a grove accessed from the waterways or a massive royal door guarding a cloak behind the darkness\"\r\n },\r\n defeatedMegaJelly: {\r\n spoiler: \"...an intelligent being floating inside hidden archives behind the fog\"\r\n },\r\n monomonDefeated: {\r\n spoiler: \"...a dreamer sleeping somewhere hidden in a foggy area\"\r\n },\r\n hegemolDefeated: {\r\n spoiler: \"...a dreamer sleeping near a spider nest area\"\r\n },\r\n killedHollowKnight: {\r\n spoiler: \"...a disturbance inside a black temple\"\r\n },\r\n },\r\n // hk-bosses\r\n BOSSES: {\r\n falseKnightDefeated: {\r\n name: \"False Knight\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"False_Knight\"\r\n }, // \"Battle Scene\" - \"Crossroads_10\" ?\r\n hornet1Defeated: {\r\n name: \"Hornet Protector\",\r\n spoiler: \"Greenpath\",\r\n wiki: \"Hornet_Protector\"\r\n },\r\n defeatedDungDefender: {\r\n name: \"Dung Defender\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Dung_Defender\"\r\n },\r\n mageLordDefeated: {\r\n name: \"Soul Master\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Soul_Master\"\r\n },\r\n killedBlackKnight: {\r\n name: \"Watcher Knights\",\r\n spoiler: \"City of Tears: Watcher's Spire\",\r\n wiki: \"Watcher_Knight\"\r\n },\r\n collectorDefeated: {\r\n name: \"The Collector\",\r\n spoiler: \"City of Tears: Tower of Love\",\r\n wiki: \"Collector\"\r\n },\r\n defeatedMantisLords: {\r\n name: \"Mantis Lords\",\r\n spoiler: \"Mantis Village\",\r\n wiki: \"Mantis_Lords\"\r\n },\r\n defeatedMegaJelly: {\r\n name: \"Uumuu\",\r\n spoiler: \"Fog Canyon: Teacher's Archives\",\r\n wiki: \"Uumuu\"\r\n },\r\n hornetOutskirtsDefeated: {\r\n name: \"Hornet Sentinel\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"Hornet_Sentinel\"\r\n },\r\n killedInfectedKnight: {\r\n name: \"Broken Vessel\",\r\n spoiler: \"Ancient Basin\",\r\n wiki: \"Broken_Vessel\"\r\n },\r\n killedMimicSpider: {\r\n name: \"Nosk\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Nosk\"\r\n }, // \"Battle Scene\" - \"Deepnest_32\" ?\r\n killedTraitorLord: {\r\n name: \"Traitor Lord\",\r\n spoiler: \"Queen's Gardens\",\r\n wiki: \"Traitor_Lord\"\r\n } // \"Battle Scene\" - \"Fungus3_23\" ?\r\n },\r\n // hk-bosses\r\n // \"Battle Scene\" sceneData.persistentBoolItems.id\r\n BOSSES_WORLD: {\r\n Crossroads_04: {\r\n name: \"Gruz Mother\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Gruz_Mother\"\r\n }, // killedBigFly\r\n Crossroads_09: {\r\n name: \"Brooding Mawlek\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Brooding_Mawlek\"\r\n } // killedMawlek\r\n },\r\n // reference: https://radiance.host/apidocs/Charms.html\r\n CHARMS: {\r\n gotCharm_1: {\r\n name: \"#1 Gathering Swarm\",\r\n spoiler: \"Sly: 300 Geo\",\r\n wiki: \"Gathering_Swarm\"\r\n }, // 1\r\n gotCharm_2: {\r\n name: \"#2 Wayward Compass\",\r\n spoiler: \"Iselda: 220 Geo\",\r\n wiki: \"Wayward_Compass\"\r\n }, // 1\r\n gotCharm_3: {\r\n name: \"#3 Grubsong\",\r\n spoiler: \"Grubfather: 10 Grubs rescued\",\r\n wiki: \"Grubsong\"\r\n }, // 1\r\n gotCharm_4: {\r\n name: \"#4 Stalwart Shell\",\r\n spoiler: \"Sly: 200 Geo\",\r\n wiki: \"Stalwart_Shell\"\r\n }, // 2\r\n gotCharm_5: {\r\n name: \"#5 Baldur Shell\",\r\n spoiler: \"Howling Cliffs\",\r\n wiki: \"Baldur_Shell\"\r\n }, // 2\r\n gotCharm_6: {\r\n name: \"#6 Fury of the Fallen\",\r\n spoiler: \"King's Pass\",\r\n wiki: \"Fury_of_the_Fallen\"\r\n }, // 2\r\n gotCharm_7: {\r\n name: \"#7 Quick Focus\",\r\n spoiler: \"Salubra: 800 Geo\",\r\n wiki: \"Quick_Focus\"\r\n }, // 3\r\n gotCharm_8: {\r\n name: \"#8 Lifeblood Heart\",\r\n spoiler: \"Salubra: 250 Geo\",\r\n wiki: \"Lifeblood_Heart\"\r\n }, // 2\r\n gotCharm_9: {\r\n name: \"#9 Lifeblood Core\",\r\n spoiler: \"The Abyss: 15 Lifeblood masks\",\r\n wiki: \"Lifeblood_Core\"\r\n }, // 3\r\n gotCharm_10: {\r\n name: \"#10 Defender's Crest\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Defender's_Crest\"\r\n }, // 1\r\n gotCharm_11: {\r\n name: \"#11 Flukenest\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Flukenest\"\r\n }, // 3\r\n gotCharm_12: {\r\n name: \"#12 Thorns of Agony\",\r\n spoiler: \"Greenpath\",\r\n wiki: \"Thorns_of_Agony\"\r\n }, // 1\r\n gotCharm_13: {\r\n name: \"#13 Mark of Pride\",\r\n spoiler: \"Mantis Village\",\r\n wiki: \"Mark_of_Pride\"\r\n }, // 3\r\n gotCharm_14: {\r\n name: \"#14 Steady Body\",\r\n spoiler: \"Salubra: 120 Geo\",\r\n wiki: \"Steady_Body\"\r\n }, // 1\r\n gotCharm_15: {\r\n name: \"#15 Heavy Blow\",\r\n spoiler: \"Sly: 350 Geo + Shopkeeper's Key\",\r\n wiki: \"Heavy_Blow\"\r\n }, // 2\r\n gotCharm_16: {\r\n name: \"#16 Sharp Shadow\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Sharp_Shadow\"\r\n }, // 2\r\n gotCharm_17: {\r\n name: \"#17 Spore Shroom\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Spore_Shroom\"\r\n }, // 1\r\n gotCharm_18: {\r\n name: \"#18 Longnail\",\r\n spoiler: \"Salubra: 300 Geo\",\r\n wiki: \"Longnail\"\r\n }, // 2\r\n gotCharm_19: {\r\n name: \"#19 Shaman Stone\",\r\n spoiler: \"Salubra: 220 Geo\",\r\n wiki: \"Shaman_Stone\"\r\n }, // 3\r\n gotCharm_20: {\r\n name: \"#20 Soul Catcher\",\r\n spoiler: \"Forgotten Crossroads: Ancestral Mound\",\r\n wiki: \"Soul_Catcher\"\r\n }, // 2\r\n gotCharm_21: {\r\n name: \"#21 Soul Eater\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Soul_Eater\"\r\n }, // 4\r\n gotCharm_22: {\r\n name: \"#22 Glowing Womb\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Glowing_Womb\"\r\n }, // 2\r\n gotCharm_23: {\r\n name: \"#23 Fragile Heart\",\r\n spoiler: \"Leg Eater: 350/280 Geo\",\r\n wiki: \"Fragile_Heart\"\r\n }, // 2\r\n gotCharm_24: {\r\n name: \"#24 Fragile Greed\",\r\n spoiler: \"Leg Eater: 250/200 Geo\",\r\n wiki: \"Fragile_Greed\"\r\n }, // 2\r\n gotCharm_25: {\r\n name: \"#25 Fragile Strength\",\r\n spoiler: \"Leg Eater: 600/480 Geo\",\r\n wiki: \"Fragile_Strength\"\r\n }, // 3\r\n gotCharm_26: {\r\n name: \"#26 Nailmaster’s Glory\",\r\n spoiler: \"Sly: All Nail Arts\",\r\n wiki: \"Nailmaster's_Glory\"\r\n }, // 1\r\n gotCharm_27: {\r\n name: \"#27 Joni’s Blessing\",\r\n spoiler: \"Howling Cliffs: Joni's Repose\",\r\n wiki: \"Joni's_Blessing\"\r\n }, // 4\r\n gotCharm_28: {\r\n name: \"#28 Shape of Unn\",\r\n spoiler: \"Greenpath: Lake of Unn\",\r\n wiki: \"Shape_of_Unn\"\r\n }, // 2\r\n gotCharm_29: {\r\n name: \"#29 Hiveblood\",\r\n spoiler: \"The Hive\",\r\n wiki: \"Hiveblood\"\r\n }, // 4\r\n gotCharm_30: {\r\n name: \"#30 Dream Wielder\",\r\n spoiler: \"Seer: 500 Essence\",\r\n wiki: \"Dream_Wielder\"\r\n }, // 1\r\n gotCharm_31: {\r\n name: \"#31 Dashmaster\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Dashmaster\"\r\n }, // 2\r\n gotCharm_32: {\r\n name: \"#32 Quick Slash\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"Quick_Slash\"\r\n }, // 3\r\n gotCharm_33: {\r\n name: \"#33 Spell Twister\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Spell_Twister\"\r\n }, // 2\r\n gotCharm_34: {\r\n name: \"#34 Deep Focus\",\r\n spoiler: \"Crystal Peak\",\r\n wiki: \"Deep_Focus\"\r\n }, // 4\r\n gotCharm_35: {\r\n name: \"#35 Grubberfly’s Elegy\",\r\n spoiler: \"Grubfather: 46 Grubs rescued\",\r\n wiki: \"Grubberfly's_Elegy\"\r\n }, // 3\r\n gotCharm_36: {\r\n name: \"#36 Kingsoul\",\r\n spoiler: \"Queen's Gardens + Ancient Basin\",\r\n wiki: \"Kingsoul\"\r\n }, // 5\r\n },\r\n COLOSSEUM: {\r\n colosseumBronzeCompleted: {\r\n name: \"Trial of the Warrior\",\r\n spoiler: \"Little Fool: 100 Geo\",\r\n wiki: \"Trial_of_the_Warrior\"\r\n },\r\n colosseumSilverCompleted: {\r\n name: \"Trial of the Conqueror\",\r\n spoiler: \"Little Fool: 450 Geo + Warrior completed\",\r\n wiki: \"Trial_of_the_Conqueror\"\r\n },\r\n colosseumGoldCompleted: {\r\n name: \"Trial of the Fool\",\r\n spoiler: \"Little Fool: 800 Geo + Conqueror completed\",\r\n wiki: \"Trial_of_the_Fool\"\r\n },\r\n },\r\n DREAMERS: {\r\n lurienDefeated: {\r\n name: \"Lurien the Watcher\",\r\n spoiler: \"City of Tears: Watcher's Spire\",\r\n wiki: \"Lurien\"\r\n },\r\n monomonDefeated: {\r\n name: \"Monomon the Teacher\",\r\n spoiler: \"Fog Canyon: Teacher's Archives\",\r\n wiki: \"Monomon\"\r\n },\r\n hegemolDefeated: {\r\n name: \"Herrah the Beast\",\r\n spoiler: \"Deepnest: Distant Village\",\r\n wiki: \"Herrah\"\r\n }\r\n },\r\n DREAMNAIL: {\r\n hasDreamNail: {\r\n name: \"Dream Nail acquired\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Dream_Nail\"\r\n },\r\n dreamNailUpgraded: {\r\n name: \"Awoken Dream Nail\",\r\n spoiler: \"Seer: 1800 Essence\",\r\n wiki: \"Dream_Nail#Awoken_Dream_Nail\"\r\n },\r\n mothDeparted: {\r\n name: \"Hear the Seer's final words\",\r\n spoiler: \"Seer: 2400 Essence\",\r\n wiki: \"Seer\"\r\n }\r\n },\r\n EQUIPMENT: {\r\n hasDash: {\r\n name: \"Mothwing Cloak\",\r\n spoiler: \"Greenpath: Dash ability\",\r\n wiki: \"Mothwing_Cloak\"\r\n },\r\n hasWalljump: {\r\n name: \"Mantis Claw\",\r\n spoiler: \"Mantis Village: Wall Jump ability\",\r\n wiki: \"Mantis_Claw\"\r\n },\r\n hasSuperDash: {\r\n name: \"Crystal Heart\",\r\n spoiler: \"Crystal Peak: Super Dash ability\",\r\n wiki: \"Crystal_Heart\"\r\n },\r\n hasDoubleJump: {\r\n name: \"Monarch Wings\",\r\n spoiler: \"Ancient Basin: Double Jump ability\",\r\n wiki: \"Monarch_Wings\"\r\n },\r\n hasAcidArmour: {\r\n name: \"Isma's Tear\",\r\n spoiler: \"Royal Waterways: Acid Armour ability\",\r\n wiki: \"Isma's_Tear\"\r\n },\r\n hasKingsBrand: {\r\n name: \"King's Brand\",\r\n spoiler: \"Kingdom's Edge\",\r\n wiki: \"King's_Brand\"\r\n },\r\n hasShadowDash: {\r\n name: \"Shade Cloak\",\r\n spoiler: \"The Abyss: Shadow Dash ability\",\r\n wiki: \"Shade_Cloak\"\r\n }\r\n },\r\n MASKSHARDS: {\r\n slyShellFrag1: {\r\n name: \"Mask Shard #1\",\r\n spoiler: \"Sly: 150 Geo\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag2: {\r\n name: \"Mask Shard #2\",\r\n spoiler: \"Sly: 500 Geo\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag3: {\r\n name: \"Mask Shard #3\",\r\n spoiler: \"Sly: 800 Geo + Shopkeeper's Key\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n slyShellFrag4: {\r\n name: \"Mask Shard #4\",\r\n spoiler: \"Sly: 1500 Geo + Shopkeeper's Key\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n dreamReward7: {\r\n name: \"Mask Shard #5\",\r\n spoiler: \"Seer: 1500 Essence\",\r\n wiki: \"Mask_Shard\"\r\n }\r\n },\r\n // \"Heart Piece\" sceneData.persistentBoolItems.id\r\n MASKSHARDS_WORLD: {\r\n Crossroads_13: {\r\n name: \"Mask Shard #6\",\r\n spoiler: \"Forgotten Crossroads: below Hot Springs\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Crossroads_09: {\r\n name: \"Mask Shard #7\",\r\n spoiler: \"Forgotten Crossroads: Brooding Mawlek\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Crossroads_38: {\r\n name: \"Mask Shard #8\",\r\n spoiler: \"Grubfather: 5 Grubs rescued\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Room_Bretta: {\r\n name: \"Mask Shard #9\",\r\n spoiler: \"Dirtmouth: Bretta's Room, rescue Bretta\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus2_01: {\r\n name: \"Mask Shard #10\",\r\n spoiler: \"Queen's Station, requires Mantis Claw\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Waterways_04b: {\r\n name: \"Mask Shard #11\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus1_36: {\r\n name: \"Mask Shard #12\",\r\n spoiler: \"Greenpath: Stone Sanctuary\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Mines_32: {\r\n name: \"Mask Shard #13\",\r\n spoiler: \"Crystal Peak: Enraged Guardian\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Fungus2_25: {\r\n name: \"Mask Shard #14\",\r\n spoiler: \"Deepnest: entrance from Fungal Wastes\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Hive_04: {\r\n name: \"Mask Shard #15\",\r\n spoiler: \"The Hive, use Hive Guardian\",\r\n wiki: \"Mask_Shard\"\r\n },\r\n Room_Mansion: {\r\n name: \"Mask Shard #16\",\r\n spoiler: \"Resting Grounds: Delicate Flower\",\r\n wiki: \"Mask_Shard\"\r\n }\r\n },\r\n VESSELFRAGMENTS: {\r\n slyVesselFrag1: {\r\n name: \"Vessel Fragment #1\",\r\n spoiler: \"Sly: 550 Geo\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n slyVesselFrag2: {\r\n name: \"Vessel Fragment #2\",\r\n spoiler: \"Sly: 900 Geo + Shopkeeper's Key\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n dreamReward5: {\r\n name: \"Vessel Fragment #3\",\r\n spoiler: \"Seer: 700 Essence\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n vesselFragStagNest: {\r\n name: \"Vessel Fragment #4\",\r\n spoiler: \"Stag Nest\",\r\n wiki: \"Vessel_Fragment\"\r\n }\r\n },\r\n // \"Vessel Fragment\" sceneData.persistentBoolItems.id\r\n VESSELFRAGMENTS_WORLD: {\r\n Fungus1_13: {\r\n name: \"Vessel Fragment #5\",\r\n spoiler: \"Greenpath: near Queen's Gardens exit\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Crossroads_37: {\r\n name: \"Vessel Fragment #6\",\r\n spoiler: \"Forgotten Crossroads: unlock City of Tears lift\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Ruins2_09: {\r\n name: \"Vessel Fragment #7\",\r\n spoiler: \"Above King's Station\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Deepnest_38: {\r\n name: \"Vessel Fragment #8\",\r\n spoiler: \"Deepnest: Goam platforming challenge\",\r\n wiki: \"Vessel_Fragment\"\r\n },\r\n Abyss_04: {\r\n name: \"Vessel Fragment #9\",\r\n spoiler: \"Ancient Basin Fountain: 3000 Geo\",\r\n wiki: \"Vessel_Fragment\"\r\n }\r\n },\r\n NAILARTS: {\r\n /* this is correct - somehow Team Cherry switched the names here */\r\n hasDashSlash: {\r\n name: \"Great Slash\",\r\n spoiler: \"Nailmaster Sheo: Greenpath\",\r\n wiki: \"Great_Slash\"\r\n },\r\n /* this is correct - somehow Team Cherry switched the names here */\r\n hasUpwardSlash: {\r\n name: \"Dash Slash\",\r\n spoiler: \"Nailmaster Oro: Kingdom's Edge, 800 Geo\",\r\n wiki: \"Dash_Slash\"\r\n },\r\n hasCyclone: {\r\n name: \"Cyclone Slash\",\r\n spoiler: \"Nailmaster Mato: Howling Cliffs\",\r\n wiki: \"Cyclone_Slash\"\r\n },\r\n },\r\n NAILUPGRADES: {\r\n oldNail: {\r\n name: \"#0 Old Nail\",\r\n spoiler: \"Starting Weapon\",\r\n wiki: \"Nail\"\r\n },\r\n sharpenedNail: {\r\n name: \"#1 Sharpened Nail\",\r\n spoiler: \"Nailsmith: 250 Geo\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n channeledNail: {\r\n name: \"#2 Channeled Nail\",\r\n spoiler: \"Nailsmith: 800 Geo + 1 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n coiledNail: {\r\n name: \"#3 Coiled Nail\",\r\n spoiler: \"Nailsmith: 2000 Geo + 2 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n pureNail: {\r\n name: \"#4 Pure Nail\",\r\n spoiler: \"Nailsmith: 4000 Geo + 3 Pale Ore\",\r\n wiki: \"Nail#Nail_Upgrades\"\r\n }\r\n },\r\n SPELLS: {\r\n vengefulSpirit: {\r\n fireballLevel: 1,\r\n name: \"Vengeful Spirit\",\r\n spoiler: \"Forgotten Crossroads: Ancestral Mound\",\r\n wiki: \"Vengeful_Spirit\"\r\n },\r\n shadeSoul: {\r\n fireballLevel: 2,\r\n name: \"Shade Soul\",\r\n spoiler: \"City of Tears: Soul Sanctum + Elegant Key\",\r\n wiki: \"Shade_Soul\"\r\n },\r\n desolateDive: {\r\n quakeLevel: 1,\r\n name: \"Desolate Dive\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Desolate_Dive\"\r\n },\r\n descendingDark: {\r\n quakeLevel: 2,\r\n name: \"Descending Dark\",\r\n spoiler: \"Crystal Peak: Crystallised Mound\",\r\n wiki: \"Descending_Dark\"\r\n },\r\n howlingWraiths: {\r\n screamLevel: 1,\r\n name: \"Howling Wraiths\",\r\n spoiler: \"Fog Canyon: Overgrown Mound\",\r\n wiki: \"Howling_Wraiths\"\r\n },\r\n abyssShriek: {\r\n screamLevel: 2,\r\n name: \"Abyss Shriek\",\r\n spoiler: \"The Abyss, use Howling Wraiths on podium\",\r\n wiki: \"Abyss_Shriek\"\r\n }\r\n },\r\n WARRIORDREAMS: {\r\n xeroDefeated: {\r\n name: \"Xero\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Xero\"\r\n },\r\n noEyesDefeated: {\r\n name: \"No Eyes\",\r\n spoiler: \"Greenpath: Stone Sanctuary\",\r\n wiki: \"No_Eyes\"\r\n },\r\n elderHuDefeated: {\r\n name: \"Elder Hu\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Elder_Hu\"\r\n },\r\n aladarSlugDefeated: {\r\n name: \"Gorb\",\r\n spoiler: \"Howling Cliffs\",\r\n wiki: \"Gorb\"\r\n },\r\n mumCaterpillarDefeated: {\r\n name: \"Marmu\",\r\n spoiler: \"Queen's Gardens\",\r\n wiki: \"Marmu\"\r\n },\r\n galienDefeated: {\r\n name: \"Galien\",\r\n spoiler: \"Deepnest\",\r\n wiki: \"Galien\"\r\n },\r\n markothDefeated: {\r\n name: \"Markoth\",\r\n spoiler: \"Kingdom's Edge, requires Shade Cloak\",\r\n wiki: \"Markoth\"\r\n },\r\n },\r\n GRIMMTROUPE: {\r\n gotCharm_37: {\r\n name: \"Charm #37 Sprintmaster\",\r\n spoiler: \"Sly: 400 Geo + Shopkeeper's Key\",\r\n wiki: \"Sprintmaster\"\r\n },\r\n gotCharm_38: {\r\n name: \"Charm #38 Dreamshield\",\r\n spoiler: \"Resting Grounds\",\r\n wiki: \"Dreamshield\"\r\n },\r\n gotCharm_39: {\r\n name: \"Charm #39 Weaversong\",\r\n spoiler: \"Deepnest: Weaver's Den\",\r\n wiki: \"Weaversong\"\r\n },\r\n gotCharm_40: {\r\n name: \"Charm #40 Grimmchild / Carefree Melody\",\r\n spoiler: \"Dirtmouth\",\r\n wiki: \"Grimmchild\"\r\n },\r\n killedGrimm: {\r\n name: \"Troupe Leader Grimm\",\r\n spoiler: \"Dirtmouth, collect 6 flames\",\r\n wiki: \"Grimm\"\r\n },\r\n grimmChildLevel: {\r\n name: \"Nightmare King Grimm / Banishment\",\r\n spoiler: \"Dirtmouth or Howling Cliffs\",\r\n wiki: \"Category:The_Grimm_Troupe#Banishment\"\r\n }\r\n },\r\n LIFEBLOOD: {\r\n killedHiveKnight: {\r\n name: \"Hive Knight\",\r\n spoiler: \"The Hive, guards Hiveblood charm\",\r\n wiki: \"Hive_Knight\"\r\n }\r\n },\r\n GODMASTER_DOORS: {\r\n pantheonMaster: {\r\n name: \"#1 Pantheon of the Master\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Master\"\r\n },\r\n pantheonArtist: {\r\n name: \"#2 Pantheon of the Artist\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Artist\"\r\n },\r\n pantheonSage: {\r\n name: \"#3 Pantheon of the Sage\",\r\n spoiler: \"Godhome\",\r\n wiki: \"Pantheon_of_the_Sage\"\r\n },\r\n pantheonKnight: {\r\n name: \"#4 Pantheon of the Knight\",\r\n spoiler: \"Godhome, complete #1, #2 and #3\",\r\n wiki: \"Pantheon_of_the_Knight\"\r\n }\r\n },\r\n GODMASTER: {\r\n hasGodfinder: {\r\n name: \"Godtuner\",\r\n spoiler: \"Junk Pit, requires Simple Key\",\r\n wiki: \"Godtuner\"\r\n }\r\n },\r\n ESSENTIAL: {\r\n grubsCollected: {\r\n name: \"Grubs Rescued\",\r\n spoiler: \"out of 46 total\",\r\n max: 46,\r\n wiki: \"Grub\"\r\n },\r\n dreamOrbs: {\r\n name: \"Essence Collected\",\r\n spoiler: \"Dream Nail (2400 for completion)\",\r\n max: 2400,\r\n wiki: \"Dream_Nail#Essence\"\r\n },\r\n stationsOpened: {\r\n name: \"Stag Stations opened\",\r\n spoiler: \"out of 10 total\",\r\n max: 10,\r\n wiki: \"Fast_Travel_(Hollow_Knight)#Locations_and_Prices\"\r\n },\r\n fountainGeo: {\r\n name: \"Geo in Fountain\",\r\n spoiler: \"Ancient Basin: 3000 Geo maximum\",\r\n max: 3000,\r\n wiki: \"Ancient_Basin#Description\"\r\n },\r\n slyRescued: {\r\n name: \"Sly Rescued\",\r\n spoiler: \"Forgotten Crossroads, near Gruz Mother\",\r\n wiki: \"Sly\"\r\n },\r\n brettaRescued: {\r\n name: \"Bretta Rescued\",\r\n spoiler: \"Fungal Wastes, near Dashmaster charm statue\",\r\n wiki: \"Bretta\"\r\n },\r\n hasLantern: {\r\n name: \"Lumafly Lantern\",\r\n spoiler: \"Sly: 1800 Geo\",\r\n wiki: \"Lumafly_Lantern\"\r\n },\r\n shopkeeperKey: {\r\n name: \"Shopkeeper's Key\",\r\n spoiler: \"Crystal Peak, below Quirrel location\",\r\n wiki: \"Shopkeeper's_Key\"\r\n },\r\n elegantKey: {\r\n name: \"Elegant Key\",\r\n spoiler: \"Sly: 800 Geo + Shopkeeper's Key\",\r\n wiki: \"Elegant_Key\"\r\n },\r\n loveKey: {\r\n name: \"Love Key\",\r\n spoiler: \"Queen's Gardens, near Fungal Wastes\",\r\n wiki: \"Love_Key\"\r\n },\r\n slySimpleKey: {\r\n name: \"Simple Key #1\",\r\n spoiler: \"Sly: 950 Geo\",\r\n wiki: \"Simple_Key\"\r\n },\r\n simpleKeyCityOfTears: {\r\n name: \"Simple Key #2\",\r\n spoiler: \"City of Tears, below west Stag Station\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n simpleKeyAncientBasin: {\r\n name: \"Simple Key #3\",\r\n spoiler: \"Ancient Basin, below Broken Vessel\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n gotLurkerKey: {\r\n name: \"Simple Key #4\",\r\n spoiler: \"Colosseum of Fools: Pale Lurker's Retreat\",\r\n wiki: \"Simple_Key#How_to_Acquire\"\r\n },\r\n paleOreAncientBasin: {\r\n name: \"Pale Ore #1\",\r\n spoiler: \"Ancient Basin, near Cloth location\",\r\n wiki: \"Pale_Ore\"\r\n },\r\n paleOreSeer: {\r\n name: \"Pale Ore #2\",\r\n spoiler: \"Seer: 300 Essence\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreCrystalPeak: {\r\n name: \"Pale Ore #3\",\r\n spoiler: \"Crystal Peak: Hallownest's Crown\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreDeepnest: {\r\n name: \"Pale Ore #4\",\r\n spoiler: \"Deepnest, Nosk reward\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreGrubfather: {\r\n name: \"Pale Ore #5\",\r\n spoiler: \"Grubfather: 31 Grubs rescued\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n paleOreColosseum: {\r\n name: \"Pale Ore #6\",\r\n spoiler: \"Colosseum of Fools: Trial of the Conqueror\",\r\n wiki: \"Pale_Ore#How_to_Acquire\"\r\n },\r\n waterwaysAcidDrained: {\r\n name: \"Acid Drained\",\r\n spoiler: \"Royal Waterways, lever after Dung Defender\",\r\n wiki: \"Royal_Waterways#Sub-area:_Isma.27s_Grove\"\r\n },\r\n hasTramPass: {\r\n name: \"Tram Pass\",\r\n spoiler: \"Deepnest, Failed Tramway\",\r\n wiki: \"Tram_Pass\"\r\n },\r\n gotQueenFragment: {\r\n name: \"White Fragment: Queen\",\r\n spoiler: \"White Lady, Queen's Gardens\",\r\n wiki: \"Kingsoul#How_to_Acquire\"\r\n },\r\n gotKingFragment: {\r\n name: \"White Fragment: King\",\r\n spoiler: \"Pale King, White Palace\",\r\n wiki: \"Kingsoul#How_to_Acquire\"\r\n },\r\n nightmareLanternLit: {\r\n name: \"Nightmare Lantern Lit\",\r\n spoiler: \"Howling Cliffs, corpse of a large bug\",\r\n wiki: \"Howling_Cliffs#Nightmare_Lantern_Chamber\"\r\n }\r\n },\r\n GRUBS_LIST: [\"Crossroads_35\", \"Crossroads_03\", \"Crossroads_05\", \"Crossroads_48\", \"Crossroads_31\", \"Fungus1_06\", \"Fungus1_07\", \"Fungus1_21\", \"Fungus1_28\", \"Fungus2_18\", \"Ruins1_05\", \"Mines_04\", \"Mines_03\", \"Mines_31\", \"Mines_19\", \"Ruins1_32\", \"RestingGrounds_10\", \"Ruins_House_01\", \"Mines_35\", \"Mines_16\", \"Waterways_04\", \"Waterways_13\", \"Abyss_19\", \"Abyss_17\", \"Mines_24\", \"Fungus1_13\", \"Fungus3_47\", \"Fungus3_10\", \"Fungus3_48\", \"Fungus3_22\", \"Ruins2_07\", \"Ruins2_11\", \"Ruins2_11\", \"Ruins2_11\", \"Deepnest_East_11\", \"Deepnest_East_14\", \"Fungus2_20\", \"Ruins2_03\", \"Deepnest_36\", \"Deepnest_03\", \"Deepnest_31\", \"Deepnest_39\", \"Deepnest_Spider_Town\", \"Waterways_14\", \"Hive_03\", \"Hive_04\"],\r\n ACHIEVEMENTS: {\r\n areaMaps: {\r\n name: \"Area Maps\",\r\n spoiler: \"Cornifer and Iselda (out of 13)\",\r\n max: 13,\r\n list: [\r\n \"mapCrossroads\", \"mapGreenpath\", \"mapFogCanyon\", \"mapRoyalGardens\", \"mapFungalWastes\", \"mapCity\", \"mapWaterways\", \"mapMines\", \"mapDeepnest\", \"mapCliffs\", \"mapOutskirts\", \"mapRestingGrounds\", \"mapAbyss\"\r\n ],\r\n wiki: \"Map_and_Quill#Maps\"\r\n },\r\n journalEntriesCompleted: {\r\n name: \"Creatures Encountered\",\r\n spoiler: \"Hunter's Journal (164 max)\",\r\n max: 164,\r\n wiki: \"Category:Enemies_(Hollow_Knight)#Compendium\"\r\n },\r\n journalNotesCompleted: {\r\n name: \"Hunter Notes Completed\",\r\n spoiler: \"Hunter's Journal (164 max)\",\r\n max: 164,\r\n wiki: \"Category:Enemies_(Hollow_Knight)#Compendium\"\r\n },\r\n hasJournal: {\r\n name: \"Hunter's Journal\",\r\n spoiler: \"Greenpath: Hunter\",\r\n wiki: \"Hunter%27s_Journal\"\r\n },\r\n hasHuntersMark: {\r\n name: \"Hunter's Mark\",\r\n spoiler: \"Greenpath: Hunter\",\r\n wiki: \"Hunter's_Mark\"\r\n },\r\n killedPrayerSlug: {\r\n name: \"Journal: Maggot\",\r\n spoiler: \"Forgotten Crossroads: False Knight secret room\",\r\n wiki: \"Maggot\"\r\n },\r\n killedOrangeScuttler: {\r\n name: \"Journal: Lightseed\",\r\n spoiler: \"Infected Crossroads\",\r\n wiki: \"Lightseed\"\r\n },\r\n killedPigeon: {\r\n name: \"Journal: Maskfly\",\r\n spoiler: \"Greenpath, Queen's Gardens\",\r\n wiki: \"Maskfly\"\r\n },\r\n killedLazyFlyer: {\r\n name: \"Journal: Aluba\",\r\n spoiler: \"Lake of Unn, Queen's Gardens (near White Lady)\",\r\n wiki: \"Aluba\"\r\n },\r\n killedAcidFlyer: {\r\n name: \"Journal: Duranda\",\r\n spoiler: \"Greenpath: Nailmaster Sheo's tent path\",\r\n wiki: \"Duranda\"\r\n },\r\n killedAcidWalker: {\r\n name: \"Journal: Durandoo\",\r\n spoiler: \"Greenpath, Queen's Gardens\",\r\n wiki: \"Durandoo\"\r\n },\r\n killedPlantShooter: {\r\n name: \"Journal: Gulka\",\r\n spoiler: \"Greenpath: west of Stone Sanctuary\",\r\n wiki: \"Gulka\"\r\n },\r\n killedMushroomTurret: {\r\n name: \"Journal: Sporg\",\r\n spoiler: \"Fungal Wastes\",\r\n wiki: \"Sporg\"\r\n },\r\n killedZapBug: {\r\n name: \"Journal: Charged Lumafly\",\r\n spoiler: \"Fog Canyon: Teacher's Archives (tank)\",\r\n wiki: \"Charged_Lumafly\"\r\n },\r\n killedCrystalCrawler: {\r\n name: \"Journal: Crystal Crawler\",\r\n spoiler: \"Crystal Peak\",\r\n wiki: \"Crystal_Crawler\"\r\n },\r\n killedGorgeousHusk: {\r\n name: \"Journal: Gorgeous Husk\",\r\n spoiler: \"City of Tears: secret room\",\r\n wiki: \"Gorgeous_Husk\"\r\n },\r\n killedWorm: {\r\n name: \"Journal: Goam\",\r\n spoiler: \"Infected Crossroads: near Fungal Wastes entrance\",\r\n wiki: \"Goam\"\r\n },\r\n killedBigCentipede: {\r\n name: \"Journal: Garpede\",\r\n spoiler: \"Deepnest: east of Hot Spring\",\r\n wiki: \"Garpede\"\r\n },\r\n killedAbyssTendril: {\r\n name: \"Journal: Void Tendrils\",\r\n spoiler: \"The Abyss: secret room\",\r\n wiki: \"Void_Tendrils\"\r\n },\r\n killedPaleLurker: {\r\n name: \"Journal: Pale Lurker\",\r\n spoiler: \"Colosseum of Fools: secret area\",\r\n wiki: \"Pale_Lurker\"\r\n },\r\n falseKnightDreamDefeated: {\r\n name: \"Failed Champion\",\r\n spoiler: \"Forgotten Crossroads\",\r\n wiki: \"Failed_Champion\"\r\n },\r\n mageLordDreamDefeated: {\r\n name: \"Soul Tyrant\",\r\n spoiler: \"City of Tears: Soul Sanctum\",\r\n wiki: \"Soul_Tyrant\"\r\n },\r\n infectedKnightDreamDefeated: {\r\n name: \"Lost Kin\",\r\n spoiler: \"Ancient Basin\",\r\n wiki: \"Lost_Kin\"\r\n },\r\n whiteDefenderDefeated: {\r\n name: \"White Defender\",\r\n spoiler: \"Royal Waterways\",\r\n wiki: \"White_Defender\"\r\n },\r\n greyPrinceDefeated: {\r\n name: \"Grey Prince Zote\",\r\n spoiler: \"Dirtmouth: Bretta's Room (per save choice)\",\r\n wiki: \"Grey_Prince_Zote\"\r\n },\r\n killedHollowKnight: {\r\n name: \"Hollow Knight\",\r\n spoiler: \"Forgotten Crossroads: Black Egg Temple\",\r\n wiki: \"Hollow_Knight\"\r\n },\r\n salubraBlessing: {\r\n name: \"Salubra's Blessing\",\r\n spoiler: \"Salubra: 800 Geo + all 40 Charms found\",\r\n wiki: \"Salubra's_Blessing\"\r\n },\r\n gotShadeCharm: {\r\n name: \"Void Heart\",\r\n spoiler: \"Kingsoul + Birthplace\",\r\n wiki: \"Void_Heart\"\r\n },\r\n killedFinalBoss: {\r\n name: \"Radiance\",\r\n spoiler: \"Forgotten Crossroads: Black Egg Temple\",\r\n wiki: \"Radiance\"\r\n },\r\n bossDoorStateTier5: {\r\n name: \"Embrace the Void\",\r\n spoiler: \"Godhome: Pantheon of Hallownest\",\r\n wiki: \"Pantheon_of_Hallownest\"\r\n },\r\n zoteStatus: {\r\n name: \"Zote Status\",\r\n nameNeglect: \"Zote Choice: Neglect\",\r\n nameRivalry: \"Zote Choice: Rivalry\",\r\n nameTrappedVengefly: \"Zote Status: Vengefly\",\r\n nameNotRescuedVengefly: \"Zote Status: Greenpath\",\r\n nameTrappedDeepnest: \"Zote Status: Deepnest\",\r\n nameColosseum: \"Zote Status: Colosseum of Fools\",\r\n spoiler: \"One achievement per save file\",\r\n spoilerNeglect: \"Left Zote to die\",\r\n spoilerRivalry: \"Defeated Zote in the Colosseum of Fools\",\r\n spoilerTrappedVengefly: \"Greenpath, defeat Vengefly King\",\r\n spoilerNotRescuedVengefly: \"Check what happened with Zote\",\r\n spoilerTrappedDeepnest: \"Deepnest, free from cobwebs\",\r\n spoilerColosseum: \"Trial of the Warrior\",\r\n wiki: \"Zote\"\r\n },\r\n nailsmithStatus: {\r\n name: \"Nailsmith Status\",\r\n nameHappyCouple: \"Nailsmith Choice: Happy Couple\",\r\n namePurity: \"Nailsmith Choice: Purity\",\r\n nameSheoHutWaiting: \"Nailsmith Status: Sheo\",\r\n nameUpgradeNail: \"Nailsmith Status: Waiting\",\r\n spoiler: \"One achievement per save file\",\r\n spoilerHappyCouple: \"Found a new calling\",\r\n spoilerPurity: \"Slain with Pure Nail\",\r\n spoilerSheoHutWaiting: \"Waiting at Sheo's Hut\",\r\n spoilerUpgradeNail: \"Upgrade Nail to Pure Nail\",\r\n wiki: \"Nailsmith\"\r\n },\r\n mrMushroomState: {\r\n name: \"Mr Mushroom\",\r\n spoiler1: \"Fungal Wastes, near Cornifer\",\r\n spoiler2: \"Kingdom's Edge, near Isma's Grove\",\r\n spoiler3: \"Deepnest, near Galien\",\r\n spoiler4: \"Howling Cliffs, near Nailmaster Mato\",\r\n spoiler5: \"Ancient Basin, near Monarch Wings\",\r\n spoiler6: \"Fog Canyon, near Overgrown Mound\",\r\n spoiler7: \"King's Pass, game starting location\",\r\n wiki: \"Mister_Mushroom\"\r\n }\r\n /* \r\n Mr Mushroom data\r\n case SplitName.MrMushroom1: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 2; break;\r\n case SplitName.MrMushroom2: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 3; break;\r\n case SplitName.MrMushroom3: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 4; break;\r\n case SplitName.MrMushroom4: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 5; break;\r\n case SplitName.MrMushroom5: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 6; break;\r\n case SplitName.MrMushroom6: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 7; break;\r\n case SplitName.MrMushroom7: shouldSplit = mem.PlayerData(Offset.mrMushroomState) == 8; break;\r\n\r\n \"mrMushroomState\": 4, < this is the current location of Mr Mushroom (Howling Cliffs)\r\n\r\n 1. Spawn of self, their minds unite, (Fungal Wastes)\r\n 2. Aside the source of acid blight, (Kingdom's Edge, near Isma's Grove)\r\n 3. Aglow in darkest, winding depths, (Deepnest, near Galien)\r\n 4. Winds all howl above fossilstone steps, (Howling Cliffs)\r\n 5. Monarchflys in air set still, (Ancient Basin, near the Monarch Wings location)\r\n 6. To Root's domain and snail once shrill, (Fog Canyon, near Overgrown Mound)\r\n 7. Path of Wyrm, at new lands entered, (King's Pass)\r\n 8. There journeys end. The kingdom ventured.\r\n */\r\n },\r\n STATISTICS: {\r\n nailDamage: {\r\n name: \"Nail Damage\",\r\n spoiler: \"Nailsmith upgrades, City of Tears\",\r\n max: 21,\r\n wiki: \"Nail#Nail_Upgrades\"\r\n },\r\n charmSlots: {\r\n name: \"Charm Notches\",\r\n spoiler: \"out of 11 total\",\r\n max: 11,\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n whisperingRoots: {\r\n name: \"Whispering Roots completed\",\r\n spoiler: \"Dream Nail (out of 15)\",\r\n max: 15,\r\n wiki: \"Whispering_Root\"\r\n },\r\n relicsWandererJournal: {\r\n name: \"Relic #1 found total\",\r\n nameHeld: \"trinket1\",\r\n nameSold: \"soldTrinket1\",\r\n spoiler: \"Wanderer's Journal (out of 14)\",\r\n max: 14,\r\n wiki: \"Wanderer's_Journal\"\r\n },\r\n relicsHallownestSeal: {\r\n name: \"Relic #2 found total\",\r\n nameHeld: \"trinket2\",\r\n nameSold: \"soldTrinket2\",\r\n spoiler: \"Hallownest Seal (out of 17)\",\r\n max: 17,\r\n wiki: \"Hallownest_Seal\"\r\n },\r\n relicsKingsIdol: {\r\n name: \"Relic #3 found total\",\r\n nameHeld: \"trinket3\",\r\n nameSold: \"soldTrinket3\",\r\n spoiler: \"King's Idol (out of 8)\",\r\n max: 8,\r\n wiki: \"King's_Idol\"\r\n },\r\n relicsArcaneEgg: {\r\n name: \"Relic #4 found total\",\r\n nameHeld: \"trinket4\",\r\n nameSold: \"soldTrinket4\",\r\n spoiler: \"Arcane Egg (4 max, 1 missable)\",\r\n max: 4,\r\n wiki: \"Arcane_Egg\"\r\n },\r\n geoRocks: {\r\n name: \"Geo Rocks\",\r\n spoiler: \"Unbroken/Broken/Discovered Total\",\r\n wiki: \"Geo#How_to_Acquire\"\r\n },\r\n // not ghostCoins\r\n geoPool: {\r\n name: \"Shade Geo\",\r\n spoiler: \"Amount of Geo the Shade is currently holding\",\r\n min: 0,\r\n wiki: \"Shade\"\r\n },\r\n rancidEggs: {\r\n name: \"Rancid Eggs\",\r\n spoiler: \"Find: Hallownest, Buy: Sly, Tuk\",\r\n wiki: \"Rancid_Egg\"\r\n },\r\n jinnEggsSold: {\r\n name: \"Rancid Eggs sold to Jinn\",\r\n spoiler: \"Only in Steel Soul Mode\",\r\n wiki: \"Jinn\"\r\n },\r\n xunFlowerBrokeTimes: {\r\n name: \"Delicate Flowers broken\",\r\n spoiler: \"Resting Grounds: Grey Mourner\",\r\n wiki: \"Delicate_Flower\"\r\n },\r\n notchShroomOgres: {\r\n name: \"Charm Notch #1\",\r\n spoiler: \"Fungal Wastes: Shroom Ogres room\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch1: {\r\n name: \"Charm Notch #2\",\r\n spoiler: \"Salubra: 120 Geo + 5 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch2: {\r\n name: \"Charm Notch #3\",\r\n spoiler: \"Salubra: 500 Geo + 10 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch3: {\r\n name: \"Charm Notch #4\",\r\n spoiler: \"Salubra: 900 Geo + 18 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n salubraNotch4: {\r\n name: \"Charm Notch #5\",\r\n spoiler: \"Salubra: 1400 Geo + 25 Charms found\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n colosseumBronzeCompleted: {\r\n name: \"Charm Notch #6\",\r\n spoiler: \"Colosseum of Fools: Trial of the Warrior\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n notchFogCanyon: {\r\n name: \"Charm Notch #7\",\r\n spoiler: \"Fog Canyon: explosive eggs room\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n gotGrimmNotch: {\r\n name: \"Charm Notch #8\",\r\n spoiler: \"Dirtmouth: Troupe Leader Grimm\",\r\n wiki: \"Category:Charms#Notches\"\r\n },\r\n hasDreamGate: {\r\n name: \"Dreamgate\",\r\n spoiler: \"Seer: 900 Essence\",\r\n wiki: \"Dreamgate\"\r\n },\r\n fragileGreed_unbreakable: {\r\n name: \"Unbreakable Greed\",\r\n spoiler: \"Divine: Fragile Greed + 9000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n fragileHealth_unbreakable: {\r\n name: \"Unbreakable Heart\",\r\n spoiler: \"Divine: Fragile Heart + 12000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n fragileStrength_unbreakable: {\r\n name: \"Unbreakable Strength\",\r\n spoiler: \"Divine: Fragile Strength + 15000 Geo\",\r\n wiki: \"Divine#Unbreakable_Charms\"\r\n },\r\n killedMenderBug: {\r\n name: \"Journal: Menderbug\",\r\n spoiler: \"Forgotten Crossroads + destroy sign\",\r\n wiki: \"Menderbug\"\r\n },\r\n killedBindingSeal: {\r\n name: \"Journal: Seal of Binding\",\r\n spoiler: \"White Palace: Path of Pain completion\",\r\n wiki: \"Seal_of_Binding\"\r\n },\r\n killedGodseekerMask: {\r\n name: \"Journal: Weathered Mask\",\r\n spoiler: \"Godhome: Land of Storms\",\r\n wiki: \"Weathered_Mask\"\r\n },\r\n killedVoidIdol_1: {\r\n name: \"Journal: Void Idol Attuned\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n killedVoidIdol_2: {\r\n name: \"Journal: Void Idol Ascended\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n killedVoidIdol_3: {\r\n name: \"Journal: Void Idol Radiant\",\r\n spoiler: \"Godhome: Hall of Gods, defeat all\",\r\n wiki: \"Void_Idol\"\r\n },\r\n elderbugGaveFlower: {\r\n name: \"Delicate Flower: Elderbug\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenGodseekerFlower: {\r\n name: \"Delicate Flower: Godseeker\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenOroFlower: {\r\n name: \"Delicate Flower: Nailmaster Oro\",\r\n spoiler: \"D. from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenWhiteLadyFlower: {\r\n name: \"Delicate Flower: White Lady\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n givenEmilitiaFlower: {\r\n name: \"Delicate Flower: Emilitia\",\r\n spoiler: \"Delivered from Traitor's Child Grave\",\r\n wiki: \"Delicate_Flower#List_of_Possible_Recipients\"\r\n },\r\n whitePalaceSecretRoomVisited: {\r\n name: \"White Palace Secret Room visited\",\r\n spoiler: \"Help identify this room!\",\r\n wiki: \"White_Palace#Secret_rooms\"\r\n },\r\n killsBindingSeal: {\r\n name: \"Path of Pain\",\r\n spoiler: \"White Palace: main secret area\",\r\n wiki: \"White_Palace#Sub-area:_Path_of_Pain\"\r\n },\r\n whiteDefenderDefeats: {\r\n name: \"White Defender times defeated\",\r\n spoiler: \"Royal Waterways (5 max)\",\r\n max: 5,\r\n wiki: \"White_Defender\"\r\n },\r\n greyPrinceDefeats: {\r\n name: \"Grey Prince Zote times defeated\",\r\n spoiler: \"Dirtmouth (10 max)\",\r\n max: 10,\r\n wiki: \"Grey_Prince_Zote\"\r\n },\r\n }\r\n};\r\n\r\nexport default HK;","const MAP = {\r\n \"Tutorial_01\": \"King's_Pass\",\r\n \"Town\": \"Dirtmouth\",\r\n \"Room_shop\": \"Sly\",\r\n \"Room_Sly_Storeroom\": \"Sly_Basement\",\r\n \"Room_Town_Stag_Station\": \"Dirtmouth_Stag\",\r\n \"Room_mapper\": \"Iselda\",\r\n \"Room_Bretta\": \"Bretta\",\r\n \"Room_Bretta_Basement\": \"Bretta_Basement\",\r\n \"Room_Ouiji\": \"Jiji\",\r\n \"Room_Jinn\": \"Jinn\",\r\n \"Room_Tram_RG\": \"Upper_Tram\",\r\n \"Room_Tram\": \"Lower_Tram\",\r\n \"Crossroads_01\": \"Crossroads_Well\",\r\n \"Crossroads_02\": \"Crossroads_Outside_Temple\",\r\n \"Crossroads_03\": \"Crossroads_Outside_Stag\",\r\n \"Crossroads_04\": \"Crossroads_Gruz_Mother\",\r\n \"Crossroads_05\": \"Crossroads_Central_Grub\",\r\n \"Crossroads_06\": \"Crossroads_Outside_Mound\",\r\n \"Crossroads_07\": \"Crossroads_Gruzzer\",\r\n \"Crossroads_08\": \"Crossroads_Aspid_Arena\",\r\n \"Crossroads_09\": \"Crossroads_Mawlek_Boss\",\r\n \"Crossroads_10\": \"Crossroads_False_Knight_Arena\",\r\n \"Crossroads_11_alt\": \"Crossroads_Greenpath_Entrance\",\r\n \"Crossroads_12\": \"Crossroads_Corridor_to_Acid_Grub\",\r\n \"Crossroads_13\": \"Crossroads_Goam_Mask_Shard\",\r\n \"Crossroads_14\": \"Crossroads_Outside_Myla\",\r\n \"Crossroads_15\": \"Crossroads_Corridor_to_Tram\",\r\n \"Crossroads_16\": \"Crossroads_Above_Lever\",\r\n \"Crossroads_18\": \"Crossroads_Fungal_Entrance\",\r\n \"Crossroads_19\": \"Crossroads_Before_Gruz_Mother\",\r\n \"Crossroads_21\": \"Crossroads_Outside_False_Knight\",\r\n \"Crossroads_22\": \"Crossroads_Glowing_Womb_Arena\",\r\n \"Crossroads_25\": \"Crossroads_Mawlek_Entrance\",\r\n \"Crossroads_27\": \"Crossroads_Outside_Tram\",\r\n \"Crossroads_30\": \"Crossroads_Hot_Spring\",\r\n \"Crossroads_31\": \"Crossroads_Spike_Grub\",\r\n \"Crossroads_33\": \"Crossroads_Cornifer\",\r\n \"Crossroads_35\": \"Crossroads_Acid_Grub\",\r\n \"Crossroads_36\": \"Crossroads_Mawlek_Middle\",\r\n \"Crossroads_37\": \"Crossroads_Vessel_Fragment\",\r\n \"Crossroads_38\": \"Crossroads_Grubfather\",\r\n \"Crossroads_39\": \"Crossroads_Corridor_Right_of_Temple\",\r\n \"Crossroads_40\": \"Crossroads_Corridor_Right_of_Central_Grub\",\r\n \"Crossroads_42\": \"Crossroads_Right_Of_Mask_Shard\",\r\n \"Crossroads_43\": \"Crossroads_Corridor_to_Elevator\",\r\n \"Crossroads_45\": \"Crossroads_Myla\",\r\n \"Crossroads_46\": \"Crossroads_Tram\",\r\n \"Crossroads_47\": \"Crossroads_Stag\",\r\n \"Crossroads_48\": \"Crossroads_Guarded_Grub\",\r\n \"Crossroads_49\": \"Crossroads_Elevator\",\r\n \"Crossroads_52\": \"Crossroads_Goam_Journal\",\r\n \"Crossroads_ShamanTemple\": \"Crossroads_Ancestral_Mound\",\r\n \"Room_Mender_House\": \"Crossroads_Menderbug\",\r\n \"Room_Charm_Shop\": \"Crossroads_Salubra\",\r\n \"Room_ruinhouse\": \"Crossroads_Rescue_Sly\",\r\n \"Room_temple\": \"Crossroads_Inside_Temple\",\r\n \"Fungus1_01\": \"Greenpath_Entrance\",\r\n \"Fungus1_01b\": \"Greenpath_Waterfall_Bench\",\r\n \"Fungus1_02\": \"Greenpath_First_Hornet_Sighting\",\r\n \"Fungus1_03\": \"Greenpath_Storerooms\",\r\n \"Fungus1_04\": \"Greenpath_Hornet\",\r\n \"Fungus1_05\": \"Greenpath_Outside_Thorns\",\r\n \"Fungus1_06\": \"Greenpath_Cornifer\",\r\n \"Fungus1_07\": \"Greenpath_Outside_Hunter\",\r\n \"Fungus1_08\": \"Greenpath_Hunter\",\r\n \"Fungus1_09\": \"Greenpath_Sheo_Gauntlet\",\r\n \"Fungus1_10\": \"Greenpath_Acid_Bridge\",\r\n \"Fungus1_11\": \"Greenpath_Above_Fog_Canyon\",\r\n \"Fungus1_12\": \"Greenpath_MMC_Corridor\",\r\n \"Fungus1_13\": \"Greenpath_Whispering_Root\",\r\n \"Fungus1_14\": \"Greenpath_Thorns_of_Agony\",\r\n \"Fungus1_15\": \"Greenpath_Outside_Sheo\",\r\n \"Fungus1_16_alt\": \"Greenpath_Stag\",\r\n \"Fungus1_17\": \"Greenpath_Charger_Corridor\",\r\n \"Fungus1_19\": \"Greenpath_Above_Sanctuary_Bench\",\r\n \"Fungus1_20_v02\": \"Greenpath_Vengefly_King\",\r\n \"Fungus1_21\": \"Greenpath_Outside_Hornet\",\r\n \"Fungus1_22\": \"Greenpath_Outside_Stag\",\r\n \"Fungus1_25\": \"Greenpath_Corridor_to_Unn\",\r\n \"Fungus1_26\": \"Greenpath_Lake_Of_Unn\",\r\n \"Fungus1_29\": \"Greenpath_Massive_Moss_Charger\",\r\n \"Fungus1_30\": \"Greenpath_Below_Toll_Bench\",\r\n \"Fungus1_31\": \"Greenpath_Toll\",\r\n \"Fungus1_32\": \"Greenpath_Moss_Knight_Arena\",\r\n \"Fungus1_34\": \"Greenpath_Stone_Sanctuary_Entrance\",\r\n \"Fungus1_35\": \"Greenpath_Stone_Sanctuary\",\r\n \"Fungus1_36\": \"Greenpath_Stone_Sanctuary_Mask_Shard\",\r\n \"Fungus1_37\": \"Greenpath_Sanctuary_Bench\",\r\n \"Fungus1_Slug\": \"Greenpath_Unn\",\r\n \"Room_nailmaster_02\": \"Greenpath_Sheo\",\r\n \"Room_Slug_Shrine\": \"Greenpath_Unn_Bench\",\r\n \"Deepnest_01\": \"Fungal_Deepnest_Fall\",\r\n \"Fungus2_01\": \"Fungal_Queen's_Station\",\r\n \"Fungus2_02\": \"Fungal_Queen's_Stag\",\r\n \"Fungus2_03\": \"Fungal_Outside_Queen's\",\r\n \"Fungus2_04\": \"Fungal_Below_Ogres\",\r\n \"Fungus2_05\": \"Fungal_Shrumal_Ogres\",\r\n \"Fungus2_06\": \"Fungal_Outside_Leg_Eater\",\r\n \"Fungus2_07\": \"Fungal_Shrumal_Warrior_Acid_Bridge\",\r\n \"Fungus2_08\": \"Fungal_Outside_Elder_Hu\",\r\n \"Fungus2_09\": \"Fungal_Cloth_Corridor\",\r\n \"Fungus2_10\": \"Fungal_Left_Of_Pilgrim's_Way\",\r\n \"Fungus2_11\": \"Fungal_Right_of_Bouncy_Grub\",\r\n \"Fungus2_12\": \"Fungal_Mantis_Corridor\",\r\n \"Fungus2_13\": \"Fungal_Bretta_Bench\",\r\n \"Fungus2_14\": \"Fungal_Mantis_Village\",\r\n \"Fungus2_15\": \"Fungal_Mantis_Lords\",\r\n \"Fungus2_17\": \"Fungal_Above_Mantis_Village\",\r\n \"Fungus2_18\": \"Fungal_Cornifer\",\r\n \"Fungus2_19\": \"Fungal_Right_Of_Spore_Shroom\",\r\n \"Fungus2_20\": \"Fungal_Spore_Shroom\",\r\n \"Fungus2_21\": \"Fungal_Pilgrim's_Way\",\r\n \"Fungus2_23\": \"Fungal_Dashmaster\",\r\n \"Fungus2_26\": \"Fungal_Leg_Eater\",\r\n \"Fungus2_28\": \"Fungal_Shrumal_Warrior_Loop\",\r\n \"Fungus2_29\": \"Fungal_Core_Upper\",\r\n \"Fungus2_30\": \"Fungal_Core_Lower\",\r\n \"Fungus2_31\": \"Fungal_Mantis_Rewards\",\r\n \"Fungus2_32\": \"Fungal_Elder_Hu\",\r\n \"Fungus2_33\": \"Fungal_Leg_Eater_Root\",\r\n \"Fungus2_34\": \"Fungal_Willoh\",\r\n \"Fungus3_01\": \"Fog_Upper_West_Tall\",\r\n \"Fungus3_02\": \"Fog_Lower_West_Tall\",\r\n \"Fungus3_03\": \"Fog_Queen's_Gardens_Acid_Entrance\",\r\n \"Fungus3_24\": \"Fog_Corridor_to_Overgrown_Mound\",\r\n \"Fungus3_25\": \"Fog_Cornifer\",\r\n \"Fungus3_25b\": \"Fog_Corridor_to_Cornifer\",\r\n \"Fungus3_26\": \"Fog_East_Tall\",\r\n \"Fungus3_27\": \"Fog_Corridor_to_Archives\",\r\n \"Fungus3_28\": \"Fog_Charm_Notch\",\r\n \"Fungus3_30\": \"Fog_Lifeblood\",\r\n \"Fungus3_35\": \"Fog_Millibelle\",\r\n \"Fungus3_44\": \"Fog_Overgrown_Mound_Entrance\",\r\n \"Fungus3_47\": \"Fog_Archives_Entrance\",\r\n \"Fungus3_archive\": \"Fog_Archives_Bench\",\r\n \"Fungus3_archive_02\": \"Fog_Uumuu_Arena\",\r\n \"Room_Fungus_Shaman\": \"Fog_Overgrown_Mound\",\r\n \"Cliffs_01\": \"Cliffs_Main\",\r\n \"Cliffs_02\": \"Cliffs_Gorb\",\r\n \"Cliffs_03\": \"Cliffs_Stag_Nest\",\r\n \"Cliffs_04\": \"Cliffs_Joni's_Dark\",\r\n \"Cliffs_05\": \"Cliffs_Joni's_Pickup\",\r\n \"Cliffs_06\": \"Cliffs_Grimm_Lantern\",\r\n \"Fungus1_28\": \"Cliffs_Baldur's_Shell\",\r\n \"Room_nailmaster\": \"Cliffs_Mato\",\r\n \"Mines_01\": \"Crystal_Dive_Entrance\",\r\n \"Mines_02\": \"Crystal_Dark_Entrance\",\r\n \"Mines_03\": \"Crystal_Spike_Grub\",\r\n \"Mines_04\": \"Crystal_Entrance_Conveyors\",\r\n \"Mines_05\": \"Crystal_Above_Spike_Grub\",\r\n \"Mines_06\": \"Crystal_Deep_Focus_Gauntlet\",\r\n \"Mines_07\": \"Crystal_Dark_Room\",\r\n \"Mines_10\": \"Crystal_Elevator_Entrance\",\r\n \"Mines_11\": \"Crystal_Left_Of_Guardian\",\r\n \"Mines_13\": \"Crystal_Top_Corridor\",\r\n \"Mines_16\": \"Crystal_Mimic\",\r\n \"Mines_17\": \"Crystal_Corridor_to_Spike_Grub\",\r\n \"Mines_18\": \"Crystal_Guardian_Bench\",\r\n \"Mines_19\": \"Crystal_Grub_Crushers\",\r\n \"Mines_20\": \"Crystal_East_Tall\",\r\n \"Mines_23\": \"Crystal_Crown_Whispering_Root\",\r\n \"Mines_24\": \"Crystal_Crown_Grub\",\r\n \"Mines_25\": \"Crystal_Crown_Climb\",\r\n \"Mines_28\": \"Crystal_Outside_Mound\",\r\n \"Mines_29\": \"Crystal_Dark_Bench\",\r\n \"Mines_30\": \"Crystal_Cornifer\",\r\n \"Mines_31\": \"Crystal_Crystal_Heart_Gauntlet\",\r\n \"Mines_32\": \"Crystal_Enraged_Guardian_Arena\",\r\n \"Mines_33\": \"Crossroads_Peak_Dark_Toll\",\r\n \"Mines_34\": \"Crystal_Crown_Peak\",\r\n \"Mines_35\": \"Crystal_Mound\",\r\n \"Mines_36\": \"Crystal_Deep_Focus\",\r\n \"Mines_37\": \"Crystal_Chest_Crushers\",\r\n \"Abyss_02\": \"Basin_Broken_Bridge\",\r\n \"Abyss_03\": \"Basin_Tram\",\r\n \"Abyss_04\": \"Basin_Fountain\",\r\n \"Abyss_05\": \"Basin_Palace_Grounds\",\r\n \"Abyss_17\": \"Basin_Cloth\",\r\n \"Abyss_18\": \"Basin_Corridor_to_Broken_Vessel\",\r\n \"Abyss_19\": \"Basin_Broken_Vessel_Grub\",\r\n \"Abyss_20\": \"Basin_Simple_Key\",\r\n \"Abyss_21\": \"Basin_Monarch_Wings\",\r\n \"Abyss_22\": \"Basin_Hidden_Station\",\r\n \"Abyss_06_Core\": \"Abyss_Core\",\r\n \"Abyss_08\": \"Abyss_Lifeblood_Core\",\r\n \"Abyss_09\": \"Abyss_Lighthouse_Climb\",\r\n \"Abyss_10\": \"Abyss_Shade_Cloak\",\r\n \"Abyss_12\": \"Abyss_Shriek\",\r\n \"Abyss_15\": \"Abyss_Birthplace\",\r\n \"Abyss_16\": \"Abyss_Corridor_to_Lighthouse\",\r\n \"Abyss_Lighthouse_room\": \"Abyss_Lighthouse\",\r\n \"Crossroads_46b\": \"Grounds_Tram\",\r\n \"Crossroads_50\": \"Grounds_Blue_Lake\",\r\n \"RestingGrounds_02\": \"Grounds_Xero\",\r\n \"RestingGrounds_04\": \"Grounds_Dream_Nail_Entrance\",\r\n \"RestingGrounds_05\": \"Grounds_Whispering_Root\",\r\n \"RestingGrounds_06\": \"Grounds_Corridor_Below_Xero\",\r\n \"RestingGrounds_07\": \"Grounds_Seer\",\r\n \"RestingGrounds_08\": \"Grounds_Spirit's_Glade\",\r\n \"RestingGrounds_09\": \"Grounds_Stag\",\r\n \"RestingGrounds_10\": \"Grounds_Crypts\",\r\n \"RestingGrounds_12\": \"Grounds_Outside_Grey_Mourner\",\r\n \"RestingGrounds_17\": \"Grounds_Dreamshield\",\r\n \"Room_Mansion\": \"Grounds_Grey_Mourner\",\r\n \"Ruins2_10\": \"Grounds_Elevator\",\r\n \"Abyss_03_c\": \"Edge_Tram\",\r\n \"Deepnest_East_01\": \"Edge_Left_Of_Hive\",\r\n \"Deepnest_East_02\": \"Edge_Above_Hive\",\r\n \"Deepnest_East_03\": \"Edge_Entrance\",\r\n \"Deepnest_East_04\": \"Edge_Bardoon\",\r\n \"Deepnest_East_06\": \"Edge_Outside_Oro\",\r\n \"Deepnest_East_07\": \"Edge_Whispering_Root\",\r\n \"Deepnest_East_08\": \"Edge_Great_Hopper_Idol\",\r\n \"Deepnest_East_09\": \"Edge_Corridor_Outside_Colosseum\",\r\n \"Deepnest_East_10\": \"Edge_Markoth_Arena\",\r\n \"Deepnest_East_11\": \"Edge_Below_Camp_Bench\",\r\n \"Deepnest_East_12\": \"Edge_Hornet_Sentinel_Corridor\",\r\n \"Deepnest_East_13\": \"Edge_Camp_Bench\",\r\n \"Deepnest_East_14\": \"Edge_Below_Oro\",\r\n \"Deepnest_East_14b\": \"Edge_Quick_Slash\",\r\n \"Deepnest_East_15\": \"Edge_Lifeblood\",\r\n \"Deepnest_East_16\": \"Edge_Oro_Scarecrow\",\r\n \"Deepnest_East_17\": \"Edge_420_Geo_Rock\",\r\n \"Deepnest_East_18\": \"Edge_Outside_Markoth\",\r\n \"Deepnest_East_Hornet\": \"Edge_Hornet_Sentinel_Arena\",\r\n \"GG_Lurker\": \"Edge_Pale_Lurker\",\r\n \"Room_Colosseum_01\": \"Edge_Colo_Entrance\",\r\n \"Room_Colosseum_02\": \"Edge_Colo_Bench\",\r\n \"Room_Colosseum_Bronze\": \"Edge_Colo_1_Arena\",\r\n \"Room_Colosseum_Gold\": \"Edge_Colo_3_Arena\",\r\n \"Room_Colosseum_Silver\": \"Edge_Colo_2_Arena\",\r\n \"Room_Colosseum_Spectate\": \"Edge_Colo_Spectate\",\r\n \"Room_nailmaster_03\": \"Edge_Oro\",\r\n \"Room_Wyrm\": \"Edge_Cast-Off_Shell\",\r\n \"Abyss_01\": \"City_Broken_Elevator\",\r\n \"Crossroads_49b\": \"City_Left_Elevator\",\r\n \"Room_nailsmith\": \"City_Nailsmith\",\r\n \"Ruins_Bathhouse\": \"City_Pleasure_House_Bench\",\r\n \"Ruins_Elevator\": \"City_Pleasure_House_Elevator\",\r\n \"Ruins_House_01\": \"City_Guarded_Grub\",\r\n \"Ruins_House_02\": \"City_Gorgeous_Husk\",\r\n \"Ruins_House_03\": \"City_Emilitia\",\r\n \"Ruins1_01\": \"City_Pilgrim's_Entrance\",\r\n \"Ruins1_02\": \"City_Quirrel_Bench\",\r\n \"Ruins1_03\": \"City_Rafters\",\r\n \"Ruins1_04\": \"City_Outside_Nailsmith\",\r\n \"Ruins1_05\": \"City_Grub_Above_Lemm\",\r\n \"Ruins1_05b\": \"City_Lemm\",\r\n \"Ruins1_05c\": \"City_Egg_Above_Lemm\",\r\n \"Ruins1_06\": \"City_Corridor_to_Storerooms\",\r\n \"Ruins1_09\": \"City_Soul_Twister_Arena\",\r\n \"Ruins1_17\": \"City_Whispering_Root\",\r\n \"Ruins1_18\": \"City_Corridor_to_Spire\",\r\n \"Ruins1_23\": \"City_Sanctum_Entrance\",\r\n \"Ruins1_24\": \"City_Soul_Master_Arena\",\r\n \"Ruins1_25\": \"City_Sanctum_East_Elevators\",\r\n \"Ruins1_27\": \"City_Hollow_Knight_Fountain\",\r\n \"Ruins1_28\": \"City_Storerooms\",\r\n \"Ruins1_29\": \"City_Storerooms_Stag\",\r\n \"Ruins1_30\": \"City_Sanctum_Spell_Twister\",\r\n \"Ruins1_31\": \"City_Toll_Bench\",\r\n \"Ruins1_31b\": \"City_Shade_Soul_Arena\",\r\n \"Ruins1_32\": \"City_Soul_Master_Rewards\",\r\n \"Ruins2_01\": \"City_Spire_Second_Floor\",\r\n \"Ruins2_01_b\": \"City_Spire_First_Floor\",\r\n \"Ruins2_03\": \"City_Spire_Fourth_Floor\",\r\n \"Ruins2_03b\": \"City_Spire_Third_Floor\",\r\n \"Ruins2_04\": \"City_Right_Hub\",\r\n \"Ruins2_05\": \"City_Above_King's\",\r\n \"Ruins2_06\": \"City_King's_Station\",\r\n \"Ruins2_07\": \"City_Grub_Below_King's\",\r\n \"Ruins2_08\": \"City_King's_Stag\",\r\n \"Ruins2_09\": \"City_King's_Vessel_Fragment\",\r\n \"Ruins2_10b\": \"City_Right_Elevator\",\r\n \"Ruins2_11\": \"City_Collector_Arena\",\r\n \"Ruins2_11_b\": \"City_Tower_of_Love\",\r\n \"Ruins2_Watcher_Room\": \"City_Lurien_Elevator\",\r\n \"Hive_01\": \"Hive_Entrance\",\r\n \"Hive_02\": \"Hive_Whispering_Root\",\r\n \"Hive_03\": \"Hive_Outside_Grub\",\r\n \"Hive_03_c\": \"Hive_Outside_Shortcut\",\r\n \"Hive_04\": \"Hive_Mask_Shard\",\r\n \"Hive_05\": \"Hive_Knight_Arena\",\r\n \"GG_Pipeway\": \"Waterways_Flukemunga_Corridor\",\r\n \"GG_Waterways\": \"Waterways_Junk_Pit\",\r\n \"Room_GG_Shortcut\": \"Waterways_Fluke_Hermit\",\r\n \"Waterways_01\": \"Waterways_Entrance\",\r\n \"Waterways_02\": \"Waterways_Main_Bench\",\r\n \"Waterways_03\": \"Waterways_Tuk\",\r\n \"Waterways_04\": \"Waterways_Hidden_Grub\",\r\n \"Waterways_04b\": \"Waterways_Mask_Shard\",\r\n \"Waterways_05\": \"Waterways_Dung_Defender_Arena\",\r\n \"Waterways_06\": \"Waterways_Corridor_to_Broken_Elevator\",\r\n \"Waterways_07\": \"Waterways_Left_Of_Isma's_Grove\",\r\n \"Waterways_08\": \"Waterways_Outside_Flukemarm\",\r\n \"Waterways_09\": \"Waterways_Cornifer\",\r\n \"Waterways_12\": \"Waterways_Flukemarm_Arena\",\r\n \"Waterways_13\": \"Waterways_Isma's_Grove\",\r\n \"Waterways_14\": \"Waterways_Edge_Acid_Corridor\",\r\n \"Waterways_15\": \"Waterways_Dung_Defender's_Cave\",\r\n \"Abyss_03_b\": \"Deepnest_Tram\",\r\n \"Deepnest_01b\": \"Deepnest_Upper_Cornifer\",\r\n \"Deepnest_02\": \"Deepnest_Outside_Mimics\",\r\n \"Deepnest_03\": \"Deepnest_Left_Of_Hot_Spring\",\r\n \"Deepnest_09\": \"Deepnest_Distant_Village_Stag\",\r\n \"Deepnest_10\": \"Deepnest_Distant_Village\",\r\n \"Deepnest_14\": \"Deepnest_Failed_Tramway_Bench\",\r\n \"Deepnest_16\": \"Deepnest_After_Lower_Cornifer\",\r\n \"Deepnest_17\": \"Deepnest_Garpede_Corridor_Below_Cornifer\",\r\n \"Deepnest_26\": \"Deepnest_Failed_Tramway_Lifeblood\",\r\n \"Deepnest_26b\": \"Deepnest_Tram_Pass\",\r\n \"Deepnest_30\": \"Deepnest_Hot_Spring\",\r\n \"Deepnest_31\": \"Deepnest_Nosk_Corridor\",\r\n \"Deepnest_32\": \"Deepnest_Nosk_Arena\",\r\n \"Deepnest_33\": \"Deepnest_Zote_Arena\",\r\n \"Deepnest_34\": \"Deepnest_First_Devout\",\r\n \"Deepnest_35\": \"Deepnest_Outside_Galien\",\r\n \"Deepnest_36\": \"Deepnest_Mimics\",\r\n \"Deepnest_37\": \"Deepnest_Corridor_to_Tram\",\r\n \"Deepnest_38\": \"Deepnest_Vessel_Fragment\",\r\n \"Deepnest_39\": \"Deepnest_Whispering_Root\",\r\n \"Deepnest_40\": \"Deepnest_Galien_Arena\",\r\n \"Deepnest_41\": \"Deepnest_Midwife\",\r\n \"Deepnest_42\": \"Deepnest_Outside_Mask_Maker\",\r\n \"Deepnest_44\": \"Deepnest_Sharp_Shadow\",\r\n \"Deepnest_45_v02\": \"Deepnest_Weaver's_Den\",\r\n \"Deepnest_Spider_Town\": \"Deepnest_Beast's_Den\",\r\n \"Fungus2_25\": \"Deepnest_Lower_Cornifer\",\r\n \"Room_Mask_Maker\": \"Deepnest_Mask_Maker\",\r\n \"Room_spider_small\": \"Deepnest_Brumm\",\r\n \"Deepnest_43\": \"Gardens_Corridor_To_Deepnest\",\r\n \"Fungus1_23\": \"Gardens_First_Loodle_Corridor\",\r\n \"Fungus1_24\": \"Gardens_Cornifer\",\r\n \"Fungus3_04\": \"Gardens_Before_Petra_Arena\",\r\n \"Fungus3_05\": \"Gardens_Petra_Arena\",\r\n \"Fungus3_08\": \"Gardens_Lower_Petra_Corridor\",\r\n \"Fungus3_10\": \"Gardens_Main_Arena\",\r\n \"Fungus3_11\": \"Gardens_Whispering_Root\",\r\n \"Fungus3_13\": \"Gardens_Outside_Stag\",\r\n \"Fungus3_21\": \"Gardens_Corridor_to_Traitor_Lord\",\r\n \"Fungus3_22\": \"Gardens_Upper_Grub\",\r\n \"Fungus3_23\": \"Gardens_Traitor_Lord_Arena\",\r\n \"Fungus3_34\": \"Gardens_Entrance\",\r\n \"Fungus3_39\": \"Gardens_Moss_Prophet\",\r\n \"Fungus3_49\": \"Gardens_Traitor's_Child's_Grave\",\r\n \"Fungus3_40\": \"Gardens_Gardens_Stag\",\r\n \"Fungus3_48\": \"Gardens_Outside_White_Lady\",\r\n \"Fungus3_50\": \"Gardens_Toll_Bench\",\r\n \"Room_Queen\": \"Gardens_White_Lady\",\r\n \"White_Palace_01\": \"Palace_Entrance\",\r\n \"White_Palace_02\": \"Palace_First_Mold\",\r\n \"White_Palace_03_hub\": \"Palace_Hub\",\r\n \"White_Palace_04\": \"Palace_Left_Of_Hub\",\r\n \"White_Palace_05\": \"Palace_Saw_Room\",\r\n \"White_Palace_06\": \"Palace_Balcony\",\r\n \"White_Palace_07\": \"Palace_Lamp_Pogo\",\r\n \"White_Palace_08\": \"Palace_Workshop\",\r\n \"White_Palace_09\": \"Palace_Throne\",\r\n \"White_Palace_11\": \"Palace_Outside\",\r\n \"White_Palace_12\": \"Palace_Spike_Drop\",\r\n \"White_Palace_13\": \"Palace_Thorn_Jump\",\r\n \"White_Palace_14\": \"Palace_Hell_Corridor\",\r\n \"White_Palace_15\": \"Palace_Caged_Lever\",\r\n \"White_Palace_16\": \"Palace_Saw_Climb\",\r\n \"White_Palace_17\": \"POP_Lever\",\r\n \"White_Palace_18\": \"POP_Entrance\",\r\n \"White_Palace_19\": \"POP_Vertical\",\r\n \"White_Palace_20\": \"POP_Final\",\r\n \"Dream_Final_Boss\": \"Egg_Radiance\",\r\n \"Room_Final_Boss_Atrium\": \"Egg_Bench\",\r\n \"Room_Final_Boss_Core\": \"Egg_Hollow_Knight\",\r\n \"Grimm_Divine\": \"Grimm_Divine\",\r\n \"Grimm_Main_Tent\": \"Grimm_Tent\",\r\n \"Grimm_Nightmare\": \"Grimm_NKG\",\r\n \"Dream_01_False_Knight\": \"Dream_Failed_Champion\",\r\n \"Dream_02_Mage_Lord\": \"Dream_Soul_Tyrant\",\r\n \"Dream_03_Infected_Knight\": \"Dream_Lost_Kin\",\r\n \"Dream_04_White_Defender\": \"Dream_White_Defender\",\r\n \"Dream_Abyss\": \"Dream_Abyss\",\r\n \"Dream_Backer_Shrine\": \"Dream_Outside_Shrine\",\r\n \"Dream_Guardian_Hegemol\": \"Dream_Herrah\",\r\n \"Dream_Guardian_Lurien\": \"Dream_Lurien\",\r\n \"Dream_Guardian_Monomon\": \"Dream_Monomon\",\r\n \"Dream_Mighty_Zote\": \"Dream_Grey_Prince_Zote\",\r\n \"Dream_Nailcollection\": \"Dream_Nail\",\r\n \"Dream_Room_Believer_Shrine\": \"Dream_Shrine_of_Believers\",\r\n \"GG_Atrium\": \"Godhome_Atrium\",\r\n \"GG_Atrium_Roof\": \"Godhome_Roof\",\r\n \"GG_Blue_Room\": \"Godhome_Lifeblood\",\r\n \"GG_Land_Of_Storms\": \"Godhome_Land_Of_Storms\",\r\n \"GG_Mighty_Zote\": \"GG_Enchanting_Vigorous_Diligent_Overwhelming_Gorgeous_Passionate_Terrifying_Beautiful_Zote\",\r\n \"GG_Unlock_Wastes\": \"Godhome_Godtuner\",\r\n \"GG_Workshop\": \"Godhome_Hall_Of_Gods\"\r\n};\r\n\r\nexport default MAP;","/* ---------------- Load main Hollow Knight database files ----------------- */\r\n\r\nimport MAP from \"./hk-dictionary.js\";\r\n\r\n/* -------------------------- Functions ----------------------------- */\r\n\r\n/**\r\n * Checks the length of a JavaScript Object like Array.length\r\n * @param {object} object JavaScript Object\r\n * @return {number} length of the Object\r\n */\r\nfunction ObjectLength(object) {\r\n let length = 0;\r\n for (let key in object) {\r\n if (object.hasOwnProperty(key)) {\r\n ++length;\r\n }\r\n }\r\n return length;\r\n}\r\n\r\n/**\r\n * Returns a translated map location name string.\r\n * @param {string} mapCode Code of the Hollow Knight map location the game developers use\r\n * @param {object} dictionary Main data source for translation\r\n */\r\nfunction TranslateMapName(mapCode, dictionary = MAP) {\r\n\r\n let translation = mapCode;\r\n if (dictionary.hasOwnProperty(mapCode)) translation = dictionary[mapCode];\r\n\r\n return translation;\r\n}\r\n\r\n/* ------------------------- Exports ------------------------------- */\r\n\r\nexport {\r\n ObjectLength,\r\n TranslateMapName\r\n};","const ROOT = document.documentElement;\r\nconst SCROLL_BUTTON = document.querySelector(\".scroll-up-button\");\r\n\r\nfunction ScrollToElement(element) {\r\n\r\n /* Scroll to the element top */\r\n element.scrollTo({\r\n top: 0,\r\n behavior: \"smooth\"\r\n });\r\n}\r\n\r\nfunction ShowElement(element) {\r\n\r\n element.classList.add(\"visible-block\");\r\n element.classList.add(\"opacity-full\");\r\n element.classList.remove(\"hidden\");\r\n}\r\n\r\nfunction HideElement(element) {\r\n\r\n element.classList.remove(\"visible-block\");\r\n element.classList.remove(\"opacity-full\");\r\n element.classList.add(\"hidden\");\r\n}\r\n\r\nfunction TogglePageScrollElement(root, element, ratio) {\r\n\r\n /* Maximum number of pixels that can be scrolled by the user */\r\n let scrollTotal = root.scrollHeight - root.clientHeight;\r\n\r\n if ((root.scrollTop / scrollTotal) > ratio) {\r\n /* Show button */\r\n ShowElement(element);\r\n } else {\r\n /* Hide button */\r\n HideElement(element);\r\n }\r\n}\r\n\r\n/**\r\n * Cleans \"generated\" and fills all HTML elements of ids from a given list. Creates only div with id, and h2 with title inside it.\r\n * @param {object} jsObj Object with HTML data to fill\r\n */\r\nfunction PrefillHTML(jsObj, element = \"generated\") {\r\n\r\n let domElement = document.getElementById(element);\r\n let sFillText = \"\";\r\n // Clean \"generated\" div\r\n domElement.innerHTML = \"\";\r\n\r\n let id = \"\";\r\n let h2 = \"\";\r\n let h2id = \"\";\r\n let mp = \"\"; // max Percent\r\n let cl = \"\"; // class\r\n\r\n for (let i in jsObj) {\r\n id = jsObj[i].id;\r\n h2 = jsObj[i].h2;\r\n h2id = \"h2-\" + jsObj[i].id;\r\n\r\n mp = `
${(i === \"intro\") ? 0: jsObj[i].maxPercent}%
`;\r\n if (!jsObj[i].hasOwnProperty(\"maxPercent\")) mp = \"\";\r\n\r\n sFillText += `\r\n
\r\n

${h2}${mp}

\r\n
\r\n `;\r\n }\r\n\r\n domElement.innerHTML = sFillText;\r\n}\r\n\r\n/**\r\n * Replaces the h2 titles with a current percent/max percent values as read from the save file\r\n * @param {object} jsObj Object with HTML data to fill\r\n * @param {number} hkGameCompletion Total completion percentage in a save file\r\n */\r\nfunction CompletionHTML(jsObj, hkGameCompletion) {\r\n\r\n let h2 = \"\";\r\n let h2id = \"\";\r\n let cl = \"\";\r\n let clGreen = \"box-green\";\r\n let clRed = \"box-red\";\r\n let cp = 0; // current Percent\r\n let mp = 0; // max Percent\r\n let fillText = \"\";\r\n\r\n for (let i in jsObj) {\r\n h2 = jsObj[i].h2;\r\n h2id = \"h2-\" + jsObj[i].id;\r\n\r\n (jsObj[i].hasOwnProperty(\"percent\")) ? cp = jsObj[i].percent: cp = 0;\r\n if (i === \"intro\") cp = hkGameCompletion;\r\n\r\n // Don't use percent-box for Essentials, Achievements, Statistics\r\n if (!jsObj[i].hasOwnProperty(\"maxPercent\")) {\r\n fillText = \"\";\r\n }\r\n // otherwise use percent-box with values cp/mp%\r\n else {\r\n\r\n mp = jsObj[i].maxPercent;\r\n\r\n if (i === \"maskShards\") {\r\n let perc = jsObj[i].percent;\r\n (perc % 4) ? cp = Math.floor(perc / 4): cp = perc / 4;\r\n } else if (i === \"vesselFragments\") {\r\n let perc = jsObj[i].percent;\r\n (perc % 3) ? cp = Math.floor(perc / 3): cp = perc / 3;\r\n }\r\n\r\n // switches the box to red when a section (h2) is 0\r\n if (cp === 0) {\r\n cl = ` ${clRed}`;\r\n }\r\n // switches the box to green when a section (h2) is completed\r\n else if (cp === mp) {\r\n cl = ` ${clGreen}`;\r\n }\r\n // default is blue (partially completed and starting value)\r\n else cl = \"\";\r\n\r\n // needed for Game Status to show percentage properly (adds a slash for all boxes except the Game Status one)\r\n if (jsObj[i].hasOwnProperty(\"percent\")) cp += \"/\";\r\n\r\n fillText = `
${(i === \"intro\") ? cp: cp + jsObj[i].maxPercent}%
`;\r\n }\r\n\r\n document.getElementById(h2id).innerHTML = h2 + fillText;\r\n }\r\n}\r\n\r\n/**\r\n * Adds HTML string to an element with a given ID.\r\n * @param {object} divId object containing div ID of the HTML element to append to\r\n * @param {string} content HTML contents to append\r\n */\r\nfunction AppendHTML(divId, content) {\r\n document.getElementById(divId.id).innerHTML += \"\\n\" + content;\r\n}\r\n\r\n/**\r\n * Toggles display of \"hk-hints\". On click with no parameters or on demand when called with a parameter\r\n * @param {string} param \"hide\", \"show\" or none (optional)\r\n */\r\nfunction CheckboxHintsToggle(param = \"none\") {\r\n let checkboxId = document.getElementById(\"checkbox-hints\");\r\n\r\n switch (param) {\r\n case \"hide\":\r\n document.getElementById(\"hk-hints\").classList.add(\"hidden\");\r\n checkboxId.value = \"hints-off\";\r\n checkboxId.checked = false;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"unchecked\");\r\n }\r\n break;\r\n case \"show\":\r\n document.getElementById(\"hk-hints\").classList.remove(\"hidden\");\r\n checkboxId.value = \"hints-on\";\r\n checkboxId.checked = true;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"checked\");\r\n }\r\n break;\r\n default:\r\n // This runs when the checkbox is not checked\r\n if (checkboxId.checked === false) {\r\n document.getElementById(\"hk-hints\").classList.add(\"hidden\");\r\n checkboxId.value = \"hints-off\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"unchecked\");\r\n }\r\n }\r\n // This runs when the checkbox is checked\r\n else {\r\n document.getElementById(\"hk-hints\").classList.remove(\"hidden\");\r\n checkboxId.value = \"hints-on\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxHints\", \"checked\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Toggles display of \".spoiler-span\" class. On click with no parameters or on demand when called with a parameter\r\n * @param {string} param \"hide\", \"show\" or none (optional)\r\n */\r\nfunction CheckboxSpoilersToggle(param = \"none\") {\r\n let checkboxId = document.getElementById(\"checkbox-spoilers\");\r\n let allClassElements = document.querySelectorAll(\".spoiler-span\");\r\n let length = allClassElements.length;\r\n\r\n switch (param) {\r\n case \"hide\":\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.add(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-off\";\r\n checkboxId.checked = false;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"unchecked\");\r\n }\r\n break;\r\n case \"show\":\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.remove(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-on\";\r\n checkboxId.checked = true;\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"checked\");\r\n }\r\n break;\r\n default:\r\n // This runs when the checkbox is not checked\r\n if (checkboxId.checked === false) {\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.add(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-off\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"unchecked\");\r\n }\r\n break;\r\n }\r\n // This runs when the checkbox is checked\r\n else {\r\n for (let i = 0; i < length; i++) {\r\n allClassElements[i].classList.remove(\"hidden\");\r\n }\r\n checkboxId.value = \"spoilers-on\";\r\n\r\n // remember this choice for subsequent page visits and browser restarts\r\n if (StorageAvailable('localStorage')) {\r\n localStorage.setItem(\"hkCheckboxSpoilers\", \"checked\");\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Detects whether Storage is both supported and available.\r\n * MDN WebDocs https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API#feature-detecting_localstorage\r\n * @param {Storage} type type of storage. Ex. \"localStorage\" or \"sessionStorage\"\r\n * @returns {Boolean}\r\n */\r\nfunction StorageAvailable(type) {\r\n var storage;\r\n try {\r\n storage = window[type];\r\n var x = '__storage_test__';\r\n storage.setItem(x, x);\r\n storage.removeItem(x);\r\n return true;\r\n } catch (e) {\r\n return e instanceof DOMException && (\r\n // everything except Firefox\r\n e.code === 22 ||\r\n // Firefox\r\n e.code === 1014 ||\r\n // test name field too, because code might not be present\r\n // everything except Firefox\r\n e.name === 'QuotaExceededError' ||\r\n // Firefox\r\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\r\n // acknowledge QuotaExceededError only if there's something already stored\r\n (storage && storage.length !== 0);\r\n }\r\n}\r\n\r\n/* ----------------------- Event Listeners -------------------------- */\r\n\r\ndocument.addEventListener(\"scroll\", () => {\r\n TogglePageScrollElement(\r\n /* the document element root () */\r\n ROOT,\r\n /* Which element to toggle visibility */\r\n SCROLL_BUTTON,\r\n /* How far the user has to scroll to show the element */\r\n 0.1);\r\n});\r\n\r\nSCROLL_BUTTON.addEventListener(\"click\", () => {\r\n ScrollToElement(ROOT);\r\n});\r\n\r\n// Checkboxes functions\r\ndocument.getElementById(\"checkbox-hints\").addEventListener(\"click\", CheckboxHintsToggle, false);\r\ndocument.getElementById(\"checkbox-spoilers\").addEventListener(\"click\", CheckboxSpoilersToggle, false);\r\n\r\n/* ------------------------- Exports ------------------------------- */\r\n\r\nexport {\r\n PrefillHTML,\r\n CompletionHTML,\r\n AppendHTML,\r\n CheckboxHintsToggle,\r\n CheckboxSpoilersToggle,\r\n StorageAvailable\r\n};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// extracted by mini-css-extract-plugin\nexport {};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// Handle cookies\r\n// require(\"./cookies.js\");\r\n\r\n// CSS\r\n// require(\"../css/cookieconsent.css\");\r\nrequire(\"../css/fontello.css\");\r\nrequire(\"../css/simpleicon.css\");\r\nrequire(\"../css/style.css\");\r\n\r\n// required for meta tags (social) to be visible by Webpack\r\nrequire(\"../img/thumbnail1200x628.jpg\");\r\n\r\nrequire(\"./page-functions.js\");\r\n\r\n// Instantly load test save file from .json (fast Debugging script)\r\n// require(\"./LoadJson.js\");\r\n\r\n// Main script for analyzing the decoded save file and generating the page on the fly\r\n// require(\"./HKCheckCompletion.js\");\r\nrequire(\"./HKCheckCompletion.js\");\r\n\r\n// Load Save File for opening files, decoding, decryption\r\nrequire(\"./LoadSaveFile.js\");"],"sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7dbe16d..04c8a67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,34 +5,34 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", + "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", "dev": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.12.13" } }, "@babel/compat-data": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", - "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz", + "integrity": "sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg==", "dev": true }, "@babel/core": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", - "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.17.tgz", + "integrity": "sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.10", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.10", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-module-transforms": "^7.12.17", + "@babel/helpers": "^7.12.17", + "@babel/parser": "^7.12.17", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.1", @@ -42,12 +42,6 @@ "source-map": "^0.5.0" }, "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -57,12 +51,12 @@ } }, "@babel/generator": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", - "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.17.tgz", + "integrity": "sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg==", "dev": true, "requires": { - "@babel/types": "^7.12.11", + "@babel/types": "^7.12.17", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -76,196 +70,177 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz", - "integrity": "sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", "dev": true, "requires": { - "@babel/types": "^7.12.10" + "@babel/types": "^7.12.13" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.17.tgz", + "integrity": "sha512-5EkibqLVYOuZ89BSg2lv+GG8feywLuvMXNYgf0Im4MssE0mFWPztSpJbildNnUgw0bLI2EsIN4MpSHC2iUJkQA==", "dev": true, "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", + "@babel/compat-data": "^7.12.13", + "@babel/helper-validator-option": "^7.12.17", "browserslist": "^4.14.5", "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz", + "integrity": "sha512-I/nurmTxIxHV0M+rIpfQBF1oN342+yvl2kwZUrQuOClMamHF1w5tknfZubgNOLRoA73SzBFAdFcpb4M9HwOeWQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.12.17", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", + "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", "regexpu-core": "^4.7.1" } }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz", + "integrity": "sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" } }, "@babel/helper-function-name": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", - "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", + "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.12.10", - "@babel/template": "^7.12.7", - "@babel/types": "^7.12.11" + "@babel/helper-get-function-arity": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-get-function-arity": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", - "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", + "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", "dev": true, "requires": { - "@babel/types": "^7.12.10" + "@babel/types": "^7.12.13" } }, "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz", + "integrity": "sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw==", "dev": true, "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.13" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz", + "integrity": "sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg==", "dev": true, "requires": { - "@babel/types": "^7.12.7" + "@babel/types": "^7.12.17" } }, "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", + "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", "dev": true, "requires": { - "@babel/types": "^7.12.5" + "@babel/types": "^7.12.13" } }, "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz", + "integrity": "sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17", "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", - "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "requires": { - "@babel/types": "^7.12.10" + "@babel/types": "^7.12.13" } }, "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz", + "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz", + "integrity": "sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-replace-supers": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", - "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", + "integrity": "sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.7", - "@babel/helper-optimise-call-expression": "^7.12.10", - "@babel/traverse": "^7.12.10", - "@babel/types": "^7.12.11" + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", + "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.12.13" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -278,12 +253,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", - "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", + "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", "dev": true, "requires": { - "@babel/types": "^7.12.11" + "@babel/types": "^7.12.13" } }, "@babel/helper-validator-identifier": { @@ -293,195 +268,182 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", - "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz", + "integrity": "sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.17.tgz", + "integrity": "sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg==", "dev": true, "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.17", + "@babel/types": "^7.12.17" } }, "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", + "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } } }, "@babel/parser": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", - "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.17.tgz", + "integrity": "sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz", - "integrity": "sha512-nrz9y0a4xmUrRq51bYkWJIO5SBZyG2ys2qinHsN0zHDHVsUaModrkpyWWWXfGqYQmOL3x9sQIcTNN/pBGpo09A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz", + "integrity": "sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz", + "integrity": "sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz", + "integrity": "sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz", + "integrity": "sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz", + "integrity": "sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz", + "integrity": "sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz", + "integrity": "sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" + "@babel/plugin-transform-parameters": "^7.12.13" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz", + "integrity": "sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz", + "integrity": "sha512-TvxwI80pWftrGPKHNfkvX/HnoeSTR7gC4ezWnAL39PuktYUe6r8kEpOLTYnkBTsaoeazXm2jHJ22EQ81sdgfcA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz", + "integrity": "sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-async-generators": { @@ -494,12 +456,12 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-syntax-dynamic-import": { @@ -584,361 +546,352 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz", + "integrity": "sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz", + "integrity": "sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz", - "integrity": "sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz", + "integrity": "sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", "globals": "^11.1.0" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz", + "integrity": "sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz", + "integrity": "sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz", + "integrity": "sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz", + "integrity": "sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz", + "integrity": "sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz", + "integrity": "sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", + "@babel/helper-hoist-variables": "^7.12.13", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz", + "integrity": "sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" + "@babel/helper-create-regexp-features-plugin": "^7.12.13" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" } }, "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz", + "integrity": "sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz", + "integrity": "sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-plugin-utils": "^7.12.13", "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz", + "integrity": "sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz", - "integrity": "sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, "@babel/preset-env": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz", - "integrity": "sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.17.tgz", + "integrity": "sha512-9PMijx8zFbCwTHrd2P4PJR5nWGH3zWebx2OcpTjqQrHhCiL2ssSR2Sc9ko2BsI2VmVBfoaQmPrlMTCui4LmXQg==", "dev": true, "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.11", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", + "@babel/compat-data": "^7.12.13", + "@babel/helper-compilation-targets": "^7.12.17", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-option": "^7.12.17", + "@babel/plugin-proposal-async-generator-functions": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-dynamic-import": "^7.12.17", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.12.13", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.13", + "@babel/plugin-proposal-optional-chaining": "^7.12.17", + "@babel/plugin-proposal-private-methods": "^7.12.13", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", + "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", @@ -948,51 +901,43 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.11", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.10", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.12.13", + "@babel/plugin-transform-async-to-generator": "^7.12.13", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.12.13", + "@babel/plugin-transform-computed-properties": "^7.12.13", + "@babel/plugin-transform-destructuring": "^7.12.13", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.12.13", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.12.13", + "@babel/plugin-transform-modules-commonjs": "^7.12.13", + "@babel/plugin-transform-modules-systemjs": "^7.12.13", + "@babel/plugin-transform-modules-umd": "^7.12.13", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.12.13", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.12.13", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.12.13", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.11", + "@babel/types": "^7.12.17", "core-js-compat": "^3.8.0", "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "@babel/preset-modules": { @@ -1009,54 +954,46 @@ } }, "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.12.18", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.18.tgz", + "integrity": "sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", "dev": true, "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" } }, "@babel/traverse": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", - "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.17.tgz", + "integrity": "sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.11", - "@babel/generator": "^7.12.11", - "@babel/helper-function-name": "^7.12.11", - "@babel/helper-split-export-declaration": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/types": "^7.12.12", + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.17", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.17", + "@babel/types": "^7.12.17", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" - }, - "dependencies": { - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - } } }, "@babel/types": { - "version": "7.12.12", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", - "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.17.tgz", + "integrity": "sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -1086,6 +1023,17 @@ "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + } } }, "@npmcli/move-file": { @@ -1388,24 +1336,24 @@ } }, "@webpack-cli/configtest": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.0.tgz", - "integrity": "sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", "dev": true }, "@webpack-cli/info": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", - "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.2.tgz", - "integrity": "sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", "dev": true }, "@xtuc/ieee754": { @@ -1701,14 +1649,6 @@ "requires": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "camelcase": { @@ -1736,54 +1676,14 @@ "dev": true }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, "chownr": { @@ -1799,6 +1699,14 @@ "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "clean-css": { @@ -1943,15 +1851,40 @@ "integrity": "sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ==" }, "core-js-compat": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz", - "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.0.tgz", + "integrity": "sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ==", "dev": true, "requires": { - "browserslist": "^4.16.1", + "browserslist": "^4.16.3", "semver": "7.0.0" }, "dependencies": { + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, + "caniuse-lite": { + "version": "1.0.30001187", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001187.tgz", + "integrity": "sha512-w7/EP1JRZ9552CyrThUnay2RkZ1DXxKe/Q2swTC4+LElLh9RRYrL1Z+27LlakB8kzY0fSmHw9mc7XYDUKAKWMA==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.668", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.668.tgz", + "integrity": "sha512-TJzc4pxcplsWWS2hP01qQtwMIS+/3VLm4tkhsXbFwx3IIroXyidalrwcaJH+cNcrAdzSJ5xv0oeyGMS7d0i3kg==", + "dev": true + }, "semver": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", @@ -2062,23 +1995,34 @@ } }, "css-loader": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.1.tgz", - "integrity": "sha512-cXc2ti9V234cq7rJzFKhirb2L2iPy8ZjALeVJAozXYz9te3r4eqLSixNAbMDJSgJEQywqXzs8gonxaboeKqwiw==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.0.2.tgz", + "integrity": "sha512-gbkBigdcHbmNvZ1Cg6aV6qh6k9N6XOr8YWzISLQGrwk2mgOH8LLrizhkxbDhQtaLtktyKHD4970S0xwz5btfTA==", "dev": true, "requires": { "camelcase": "^6.2.0", "cssesc": "^3.0.0", - "icss-utils": "^5.0.0", + "icss-utils": "^5.1.0", "loader-utils": "^2.0.0", - "postcss": "^8.1.4", + "postcss": "^8.2.4", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.1.0", "schema-utils": "^3.0.0", - "semver": "^7.3.2" + "semver": "^7.3.4" + }, + "dependencies": { + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "css-minimizer-webpack-plugin": { @@ -2511,14 +2455,6 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "dot-prop": { @@ -2556,6 +2492,14 @@ "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" + }, + "dependencies": { + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + } } }, "enquirer": { @@ -2574,9 +2518,9 @@ "dev": true }, "envinfo": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", - "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true }, "error-ex": { @@ -2640,12 +2584,12 @@ "dev": true }, "eslint": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz", - "integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", + "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.3.0", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -2657,7 +2601,7 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", @@ -2682,6 +2626,84 @@ "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "eslint-scope": { @@ -2743,9 +2765,9 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -2904,12 +2926,12 @@ } }, "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, @@ -3015,13 +3037,10 @@ "dev": true }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true }, "globby": { "version": "6.1.0", @@ -3045,9 +3064,9 @@ } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { @@ -3155,9 +3174,9 @@ } }, "html-webpack-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-yzK7RQZwv9xB+pcdHNTjcqbaaDZ+5L0zJHXfi89iWIZmb/FtzxhLk0635rmJihcQbs3ZUF27Xp4oWGx6EK56zg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==", "dev": true, "requires": { "@types/html-minifier-terser": "^5.0.0", @@ -3191,12 +3210,6 @@ "json5": "^1.0.1" } }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, "util.promisify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", @@ -3267,54 +3280,6 @@ "requires": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } } }, "imurmurhash": { @@ -3644,12 +3609,12 @@ } }, "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -3677,14 +3642,6 @@ "dev": true, "requires": { "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "lru-cache": { @@ -3726,18 +3683,18 @@ "dev": true }, "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { - "mime-db": "1.45.0" + "mime-db": "1.46.0" } }, "mimic-fn": { @@ -3747,26 +3704,14 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.4.tgz", - "integrity": "sha512-dNjqyeogUd8ucUgw5sxm1ahvSfSUgef7smbmATRSbDm4EmNx5kQA6VdUEhEeCKSjX6CTYjb5vxgMUvRjqP3uHg==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.8.tgz", + "integrity": "sha512-u+2kVov/Gcs74iz+x3phEBWMAGw2djjnKfYez+Pl/b5dyXL7aM4Lp5QQtIq16CDwRHT/woUJki49gBNMhfm1eA==", "dev": true, "requires": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0", "webpack-sources": "^1.1.0" - }, - "dependencies": { - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } } }, "minimatch": { @@ -3871,14 +3816,6 @@ "requires": { "lower-case": "^2.0.2", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "node-releases": { @@ -4006,12 +3943,23 @@ } }, "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } } }, "p-map": { @@ -4037,14 +3985,6 @@ "requires": { "dot-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "parent-module": { @@ -4074,14 +4014,6 @@ "requires": { "no-case": "^3.0.4", "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - } } }, "path": { @@ -4146,18 +4078,18 @@ } }, "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^5.0.0" + "find-up": "^4.0.0" } }, "postcss": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.4.tgz", - "integrity": "sha512-kRFftRoExRVXZlwUuay9iC824qmXPcQQVzAjbCCgjpXnkdMCJYBu2gTwAaFBzv8ewND6O8xFb3aELmEkh9zTzg==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.6.tgz", + "integrity": "sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg==", "dev": true, "requires": { "colorette": "^1.2.1", @@ -5963,9 +5895,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.6.tgz", - "integrity": "sha512-jjyuCp+IEMIm3N1H1LLTJW1EISEJV9+5oHdEyrt43Pg9cDSb6rrLZei2cVWpl0xTjmmlpec/lEQGYgM7xfpGCQ==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -6022,12 +5954,12 @@ "dev": true }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -6099,13 +6031,10 @@ } }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, "serialize-javascript": { "version": "5.0.1", @@ -6436,9 +6365,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.3.tgz", - "integrity": "sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", + "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -6456,9 +6385,9 @@ } }, "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, "tar": { @@ -6535,9 +6464,9 @@ "dev": true }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", "dev": true }, "type-check": { @@ -6703,9 +6632,9 @@ "dev": true }, "watchpack": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", - "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -6713,9 +6642,9 @@ } }, "webpack": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.17.0.tgz", - "integrity": "sha512-R+IdNEaYcYaACpXZOt7reyc8txBK7J06lOPkX1SbgmeoAnUbyBZivJIksrDBnmMA3wlTWvPcX7DubxELyPB8rA==", + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.23.0.tgz", + "integrity": "sha512-RC6dwDuRxiU75F8XC4H08NtzUrMfufw5LDnO8dTtaKU2+fszEdySCgZhNwSBBn516iNaJbQI7T7OPHIgCwcJmg==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -6736,7 +6665,6 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "pkg-dir": "^5.0.0", "schema-utils": "^3.0.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.1", @@ -6745,25 +6673,41 @@ }, "dependencies": { "acorn": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", - "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.5.tgz", + "integrity": "sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg==", "dev": true + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } } } }, "webpack-cli": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.4.0.tgz", - "integrity": "sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.0", - "@webpack-cli/info": "^1.2.1", - "@webpack-cli/serve": "^1.2.2", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", "colorette": "^1.2.1", - "commander": "^6.2.0", + "commander": "^7.0.0", "enquirer": "^2.3.6", "execa": "^5.0.0", "fastest-levenshtein": "^1.0.12", @@ -6775,9 +6719,9 @@ }, "dependencies": { "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true } } @@ -6793,13 +6737,13 @@ } }, "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, "which": { diff --git a/package.json b/package.json index 2abb572..011febb 100644 --- a/package.json +++ b/package.json @@ -35,19 +35,19 @@ "core-js": "^3.9.0" }, "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", + "@babel/core": "^7.12.17", + "@babel/preset-env": "^7.12.17", "babel-loader": "^8.2.2", "clean-webpack-plugin": "^3.0.0", - "css-loader": "^5.0.1", + "css-loader": "^5.0.2", "css-minimizer-webpack-plugin": "^1.2.0", - "eslint": "^7.18.0", + "eslint": "^7.20.0", "html-webpack-partials-plugin": "^0.8.0", - "html-webpack-plugin": "^4.5.1", - "mini-css-extract-plugin": "^1.3.4", + "html-webpack-plugin": "^4.5.2", + "mini-css-extract-plugin": "^1.3.8", "style-loader": "^2.0.0", "terser-webpack-plugin": "^5.1.1", - "webpack": "^5.17.0", - "webpack-cli": "^4.4.0" + "webpack": "^5.23.0", + "webpack-cli": "^4.5.0" } }