From 8c2723732bec20f0a96801ff55365f8b0946f505 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 14:05:47 +0200 Subject: [PATCH 001/111] Fix Bustouren Skill 2/3 Route 3/4 --- ReallifeGamemode.Server/Job/BusDriverJob.cs | 35 ++++++++++++++++----- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/ReallifeGamemode.Server/Job/BusDriverJob.cs b/ReallifeGamemode.Server/Job/BusDriverJob.cs index 7587bf04..b23ac37d 100644 --- a/ReallifeGamemode.Server/Job/BusDriverJob.cs +++ b/ReallifeGamemode.Server/Job/BusDriverJob.cs @@ -100,7 +100,6 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route2 = new List//Bus_Skill_2_Route_2 { - new Vector3(1925.767333984375, 2614.566162109375, 46.16560363769531), new Vector3(299.0667419433594, 2642.93798828125, 44.60177993774414), new Vector3(1162.4556884765625, 1806.3663330078125, 74.3133773803711), @@ -111,13 +110,27 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route3 = new List//Bus_Skill_2_Route_3 { - + new Vector3(-1855.54,153.604,80.0297), + new Vector3(-1538.72,1375.19,125.3), + new Vector3(-1101.74,2668.48,18.7363), + new Vector3(1964.14,3718.04,32.2255), + new Vector3(2566.1,396.879,108.463), + new Vector3(254.405,-982.937,29.274), + new Vector3(-579.992,-2225.67,5.73425), new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route4 = new List//Bus_Skill_2_Route_4 { + new Vector3(-1037.8,-2716.02,13.7963), + new Vector3(1662.69,4849.72,41.9165), + new Vector3(57.8575,3735.46,39.7301), + new Vector3(-1109.48,2681,18.8602), + new Vector3(-2536.35,2322.65,33.0599), + new Vector3(-3232.01,961.997,13.1515), + new Vector3(-3014.22,364.543,14.7242), + new Vector3(-1580.52,-652.24,29.5874), + new Vector3(-578.954,-2224.8,5.75774), - new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route1 = new List//Bus_Skill_3_Route_1 { @@ -159,8 +172,16 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route3 = new List//Bus_Skill_3_Route_3 { - - new Vector3(-562.68, -2203.85, 5.5), + new Vector3(-146.62071, -2178.8228, 10.194298), + new Vector3(14.580393, -1578.6385, 29.212185), + new Vector3(222.91612, -1098.8556, 29.227453), + new Vector3(246.44946, -648.45496, 39.420746), + new Vector3(102.181, -298.95276, 46.04399), + new Vector3(-104.91002, -606.26013, 36.06103), + new Vector3(-288.1007, -1204.5107, 24.403156), + new Vector3(-166.23526, -1574.4166, 35.152023), + new Vector3(-60.337997, -1976.121, 16.486664), + new Vector3(-599.1891, -2049.2695, 6.14637), //Checkpoint Ende }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route4 = new List//Bus_Skill_3_Route_4 { @@ -302,7 +323,7 @@ namespace ReallifeGamemode.Server.Job if ((VehicleHash)veh.Model == VehicleHash.Coach) { Random rnd = new Random(); - int rroute = rnd.Next(1, 3); + int rroute = rnd.Next(1, 5); switch (rroute) { case 1: @@ -340,7 +361,7 @@ namespace ReallifeGamemode.Server.Job if ((VehicleHash)veh.Model == VehicleHash.Tourbus) { Random rnd = new Random(); - int rroute = rnd.Next(1, 3); + int rroute = rnd.Next(1, 4); switch (rroute) { case 1: From 3245a9242e68f5d7c39fc303809f443048b4c6c5 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 14:47:04 +0200 Subject: [PATCH 002/111] =?UTF-8?q?Fix=20Bustouren=20Checkpoint=20H=C3=B6h?= =?UTF-8?q?en?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Server/Job/BusDriverJob.cs | 53 ++++++++++----------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/ReallifeGamemode.Server/Job/BusDriverJob.cs b/ReallifeGamemode.Server/Job/BusDriverJob.cs index b23ac37d..617978c3 100644 --- a/ReallifeGamemode.Server/Job/BusDriverJob.cs +++ b/ReallifeGamemode.Server/Job/BusDriverJob.cs @@ -110,26 +110,25 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route3 = new List//Bus_Skill_2_Route_3 { - new Vector3(-1855.54,153.604,80.0297), - new Vector3(-1538.72,1375.19,125.3), - new Vector3(-1101.74,2668.48,18.7363), - new Vector3(1964.14,3718.04,32.2255), - new Vector3(2566.1,396.879,108.463), - new Vector3(254.405,-982.937,29.274), - new Vector3(-579.992,-2225.67,5.73425), - new Vector3(-562.68, -2203.85, 5.5), + new Vector3(-1855.54,153.604,79.0297), + new Vector3(-1538.72,1375.19,124.3), + new Vector3(-1101.74,2668.48,17.7363), + new Vector3(1964.14,3718.04,31.2255), + new Vector3(2566.1,396.879,107.463), + new Vector3(254.405,-982.937,28.274), + new Vector3(-562.68, -2203.85, 4.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route4 = new List//Bus_Skill_2_Route_4 { - new Vector3(-1037.8,-2716.02,13.7963), - new Vector3(1662.69,4849.72,41.9165), - new Vector3(57.8575,3735.46,39.7301), - new Vector3(-1109.48,2681,18.8602), - new Vector3(-2536.35,2322.65,33.0599), - new Vector3(-3232.01,961.997,13.1515), - new Vector3(-3014.22,364.543,14.7242), - new Vector3(-1580.52,-652.24,29.5874), - new Vector3(-578.954,-2224.8,5.75774), + new Vector3(-1037.8,-2716.02,12.7963), + new Vector3(1662.69,4849.72,40.9165), + new Vector3(57.8575,3735.46,38.7301), + new Vector3(-1109.48,2681,17.8602), + new Vector3(-2536.35,2322.65,32.0599), + new Vector3(-3232.01,961.997,12.1515), + new Vector3(-3014.22,364.543,13.7242), + new Vector3(-1580.52,-652.24,28.5874), + new Vector3(-578.954,-2224.8,4.75774), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route1 = new List//Bus_Skill_3_Route_1 @@ -172,16 +171,16 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route3 = new List//Bus_Skill_3_Route_3 { - new Vector3(-146.62071, -2178.8228, 10.194298), - new Vector3(14.580393, -1578.6385, 29.212185), - new Vector3(222.91612, -1098.8556, 29.227453), - new Vector3(246.44946, -648.45496, 39.420746), - new Vector3(102.181, -298.95276, 46.04399), - new Vector3(-104.91002, -606.26013, 36.06103), - new Vector3(-288.1007, -1204.5107, 24.403156), - new Vector3(-166.23526, -1574.4166, 35.152023), - new Vector3(-60.337997, -1976.121, 16.486664), - new Vector3(-599.1891, -2049.2695, 6.14637), //Checkpoint Ende + new Vector3(-146.62071, -2178.8228, 9.194298), + new Vector3(14.580393, -1578.6385, 28.212185), + new Vector3(222.91612, -1098.8556, 28.227453), + new Vector3(246.44946, -648.45496, 38.420746), + new Vector3(102.181, -298.95276, 45.04399), + new Vector3(-104.91002, -606.26013, 35.06103), + new Vector3(-288.1007, -1204.5107, 23.403156), + new Vector3(-166.23526, -1574.4166, 34.152023), + new Vector3(-60.337997, -1976.121, 15.486664), + new Vector3(-599.1891, -2049.2695, 5.14637), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route4 = new List//Bus_Skill_3_Route_4 { From 0b64eef183f7c0fa0b1f2b5cefc4dfe220e5d9ac Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 14:48:55 +0200 Subject: [PATCH 003/111] Clothe change, Wanted List Change --- .../Interaction/clothes/ClotheShop.ts | 42 ++++++++++--------- .../Interaction/interactionmenu.ts | 1 - .../Managers/InteractionManager.cs | 7 ++-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index f7c8088c..b112c072 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -26,25 +26,25 @@ const Color = NativeUI.Color; export default function clotheShopList(globalData: IGlobalData) { const categoryTitles = { clothes: { - 1: "Masks", - 2: "Hair Styles", - 3: "Torsos", - 4: "Legs", - 5: "Bags and Parachutes", - 6: "Shoes", + 1: "Masken", + 2: "Haar Stil", + 3: "Oberkörper", + 4: "Hosen", + 5: "Taschen und Fallschirme", + 6: "Schuhe", 7: "Accessories", 8: "Undershirts", - 9: "Body Armors", + 9: "Schutzwesten", 10: "Decals", - 11: "Tops" + 11: "Oberteile" }, props: { - 0: "Hats", - 1: "Glasses", - 2: "Ears", - 6: "Watches", - 7: "Bracelets" + 0: "Kopfbedeckungen", + 1: "Brillen", + 2: "Ohrringe", + 6: "Uhren", + 7: "Armbänder" } }; @@ -158,12 +158,12 @@ export default function clotheShopList(globalData: IGlobalData) { return; } } - mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? "Prop category." : "Clothing category."}`)); + mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? " " : " "}`)); // Create category menu categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture); categoryMenu.Visible = false; } else { - mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? "Prop category." : "Clothing category."}`)); + mainMenu.AddItem(new UIMenuItem(categoryTitles[type][key], `${type === "props" ? " " : " "}`)); // Create category menu categoryMenu = new UIMenu("", categoryTitles[type][key].toUpperCase(), new Point(0, 0), bannerSprite.library, bannerSprite.texture); categoryMenu.Visible = false; @@ -175,24 +175,28 @@ export default function clotheShopList(globalData: IGlobalData) { for (const item of value) { if (item.ComponentId == key) { + var txData = getClothingName(key, item.ClotheId, gender); + let clotheUpperMenu = new UIMenu(mp.game.ui.getLabelText(txData[0].data[0].GXT), " ", new Point(0, 0), bannerSprite.library, bannerSprite.texture); + clotheUpperMenu.Visible = false; for (const x of txData) { - var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : "Clothing item."); + var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : " "); //var itemDescription = (key === 11 ? x.undershirt[1].GXT + " - " + x.id: "Clothing item."); if (itemDescription == "NULL") { - itemDescription = "Clothing item."; + itemDescription = ""; } const tempItem = new UIMenuItem(mp.game.ui.getLabelText(x.data[0].GXT), itemDescription); //const tempItem = new UIMenuItem(x.data[0].GXT + " - " + x.id , itemDescription); - tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "FREE"}`); + tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "KOSTENLOS"}`); - categoryMenu.AddItem(tempItem); + clotheUpperMenu.AddItem(tempItem); cloth.push(item); tx.push(x); } + categoryMenu.AddItem(clotheUpperMenu); } } diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 1946fc78..bb2ad259 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -169,7 +169,6 @@ export default function (globalData: IGlobalData) { } else if (item === payItem) { mp.gui.chat.activate(true); mp.gui.cursor.show(true, true); - globalData.InMenu = true; var input = new InputHelper("Welchem Spieler möchtest du Geld geben (Name / ID)?", globalData); input.show(); input.getValue(name => { diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index ae4656a1..33bad362 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -796,14 +796,15 @@ namespace ReallifeGamemode.Server.Managers if (!player.IsLoggedIn()) return; List players = NAPI.Pools.GetAllPlayers(); - var listPlayers = players.Select(p => new + var listPlayers = players.Where(p => p.GetUser().Wanteds > 0) + .Select(p => new { Id = p.Handle.Value, p.Name, wanted = p.GetUser().Wanteds, - }) ; + }); - if(listPlayers.Count() > 0) + if (listPlayers.Count() > 0) player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers)); else player.SendNotification("~r~[Fehler] ~w~Es gibt derzeitig keine Verbrecher!"); From 14fdc1e1a4e7d3d55120094e4e89c6e2b2eb007c Mon Sep 17 00:00:00 2001 From: CroniX Date: Sun, 4 Apr 2021 14:58:33 +0200 Subject: [PATCH 004/111] Add playtime and warns in M menu --- ReallifeGamemode.Client/Interaction/interactionmenu.ts | 8 ++++++++ ReallifeGamemode.Client/global.d.ts | 2 ++ ReallifeGamemode.Server/Events/Key.cs | 4 +++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 1946fc78..3b81278e 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -226,6 +226,14 @@ export default function (globalData: IGlobalData) { menuItem.SetRightLabel(data.regDate); accountMenu.AddItem(menuItem); + menuItem = new UIMenuItem("Spielzeit"); + menuItem.SetRightLabel(data.playTime + "h"); + accountMenu.AddItem(menuItem); + + menuItem = new UIMenuItem("Verwarnungen"); + menuItem.SetRightLabel("~r~" + data.userWarn); + accountMenu.AddItem(menuItem); + menuItem = new UIMenuItem("Adminrang"); menuItem.SetRightLabel(data.adminLevel); accountMenu.AddItem(menuItem); diff --git a/ReallifeGamemode.Client/global.d.ts b/ReallifeGamemode.Client/global.d.ts index 44ec321c..266c36d6 100644 --- a/ReallifeGamemode.Client/global.d.ts +++ b/ReallifeGamemode.Client/global.d.ts @@ -21,6 +21,8 @@ declare type AccountData = { factionVehicles: VehicleData[]; nextPayday: number; stateFaction: boolean; + playTime: number; + userWarn: number; } declare type VehicleData = { diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 47008c2e..703b4916 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -151,7 +151,9 @@ namespace ReallifeGamemode.Server.Events licenses, vehicles, factionVehicles, - nextPayday = u.PaydayTimer + nextPayday = u.PaydayTimer, + playTime = u.PlayedMinutes / 60, + userWarn = u.warn, }; string faction = u.Faction?.Name ?? "Zivilist"; From 1e7f2deac93adc2087f90a94c881fcf699b1a222 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 15:18:30 +0200 Subject: [PATCH 005/111] Fix Medic --- .../Interaction/factioninteraction.ts | 28 ++++++++++++------- .../Factions/Medic/Medic.cs | 25 ++++++++++++++++- .../Factions/Medic/MedicTask.cs | 1 + ReallifeGamemode.Server/Util/ThreadTimers.cs | 10 +++++++ 4 files changed, 53 insertions(+), 11 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index dfa95f1c..bb670c6f 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -288,7 +288,7 @@ export default function factionInteraction(globalData: IGlobalData) { initTasks = tasks; } - mp.events.call("sortFactionTasks", false); + //mp.events.call("sortFactionTasks", false); mp.gui.chat.activate(false); globalData.InMenu = true; @@ -329,7 +329,7 @@ export default function factionInteraction(globalData: IGlobalData) { dimension: 0 }); reviveTaskMenuMedic.Close(); - deathTime = deathSeconds[index]; + deathTime = tasks[index].TimeLeft; mp.gui.chat.activate(true); globalData.InMenu = false; ambulanceImagePos = 0.325 @@ -337,7 +337,7 @@ export default function factionInteraction(globalData: IGlobalData) { taskFinish = tasks[index].Position; taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); activeTask = tasks[index]; - + mp.events.callRemote("getTaskTimeLeft", tasks[index].Victim); } } }); @@ -477,6 +477,7 @@ export default function factionInteraction(globalData: IGlobalData) { mp.events.add("destroyMedicTaskCheckpoint", () => { activeCheckpoint.destroy(); + activeCheckpoint = null; activeTask = null; timeLeft = 0; mp.events.callRemote("MedicTaskTimeout"); @@ -485,14 +486,22 @@ export default function factionInteraction(globalData: IGlobalData) { mp.events.add('playerEnterCheckpoint', (activeCheckpoint) => { if (deadRespawned == true) { activeCheckpoint.destroy(); + activeCheckpoint = null; mp.events.callRemote("PayCutMedicEarnings"); activeTask = null; deadRespawned = false; timeLeft = 0; } else if (activeTask.Type == 1){ activeCheckpoint.destroy(); + activeCheckpoint = null; mp.events.callRemote("delHealTaskAsMedic", activeTask.Victim); - activeTask = null; + activeTask = null; + } + }); + + mp.events.add('setTaskTimeLeft', (taskTimeLeft) => { + if (activeTask) { + activeTask.TimeLeft = taskTimeLeft; } }); @@ -521,16 +530,15 @@ export default function factionInteraction(globalData: IGlobalData) { var currentDate = new Date(); if (deadRespawned == false) { - timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - deathTime - 30)); + timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); if (timeLeft < 1) mp.events.call("cutMedicEarnings"); } else { - timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - deathTime - 60)); + timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); } - /*DEBUG TIMER für die Zeit die man noch hat zur Wiederbelebung if (deadRespawned == false) { - mp.game.graphics.drawText(timeLeft.toString() + "s ", [0.5, 0.88], { + mp.game.graphics.drawText(activeTask.TimeLeft.toString() + "s ", [0.5, 0.88], { font: 7, color: [60, 179, 113, 255], scale: [0.3, 0.3], @@ -539,7 +547,7 @@ export default function factionInteraction(globalData: IGlobalData) { }); } else { { - mp.game.graphics.drawText(timeLeft.toString() + "s", [0.5, 0.88], { + mp.game.graphics.drawText(activeTask.TimeLeft.toString() + "s", [0.5, 0.88], { font: 7, color: [255, 203, 145, 255], scale: [0.3, 0.3], @@ -547,7 +555,7 @@ export default function factionInteraction(globalData: IGlobalData) { centre: true }); } - } */ + } } }); } \ No newline at end of file diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 60442169..b0a10899 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -24,6 +24,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public static List FireTasks = new List(); public static int ReviveIncome = 100; public static int dutyMedics = 0; + public static long reviveTaskTime = 120; public static void AddTaskToList(MedicTask task) { @@ -71,6 +72,15 @@ namespace ReallifeGamemode.Server.Factions.Medic } } + public static void UpdateTaskTimeLeft() + { + DateTime actualTime = DateTime.Now; + foreach(var task in ReviveTasks) + { + task.TimeLeft = ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime; + } + } + [RemoteEvent("loadMedicTasks")] public void LoadMedicTasks(Player player, int type) { @@ -161,11 +171,13 @@ namespace ReallifeGamemode.Server.Factions.Medic [RemoteEvent("PayCutMedicEarnings")] public void PayCutMedicEarnings(Player player) { - using var dbContext = new DatabaseContext(); + using var dbContext = new DatabaseContext(); + { dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 2; player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 2}$ ~s~für die Fraktion verdient."); Medic.delReviveTaskMedic(player); dbContext.SaveChanges(); + } } [RemoteEvent("MedicTaskTimeout")] @@ -174,6 +186,17 @@ namespace ReallifeGamemode.Server.Factions.Medic Medic.delReviveTaskMedic(player); } + [RemoteEvent("getTaskTimeLeft")] + public void GetTaskTimeLeft(Player player, string victimName) + { + using var dbContext = new DatabaseContext(); + { + var activeTaskTime = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name && t.Victim == victimName).TimeLeft; + + player.TriggerEvent("setTaskTimeLeft", activeTaskTime); + } + } + public static void UpdateDutyMedics(int modifier) { dutyMedics = dutyMedics + modifier; diff --git a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs index 50c0f2a8..24d413ee 100644 --- a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs +++ b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs @@ -18,6 +18,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public string Description { get; set; } public string Caller { get; set; } public DateTime Time { get; set; } + public long TimeLeft { get; set; } public string MedicName { get; set; } } diff --git a/ReallifeGamemode.Server/Util/ThreadTimers.cs b/ReallifeGamemode.Server/Util/ThreadTimers.cs index f5dd07ec..ff3f417f 100644 --- a/ReallifeGamemode.Server/Util/ThreadTimers.cs +++ b/ReallifeGamemode.Server/Util/ThreadTimers.cs @@ -1,5 +1,6 @@ using System.Timers; using GTANetworkAPI; +using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Finance; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Managers; @@ -11,6 +12,7 @@ namespace ReallifeGamemode.Server.Util public class ThreadTimers { private static Timer timer500 = new Timer(500); //0.5 seconds timer + private static Timer timer1000 = new Timer(1000); //1 seconds timer private static Timer timer2500 = new Timer(2500); //2.5 seconds timer private static Timer timer10000 = new Timer(10000); // 10 second timer private static Timer timer60000 = new Timer(60000); //60 seconds timer @@ -39,6 +41,14 @@ namespace ReallifeGamemode.Server.Util }); } + private static void Timer1000_Elapsed(object sender, ElapsedEventArgs e) + { + NAPI.Task.Run(() => + { + Medic.UpdateTaskTimeLeft(); + }); + } + private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e) { NAPI.Task.Run(() => From 88b60168634fcef104341f797395d9a272769c65 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 15:26:29 +0200 Subject: [PATCH 006/111] Fix Medic 2 --- ReallifeGamemode.Server/Factions/Medic/Medic.cs | 4 ++-- ReallifeGamemode.Server/Factions/Medic/MedicTask.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index b0a10899..3a223c12 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -24,7 +24,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public static List FireTasks = new List(); public static int ReviveIncome = 100; public static int dutyMedics = 0; - public static long reviveTaskTime = 120; + public static int reviveTaskTime = 120; public static void AddTaskToList(MedicTask task) { @@ -77,7 +77,7 @@ namespace ReallifeGamemode.Server.Factions.Medic DateTime actualTime = DateTime.Now; foreach(var task in ReviveTasks) { - task.TimeLeft = ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime; + task.TimeLeft = (Int32)(((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime); } } diff --git a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs index 24d413ee..9a6ae7f6 100644 --- a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs +++ b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs @@ -18,7 +18,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public string Description { get; set; } public string Caller { get; set; } public DateTime Time { get; set; } - public long TimeLeft { get; set; } + public int TimeLeft { get; set; } public string MedicName { get; set; } } From 589ca803560b7a7f654de9e848fefa56b6b3ace9 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 15:39:54 +0200 Subject: [PATCH 007/111] Change Clothe and RefuseCollector --- .../Interaction/clothes/ClotheShop.ts | 4 +- .../Job/RefuseCollectorJob.cs | 171 ++++++------------ 2 files changed, 57 insertions(+), 118 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index b112c072..8212aa2e 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -177,7 +177,8 @@ export default function clotheShopList(globalData: IGlobalData) { if (item.ComponentId == key) { var txData = getClothingName(key, item.ClotheId, gender); - let clotheUpperMenu = new UIMenu(mp.game.ui.getLabelText(txData[0].data[0].GXT), " ", new Point(0, 0), bannerSprite.library, bannerSprite.texture); + categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); + let clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheUpperMenu.Visible = false; for (const x of txData) { @@ -196,7 +197,6 @@ export default function clotheShopList(globalData: IGlobalData) { cloth.push(item); tx.push(x); } - categoryMenu.AddItem(clotheUpperMenu); } } diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 7a2aab4a..8cdeed57 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -182,6 +182,7 @@ namespace ReallifeGamemode.Server.Job ChatService.SendMessage((Player)player, $"~y~Job: ~s~Du hast deinen Job (~o~{job.Name}~s~) beendet."); player.TriggerEvent("SERVER:MuellmannStatusFalse"); player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); + job.StopJob(player, true); foreach (var data in muellmanData) { @@ -189,8 +190,9 @@ namespace ReallifeGamemode.Server.Job if (data.hasFreePlace()) { + if(data.vehicle != null) + data.vehicle.GetServerVehicle().Spawn(data.vehicle); muellmanData.Remove(data); - //müllwagen respawnen return; } @@ -220,95 +222,54 @@ namespace ReallifeGamemode.Server.Job { return; } - using (var dbContext = new DatabaseContext()) + + using var dbContext = new DatabaseContext(); + + foreach (var data in muellmanData) { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - Player target = data.getPartnerClient(player); - User user1 = player.GetUser(dbContext); - User user2 = target.GetUser(dbContext); + if (data.getDataFromClient(player) == null) continue; + Player target = data.getPartnerClient(player); + User user1 = player.GetUser(dbContext); + User user2 = target.GetUser(dbContext); - //user1 = player.GetUser(dbContext); - //user2 = target.GetUser(dbContext); - /*user1.trashcount += 1; - if (user1.trashcount == 20) - { - player.SendChatMessage("~y~Dies ist dein 20ter Müllsack."); - } - - player.SendNotification("Müllsack: " + user1.trashcount + " von 20."); + data.setTrashCount(data.getTrashCount() + 1); + player.SendNotification("Müllsack: " + data.getTrashCount() + " von 20."); if (target != null) { - target.SendNotification("Müllsack: " + user2.trashcount + " von 20."); - user2.trashcount += 1; - - if (user2.trashcount == 20) - { - target.SendChatMessage("~y~Dies ist dein 20ter Müllsack."); - } + target.SendNotification("Müllsack: " + data.getTrashCount() + " von 20."); } - dbContext.SaveChanges(); - player.AddAttachment("binbag", true); - */ + + // player.AddAttachment("binbag", true); - if (player.GetUser(dbContext).trashcount >= 20) + if (data.getTrashCount() >= 20) + { + ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); + if (target != null) { - ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); - if (target != null) - { - ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden."); - target.TriggerEvent("SERVER:MuellmannZuBase"); - } - player.TriggerEvent("SERVER:MuellmannZuBase"); - } - else - { - //user1 = player.GetUser(dbContext); - //user2 = target.GetUser(dbContext); - user1.trashcount += 1; - player.SendNotification("Müllsack: " + user1.trashcount + " von 20."); - if (target != null) - { - target.SendNotification("Müllsack: " + user2.trashcount + " von 20."); - user2.trashcount += 1; - } - dbContext.SaveChanges(); - } - // player.AddAttachment("binbag", true); - - if (player.GetUser(dbContext).trashcount >= 20) - { - ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); - if (target != null) - { - ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden."); - target.TriggerEvent("SERVER:MuellmannZuBase"); - } - player.TriggerEvent("SERVER:MuellmannZuBase"); - } - else - { - //user1 = player.GetUser(dbContext); - //user2 = target.GetUser(dbContext); - - if (target != null) - { - user1.Wage += 25; - user2.Wage += 25; - - } - else - { - user1.Wage += 50; - } - dbContext.SaveChanges(); + ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden."); + target.TriggerEvent("SERVER:MuellmannZuBase"); } + player.TriggerEvent("SERVER:MuellmannZuBase"); + } + else + { + + if (target != null) + { + user1.Wage += 25; + user2.Wage += 25; + + } + else + { + user1.Wage += 50; + } + dbContext.SaveChanges(); } - return; } + return; } [RemoteEvent("CLIENT:MuellmannBaseSack")] @@ -321,26 +282,27 @@ namespace ReallifeGamemode.Server.Job if (data.getDataFromClient(player) == null) continue; Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {target.GetUser().trashcount}"); - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {player.GetUser().trashcount}"); + if (target != null) ChatService.SendMessage((Player)target, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + ChatService.SendMessage((Player)player, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); //bonus pro sack using (var dbContext = new DatabaseContext()) { User user1 = player.GetUser(dbContext); User user2 = target.GetUser(dbContext); + int bonus = 25 * data.getTrashCount(); + if (target != null) { - user1.Wage += 250; - user2.Wage += 250; + user1.Wage += (int)(bonus / 2); + user2.Wage += (int)(bonus / 2); } else { - user1.Wage += 500; + user1.Wage += bonus; } - user1.trashcount -= user1.trashcount; - if (target != null) user2.trashcount -= user2.trashcount; + data.setTrashCount(0); dbContext.SaveChanges(); } @@ -353,38 +315,12 @@ namespace ReallifeGamemode.Server.Job public void MuellmannOnPlayerDc(Player player) { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } + MuellmannJobBeenden(player); } public void MuellmannOnPlayerDeath(Player player) { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } + MuellmannJobBeenden(player); } [ServerEvent(Event.VehicleDeath)] @@ -396,10 +332,13 @@ namespace ReallifeGamemode.Server.Job { if (data.vehicle == veh) { - //müllfahrzeug respawnen + veh.GetServerVehicle().Spawn(veh); List clients = data.getClientsFromData(); - foreach (var c in clients) { RefuseCollectorJobJobStop(c); } + foreach (var c in clients) + { + MuellmannJobBeenden(c); + } muellmanData.Remove(data); return; @@ -426,7 +365,7 @@ namespace ReallifeGamemode.Server.Job } CheckDataForDuplicatePlayer(player, data); data.setClientToData(player); - //destroy veh + MuellmannJobStarten(player, vehicle); target = data.getPartnerClient(player); From c51fbd3246775bb03a6ae2b278253185d4efbe82 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 15:57:14 +0200 Subject: [PATCH 008/111] Fix Medic 3 --- .../Interaction/factioninteraction.ts | 18 ++++++-------- .../Factions/Medic/Medic.cs | 24 ++++++++++--------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index bb670c6f..43edb4d4 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -13,8 +13,6 @@ export default function factionInteraction(globalData: IGlobalData) { var screenRes = mp.game.graphics.getScreenResolution(0, 0); var player = mp.players.local; var tasks; - var deathSeconds; - var initTasks; var newTasks; var sorting = 0; var firstSorting = true; @@ -40,6 +38,7 @@ export default function factionInteraction(globalData: IGlobalData) { /*mp.events.add("updateFactionBlips", (type, taskList) => { }); + });*/ mp.events.add("showFactionInteractionLSPD", (userFactionId, isDuty, userFactionName, isFactionLeader) => { //LSPD @@ -280,13 +279,9 @@ export default function factionInteraction(globalData: IGlobalData) { }); - mp.events.add("showMedicTasks", (type, taskList, deathTimes) => { + mp.events.add("showMedicTasks", (type, taskList) => { tasks = JSON.parse(taskList); - deathSeconds = JSON.parse(deathTimes); - if (sorting === 0) { - initTasks = tasks; - } //mp.events.call("sortFactionTasks", false); @@ -407,6 +402,7 @@ export default function factionInteraction(globalData: IGlobalData) { } }); + /* mp.events.add("sortFactionTasks", (sortByKey) => { if (firstSorting) { sortText = "Nach Uhrzeit"; @@ -462,7 +458,7 @@ export default function factionInteraction(globalData: IGlobalData) { } } } - }); + });*/ function getDistance1(index) { return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); @@ -530,11 +526,11 @@ export default function factionInteraction(globalData: IGlobalData) { var currentDate = new Date(); if (deadRespawned == false) { - timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); - if (timeLeft < 1) mp.events.call("cutMedicEarnings"); + //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); + if (activeTask.TimeLeft < 60) mp.events.call("cutMedicEarnings"); } else { timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); - if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); + if (activeTask.TimeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); } if (deadRespawned == false) { diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 3a223c12..39bb0852 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -75,9 +75,17 @@ namespace ReallifeGamemode.Server.Factions.Medic public static void UpdateTaskTimeLeft() { DateTime actualTime = DateTime.Now; - foreach(var task in ReviveTasks) + if (ReviveTasks.Count != 0) { - task.TimeLeft = (Int32)(((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime); + foreach (var task in ReviveTasks) + { + if (task.MedicName != null) + { + var taskTimeLeft = (Int32)(((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime); + task.TimeLeft = taskTimeLeft; + PlayerService.GetPlayerByNameOrId(task.MedicName).TriggerEvent("setTaskTimeLeft", taskTimeLeft); + } + } } } @@ -87,21 +95,15 @@ namespace ReallifeGamemode.Server.Factions.Medic switch (type) { case 0: - List deathTimes = new List(); - foreach(var task in ReviveTasks) - { - deathTimes.Add(((DateTimeOffset)task.Time).ToUnixTimeSeconds()); - } - - player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks), JsonConvert.SerializeObject(deathTimes)); + player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); break; case 1: - player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks), null); + player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); break; case 2: - player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks), null); + player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); break; } } From a64adccfb96efdf4dc25c8cd889efeac66f38280 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 16:08:49 +0200 Subject: [PATCH 009/111] Fix Medic 4 --- .../Interaction/factioninteraction.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index 43edb4d4..8ec8fade 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -25,7 +25,7 @@ export default function factionInteraction(globalData: IGlobalData) { var rangeLeft; var sortText; var deadRespawned = false; - var timeLeft = 0; + var timeLeft = null; var deathTime; var ticketName: string; @@ -475,7 +475,7 @@ export default function factionInteraction(globalData: IGlobalData) { activeCheckpoint.destroy(); activeCheckpoint = null; activeTask = null; - timeLeft = 0; + timeLeft = null; mp.events.callRemote("MedicTaskTimeout"); }); @@ -486,18 +486,19 @@ export default function factionInteraction(globalData: IGlobalData) { mp.events.callRemote("PayCutMedicEarnings"); activeTask = null; deadRespawned = false; - timeLeft = 0; + timeLeft = null; } else if (activeTask.Type == 1){ activeCheckpoint.destroy(); activeCheckpoint = null; mp.events.callRemote("delHealTaskAsMedic", activeTask.Victim); activeTask = null; + timeLeft = null; } }); mp.events.add('setTaskTimeLeft', (taskTimeLeft) => { if (activeTask) { - activeTask.TimeLeft = taskTimeLeft; + timeLeft = taskTimeLeft; } }); @@ -527,14 +528,14 @@ export default function factionInteraction(globalData: IGlobalData) { if (deadRespawned == false) { //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); - if (activeTask.TimeLeft < 60) mp.events.call("cutMedicEarnings"); + if (timeLeft < 60) mp.events.call("cutMedicEarnings"); } else { - timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); - if (activeTask.TimeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); + //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); + if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); } if (deadRespawned == false) { - mp.game.graphics.drawText(activeTask.TimeLeft.toString() + "s ", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft.toString() + "s ", [0.5, 0.88], { font: 7, color: [60, 179, 113, 255], scale: [0.3, 0.3], From 604ec36911001394c1309fc452755bd44593390f Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 16:11:24 +0200 Subject: [PATCH 010/111] Fix Medic 5 --- ReallifeGamemode.Client/Interaction/factioninteraction.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index 8ec8fade..a497fc4c 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -544,7 +544,7 @@ export default function factionInteraction(globalData: IGlobalData) { }); } else { { - mp.game.graphics.drawText(activeTask.TimeLeft.toString() + "s", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft.toString() + "s", [0.5, 0.88], { font: 7, color: [255, 203, 145, 255], scale: [0.3, 0.3], From 1883773d72e367027f7c715e5a2b449915d9d02f Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 16:14:20 +0200 Subject: [PATCH 011/111] Fix Medic 6 --- ReallifeGamemode.Client/Interaction/factioninteraction.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index a497fc4c..79d5dcb4 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -535,7 +535,7 @@ export default function factionInteraction(globalData: IGlobalData) { } if (deadRespawned == false) { - mp.game.graphics.drawText(timeLeft.toString() + "s ", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft + "s ", [0.5, 0.88], { font: 7, color: [60, 179, 113, 255], scale: [0.3, 0.3], @@ -544,7 +544,7 @@ export default function factionInteraction(globalData: IGlobalData) { }); } else { { - mp.game.graphics.drawText(timeLeft.toString() + "s", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.88], { font: 7, color: [255, 203, 145, 255], scale: [0.3, 0.3], From 0d963d362f543e284929d497b41428a4a08f5837 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:17:40 +0200 Subject: [PATCH 012/111] Fix Refuse --- .../Interaction/clothes/ClotheShop.ts | 10 ++++- .../Job/RefuseCollectorJob.cs | 45 ++++++++++--------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 8212aa2e..db35dec2 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -177,8 +177,14 @@ export default function clotheShopList(globalData: IGlobalData) { if (item.ComponentId == key) { var txData = getClothingName(key, item.ClotheId, gender); - categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); - let clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); + + mp.gui.chat.push('Key ' + key); + mp.gui.chat.push(item); + + if (key === 11 || key === 4 || key === 6) { + categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); + let clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); + } clotheUpperMenu.Visible = false; for (const x of txData) { diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 8cdeed57..42032803 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -19,6 +19,8 @@ namespace ReallifeGamemode.Server.Job public override bool NeedVehicleToStart => false; + const int MAX_BAG = 50; + public RefuseCollectorJob() { JobStart += RefuseCollectorJobJobStart; @@ -168,7 +170,7 @@ namespace ReallifeGamemode.Server.Job if (data.getDataFromClient(player) == null) continue; veh = data.vehicle; JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Du hast deinen Job (~o~{job.Name}~s~) gestartet."); + ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Du hast deinen Job (~o~{job.Name}~s~) gestartet."); player.TriggerEvent("SERVER:MuellmannStatusTrue"); player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh); return; @@ -179,10 +181,8 @@ namespace ReallifeGamemode.Server.Job public void MuellmannJobBeenden(Player player) { JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Du hast deinen Job (~o~{job.Name}~s~) beendet."); player.TriggerEvent("SERVER:MuellmannStatusFalse"); player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); - job.StopJob(player, true); foreach (var data in muellmanData) { @@ -195,6 +195,7 @@ namespace ReallifeGamemode.Server.Job muellmanData.Remove(data); return; } + ChatService.SendMessage(data.getPartnerClient(player), $"~y~[Job] ~s~Dein Partner hat den Job beendet."); data.removeClientFromData(player); return; @@ -233,28 +234,30 @@ namespace ReallifeGamemode.Server.Job User user2 = target.GetUser(dbContext); - data.setTrashCount(data.getTrashCount() + 1); - player.SendNotification("Müllsack: " + data.getTrashCount() + " von 20."); - if (target != null) - { - target.SendNotification("Müllsack: " + data.getTrashCount() + " von 20."); - } - dbContext.SaveChanges(); - // player.AddAttachment("binbag", true); - if (data.getTrashCount() >= 20) + if (data.getTrashCount() == MAX_BAG) { - ChatService.SendMessage((Player)player, "~y~Job: ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); + ChatService.SendMessage((Player)player, "~y~[Job] ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); if (target != null) { - ChatService.SendMessage((Player)target, "~y~Job: ~s~Der Müllwagen ist voll! Er muss entleert werden."); + ChatService.SendMessage((Player)target, "~y~[Job] ~s~Der Müllwagen ist voll! Er muss entleert werden."); target.TriggerEvent("SERVER:MuellmannZuBase"); } player.TriggerEvent("SERVER:MuellmannZuBase"); + }else if(data.getTrashCount() > MAX_BAG) + { + ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll."); } else { + data.setTrashCount(data.getTrashCount() + 1); + player.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); + if (target != null) + { + target.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); + } + if (target != null) { @@ -282,15 +285,15 @@ namespace ReallifeGamemode.Server.Job if (data.getDataFromClient(player) == null) continue; Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + if (target != null) ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); //bonus pro sack using (var dbContext = new DatabaseContext()) { User user1 = player.GetUser(dbContext); User user2 = target.GetUser(dbContext); - int bonus = 25 * data.getTrashCount(); + int bonus = 5 * data.getTrashCount(); if (target != null) { @@ -372,8 +375,8 @@ namespace ReallifeGamemode.Server.Job if (target == null) return; - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Dein Partner ist {target.Name}!"); - ChatService.SendMessage((Player)target, $"~y~Job: ~s~Dein Partner ist {player.Name}!"); + ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!"); + ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!"); return; } } @@ -389,8 +392,8 @@ namespace ReallifeGamemode.Server.Job if (target == null) return; - ChatService.SendMessage((Player)player, $"~y~Job: ~s~Dein Partner ist {target.Name}!"); - ChatService.SendMessage((Player)target, $"~y~Job: ~s~Dein Partner ist {player.Name}!"); + ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!"); + ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!"); } } From 996bd29a37308701f90abcdb8b35669a47d078ec Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:18:42 +0200 Subject: [PATCH 013/111] Change Refuse --- .../Job/RefuseCollectorJob.cs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 42032803..a348d29a 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -233,6 +233,12 @@ namespace ReallifeGamemode.Server.Job User user1 = player.GetUser(dbContext); User user2 = target.GetUser(dbContext); + data.setTrashCount(data.getTrashCount() + 1); + player.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); + if (target != null) + { + target.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); + } // player.AddAttachment("binbag", true); @@ -245,19 +251,14 @@ namespace ReallifeGamemode.Server.Job target.TriggerEvent("SERVER:MuellmannZuBase"); } player.TriggerEvent("SERVER:MuellmannZuBase"); - }else if(data.getTrashCount() > MAX_BAG) + } + else if(data.getTrashCount() > MAX_BAG) { + data.setTrashCount(MAX_BAG); ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll."); } else { - data.setTrashCount(data.getTrashCount() + 1); - player.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); - if (target != null) - { - target.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); - } - if (target != null) { From 0df5f90a432b3e43b259a3ccf03b30c8ef984bd2 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:22:17 +0200 Subject: [PATCH 014/111] fix --- .../Interaction/clothes/ClotheShop.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index db35dec2..6d64c95e 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -172,7 +172,7 @@ export default function clotheShopList(globalData: IGlobalData) { mainMenu.Item // Fill it - + let clotheUpperMenu; for (const item of value) { if (item.ComponentId == key) { @@ -180,12 +180,13 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.push('Key ' + key); mp.gui.chat.push(item); - + if (key === 11 || key === 4 || key === 6) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); - let clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); + clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); + clotheUpperMenu.Visible = false; + } - clotheUpperMenu.Visible = false; for (const x of txData) { var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : " "); From 0af43fb32b37bac974f77ae8a9e839b30ed61505 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:28:47 +0200 Subject: [PATCH 015/111] Debug Msg --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 6d64c95e..2b6d853c 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -180,8 +180,8 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.push('Key ' + key); mp.gui.chat.push(item); - - if (key === 11 || key === 4 || key === 6) { + + if (txData[0].data == undefined) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheUpperMenu.Visible = false; From 3a37ed7b9be0078b3dcf252deca5b17fccb2a495 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:29:13 +0200 Subject: [PATCH 016/111] fix fix --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 2b6d853c..063d1ac2 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -181,7 +181,7 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.push('Key ' + key); mp.gui.chat.push(item); - if (txData[0].data == undefined) { + if (txData[0].data != undefined) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheUpperMenu.Visible = false; From 6140ccc495a317761ea708b2790c9d15ecdc8fb1 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:33:27 +0200 Subject: [PATCH 017/111] fix clothe --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 063d1ac2..502f7869 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -181,7 +181,7 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.push('Key ' + key); mp.gui.chat.push(item); - if (txData[0].data != undefined) { + if (txData != undefined) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheUpperMenu.Visible = false; From 889a8e5cd0545f854835ab8916ee70928e6dd1b5 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:38:15 +0200 Subject: [PATCH 018/111] debug --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 502f7869..9eb0dccf 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -181,7 +181,7 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.push('Key ' + key); mp.gui.chat.push(item); - if (txData != undefined) { + if (txData != undefined && txData.length > 0) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheUpperMenu.Visible = false; From a4b21c6dd2e7a9de2d792645a228a8c62c120ed3 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 16:50:44 +0200 Subject: [PATCH 019/111] Fix Medic 7 --- .../Interaction/factioninteraction.ts | 48 +++++++++---------- .../Commands/AdminCommands.cs | 24 +++++++++- .../Factions/Medic/Medic.cs | 5 +- ReallifeGamemode.Server/Util/ThreadTimers.cs | 3 ++ 4 files changed, 53 insertions(+), 27 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index 79d5dcb4..3f4e7d54 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -26,7 +26,6 @@ export default function factionInteraction(globalData: IGlobalData) { var sortText; var deadRespawned = false; var timeLeft = null; - var deathTime; var ticketName: string; var pointsName: string; @@ -324,7 +323,6 @@ export default function factionInteraction(globalData: IGlobalData) { dimension: 0 }); reviveTaskMenuMedic.Close(); - deathTime = tasks[index].TimeLeft; mp.gui.chat.activate(true); globalData.InMenu = false; ambulanceImagePos = 0.325 @@ -332,7 +330,6 @@ export default function factionInteraction(globalData: IGlobalData) { taskFinish = tasks[index].Position; taskRange = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, tasks[index].Position.x, tasks[index].Position.y, tasks[index].Position.z, true); activeTask = tasks[index]; - mp.events.callRemote("getTaskTimeLeft", tasks[index].Victim); } } }); @@ -503,6 +500,7 @@ export default function factionInteraction(globalData: IGlobalData) { }); mp.events.add('render', () => { + if (activeTask) { rangeLeft = mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, taskFinish.x, taskFinish.y, taskFinish.z, true).toFixed(2); if (rangeLeft > 1.9) { @@ -526,33 +524,35 @@ export default function factionInteraction(globalData: IGlobalData) { var currentDate = new Date(); - if (deadRespawned == false) { - //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); - if (timeLeft < 60) mp.events.call("cutMedicEarnings"); - } else { - //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); - if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); - } + if (timeLeft != null) { + if (deadRespawned == false) { + //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); + if (timeLeft < 60) mp.events.call("cutMedicEarnings"); + } else { + //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); + if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); + } - if (deadRespawned == false) { - mp.game.graphics.drawText(timeLeft + "s ", [0.5, 0.88], { - font: 7, - color: [60, 179, 113, 255], - scale: [0.3, 0.3], - outline: true, - centre: true - }); - } else { - { + if (deadRespawned == false) { mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.88], { font: 7, - color: [255, 203, 145, 255], - scale: [0.3, 0.3], + color: [60, 179, 113, 255], + scale: [0.5, 0.5], outline: true, centre: true }); - } - } + } else { + { + mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.88], { + font: 7, + color: [255, 203, 145, 255], + scale: [0.5, 0.5], + outline: true, + centre: true + }); + } + } + } } }); } \ No newline at end of file diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index fd583aff..cb0e7a6a 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1726,7 +1726,29 @@ namespace ReallifeGamemode.Server.Commands #endregion Admin #region ALevel1337 - + /* NUR ZUM TESTEN + [Command("fakedeath", "~m~Benutzung:~s~ /fakedeath")] + public void CmdAdmFakeDeath(Player player) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + MedicTask reviveTask = new MedicTask() + { + Victim = player.Name, + Position = player.Position, + CauseOfDeath = "FAKE", + Caller = null, + Description = "Gestorben", + Time = DateTime.Now, + Type = MedicTaskType.REVIVE, + MedicName = "none" + }; + Medic.AddTaskToList(reviveTask); + } + */ [Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")] public void CmdAdmSetSvar(Player player, int varId, int varValue) { diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 39bb0852..48b9f4e3 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -81,9 +81,10 @@ namespace ReallifeGamemode.Server.Factions.Medic { if (task.MedicName != null) { - var taskTimeLeft = (Int32)(((DateTimeOffset)task.Time).ToUnixTimeSeconds() - ((DateTimeOffset)actualTime).ToUnixTimeSeconds() - reviveTaskTime); + var taskTimeLeft = Math.Abs((Int32)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime)); task.TimeLeft = taskTimeLeft; - PlayerService.GetPlayerByNameOrId(task.MedicName).TriggerEvent("setTaskTimeLeft", taskTimeLeft); + var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); + if(task.MedicName != "none") medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft); } } } diff --git a/ReallifeGamemode.Server/Util/ThreadTimers.cs b/ReallifeGamemode.Server/Util/ThreadTimers.cs index ff3f417f..92b16424 100644 --- a/ReallifeGamemode.Server/Util/ThreadTimers.cs +++ b/ReallifeGamemode.Server/Util/ThreadTimers.cs @@ -22,6 +22,9 @@ namespace ReallifeGamemode.Server.Util timer500.Start(); timer500.Elapsed += Timer500_Elapsed; + timer1000.Start(); + timer1000.Elapsed += Timer1000_Elapsed; + timer2500.Start(); timer2500.Elapsed += Timer2500_Elapsed; From 866b9f976122008d0e3a04406791b8e3ade05a3b Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 16:58:38 +0200 Subject: [PATCH 020/111] Fix Medic 8 --- ReallifeGamemode.Client/Interaction/factioninteraction.ts | 2 +- ReallifeGamemode.Server/Factions/Medic/Medic.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index 3f4e7d54..c491236d 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -527,7 +527,7 @@ export default function factionInteraction(globalData: IGlobalData) { if (timeLeft != null) { if (deadRespawned == false) { //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 60)); - if (timeLeft < 60) mp.events.call("cutMedicEarnings"); + if (timeLeft < 120) mp.events.call("cutMedicEarnings"); } else { //timeLeft = Math.round(Math.abs(Math.floor(currentDate.getTime() / 1000) - activeTask.TimeLeft - 120)); if (timeLeft < 1) mp.events.call("destroyMedicTaskCheckpoint"); diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 48b9f4e3..a9acc028 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -24,7 +24,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public static List FireTasks = new List(); public static int ReviveIncome = 100; public static int dutyMedics = 0; - public static int reviveTaskTime = 120; + public static int reviveTaskTime = 240; public static void AddTaskToList(MedicTask task) { From f6475ac48a00106a5d7f709c52d7943100033092 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 17:08:49 +0200 Subject: [PATCH 021/111] Fix SANI Final --- ReallifeGamemode.Client/Interaction/factioninteraction.ts | 4 ++-- ReallifeGamemode.Server/Commands/AdminCommands.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index c491236d..aa577562 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -534,7 +534,7 @@ export default function factionInteraction(globalData: IGlobalData) { } if (deadRespawned == false) { - mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], { font: 7, color: [60, 179, 113, 255], scale: [0.5, 0.5], @@ -543,7 +543,7 @@ export default function factionInteraction(globalData: IGlobalData) { }); } else { { - mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.88], { + mp.game.graphics.drawText(timeLeft + "s", [0.5, 0.85], { font: 7, color: [255, 203, 145, 255], scale: [0.5, 0.5], diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index cb0e7a6a..afc3641a 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1726,7 +1726,7 @@ namespace ReallifeGamemode.Server.Commands #endregion Admin #region ALevel1337 - /* NUR ZUM TESTEN + /*NUR ZUM TESTEN [Command("fakedeath", "~m~Benutzung:~s~ /fakedeath")] public void CmdAdmFakeDeath(Player player) { @@ -1747,8 +1747,8 @@ namespace ReallifeGamemode.Server.Commands MedicName = "none" }; Medic.AddTaskToList(reviveTask); - } - */ + }*/ + [Command("setsvar", "~m~Benutzung:~s~ /setsvar [ID] [WERT]")] public void CmdAdmSetSvar(Player player, int varId, int varValue) { From b781af9a751fa4fc3ef61ed59e500d5337d164cc Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 17:31:53 +0200 Subject: [PATCH 022/111] Change Nametag Clothes test --- ReallifeGamemode.Client/Gui/nametags.ts | 35 ++++++++++--- .../Interaction/clothes/ClotheShop.ts | 49 +++++++++++++++++-- ReallifeGamemode.Server/Events/Key.cs | 9 ++-- ReallifeGamemode.Server/Events/Login.cs | 10 ++-- 4 files changed, 81 insertions(+), 22 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index df6fc96d..76ce2308 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -5,23 +5,45 @@ const border = 0.001; const color = [73, 137, 0, 255]; var faction; var playerColors = []; +const alpha = 250; +const colors = [ + { id: -2, color: [0, 255, 255, alpha] }, //support + { id: -1, color: [255, 100, 0, alpha] }, //wanted + + { id: 0, color: [255, 255, 255, alpha] }, //civil + + //1 to n + { id: 1, color: [0, 95, 190, alpha] }, //pd + { id: 2, color: [200, 0, 0, alpha] }, //lsed + { id: 3, color: [0, 0, 170, alpha] }, //fib + { id: 4, color: [255, 180, 0, alpha] }, //trucker + { id: 5, color: [255, 255, 255, alpha] }, //terroristen + { id: 6, color: [255, 255, 255, alpha] }, //hitman + { id: 7, color: [0, 54, 0, alpha] }, //grove + { id: 8, color: [171, 0, 207, alpha] }, //ballas + { id: 9, color: [0, 166, 133, alpha] }, //news +]; + export default function customNametags() { mp.nametags.enabled = false; - /* + var color = [255, 255, 255, alpha]; + + mp.events.addDataHandler("nameTagColor", (entity, value) => { if (entity.type === "player") { - var color = JSON.parse(value); - entity.setVariable('nametagColor',color) - //mp.gui.chat.push(color); + let temp = colors.find(c => c.id === value); + if (!temp) + return; + color = temp.color; } }); mp.events.add('setNameTag', (value) => { var color = JSON.parse(value); mp.gui.chat.push(color); - });*/ + }); mp.events.add('render', (nametags) => { const graphics = mp.game.graphics; @@ -43,8 +65,7 @@ export default function customNametags() { mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y], { font: 4, - //color: [player.data.nametagColor[0], player.data.nametagColor[1], player.data.nametagColor[2], 200], //Grove //Ballas 171 0 207 //PD 0 95 190 //FIB 0 0 170 LSED 147 0 0 NR 0 166 133 Trucker 255 162 Support 0 255 255 Zivilist 255 255 255 - color: [255, 255, 255, 255], + color: [color[0], color[1], color[2], color[3]], scale: [0.4, 0.4], outline: true, centre: false diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 9eb0dccf..5f02e815 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -53,7 +53,11 @@ export default function clotheShopList(globalData: IGlobalData) { var myVar; let mainMenu = null; + let categoryMenu = null; + let categoryMenus = []; + let clotheMenus = []; + let clothingData = []; let currentMenuIdx = -1; let menuTransition = false; // workaround for ItemSelect event being called twice between menu transitions @@ -148,7 +152,6 @@ export default function clotheShopList(globalData: IGlobalData) { } function addClothingItems(type, bannerSprite, key, value, gender) { - var categoryMenu; var cloth = []; var tx = []; @@ -172,7 +175,7 @@ export default function clotheShopList(globalData: IGlobalData) { mainMenu.Item // Fill it - let clotheUpperMenu; + let clotheSubMenu; for (const item of value) { if (item.ComponentId == key) { @@ -183,8 +186,8 @@ export default function clotheShopList(globalData: IGlobalData) { if (txData != undefined && txData.length > 0) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); - clotheUpperMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); - clotheUpperMenu.Visible = false; + clotheSubMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); + clotheSubMenu.Visible = false; } @@ -199,7 +202,7 @@ export default function clotheShopList(globalData: IGlobalData) { tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "KOSTENLOS"}`); - clotheUpperMenu.AddItem(tempItem); + clotheSubMenu.AddItem(tempItem); cloth.push(item); tx.push(x); @@ -214,6 +217,13 @@ export default function clotheShopList(globalData: IGlobalData) { item: cloth, texture: tx }); + clotheMenus.push({ + menu: clotheSubMenu, + type: type, + slotIdx: Number(key), + item: cloth, + texture: tx + }); } function submenuItemChangeHandler(newIndex) { @@ -407,6 +417,35 @@ export default function clotheShopList(globalData: IGlobalData) { currentMenuIdx = -1; lastClothing = null; }); + + // Sub menu events + categoryMenu.ItemSelect.on((selectedItem, itemIndex) => { + const nextMenu = clotheMenus[itemIndex]; + const slot = Number(nextMenu.slotIdx); + + lastClothing = { + type: nextMenu.type, + slotIdx: slot, + drawable: (nextMenu.type === "props" ? localPlayer.getPropIndex(slot) : localPlayer.getDrawableVariation(slot)), + texture: (nextMenu.type === "props" ? localPlayer.getPropTextureIndex(slot) : localPlayer.getTextureVariation(slot)), + undershirt: [localPlayer.getDrawableVariation(8), localPlayer.getTextureVariation(8)], + torso: localPlayer.getDrawableVariation(3) + }; + + currentMenuIdx = itemIndex; + mainMenu.Visible = false; + nextMenu.menu.Visible = true; + menuTransition = true; + + submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + }); + + categoryMenu.MenuClose.on(() => { + currentMenuIdx = -1; + mainMenu.Visible = true; + }); + + } }); diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 703b4916..bd5527fe 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -264,7 +264,6 @@ namespace ReallifeGamemode.Server.Events } if (nearestDuty != null)// Duty Point { - var nameTagColor = new Color(0, 0, 0); var factionId = user.FactionId; if (user.GetData("duty") == false) @@ -282,7 +281,7 @@ namespace ReallifeGamemode.Server.Events case 1: //nameTagColor = new Color(28, 134, 238); //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 })); - //player.SetSharedData("nameTagColor", JsonConvert.SerializeObject(new int[] { 28, 134, 238})); + player.SetSharedData("nameTagColor", factionId); player.SetSharedData("blipColor", 38); break; @@ -290,14 +289,14 @@ namespace ReallifeGamemode.Server.Events case 2: //nameTagColor = new Color(255, 0, 0); //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 255, 0, 0 })); - //player.SetSharedData("nameTagColor", new int[] { 255, 0, 0}); + player.SetSharedData("nameTagColor", factionId); player.SetSharedData("blipColor", 79); break; //FBI case 3: //nameTagColor = new Color(173, 0, 118); - //player.SetSharedData("nameTagColor", new int[] { 173, 0, 118}); + player.SetSharedData("nameTagColor", factionId); player.SetSharedData("blipColor", 72); player.SetAccessories(2, 2, 0); break; @@ -333,7 +332,7 @@ namespace ReallifeGamemode.Server.Events player.TriggerEvent("toggleDutyMode", false); Medic.UpdateDutyMedics(-1); player.SetSharedData("blipColor", 0); - //player.SetSharedData("nameTagColor", new Color[255, 255, 255, 255]); + player.SetSharedData("nameTagColor", 0); UpdateCharacterCloth.LoadCharacterDefaults(player); } } diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 4667db80..a4cc1551 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -104,22 +104,22 @@ namespace ReallifeGamemode.Server.Events { case null: player.SetSharedData("blipColor", 0); - //player.SetSharedData("nameTagColor", new int[] { 255, 255, 255 }); + player.SetSharedData("nameTagColor", 0); break; case 0: player.SetSharedData("blipColor", 0); - //player.SetSharedData("nameTagColor", new int[] { 255, 255, 255 }); + player.SetSharedData("nameTagColor", 0); break; case 8: player.SetSharedData("blipColor", 83); - //player.SetSharedData("nameTagColor", new int[]{171, 0, 207}); + player.SetSharedData("nameTagColor", user.FactionId); break; case 7: player.SetSharedData("blipColor", 52); - //player.SetSharedData("nameTagColor", new int[] { 0, 54, 0}); + player.SetSharedData("nameTagColor", user.FactionId); break; case 4: @@ -127,7 +127,7 @@ namespace ReallifeGamemode.Server.Events break; case 9: player.SetSharedData("blipColor", 25); - //player.SetSharedData("nameTagColor", new int[] { 0, 166, 133}); + player.SetSharedData("nameTagColor", user.FactionId); break; } From 11646f1e2a3e686de3b3687702e9a86252aafd2e Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 17:55:39 +0200 Subject: [PATCH 023/111] clothe shop test, Report Error Msg --- .../Interaction/clothes/ClotheShop.ts | 30 ++++++++----------- ReallifeGamemode.Server/Report/Report.cs | 1 + 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 5f02e815..c56dca23 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -55,9 +55,9 @@ export default function clotheShopList(globalData: IGlobalData) { let mainMenu = null; let categoryMenu = null; - let categoryMenus = []; let clotheMenus = []; + let clothingData = []; let currentMenuIdx = -1; let menuTransition = false; // workaround for ItemSelect event being called twice between menu transitions @@ -155,9 +155,9 @@ export default function clotheShopList(globalData: IGlobalData) { var cloth = []; var tx = []; - if (Object.keys(categoryMenus).length > 0) { - for (var i = 0; i < categoryMenus.length; i++) { - if (categoryMenus[i].slotIdx == key) { + if (Object.keys(clotheMenus).length > 0) { + for (var i = 0; i < clotheMenus.length; i++) { + if (clotheMenus[i].slotIdx == key) { return; } } @@ -210,13 +210,6 @@ export default function clotheShopList(globalData: IGlobalData) { } } - categoryMenus.push({ - menu: categoryMenu, - type: type, - slotIdx: Number(key), - item: cloth, - texture: tx - }); clotheMenus.push({ menu: clotheSubMenu, type: type, @@ -224,10 +217,11 @@ export default function clotheShopList(globalData: IGlobalData) { item: cloth, texture: tx }); + } function submenuItemChangeHandler(newIndex) { - const currentMenu = categoryMenus[currentMenuIdx]; + const currentMenu = clotheMenus[currentMenuIdx]; const currentItem = currentMenu.item[newIndex]; const currentTexture = currentMenu.texture[newIndex].id; //const currentItem = clothingData[currentMenu.type][currentMenu.slotIdx][newIndex]; @@ -284,7 +278,7 @@ export default function clotheShopList(globalData: IGlobalData) { if (dist > 3) { clearInterval(myVar); resetPreview(); - if (currentMenuIdx !== -1) categoryMenus[currentMenuIdx].menu.Close(); + if (currentMenuIdx !== -1) clotheMenus[currentMenuIdx].menu.Close(); if (mainMenu && mainMenu.Visible) mainMenu.Close(); } } @@ -323,7 +317,7 @@ export default function clotheShopList(globalData: IGlobalData) { mp.gui.chat.show(false); // Reset some variables - categoryMenus = []; + clotheMenus = []; currentMenuIdx = -1; menuTransition = false; lastClothing = null; @@ -346,7 +340,7 @@ export default function clotheShopList(globalData: IGlobalData) { // for (const [key, value] of Object.entries(clothingData.props)) addClothingItems("props", bannerSprite, key, value); // Submenu events - for (const item of categoryMenus) { + for (const item of clotheMenus) { // Preview hovering item item.menu.IndexChange.on(submenuItemChangeHandler); @@ -357,7 +351,7 @@ export default function clotheShopList(globalData: IGlobalData) { return; } - const currentMenu = categoryMenus[currentMenuIdx]; + const currentMenu = clotheMenus[currentMenuIdx]; const currentItem = currentMenu.item[itemIndex]; const currentTexture = currentMenu.texture[itemIndex].id; if (currentMenu.slotIdx == 11) { @@ -390,7 +384,7 @@ export default function clotheShopList(globalData: IGlobalData) { // Main menu events mainMenu.ItemSelect.on((selectedItem, itemIndex) => { - const nextMenu = categoryMenus[itemIndex]; + const nextMenu = clotheMenus[itemIndex]; const slot = Number(nextMenu.slotIdx); lastClothing = { @@ -460,7 +454,7 @@ export default function clotheShopList(globalData: IGlobalData) { }); mp.events.add("clothesMenu:close", () => { - if (currentMenuIdx !== -1) categoryMenus[currentMenuIdx].menu.Close(); + if (currentMenuIdx !== -1) clotheMenus[currentMenuIdx].menu.Close(); if (mainMenu && mainMenu.Visible) mainMenu.Close(); }); diff --git a/ReallifeGamemode.Server/Report/Report.cs b/ReallifeGamemode.Server/Report/Report.cs index d2e17181..7d42f5ea 100644 --- a/ReallifeGamemode.Server/Report/Report.cs +++ b/ReallifeGamemode.Server/Report/Report.cs @@ -35,6 +35,7 @@ namespace ReallifeGamemode.Server.Report if (listReports.Count == 0) { + ChatService.ErrorMessage(client, "Im Moment gibt es keine Tickets."); return; } User user = client.GetUser(); From f4cee092561fd654bb95802a757725a638177694 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 18:05:35 +0200 Subject: [PATCH 024/111] Fix nametags --- .../Commands/AdminCommands.cs | 33 +++++++++++++++---- .../Commands/FactionCommands.cs | 11 ++++++- ReallifeGamemode.Server/Events/Login.cs | 8 ++--- .../Managers/InteractionManager.cs | 4 ++- 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index afc3641a..c11dcb65 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -290,6 +290,7 @@ namespace ReallifeGamemode.Server.Commands { player.SetData("SAdminduty", true); player.SetSharedData("blipColor", 30); + player.SetSharedData("nameTagColor", -2); ChatService.SendMessage(player, "~g~ ** " + "Du befindest dich im T-Support"); } else @@ -303,9 +304,12 @@ namespace ReallifeGamemode.Server.Commands switch (targetUser.FactionId) { case null: + player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); + break; + case 0: player.SetSharedData("blipColor", 0); break; - case 8: player.SetSharedData("blipColor", 83); break; @@ -321,6 +325,8 @@ namespace ReallifeGamemode.Server.Commands player.SetSharedData("blipColor", 25); break; } + player.SetSharedData("nameTagColor", targetUser.FactionId); + if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); } } @@ -1487,25 +1493,30 @@ namespace ReallifeGamemode.Server.Commands { case null: target.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); + break; + + case 0: + player.SetSharedData("nameTagColor", 0); break; case 8: - target.SetSharedData("blipColor", 83); + player.SetSharedData("nameTagColor", 8); break; case 7: - target.SetSharedData("blipColor", 52); + player.SetSharedData("nameTagColor", 7); break; case 4: - target.SetSharedData("blipColor", 5); + player.SetSharedData("nameTagColor", 4); break; case 9: - target.SetSharedData("blipColor", 25); + player.SetSharedData("nameTagColor", 9); break; } target.TriggerEvent("jailTime", 0); - + if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); targetUser.Wanteds = 0; dbContext.SaveChanges(); } @@ -2440,6 +2451,11 @@ namespace ReallifeGamemode.Server.Commands switch (u.FactionId) { case null: + target.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); + break; + + case 0: target.SetSharedData("blipColor", 0); break; @@ -2456,8 +2472,10 @@ namespace ReallifeGamemode.Server.Commands break; case 9: target.SetSharedData("blipColor", 25); + break; } + if (u.FactionId != null) player.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } @@ -2504,6 +2522,7 @@ namespace ReallifeGamemode.Server.Commands { case null: target.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); break; case 8: @@ -2521,7 +2540,7 @@ namespace ReallifeGamemode.Server.Commands target.SetSharedData("blipColor", 25); break; } - + if (u.FactionId != null) player.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index dffffd3d..fdabd88a 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -461,6 +461,15 @@ namespace ReallifeGamemode.Server.Commands target.SetSharedData("blipColor", 0); switch (targetUser.FactionId) { + case null: + player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); + break; + + case 0: + player.SetSharedData("blipColor", 0); + break; + case 8: target.SetSharedData("blipColor", 83); break; @@ -477,7 +486,7 @@ namespace ReallifeGamemode.Server.Commands break; } target.TriggerEvent("jailTime", 0); - + if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); targetUser.Wanteds = 0; dbContext.SaveChanges(); } diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index a4cc1551..c9fbbc65 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -109,17 +109,14 @@ namespace ReallifeGamemode.Server.Events case 0: player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); break; case 8: player.SetSharedData("blipColor", 83); - player.SetSharedData("nameTagColor", user.FactionId); break; case 7: player.SetSharedData("blipColor", 52); - player.SetSharedData("nameTagColor", user.FactionId); break; case 4: @@ -127,11 +124,10 @@ namespace ReallifeGamemode.Server.Events break; case 9: player.SetSharedData("blipColor", 25); - player.SetSharedData("nameTagColor", user.FactionId); break; } - - + if(user.FactionId != null) player.SetSharedData("nameTagColor", user.FactionId); + if (user.CharacterId == null) { diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 33bad362..1b7c184a 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -73,6 +73,7 @@ namespace ReallifeGamemode.Server.Managers { default: player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); break; case 8: @@ -90,7 +91,7 @@ namespace ReallifeGamemode.Server.Managers player.SetSharedData("blipColor", 25); break; } - + if (own.FactionId != null) player.SetSharedData("nameTagColor", own.FactionId); dbContext.SaveChanges(); } } @@ -284,6 +285,7 @@ namespace ReallifeGamemode.Server.Managers ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); target.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); dbContext.SaveChanges(); } } From 661ce2aec3bebcf539295435b074d0fdec74dde5 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 18:17:03 +0200 Subject: [PATCH 025/111] Try fix --- ReallifeGamemode.Client/Gui/nametags.ts | 11 +++--- .../Interaction/clothes/ClotheShop.ts | 34 ++++++++++++++----- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index 76ce2308..a467c29d 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -30,13 +30,15 @@ export default function customNametags() { mp.nametags.enabled = false; var color = [255, 255, 255, alpha]; - - mp.events.addDataHandler("nameTagColor", (entity, value) => { + + mp.events.addDataHandler("nameTagColor", (entity: EntityMp, value) => { if (entity.type === "player") { let temp = colors.find(c => c.id === value); - if (!temp) + if (!temp) { + entity.setVariable("nametagColor", [255, 255, 255, alpha]); return; - color = temp.color; + } + entity.setVariable("nametagColor", temp.color); } }); @@ -62,6 +64,7 @@ export default function customNametags() { var armour = player.getArmour() / 100; y -= scale * (0.005 * (screenRes.y / 1080)); + let color = player.data.nametagColor; mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y], { font: 4, diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index c56dca23..b2bc86e5 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -56,6 +56,8 @@ export default function clotheShopList(globalData: IGlobalData) { let categoryMenu = null; let clotheMenus = []; + let categorysMenus = []; + let clothingData = []; @@ -188,6 +190,7 @@ export default function clotheShopList(globalData: IGlobalData) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); clotheSubMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); clotheSubMenu.Visible = false; + categorysMenus.push(categoryMenu); } @@ -207,16 +210,17 @@ export default function clotheShopList(globalData: IGlobalData) { cloth.push(item); tx.push(x); } + clotheMenus.push({ + menu: clotheSubMenu, + type: type, + slotIdx: Number(key), + item: cloth, + texture: tx + }); } } - clotheMenus.push({ - menu: clotheSubMenu, - type: type, - slotIdx: Number(key), - item: cloth, - texture: tx - }); + } @@ -318,6 +322,7 @@ export default function clotheShopList(globalData: IGlobalData) { // Reset some variables clotheMenus = []; + categorysMenus = []; currentMenuIdx = -1; menuTransition = false; lastClothing = null; @@ -382,9 +387,22 @@ export default function clotheShopList(globalData: IGlobalData) { }); } + for (const item of categorysMenus) { + // Preview hovering item + item.menu.IndexChange.on(submenuItemChangeHandler); + + // Reset preview when player backs out of category menu + item.menu.MenuClose.on(() => { + resetPreview(); + + currentMenuIdx = -1; + mainMenu.Visible = true; + }); + } + // Main menu events mainMenu.ItemSelect.on((selectedItem, itemIndex) => { - const nextMenu = clotheMenus[itemIndex]; + const nextMenu = categorysMenus[itemIndex]; const slot = Number(nextMenu.slotIdx); lastClothing = { From 7515ad56455167d25701c8c4f5e0f6c0e727af8d Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 18:29:22 +0200 Subject: [PATCH 026/111] Nametag fix ? --- ReallifeGamemode.Client/Gui/nametags.ts | 24 +++++++++---------- ReallifeGamemode.Client/game.ts | 1 + .../util/attachmentMngr.ts | 3 +-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index a467c29d..462bf1a8 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -1,11 +1,14 @@ -const maxDistance = 25 * 25; +import { IGame, IEntity } from "../game"; +import game from ".."; + + +const maxDistance = 25 * 25; const width = 0.03; const height = 0.0065; const border = 0.001; -const color = [73, 137, 0, 255]; -var faction; -var playerColors = []; + const alpha = 250; + const colors = [ { id: -2, color: [0, 255, 255, alpha] }, //support { id: -1, color: [255, 100, 0, alpha] }, //wanted @@ -28,24 +31,21 @@ const colors = [ export default function customNametags() { mp.nametags.enabled = false; - var color = [255, 255, 255, alpha]; mp.events.addDataHandler("nameTagColor", (entity: EntityMp, value) => { if (entity.type === "player") { + var player = game.players.at(entity.remoteId); + let temp = colors.find(c => c.id === value); if (!temp) { - entity.setVariable("nametagColor", [255, 255, 255, alpha]); + player.nametagColor = [255, 255, 255, alpha]; return; } - entity.setVariable("nametagColor", temp.color); + player.nametagColor = temp.color; } }); - mp.events.add('setNameTag', (value) => { - var color = JSON.parse(value); - mp.gui.chat.push(color); - }); mp.events.add('render', (nametags) => { const graphics = mp.game.graphics; @@ -64,7 +64,7 @@ export default function customNametags() { var armour = player.getArmour() / 100; y -= scale * (0.005 * (screenRes.y / 1080)); - let color = player.data.nametagColor; + let color = game.players.at(player.remoteId).nametagColor; mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y], { font: 4, diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 1ed19923..05a95326 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -53,6 +53,7 @@ interface IPlayer extends IEntity { inVehicle: boolean; name: string; vehicle: IVehicle; + nametagColor: number[]; } interface IObject extends IEntity { diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts index 60ba0235..7cb9c80a 100644 --- a/ReallifeGamemode.Client/util/attachmentMngr.ts +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -1,5 +1,4 @@ -import { IGame, EntityType, IEntity } from "../game"; -import relativeVector from "./relativevector"; +import { IGame, IEntity } from "../game"; var attachId = 0; From 32b4e8b13d633edeae1148abeb7a95c19546b106 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 18:31:57 +0200 Subject: [PATCH 027/111] fix --- ReallifeGamemode.Client/core/rage-mp/entities.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 2a519e70..608f34fd 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -59,6 +59,7 @@ class RageEntity implements IEntity { class RagePlayer extends RageEntity implements IPlayer { private player: PlayerMp; + public nametagColor: number[]; get name(): string { return this.player.name; From b60dc948b6937bde3aa50597131d904536c30789 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 18:50:44 +0200 Subject: [PATCH 028/111] Fix Server Nametags --- ReallifeGamemode.Server/Events/Login.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index c9fbbc65..b89e2269 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -109,24 +109,32 @@ namespace ReallifeGamemode.Server.Events case 0: player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); break; case 8: player.SetSharedData("blipColor", 83); + player.SetSharedData("nameTagColor", 8); break; case 7: player.SetSharedData("blipColor", 52); + player.SetSharedData("nameTagColor", 7); break; case 4: player.SetSharedData("blipColor", 5); + player.SetSharedData("nameTagColor", 4); break; case 9: player.SetSharedData("blipColor", 25); + player.SetSharedData("nameTagColor", 9); + break; + default: + player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); break; } - if(user.FactionId != null) player.SetSharedData("nameTagColor", user.FactionId); if (user.CharacterId == null) From d9a292b829480ca63711234bf6e7b3c6bf18f57e Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 18:52:53 +0200 Subject: [PATCH 029/111] fix NameTags --- ReallifeGamemode.Client/Gui/nametags.ts | 20 +++++-------------- .../core/rage-mp/entities.ts | 8 +++++++- ReallifeGamemode.Client/game.ts | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index 462bf1a8..4648d30b 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -31,20 +31,7 @@ const colors = [ export default function customNametags() { mp.nametags.enabled = false; - - - mp.events.addDataHandler("nameTagColor", (entity: EntityMp, value) => { - if (entity.type === "player") { - var player = game.players.at(entity.remoteId); - - let temp = colors.find(c => c.id === value); - if (!temp) { - player.nametagColor = [255, 255, 255, alpha]; - return; - } - player.nametagColor = temp.color; - } - }); + mp.events.add('render', (nametags) => { @@ -64,7 +51,10 @@ export default function customNametags() { var armour = player.getArmour() / 100; y -= scale * (0.005 * (screenRes.y / 1080)); - let color = game.players.at(player.remoteId).nametagColor; + + let colorId = game.players.at(player.remoteId).nametagColor; + let color = colors.find(c => c.id === colorId).color; + mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y], { font: 4, diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 608f34fd..b3409977 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -59,12 +59,18 @@ class RageEntity implements IEntity { class RagePlayer extends RageEntity implements IPlayer { private player: PlayerMp; - public nametagColor: number[]; get name(): string { return this.player.name; } + get nametagColor(): number { + var color = this.player.getVariable("nametagColor"); + if (!color) + return 0; + return color; + } + get vehicle(): IVehicle { if (!this.player) { return null; diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 05a95326..8b1f6883 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -53,7 +53,7 @@ interface IPlayer extends IEntity { inVehicle: boolean; name: string; vehicle: IVehicle; - nametagColor: number[]; + nametagColor: number; } interface IObject extends IEntity { From c0682cc0062c8c967d75993b6c25b1f89f42d035 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 18:58:28 +0200 Subject: [PATCH 030/111] Clothe Shop --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index b2bc86e5..12846a89 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -389,7 +389,7 @@ export default function clotheShopList(globalData: IGlobalData) { for (const item of categorysMenus) { // Preview hovering item - item.menu.IndexChange.on(submenuItemChangeHandler); + //item.menu.IndexChange.on(submenuItemChangeHandler); // Reset preview when player backs out of category menu item.menu.MenuClose.on(() => { @@ -449,7 +449,7 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.menu.Visible = true; menuTransition = true; - submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + //submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); categoryMenu.MenuClose.on(() => { From 773f7424bdd3473be36a4d8a9820616ef9ed74da Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:01:37 +0200 Subject: [PATCH 031/111] fix --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 12846a89..ee068f89 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -392,7 +392,7 @@ export default function clotheShopList(globalData: IGlobalData) { //item.menu.IndexChange.on(submenuItemChangeHandler); // Reset preview when player backs out of category menu - item.menu.MenuClose.on(() => { + item.MenuClose.on(() => { resetPreview(); currentMenuIdx = -1; From 33d574e3ebfdeb860e6a5f8a14e99d4f6d4da02c Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:05:01 +0200 Subject: [PATCH 032/111] fix --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index ee068f89..f3d3dfde 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -446,7 +446,7 @@ export default function clotheShopList(globalData: IGlobalData) { currentMenuIdx = itemIndex; mainMenu.Visible = false; - nextMenu.menu.Visible = true; + nextMenu.Visible = true; menuTransition = true; //submenuItemChangeHandler(nextMenu.menu.CurrentSelection); From 94270399bae52de7a8a7d06ca3cb1b566f36683b Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:09:33 +0200 Subject: [PATCH 033/111] fix --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index f3d3dfde..4aef566b 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -416,7 +416,7 @@ export default function clotheShopList(globalData: IGlobalData) { currentMenuIdx = itemIndex; mainMenu.Visible = false; - nextMenu.menu.Visible = true; + nextMenu.Visible = true; menuTransition = true; submenuItemChangeHandler(nextMenu.menu.CurrentSelection); @@ -445,8 +445,8 @@ export default function clotheShopList(globalData: IGlobalData) { }; currentMenuIdx = itemIndex; - mainMenu.Visible = false; - nextMenu.Visible = true; + categoryMenu.Visible = false; + nextMenu.menu.Visible = true; menuTransition = true; //submenuItemChangeHandler(nextMenu.menu.CurrentSelection); From 066c47d209778ec3f4f4abf0ba8e167c80bacd6a Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:12:55 +0200 Subject: [PATCH 034/111] fix --- ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 4aef566b..a34b8665 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -183,8 +183,7 @@ export default function clotheShopList(globalData: IGlobalData) { var txData = getClothingName(key, item.ClotheId, gender); - mp.gui.chat.push('Key ' + key); - mp.gui.chat.push(item); + if (txData != undefined && txData.length > 0) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); @@ -419,7 +418,7 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.Visible = true; menuTransition = true; - submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + // submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); mainMenu.MenuClose.on(() => { @@ -449,7 +448,7 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.menu.Visible = true; menuTransition = true; - //submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); categoryMenu.MenuClose.on(() => { From 8008139bc8f227ee3a60be17793eaed7b275ea4d Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:18:41 +0200 Subject: [PATCH 035/111] try fix --- .../Interaction/clothes/ClotheShop.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index a34b8665..260767f2 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -209,16 +209,15 @@ export default function clotheShopList(globalData: IGlobalData) { cloth.push(item); tx.push(x); } - clotheMenus.push({ - menu: clotheSubMenu, - type: type, - slotIdx: Number(key), - item: cloth, - texture: tx - }); } } - + clotheMenus.push({ + menu: clotheSubMenu, + type: type, + slotIdx: Number(key), + item: cloth, + texture: tx + }); } From f7423b24fc6037048d2eaf65ba94de30faa96e39 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:37:15 +0200 Subject: [PATCH 036/111] old clotheshop --- .../Interaction/clothes/ClotheShop.ts | 72 +++---------------- 1 file changed, 11 insertions(+), 61 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 260767f2..9ad6898c 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -56,7 +56,6 @@ export default function clotheShopList(globalData: IGlobalData) { let categoryMenu = null; let clotheMenus = []; - let categorysMenus = []; @@ -177,22 +176,12 @@ export default function clotheShopList(globalData: IGlobalData) { mainMenu.Item // Fill it - let clotheSubMenu; for (const item of value) { if (item.ComponentId == key) { var txData = getClothingName(key, item.ClotheId, gender); - - if (txData != undefined && txData.length > 0) { - categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); - clotheSubMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); - clotheSubMenu.Visible = false; - categorysMenus.push(categoryMenu); - - } - for (const x of txData) { var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : " "); //var itemDescription = (key === 11 ? x.undershirt[1].GXT + " - " + x.id: "Clothing item."); @@ -204,7 +193,7 @@ export default function clotheShopList(globalData: IGlobalData) { tempItem.SetRightLabel(`${item.Price > 0 ? `$${item.Price}` : "KOSTENLOS"}`); - clotheSubMenu.AddItem(tempItem); + categoryMenu.AddItem(tempItem); cloth.push(item); tx.push(x); @@ -212,7 +201,7 @@ export default function clotheShopList(globalData: IGlobalData) { } } clotheMenus.push({ - menu: clotheSubMenu, + menu: categoryMenu, type: type, slotIdx: Number(key), item: cloth, @@ -320,13 +309,12 @@ export default function clotheShopList(globalData: IGlobalData) { // Reset some variables clotheMenus = []; - categorysMenus = []; currentMenuIdx = -1; menuTransition = false; lastClothing = null; // Create a new main menu - mainMenu = new UIMenu("", "SELECT A CATEGORY", new Point(0, 0), bannerSprite.library, bannerSprite.texture); + mainMenu = new UIMenu("", "Wählen Sie eine Kategorie", new Point(0, 0), bannerSprite.library, bannerSprite.texture); mainMenu.Visible = true; // Update clothingData @@ -385,51 +373,9 @@ export default function clotheShopList(globalData: IGlobalData) { }); } - for (const item of categorysMenus) { - // Preview hovering item - //item.menu.IndexChange.on(submenuItemChangeHandler); - - // Reset preview when player backs out of category menu - item.MenuClose.on(() => { - resetPreview(); - - currentMenuIdx = -1; - mainMenu.Visible = true; - }); - } // Main menu events mainMenu.ItemSelect.on((selectedItem, itemIndex) => { - const nextMenu = categorysMenus[itemIndex]; - const slot = Number(nextMenu.slotIdx); - - lastClothing = { - type: nextMenu.type, - slotIdx: slot, - drawable: (nextMenu.type === "props" ? localPlayer.getPropIndex(slot) : localPlayer.getDrawableVariation(slot)), - texture: (nextMenu.type === "props" ? localPlayer.getPropTextureIndex(slot) : localPlayer.getTextureVariation(slot)), - undershirt: [localPlayer.getDrawableVariation(8), localPlayer.getTextureVariation(8)], - torso: localPlayer.getDrawableVariation(3) - }; - - currentMenuIdx = itemIndex; - mainMenu.Visible = false; - nextMenu.Visible = true; - menuTransition = true; - - // submenuItemChangeHandler(nextMenu.menu.CurrentSelection); - }); - - mainMenu.MenuClose.on(() => { - globalData.InMenu = false; - mp.gui.chat.show(true); - - currentMenuIdx = -1; - lastClothing = null; - }); - - // Sub menu events - categoryMenu.ItemSelect.on((selectedItem, itemIndex) => { const nextMenu = clotheMenus[itemIndex]; const slot = Number(nextMenu.slotIdx); @@ -443,19 +389,23 @@ export default function clotheShopList(globalData: IGlobalData) { }; currentMenuIdx = itemIndex; - categoryMenu.Visible = false; + mainMenu.Visible = false; nextMenu.menu.Visible = true; menuTransition = true; - submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); - categoryMenu.MenuClose.on(() => { + mainMenu.MenuClose.on(() => { + globalData.InMenu = false; + mp.gui.chat.show(true); + currentMenuIdx = -1; - mainMenu.Visible = true; + lastClothing = null; }); + } }); From 86f594fc099bec07b9eb1129c46068a6d22471b1 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:12:55 +0200 Subject: [PATCH 037/111] fix --- ReallifeGamemode.Client/Gui/licenses.ts | 2 +- .../Interaction/clothes/ClotheShop.ts | 7 +++---- ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs | 6 +++++- ReallifeGamemode.Server/Managers/InteractionManager.cs | 10 ++++++---- .../WeaponDeal/WeaponDealManager.cs | 2 +- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/licenses.ts b/ReallifeGamemode.Client/Gui/licenses.ts index e48a0eea..4222b3e4 100644 --- a/ReallifeGamemode.Client/Gui/licenses.ts +++ b/ReallifeGamemode.Client/Gui/licenses.ts @@ -20,7 +20,7 @@ export default function licenses(globalData: IGlobalData): void { mp.events.add("CEF:LicenseLoaded", () => { licenseBrowser.execute(`add_licenses('${JSON.stringify(globalInfo)}');`); licenseBrowser.execute(`add_licensesholder('${JSON.stringify(globalName)}');`); - licenseTimer = setInterval(DestroyLicenses, 7000); + licenseTimer = setInterval(DestroyLicenses, 15000); }); diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index 4aef566b..a34b8665 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -183,8 +183,7 @@ export default function clotheShopList(globalData: IGlobalData) { var txData = getClothingName(key, item.ClotheId, gender); - mp.gui.chat.push('Key ' + key); - mp.gui.chat.push(item); + if (txData != undefined && txData.length > 0) { categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); @@ -419,7 +418,7 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.Visible = true; menuTransition = true; - submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + // submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); mainMenu.MenuClose.on(() => { @@ -449,7 +448,7 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.menu.Visible = true; menuTransition = true; - //submenuItemChangeHandler(nextMenu.menu.CurrentSelection); + submenuItemChangeHandler(nextMenu.menu.CurrentSelection); }); categoryMenu.MenuClose.on(() => { diff --git a/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs b/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs index 5ab97028..f4c5da37 100644 --- a/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs +++ b/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs @@ -4,7 +4,8 @@ using System.Text; using ReallifeGamemode.Server.Core.API; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Core.Extensions; - +using Microsoft.EntityFrameworkCore; +using System.Linq; namespace ReallifeGamemode.Server.Core.Menus { @@ -49,6 +50,9 @@ namespace ReallifeGamemode.Server.Core.Menus player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info); + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1).First().BankAccount.Balance += 2500; + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 3).First().BankAccount.Balance += 2500; + user.WeaponLicense = true; dbContext.SaveChanges(); } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 1b7c184a..8675816d 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -630,7 +630,7 @@ namespace ReallifeGamemode.Server.Managers } else { - if (amount > -9 && amount < 9) + if (amount > -13 && amount < 13) { using (var dbContext = new DatabaseContext()) { @@ -640,6 +640,7 @@ namespace ReallifeGamemode.Server.Managers } player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~."); target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true); + ChatService.BroadcastFaction("~y~" + targetname + "~b~ hat von ~g~" + playername + " ~y~" + amount + " ~b~Strafpunkt erhalten. Gesamt: ~y~" + target.GetUser().Points, new List() { 1, 3 }); if (target.GetUser().Points < 0) { using (var dbContext = new DatabaseContext()) @@ -649,10 +650,11 @@ namespace ReallifeGamemode.Server.Managers dbContext.SaveChanges(); } } - else if (target.GetUser().Points >= 8) + else if (target.GetUser().Points >= 12) { - target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~8/8 ~x~Strafpunkten.", true); + target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true); target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); + ChatService.BroadcastFaction("~y~" + targetname + "~b~ hat von ~g~" + playername + " ~y~" + amount + " ~b~Strafpunkt erhalten. Gesamt: ~y~" + target.GetUser().Points, new List() { 1, 3 }); foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) { User copUser = copPlayer.GetUser(); @@ -680,7 +682,7 @@ namespace ReallifeGamemode.Server.Managers } else { - target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/8 ~x~Strafpunkten.", true); + target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/12 ~x~Strafpunkten.", true); } } else diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs index 737b70ad..77bbe84a 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs @@ -14,7 +14,7 @@ namespace ReallifeGamemode.Server.WeaponDeal { private const int WEAPON_AMOUNT_GANG = 2; private const int WEAPON_AMOUNT_COP = 8; - private const int WEAPON_AMOUNT_COP_STUNGUN = 2; + private const int WEAPON_AMOUNT_COP_STUNGUN = 12; public static bool checkWeaponDbyVehicle(Vehicle vehicle) { if (!vehicle.HasData("WeaponDealLoad") || vehicle.GetData("WeaponDealLoad") == false) From 6ed6916f00930fd3f0358e03712d3a045c559097 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 20:24:29 +0200 Subject: [PATCH 038/111] update ragemp-c types for 1.1 --- .../core/rage-mp/entities.ts | 7 + .../util/attachmentMngr.ts | 289 ++++-------------- 2 files changed, 71 insertions(+), 225 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index b3409977..69cd3e1a 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -15,6 +15,13 @@ class RageEntity implements IEntity { return this.entity.id; } + get attachments(): number { + var color = this.entity.getVariable("nametagColor"); + if (!color) + return 0; + return color; + } + get handle() { return this.entity.handle; } diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts index 7cb9c80a..2da23324 100644 --- a/ReallifeGamemode.Client/util/attachmentMngr.ts +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -12,125 +12,56 @@ export default function attachmentManager(game: IGame) { attachmentMngr.register("weapondeal2", "w_sg_pumpshotgun", "weapondeal2w_sg_pumpshotgun", new mp.Vector3(0.4, 1.6, 0.62), new mp.Vector3(90, 0, 180)); }); - const attachmentMngr = + const attachmentMngr = { attachments: {}, - addFor: function (entityRage, id) { - - if (!entityRage) { - return; - } - - - let entity: IEntity; - if (entityRage.type === "player") { - var player = game.players.at(entityRage.remoteId); - entity = player; - - } else if (entityRage.type === "vehicle") { - var vehicle = game.vehicles.at(entityRage.remoteId); - entity = vehicle; - var realName = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(entityRage.model)); - } else if (entityRage.type === "object") { - return; - } - - - - - - let e = game.attachments.get(entity); - + addFor: async function (entity, id) { if (this.attachments.hasOwnProperty(id)) { - - - if (!e.__attachmentObjects) { e.__attachmentObjects = []; } - - - if (!e.__attachmentObjects.hasOwnProperty(id)) { - - + if (!entity.__attachmentObjects.hasOwnProperty(id)) { let attInfo = this.attachments[id]; - let rageObject = mp.objects.new(attInfo.model, entityRage.position); - - var bone = (typeof (attInfo.boneName) === 'string') ? entityRage.getBoneIndexByName(attInfo.boneName) : entityRage.getBoneIndex(attInfo.boneName) + let object = mp.objects.new(attInfo.model, entity.position); + while (object.handle === 0) { + await mp.game.waitAsync(0); + } - let attachmentData = { - targetEntity: entity.id, - bone: bone, + object.__attMgrData = { + targetEntity: entity.handle, + bone: (typeof (attInfo.boneName) === 'string') ? entity.getBoneIndexByName(attInfo.boneName) : entity.getBoneIndex(attInfo.boneName), offset: attInfo.offset, rotation: attInfo.rotation }; - game.objects.setData(rageObject, attachmentData); // hier hakt es mein freund - - let object = game.objects.at(rageObject.remoteId); - - //DEBUG MSG - mp.gui.chat.push(`ATTACH: ${attachId} - bone = ${bone}`) - - //rageObject.notifyStreaming = true; - mp.gui.chat.push("Notified Stream."); - game.wait(200); - - //DEBUG MSG - mp.gui.chat.push(`ATTACH: ${attachId} - Attaching ${JSON.stringify(attInfo)}`); - e.__attachmentObjects[id] = rageObject;; + object.notifyStreaming = true; + entity.__attachmentObjects[id] = object; } } - /* else { - mp.game.graphics.notify(`Static Attachments Error: ~r~Unknown Attachment Used: ~w~0x${id.toString(16)}`); - } */ - }, - - removeFor: function (entityRage, id) { - let entity; - if (entityRage.type === "player") { - entity = game.players.at(entityRage.remoteId); - } else if (entityRage.type === "vehicle") { - entity = game.vehicles.at(entityRage.remoteId); - } - let e = game.attachments.get(entity); - - if (e.__attachmentObjects.hasOwnProperty(id)) { - let obj = e.__attachmentObjects[id]; - - obj.destroy(); - delete e.__attachmentObjects[id]; + else { + mp.game.graphics.notify(`Static Attachments Error: ~r~Unknown Attachment Used: ~w~0x${id.toString(16)}`); } }, - initFor: function (entityRage) { - let entity; - if (entityRage.type === "player") { - entity = game.players.at(entityRage.remoteId); - } else if (entityRage.type === "vehicle") { - entity = game.vehicles.at(entityRage.remoteId); - } + removeFor: function (entity, id) { + if (entity.__attachmentObjects.hasOwnProperty(id)) { + let obj = entity.__attachmentObjects[id]; + delete entity.__attachmentObjects[id]; - let e = game.attachments.get(entity); - if (e != null) { - for (let attachment of e.__attachments) { - attachmentMngr.addFor(entityRage, attachment); + if (mp.objects.exists(obj)) { + obj.destroy(); } } }, - shutdownFor: function (entityRage) { - let entity; - if (entityRage.type === "player") { - entity = game.players.at(entityRage.remoteId); - } else if (entityRage.type === "vehicle") { - entity = game.vehicles.at(entityRage.remoteId); + initFor: function (entity) { + for (let attachment of entity.__attachments) { + attachmentMngr.addFor(entity, attachment); } + }, - let e = game.attachments.get(entity); - if (e != null) { - for (let attachment of e.__attachments) { - attachmentMngr.removeFor(entityRage, attachment); - } + shutdownFor: function (entity) { + for (let attachment in entity.__attachmentObjects) { + attachmentMngr.removeFor(entity, attachment); } }, @@ -146,7 +77,6 @@ export default function attachmentManager(game: IGame) { if (!this.attachments.hasOwnProperty(id)) { if (mp.game.streaming.isModelInCdimage(model)) { this.attachments[id] = - { id: id, model: model, @@ -156,7 +86,7 @@ export default function attachmentManager(game: IGame) { }; } else { - mp.game.graphics.notify(`Static Attachments Error: ~r~Invalid Model(0x${model.toString(16)})`); + mp.game.graphics.notify(`Static Attachments Error: ~r~Invalid Model (0x${model.toString(16)})`); } } else { @@ -179,10 +109,9 @@ export default function attachmentManager(game: IGame) { attachmentName = mp.game.joaat(attachmentName); } - let entity = game.players.local; - let e = game.attachments.get(entity); + let entity = mp.players.local; - if (!e.__attachments || e.__attachments.indexOf(attachmentName) === -1) { + if (!entity.__attachments || entity.__attachments.indexOf(attachmentName) === -1) { mp.events.callRemote("staticAttachments.Add", attachmentName.toString(36)); } }, @@ -192,10 +121,9 @@ export default function attachmentManager(game: IGame) { attachmentName = mp.game.joaat(attachmentName); } - let entity = game.players.local; - let e = game.attachments.get(entity); + let entity = mp.players.local; - if (e.__attachments && e.__attachments.indexOf(attachmentName) !== -1) { + if (entity.__attachments && entity.__attachments.indexOf(attachmentName) !== -1) { mp.events.callRemote("staticAttachments.Remove", attachmentName.toString(36)); } }, @@ -205,160 +133,71 @@ export default function attachmentManager(game: IGame) { } }; - mp.events.add("entityStreamIn", (entityRage) => { - if (entityRage.type === "player" || entityRage.type === "vehicle") { - let entity; + mp.events.add("entityStreamIn", (entity) => { + if (entity.__attMgrData) { + const { targetEntity, bone, offset, rotation } = entity.__attMgrData; - if (entityRage.type === "player") { - entity = game.players.at(entityRage.remoteId); - } else if (entityRage.type === "vehicle") { - entity = game.vehicles.at(entityRage.remoteId); - } + entity.attachTo( + targetEntity, bone, + offset.x, offset.y, offset.z, + rotation.x, rotation.y, rotation.z, + false, false, false, false, 2, true + ); + } - if (entityRage.tye === "object") { //if is object - game.wait(200); - - mp.gui.chat.push("object streamed"); - entity = game.objects.at(entityRage.remoteId); - - game.wait(200); - mp.gui.chat.push("object try get data"); - game.wait(200); - - - const { targetEntity, bone, offset, rotation } = entity.__attachmentData; - game.wait(200); - -+ - mp.gui.chat.push(targetEntity + "," + bone + "," + offset + "," + rotation); - game.wait(200); - - - entity.attachTo( - targetEntity, bone, - offset.x, offset.y, offset.z, - rotation.x, rotation.y, rotation.z, - false, false, false, false, 2, true - ); - - - return; - } - - let e = game.attachments.get(entity); //if player or vehicle - if (e != null) { - if (e.__attachments) { - attachmentMngr.initFor(entityRage); - } - } + if (entity.__attachments) { + attachmentMngr.initFor(entity); } }); - mp.events.add("entityStreamOut", (entityRage) => { - if (entityRage == mp.players.local.vehicle) { - return; - } - if (entityRage.type === "player" || entityRage.type === "vehicle") { - let e = game.attachments.at(entityRage.remoteId); - - if (e != null) { - if (e.__attachmentObjects) { - //game.wait(2500); - attachmentMngr.shutdownFor(entityRage); - } - } + mp.events.add("entityStreamOut", (entity) => { + if (entity.__attachmentObjects) { + attachmentMngr.shutdownFor(entity); } }); - mp.events.addDataHandler("attachmentsData", (entityRage, data) => { - let newAttachments = (data != null) ? data.split('|').map(att => parseInt(att, 36)) : []; + mp.events.addDataHandler("attachmentsData", (entity, data) => { + let newAttachments = (data.length > 0) ? data.split('|').map(att => parseInt(att, 36)) : []; - if (entityRage.handle !== 0) { - let entity; - if (entityRage.type === "player") { - entity = game.players.at(entityRage.remoteId); - } else if (entityRage.type === "vehicle") { - entity = game.vehicles.at(entityRage.remoteId); - } - let e = game.attachments.get(entity); - if (e == null) { - let __attachments = []; - let __attachmentObjects = []; - e = game.attachments.set(entity, __attachments, __attachmentObjects); - } - - let oldAttachments = e.__attachments; + if (entity.handle !== 0) { + let oldAttachments = entity.__attachments; if (!oldAttachments) { oldAttachments = []; - e.__attachmentObjects = []; + entity.__attachmentObjects = {}; } // process outdated first - for (let attachment of oldAttachments.keys()) { - var obj = oldAttachments[attachment]; - if (newAttachments.indexOf(obj) === -1) { - attachmentMngr.removeFor(entityRage, obj); + for (let attachment of oldAttachments) { + if (newAttachments.indexOf(attachment) === -1) { + attachmentMngr.removeFor(entity, attachment); } } // then new attachments for (let attachment of newAttachments) { if (oldAttachments.indexOf(attachment) === -1) { - attachmentMngr.addFor(entityRage, attachment); + attachmentMngr.addFor(entity, attachment); } } - e.__attachments = newAttachments; } + + entity.__attachments = newAttachments; }); function InitAttachmentsOnJoin() { - game.players.forEach(_player => { - let player = mp.players.at(_player.remoteId); - - if (!player) { - return; - } - - let e = game.attachments.get(_player); - if (e == null) { - let __attachments = []; - let __attachmentObjects = []; - e = game.attachments.set(_player, __attachments, __attachmentObjects); - } - let data = player.getVariable("attachmentsData"); + mp.players.forEach(_player => { + let data = _player.getVariable("attachmentsData"); if (data && data.length > 0) { let atts = data.split('|').map(att => parseInt(att, 36)); - e.__attachments = atts; - e.__attachmentObjects = []; + _player.__attachments = atts; + _player.__attachmentObjects = {}; } }); - /* - game.vehicles.forEach(_veh => { - let vehicle = mp.vehicles.at(_veh.remoteId); - - if (!vehicle) { - return; - } - - let e = game.attachments.get(_veh); - if (e == null) { - let __attachments = []; - let __attachmentObjects = []; - e = game.attachments.set(_veh, __attachments, __attachmentObjects); - } - let data = vehicle.getVariable("attachmentsData"); - - if (data && data.length > 0) { - let atts = data.split('|').map(att => parseInt(att, 36)); - e.__attachments = atts; - e.__attachmentObjects = []; - } - }); - */ } - mp.events.add("playerReady", () => { //player finished doenloading assets from server. + + mp.events.add("playerReady", () => { InitAttachmentsOnJoin(); }); } \ No newline at end of file From 544f1d32649cd983750f2bfc20ab5a6d14aafe2d Mon Sep 17 00:00:00 2001 From: Siga Date: Sun, 4 Apr 2021 18:29:05 +0000 Subject: [PATCH 039/111] Update ReallifeGamemode.Client/package.json --- ReallifeGamemode.Client/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/package.json b/ReallifeGamemode.Client/package.json index c29ea8a8..39dab389 100644 --- a/ReallifeGamemode.Client/package.json +++ b/ReallifeGamemode.Client/package.json @@ -4,7 +4,8 @@ "devDependencies": { "@babel/core": "^7.5.5", "@types/node": "^11.13.18", - "@types/ragemp-c": "github:CocaColaBear/types-ragemp-c#master", + "@types/ragemp-c": "github:CocaColaBear/types-ragemp-c#v1.0", + "babel-loader": "^8.0.6", "copy-webpack-plugin": "^5.1.1", "serialize-javascript": "^3.0.0", From 894df471ec734643847e73a22228d7972f3610c8 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 20:37:21 +0200 Subject: [PATCH 040/111] wierd --- .../Interaction/clothes/ClotheShop.ts | 49 +------------------ 1 file changed, 1 insertion(+), 48 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts index f3e39419..23ca0a8b 100644 --- a/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts +++ b/ReallifeGamemode.Client/Interaction/clothes/ClotheShop.ts @@ -181,19 +181,6 @@ export default function clotheShopList(globalData: IGlobalData) { var txData = getClothingName(key, item.ClotheId, gender); -<<<<<<< HEAD - - - if (txData != undefined && txData.length > 0) { - categoryMenu.AddItem(new UIMenuItem(mp.game.ui.getLabelText(txData[0].data[0].GXT), "")); - clotheSubMenu = new UIMenu(" ", mp.game.ui.getLabelText(txData[0].data[0].GXT), new Point(0, 0), bannerSprite.library, bannerSprite.texture); - clotheSubMenu.Visible = false; - categorysMenus.push(categoryMenu); - - } -======= ->>>>>>> f7423b24fc6037048d2eaf65ba94de30faa96e39 - for (const x of txData) { var itemDescription = (key === 11 ? mp.game.ui.getLabelText(x.undershirt[1].GXT) : " "); //var itemDescription = (key === 11 ? x.undershirt[1].GXT + " - " + x.id: "Clothing item."); @@ -405,11 +392,8 @@ export default function clotheShopList(globalData: IGlobalData) { nextMenu.menu.Visible = true; menuTransition = true; -<<<<<<< HEAD - // submenuItemChangeHandler(nextMenu.menu.CurrentSelection); -======= submenuItemChangeHandler(nextMenu.menu.CurrentSelection); ->>>>>>> f7423b24fc6037048d2eaf65ba94de30faa96e39 + }); mainMenu.MenuClose.on(() => { @@ -420,37 +404,6 @@ export default function clotheShopList(globalData: IGlobalData) { lastClothing = null; }); -<<<<<<< HEAD - // Sub menu events - categoryMenu.ItemSelect.on((selectedItem, itemIndex) => { - const nextMenu = clotheMenus[itemIndex]; - const slot = Number(nextMenu.slotIdx); - - lastClothing = { - type: nextMenu.type, - slotIdx: slot, - drawable: (nextMenu.type === "props" ? localPlayer.getPropIndex(slot) : localPlayer.getDrawableVariation(slot)), - texture: (nextMenu.type === "props" ? localPlayer.getPropTextureIndex(slot) : localPlayer.getTextureVariation(slot)), - undershirt: [localPlayer.getDrawableVariation(8), localPlayer.getTextureVariation(8)], - torso: localPlayer.getDrawableVariation(3) - }; - - currentMenuIdx = itemIndex; - categoryMenu.Visible = false; - nextMenu.menu.Visible = true; - menuTransition = true; - - submenuItemChangeHandler(nextMenu.menu.CurrentSelection); - }); - - categoryMenu.MenuClose.on(() => { - currentMenuIdx = -1; - mainMenu.Visible = true; - }); -======= ->>>>>>> f7423b24fc6037048d2eaf65ba94de30faa96e39 - - } }); From f07544bd07f917ed77d53bb9a9cc0e34b2ba351c Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 20:46:40 +0200 Subject: [PATCH 041/111] update --- ReallifeGamemode.Client/package-lock.json | 4 ++-- ReallifeGamemode.Client/package.json | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Client/package-lock.json b/ReallifeGamemode.Client/package-lock.json index e8d2188d..3abe7faf 100644 --- a/ReallifeGamemode.Client/package-lock.json +++ b/ReallifeGamemode.Client/package-lock.json @@ -151,8 +151,8 @@ "dev": true }, "@types/ragemp-c": { - "version": "github:CocaColaBear/types-ragemp-c#6a118e6399b77a347ac67e07f6b15f842109b0ff", - "from": "github:CocaColaBear/types-ragemp-c#master", + "version": "github:CocaColaBear/types-ragemp-c#12a2c2d39d5114076b60c32b99ac0d80e3b05677", + "from": "github:CocaColaBear/types-ragemp-c#v1.0", "dev": true }, "@webassemblyjs/ast": { diff --git a/ReallifeGamemode.Client/package.json b/ReallifeGamemode.Client/package.json index 39dab389..5c8c6d97 100644 --- a/ReallifeGamemode.Client/package.json +++ b/ReallifeGamemode.Client/package.json @@ -5,7 +5,6 @@ "@babel/core": "^7.5.5", "@types/node": "^11.13.18", "@types/ragemp-c": "github:CocaColaBear/types-ragemp-c#v1.0", - "babel-loader": "^8.0.6", "copy-webpack-plugin": "^5.1.1", "serialize-javascript": "^3.0.0", From 91353bdcf053c6d6f6834dbef0fedc8b60bb4a56 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:29:24 +0200 Subject: [PATCH 042/111] test --- .../node_modules/@types/ragemp-c/index.d.ts | 3558 +++++++++++++++++ 1 file changed, 3558 insertions(+) create mode 100644 ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts diff --git a/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts b/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts new file mode 100644 index 00000000..ddef2c97 --- /dev/null +++ b/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts @@ -0,0 +1,3558 @@ +/// +/// +/// +/// +/// + +// ------------------------------------------------------------------------- +// Custom types +// ------------------------------------------------------------------------- + +type Handle = number; // TODO: Temp type. Replace to the Entity, when methods are updated +type Hash = number; // TODO: Temp type. Replace to HashOrString, when methods are updated +type HashOrString = Hash; +type RGB = [ number, number, number ]; +type RGBA = [ number, number, number, number ]; +type Array3d = [ number, number, number ]; +type Array2d = [ number, number ]; + +// ------------------------------------------------------------------------- +// Main MP interfaces +// ------------------------------------------------------------------------- + +interface Mp { + blips: BlipMpPool; + browsers: BrowserMpPool; + cameras: CameraMpPool; + checkpoints: CheckpointMpPool; + colshapes: ColshapeMpPool; + console: ConsoleMp; + discord: DiscordMp; + dummies: DummyEntityMpPool; + events: EventMpPool; + game: GameMp; + gui: GuiMp; + keys: KeysMp; + labels: TextLabelMpPool; + markers: MarkerMpPool; + nametags: NametagsMp; + objects: ObjectMpPool; + peds: PedMpPool; + pickups: PickupMpPool; + players: PlayerMpPool; + raycasting: RaycastingMp; + storage: StorageMp; + system: SystemMp; + user: UserMp; + Vector3: Vector3Mp; + vehicles: VehicleMpPool; + voiceChat: VoiceChatMp; +} + +interface GameMp { + app: GameAppMp; + audio: GameAudioMp; + brain: GameBrainMp; + cam: GameCamMp; + controls: GameControlsMp; + cutscene: GameCutsceneMp; + datafile: GameDatafileMp; + decisionevent: GameDecisioneventMp; + decorator: GameDecoratorMp; + dlc1: GameDlc1Mp; + dlc2: GameDlc2Mp; + entity: GameEntityMp; + fire: GameFireMp; + gameplay: GameGameplayMp; + graphics: GameGraphicsMp; + gxt: GameGxtMp; + interior: GameInteriorMp; + itemset: GameItemsetMp; + mobile: GameMobileMp; + object: GameObjectMp; + pathfind: GamePathfindMp; + ped: GamePedMp; + player: GamePlayerMp; + rope: GameRopeMp; + script: GameScriptMp; + stats: GameStatsMp; + streaming: GameStreamingMp; + system: GameSystemMp; + time: GameTimeMp; + ui: GameUiMp; + unk: GameUnkMp; + recorder: GameRecorderMp; + vehicle: GameVehicleMp; + water: GameWaterMp; + weapon: GameWeaponMp; + worldprobe: GameWorldprobeMp; + zone: GameZoneMp; + + invoke(hash: string, ...args: any[]): any; + invokeFloat(hash: string, ...args: any[]): any; + invokeString(hash: string, ...args: any[]): any; + invokeVector3(hash: string, ...args: any[]): any; + joaat(text: string): Hash; + joaat(textArray: string[]): Hash[]; + wait(ms: number): void; + waitAsync(ms: number): Promise; +} + +interface GuiMp { + chat: GuiChatMp; + cursor: GuiCursorMp; + + execute(code: string): void; + takeScreenshot(name: string, type: RageEnums.ScreenshotType | number, quality: number, compressionQuality: number): void; +} + +// ------------------------------------------------------------------------- +// Entity MP types +// ------------------------------------------------------------------------- + +interface BlipMp { + dimension: number; + handle: number; + id: number; + remoteId: number; + type: string; + + addTextComponentSubstringName(): void; + destroy(): void; + doesExist(): boolean; + endTextCommandSetName(): void; + getAlpha(): number; + getColour(): number; + getCoords(): Vector3Mp; + getFirstInfoId(): BlipMp; + getHudColour(): number; + getInfoIdDisplay(): number; + getInfoIdEntityIndex(): Handle; + getInfoIdPickupIndex(): PickupMp; + getInfoIdType(): number; + getNextInfoId(): BlipMp; + getSprite(): number; + getVariable(value: string): any; + hasVariable(value: string): boolean; + hideNumberOn(): void; + isFlashing(): boolean; + isMissionCreator(): boolean; + isOnMinimap(): boolean; + isShortRange(): boolean; + pulse(): void; + setAlpha(alpha: number): void; + setAsFriendly(toggle: boolean): void; + setAsMissionCreator(toggle: boolean): void; + setAsShortRange(toggle: boolean): void; + setBright(toggle: boolean): void; + setCategory(index: number): void; + setColour(color: number): void; + setCoords(position: Vector3Mp): void; + setDisplay(displayId: number): void; + setFade(opacity: number, duration: number): void; + setFlashes(toggle: boolean): void; + setFlashesAlternate(toggle: boolean): void; + setFlashInterval(p1: any): void; + setFlashTimer(duration: number): void; + setHighDetail(toggle: boolean): void; + setNameFromTextFile(gxtEntry: string): void; + setNameToPlayerName(player: PlayerMp): void; + setPosition(posX: number, posY: number, posZ: number): void; + setPriority(priority: number): void; + setRotation(rotation: number): void; + setRoute(enabled: boolean): void; + setRouteColour(colour: number): void; + setScale(scale: number): void; + setSecondaryColour(r: number, g: number, b: number): void; + setShowCone(toggle: boolean): void; + setShowHeadingIndicator(toggle: boolean): void; + setSprite(spriteId: number): void; + showNumberOn(number: number): void; +} + +interface EntityMp { + alpha: number; + dimension: number; + model: number; + position: Vector3Mp; +  readonly handle: any; +  readonly id: number; +  readonly remoteId: number; +  readonly type: string; + + applyForceTo(forceType: number, x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, + boneIndex: number, isRel: number, p9: boolean, highForce: boolean, p11: boolean, p12: boolean): void; + applyForceToCenterOfMass(forceType: number, x: number, y: number, z: number, p4: boolean, isRel: boolean, + highForce: boolean, p7: boolean): void; + attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, + zRot: number, p8: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, + fixedRot: boolean): void; + attachToPhysically(entity: Handle, boneIndex1: number, boneIndex2: number, xPos1: number, yPos1: number, + zPos1: number, xPos2: number, yPos2: number, zPos2: number, xRot: number, yRot: number, zRot: number, + breakForce: number, fixedRot: boolean, p14: boolean, collision: boolean, p16: boolean, p17: number): void; + clearLastDamage(): void; + destroy(): void; + detach(p0: boolean, collision: boolean): void; + dist(position: Vector3Mp): number; + distSquared(position: Vector3Mp): number; + doesBelongToThisScript(p0: boolean): boolean; + doesExist(): boolean; + doesHaveDrawable(): boolean; + doesHavePhysics(): boolean; + forceAiAndAnimationUpdate(): void; + forceStreamingUpdate(): void; + freezePosition(toggle: boolean): void; + getAlpha(): number; + getAnimCurrentTime(animDict: string, animName: string): number; + getAnimTotalTime(animDict: string, animName: string): number; + getAttachedTo(): Handle; + getBoneIndexByName(boneName: string): number; + getCollisionNormalOfLastHitFor(): Vector3Mp; + getCoords(alive: boolean): Vector3Mp; + getForwardVector(): Vector3Mp; + getForwardX(): number; + getForwardY(): number; + getHeading(): number; + getHealth(): number; + getHeight(x: number, y: number, z: number, atTop: boolean, inWorldCoords: boolean): number; + getHeightAboveGround(): number; + getLastMaterialHitBy(): Hash; + getLodDist(): number; + getMatrix(rightVector: Vector3Mp, forwardVector: Vector3Mp, upVector: Vector3Mp, position: Vector3Mp): { + rightVector: Vector3Mp; + forwardVector: Vector3Mp; + upVector: Vector3Mp; + position: Vector3Mp; + }; + getMaxHealth(): number; + getModel(): Hash; + getNearestPlayerTo(): Handle; + getNearestPlayerToOnTeam(team: number): Handle; + getObjectIndexFromIndex(): Handle; + getOffsetFromGivenWorldCoords(posX: number, posY: number, posZ: number): Vector3Mp; + getOffsetFromInWorldCoords(offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; + getPedIndexFromIndex(): Handle; + getPhysicsHeading(): number; + getPitch(): number; + getPopulationType(): number; + getQuaternion(x: number, y: number, z: number, w: number): { + x: number; + y: number; + z: number; + w: number; + }; + getRoll(): number; + getRotation(rotationOrder: number): Vector3Mp; + getRotationVelocity(): Vector3Mp; + getScript(script: Handle): Handle; + getSpeed(): number; + getSpeedVector(relative: boolean): Vector3Mp; + getSubmergedLevel(): number; + getType(): number; + getUprightValue(): number; + getVariable(value: string): any; + getVehicleIndexFromIndex(): Handle; + getVelocity(): Vector3Mp; + getWorldPositionOfBone(boneIndex: number): Vector3Mp; + hasAnimEventFired(actionHash: Hash): boolean; + hasAnimFinished(animDict: string, animName: string, p2: number): boolean; + hasBeenDamagedBy(entity: Handle, p1: boolean): boolean; + hasBeenDamagedByAnyObject(): boolean; + hasBeenDamagedByAnyPed(): boolean; + hasBeenDamagedByAnyVehicle(): boolean; + hasClearLosTo(entity: Handle, traceType: number): boolean; + hasClearLosToInFront(entity: Handle): boolean; + hasCollidedWithAnything(): boolean; + hasCollisionLoadedAround(): boolean; + isAMission(): boolean; + isAnObject(): boolean; + isAPed(): boolean; + isAt(entity: Handle, xSize: number, ySize: number, zSize: number, p4: boolean, p5: boolean, p6: number): boolean; + isAtCoord(xPos: number, yPos: number, zPos: number, xSize: number, ySize: number, zSize: number, p6: boolean, + p7: boolean, p8: number): boolean; + isAttached(): boolean; + isAttachedTo(to: Handle): boolean; + isAttachedToAnyObject(): boolean; + isAttachedToAnyPed(): boolean; + isAttachedToAnyVehicle(): boolean; + isAVehicle(): boolean; + isCollisonDisabled(): boolean; + isDead(): boolean; + isInAir(): boolean; + isInAngledArea(originX: number, originY: number, originZ: number, edgeX: number, edgeY: number, edgeZ: number, + angle: number, p7: boolean, p8: boolean, p9: any): boolean; + isInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p6: boolean, p7: boolean, p8: any): boolean; + isInWater(): boolean; + isInZone(zone: string): boolean; + isOccluded(): boolean; + isOnScreen(): boolean; + isPlayingAnim(animDict: string, animName: string, p2: number): boolean; + isStatic(): boolean; + isTouching(targetEntity: Handle): boolean; + isTouchingModel(modelHash: Hash): boolean; + isUpright(angle: number): boolean; + isUpsidedown(): boolean; + isVisible(): boolean; + isVisibleToScript(): boolean; + isWaitingForWorldCollision(): boolean; + playAnim(animName: string, propName: string, p2: number, p3: boolean, p4: boolean, p5: boolean, delta: number, + bitset: any): boolean; + playSynchronizedAnim(syncedScene: number, animation: string, propName: string, p3: number, p4: number, p5: any, + p6: number): boolean; + processAttachments(): void; + resetAlpha(): void; + setAlpha(alphaLevel: number/*skin: boolean*/): void; // TODO: Check this + setAlwaysPrerender(toggle: boolean): void; + setAnimCurrentTime(animDict: string, animName: string, time: number): void; + setAnimSpeed(animDict: string, animName: string, speedMultiplier: number): void; + setAsMission(p0: boolean, byThisScript: boolean): void; + setCanBeDamaged(toggle: boolean): void; + setCanBeDamagedByRelationshipGroup(p0: boolean, p1: any): void; + setCanBeTargetedWithoutLos(toggle: boolean): void; + setCollision(toggle: boolean, keepPhysics: boolean): void; + setCoords(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, clearArea: boolean): void; + setCoords2(xPos: number, yPos: number, zPos: number, xAxis: number, yAxis: number, zAxis: number, clearArea: boolean): void; + setCoordsNoOffset(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): void; + setDynamic(toggle: boolean): void; + setHasGravity(toggle: boolean): void; + setHeading(heading: number): void; + setHealth(health: number): void; + setInvincible(toggle: boolean): void; + setIsTargetPriority(p0: boolean, p1: number): void; + setLights(toggle: boolean): void; + setLoadCollisionFlag(toggle: boolean): void; + setLodDist(value: number): void; + setMaxHealth(value: number): void; + setMaxSpeed(speed: number): void; + setMotionBlur(toggle: boolean): void; + setNoCollision(entity: Handle, collision: boolean): void; + setOnlyDamagedByPlayer(toggle: boolean): void; + setOnlyDamagedByRelationshipGroup(p0: boolean, p1: any): void; + setProofs(bulletProof: boolean, fireProof: boolean, explosionProof: boolean, collisionProof: boolean, + meleeProof: boolean, p5: boolean, p6: boolean,drownProof: boolean): void; + setQuaternion(x: number, y: number, z: number, w: number): void; + setRecordsCollisions(toggle: boolean): void; + setRenderScorched(toggle: boolean): void; + setRotation(pitch: number, roll: number, yaw: number, rotationOrder: number, p4: boolean): void; + setTrafficlightOverride(state: number): void; + setVariable(key: string, value: any): any; + setVelocity(x: number, y: number, z: number): void; + setVisible(toggle: boolean, p1: boolean): void; + stopAnim(animation: string, animGroup: string, p2: number): void; + stopSynchronizedAnim(p0: number, p1: boolean): boolean; +} + +interface CheckpointMp extends EntityMp { + // TODO +} + +interface ColshapeMp extends EntityMp { + triggered: boolean; +} + +interface DummyEntityMp { + // TODO (temporary solution): + // Since this is a very abstract concept, it is not at all a familiar essence, but it has most of its properties. + // The easiest option is, of course, to inherit the EntityMpPool interface, but this will add + // non-existent methods and parameters associated with the dimension and position. + // It is proposed in the future to introduce a more abstract concept than an entity, which will have only an ID, a type and several basic + // methods such as deletion, enumeration and transformation into an array. The same goes for the entity pool. + + readonly dummyType: number; + readonly id: number; + readonly remoteId: number; + readonly type: string; + + getVariable(value: string): any; +} + +interface MarkerMp extends EntityMp { + // TODO +} + +interface ObjectMp extends EntityMp { + hidden: boolean; + isWeak: boolean; + notifyStreaming: boolean; + streamingRange: number; + rotation: Vector3Mp; + + hasBeenBroken(): boolean; + isVisible(): boolean; + markForDeletion(): void; + placeOnGroundProperly(): boolean; + setActivatePhysicsAsSoonAsItIsUnfrozen(toggle: boolean): void; + setPhysicsParams(weight: number, p1: number, p2: number, p3: number, p4: number, gravity: number, p6: number, + p7: number, p8: number, p9: number, buoyancy: number): void; + setTargettable(targettable: boolean): void; + slide(toX: number, toY: number, toZ: number, speedX: number, speedY: number, speedZ: number, collision: boolean): boolean; +} + +interface PedBaseMp extends EntityMp { + applyBlood(boneIndex: number, xRot: number, yRot: number, zRot: number, woundType: string): void; + applyBloodByZone(p1: any, p2: number, p3: number, p4: any): void; + applyBloodDamageByZone(p1: any, p2: number, p3: number, p4: any): void; + applyBloodSpecific(p1: any, p2: number, p3: number, p4: number, p5: number, p6: any, p7: number, p8: any): void; + applyDamageDecal(p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: boolean, + p9: string): void; + applyDamagePack(damagePack: string, damage: number, mult: number): void; + applyDamageTo(damageAmount: number, p2: boolean): void; + canInCombatSeeTarget(target: Handle): boolean; + canKnockOffVehicle(): boolean; + canRagdoll(): boolean; + clearAllProps(): void; + clearAlternateMovementAnim(stance: number, p2: number): void; + clearBloodDamage(): void; + clearBloodDamageByZone(p1: number): void; + clearDamageDecalByZone(p1: number, p2: string): void; + clearDecorations(): void; + clearDriveByClipsetOverride(): void; + clearDrivebyTaskUnderneathDrivingTask(): void; + clearFacialDecorations(): void; + clearFacialIdleAnimOverride(): void; + clearLastDamageBone(): void; + clearProp(propId: number): void; + clearTasks(): void; + clearTasksImmediately(): void; + clearWetness(): void; + clone(heading: number, networkHandle: boolean, pedHandle: boolean): Handle; + cloneToTarget(ped2: Handle): void; + controlMountedWeapon(): boolean; + forceMotionState(motionStateHash: Hash, p2: boolean, p3: boolean, p4: boolean): boolean; + forceToOpenParachute(): void; + getAccuracy(): number; + getAlertness(): number; + getAmmoInClip(weapon: Hash): number; + getArmour(): number; + getBoneCoords(boneId: number, offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; + getBoneIndex(boneId: number): number; + getCauseOfDeath(): Hash; + getCombatFloat(ped: Handle, p1: number): number + getCombatMovement(): number; + getCombatRange(): number; + getConfigFlag(flagId: number, p2: boolean): boolean; + getDeadPickupCoords(p1: number, p2: number): Vector3Mp; + getDecorationsState(): number; + getDefensiveAreaPosition(p1: boolean): Vector3Mp; + getDesiredMoveBlendRatio(): number; + getDrawableVariation(componentId: number): number; + getEnveffScale(): number; + getExtractedDisplacement(worldSpace: boolean): Vector3Mp; + getFloodInvincibility(p1: boolean): void; + getGroupIndex(): number; + getHeadBlendData(headBlendData: { + shapeFirst: number; + shapeSecond: number; + shapeThird: number; + skinFirst: number; + skinSecond: number; + skinThird: number; + shapeMix: number; + skinMix: number; + thirdMix: number; + }): void; + getHeadOverlayValue(overlayID: number): number; + getIsTaskActive(taskNumber: number): boolean; + getJackTarget(): Handle; + getLastDamageBone(outBone: number): number; + getMaxHealth(): number; + getMeleeTargetFor(): Handle; + getMoney(): number; + getMount(): Handle; + getNavmeshRouteDistanceRemaining(p1: any, p2: any): any; + getNearbyPeds(sizeAndPeds: number, ignore: number): number; + getNearbyVehicles(sizeAndVehs: number): number; + getNumberOfDrawableVariations(componentId: number): number; + getNumberOfPropDrawableVariations(propId: number): number; + getNumberOfPropTextureVariations(propId: number, drawableId: number): number; + getNumberOfTextureVariations(componentId: number, drawableId: number): number; + getPaletteVariation(componentId: number): number; + getParachuteLandingType(): number; + getParachuteState(): number; + getParachuteTintIndex(tintIndex: number): number; + getPhoneGestureAnimCurrentTime(): number; + getPhoneGestureAnimTotalTime(): number; + getPlayerIsFollowing(): Handle; + getPropIndex(componentId: number): number; + getPropTextureIndex(componentId: number): number; + getRagdollBoneIndex(bone: number): number; + getRelationshipBetweens(ped2: Handle): void; + getRelationshipGroupDefaultHash(): Hash; + getRelationshipGroupHash(): Hash; + getResetFlag(flagId: number): boolean; + getScriptTaskStatus(taskHash: Hash): number; + getSeatIsTryingToEnter(): number; + getSequenceProgress(): number; + getsJacker(): Handle; + getSourceOfDeath(): Handle; + getTextureVariation(componentId: number): number; + getTimeOfDeath(): number; + getType(): number; + getVehicleIsIn(getLastVehicle: boolean): Handle; + getVehicleIsTryingToEnter(): Handle; + getVehicleIsUsing(): Handle; + giveHelmet(cannotRemove: boolean, helmetFlag: number, textureIndex: number): void; + giveNmMessage(): void; + giveWeapon(weapon: RageEnums.Hashes.Weapon | Hash, ammo: number, equipNow: boolean): void; + hasHeadBlendFinished(): boolean; + isActiveInScenario(): boolean; + isAimingFromCover(): boolean; + isBeingArrested(atArresting: boolean): boolean; + isBeingJacked(): boolean; + isBeingStealthKilled(): boolean; + isBeingStunned(p1: number): boolean; + isComponentVariationValid(componentId: number, drawableId: number, textureId: number): boolean; + isConversationDead(): boolean; + isCuffed(): boolean; + isDead(): boolean; + isDeadOrDying(p1: boolean): boolean; + isDiving(): boolean; + isDoingDriveby(): boolean; + isDrivebyTaskUnderneathDrivingTask(): boolean; + isDucking(): boolean; + isEvasiveDiving(evadingEntity: Handle): boolean; + isFacingPed(otherPed: Handle, angle: number): boolean; + isFalling(): boolean; + isFatallyInjured(): boolean; + isFleeing(): boolean; + isGettingIntoAVehicle(): boolean; + isGettingUp(): boolean; + isGoingIntoCover(): boolean; + isGroupMember(groupId: number): boolean; + isHangingOnToVehicle(): boolean; + isHeadtracking(entity: Handle): boolean; + isHeadtrackingPed(ped2: Handle): boolean; + isHuman(): boolean; + isHurt(): boolean; + isInAnyBoat(): boolean; + isInAnyHeli(): boolean; + isInAnyPlane(): boolean; + isInAnyPoliceVehicle(): boolean; + isInAnySub(): boolean; + isInAnyTaxi(): boolean; + isInAnyTrain(): boolean; + isInAnyVehicle(atGetIn: boolean): boolean; + isInCombat(target: Handle): boolean; + isInCoverFacingLeft(): boolean; + isInFlyingVehicle(): boolean; + isInGroup(): boolean; + isInjured(): boolean; + isInMeleeCombat(): boolean; + isInModel(modelHash: Hash): boolean; + isInParachuteFreeFall(): boolean; + isInVehicle(vehicle: Handle, atGetIn: boolean): boolean; + isInWrithe(): boolean; + isJacking(): boolean; + isJumpingOutOfVehicle(): boolean; + isMale(): boolean; + isModel(modelHash: Hash): boolean; + isMountedWeaponTaskUnderneathDrivingTask(): boolean; + isMoveBlendRatioRunning(): boolean; + isMoveBlendRatioSprinting(): boolean; + isMoveBlendRatioStill(): boolean; + isMoveBlendRatioWalking(): boolean; + isOnAnyBike(): boolean; + isOnFoot(): boolean; + isOnMount(): boolean; + isOnSpecificVehicle(vehicle: Handle): boolean; + isOnVehicle(): boolean; + isPerformingStealthKill(): boolean; + isPlantingBomb(): boolean; + isPlayingPhoneGestureAnim(): boolean; + isProne(): boolean; + isPropValid(componentId: number, drawableId: number, TextureId: number): boolean; + isRagdoll(): boolean; + isReloading(): boolean; + isRunning(): boolean; + isRunningArrestTask(): boolean; + isRunningMobilePhoneTask():boolean; + isRunningRagdollTask(): boolean; + isScriptedScenarioUsingConditionalAnim(animDict: string, anim: string): boolean; + isShooting(): boolean; + isShootingInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p7: boolean, p8: boolean): boolean; + isSittingInAnyVehicle(): boolean; + isSittingInVehicle(vehicle: Handle): boolean; + isSprinting(): boolean; + isStill(): boolean; + isStopped(): boolean; + isStrafing(): boolean; + isSwimming(): boolean; + isSwimmingUnderWater(): boolean; + isTracked(): boolean; + isTrackedVisible(): boolean; + isTryingToEnterALockedVehicle(): boolean; + isUsingActionMode(): boolean; + isUsingAnyScenario(): boolean; + isUsingScenario(scenario: string): boolean; + isVaulting(): boolean; + isWalking(): boolean; + isWearingHelmet(): boolean; + knockOffProp(p1: boolean, p2: boolean, p3: boolean, p4: boolean): void; + knockOffVehicle(): void; + playAnimOnRunningScenario(animDict: string, animName: string): void; + playFacialAnim(animName: string, animDict: string): void; + registerHatedTargetsAround(radius: number): void; + registerheadshot(): number; + registerTarget(target: Handle): void; + removeDefensiveArea(toggle: boolean): void; + removeFromGroup(): void; + removeHelmet(p2: boolean): void; + removePreferredCoverSet(): void; + removeWeapon(weapon: RageEnums.Hashes.Weapon | Hash): void; + removeAllWeapons(): void; + resetInVehicleContext(): void; + resetLastVehicle(): void; + resetMovementClipset(p1: number): void; + resetRagdollTimer(): void; + resetStrafeClipset(): void; + resetVisibleDamage(): void; + resetWeaponMovementClipset(): void; + resurrect(): void; + reviveInjured(): void; + setAccuracy(accuracy: number): void; + setAlertness(value:number): void; + setAllowedToDuck(toggle: boolean): void; + setAllowVehiclesOverride(toggle: boolean): void; + setAlternateMovementAnim(stance: number, animDictionary: string, animationName: string, p4: number, p5: boolean): void; + setAmmoInClip(weapon: RageEnums.Hashes.Weapon | Hash, ammo: number): void; + setAngledDefensiveArea(p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: boolean, p9: boolean): void; + setArmour(amount: number): void; + setAsCop(toggle: boolean): void; + setAsEnemy(toggle: boolean): void; + setAsGroupLeader(groupId: number): void; + setAsGroupMember(groupId: number): void; + setBlendFromParents(p1: any, p2: any, p3: number, p4: number): void; + setBlockingOfNonTemporaryEvents(toggle: boolean): void; + setBoundsOrientation(p1: number, p2: number, p3: number, p4: number, p5: number): void; + setCanArmIk(toggle: boolean): void; + setCanAttackFriendly(toggle: boolean, p2: boolean): void; + setCanBeDraggedOut(toggle: boolean): void; + setCanBeKnockedOffVehicle(state: number): void; + setCanBeShotInVehicle(toggle: boolean): void; + setCanBeTargetedWhenInjured(toggle: boolean): void; + setCanBeTargetedWithoutLos(toggle: boolean): void; + setCanBeTargetted(toggle: boolean): void; + setCanBeTargettedByPlayer(player: Handle, toggle: boolean): void; + setCanBeTargettedByTeam(team: number, toggle: boolean): void; + setCanCowerInCover(toggle: boolean): void; + setCanEvasiveDive(toggle: boolean): void; + setCanHeadIk(toggle: boolean): void; + setCanLegIk(toggle: boolean): void; + setCanPeekInCover(toggle: boolean): void; + setCanPlayAmbientAnims(toggle: boolean): void; + setCanPlayAmbientBaseAnims(toggle: boolean): void; + setCanPlayGestureAnims(toggle: boolean): void; + setCanPlayVisemeAnims(p1: boolean, p2: boolean): void; + setCanRagdoll(toggle: boolean): void; + setCanRagdollFromPlayerImpact(toggle: boolean): void; + setCanSmashGlass(p1: boolean, p2: boolean): void; + setCanSwitchWeapon(toggle: boolean): void; + setCanTeleportToGroupLeader(groupHandle: number, toggle: boolean): void; + setCanTorsoIk(toggle: boolean): void; + setCanUseAutoConversationLookat(toggle: boolean): void; + setCapsule(value: number): void; + setCombatAbility(p1: number): void; + setCombatAttributes(attributeIndex: number, enabled: boolean): void; + setCombatFloat(combatType: number, p2: number): void; + setCombatMovement(combatMovement: number): void; + setCombatRange(p1: number): void; + setComponentVariation(componentId: number, drawableId: number, textureId: number, paletteId: number): void; + setConfigFlag(flagId: number, value: boolean): void; + setCoordsKeepVehicle(posX: number, posY: number, posZ: number): void; + setCoordsNoGang(posX: number, posY: number, posZ: number): void; + setCowerHash(p1: string): void; + setDecoration(collection: Hash, overlay: Hash): void; + setDefaultComponentVariation(): void; + setDefensiveAreaAttachedToPed(attachPed: Handle, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: number, p8: number, p9: boolean, p10: boolean): void; + setDefensiveAreaDirection(p1: number, p2: number, p3: number, p4: boolean): void; + setDefensiveSphereAttachedToPed(p1: any, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; + setDesiredHeading(heading: number): void; + setDesiredMoveBlendRatio(p1: number): void; + setDiesInSinkingVehicle(toggle: boolean): void; + setDiesInstantlyInWater(toggle: boolean): void; + setDiesInVehicle(toggle: boolean): void; + setDiesInWater(toggle: boolean): void; + setDiesWhenInjured(toggle: boolean): void; + setDriveByClipsetOverride(clipset: string): void; + setDriverAbility(ability: number): void; + setDriverAggressiveness(aggressiveness: number): void; + setDriveTaskCruiseSpeed(cruiseSpeed: number): void; + setDriveTaskDrivingStyle(drivingStyle: number): void; + setDucking(toggle: boolean): void; + setEnableBoundAnkles(toggle: boolean): void; + setEnableEnveffScale(toggle: boolean): void; + setEnableHandcuffs(toggle: boolean): void; + setEnableScuba(toggle: boolean): void; + setEnableWeaponBlocking(toggle: boolean): void; + setEnveffScale(value: number): void; + setExclusivePhoneRelationships(): Handle; + setEyeColor(index: number): void; + setFaceFeature(index: number, scale: number): void; + setFacialDecoration(collection: Hash, overlay: Hash): void; + setFacialIdleAnimOverride(animName: string, animDict: string): void; + setFiringPattern(patternHash: Hash): void; + setFleeAttributes(attributes: number, p2: boolean): void; + setGeneratesDeadBodyEvents(toggle: boolean): void; + setGestureGroup(p1: any): void; + setGetOutUpsideDownVehicle(toggle: boolean): void; + setGravity(toggle: boolean): void; + setGroupMemberPassengerIndex(index: number): void; + setHairColor(colorID: number, highlightColorID: number): void; + setHeadBlendData(shapeFirstID: number, shapeSecondID: number, shapeThirdID: number, skinFirstID: number, + skinSecondID: number, skinThirdID: number, shapeMix: number, skinMix: number, thirdMix: number, isParent: boolean): void; + setHeadOverlay(overlayID: number, index: number, opacity: number, firstColor: number, secondColor: number): void; + setHeadOverlayColor(overlayID: number, colorType: number, colorID: number, secondColorID: number): void; + setHearingRange(value: number): void; + setHelmet(canWearHelmet: boolean): void; + setHelmetFlag(helmetFlag: number): void; + setHelmetPropIndex(propIndex: number): void; + setHelmetTextureIndex(textureIndex: number): void; + setHighFallTask(p1: any, p2: any, p3: any): void; + setIdRange(value: number): void; + setIkTarget(p1: number, targetPed: Handle, boneLookAt: number, x: number, y: number, z: number, p7: any, + duration: number, duration1: number): void; + setIntoVehicle(vehicle: Handle, seatIndex: number): void; + setInVehicleContext(context: Hash): void; + setKeepTask(toggle: boolean): void; + setLegIkMode(mode: number): void; + setLodMultiplier(multiplier: number): void; + setMaxHealth(value: number): void; + setMaxMoveBlendRatio(value: number): void; + setMaxTimeInWater(value: number): void; + setMaxTimeUnderwater(value: number): void; + setMinGroundTimeForStungun(ms: number): void; + setMinMoveBlendRatio(value: number): void; + setModelIsSuppressed(toggle: boolean): void; + setMoney(amount: number): void; + setMotionBlur(toggle: boolean): void; + setMountedWeaponTarget(targetEntity: Handle, p2: any, x: number, y: number, z: number): void; + setMoveAnimsBlendOut(): void; + setMovementClipset(clipSet: string, p2: number): void; + setMoveRateOverride(value: number): void; + setNameDebug(name: string): void; + setNeverLeavesGroup(toggle: boolean): void; + setParachuteTaskTarget(x: number, y: number, z: number): void; + setParachuteTaskThrust(thrust: number): void; + setParachuteTintIndex(tintIndex: number): void; + setPathAvoidFire(avoidFire: boolean): void; + setPathCanDropFromHeight(Toggle: boolean): void; + setPathCanUseClimbovers(Toggle: boolean): void; + setPathCanUseLadders(Toggle: boolean): void; + setPathPreferToAvoidWater(avoidWater: boolean): void; + setPathsWidthPlant(mayEnterWater: boolean): void; + setPinnedDown(pinned: boolean, i: number): void; + setPlaysHeadOnHornAnimWhenDiesInVehicle(toggle: boolean): void; + setPreferredCoverSet(itemSet: any): void; + setPrimaryLookat(lookAt: Handle): void; + setPropIndex(componentId: number, drawableId: number, TextureId: number, attach: boolean): void; + setRagdollFlag(flag: number): void; + setRagdollForceFall(): void; + setRagdollOnCollision(toggle: boolean): void; + setRandomComponentVariation(p1: boolean): void; + setRandomProps(): void; + setRelationshipGroupDefaultHash(hash: Hash): void; + setRelationshipGroupHash(hash: Hash): void; + setResetFlag(flagId: number, doReset: boolean): void; + setResetFlagPreferRearSeats(flags: number): void; + setResetRagdollFlag(flag: number): void; + setScriptedAnimSeatOffset(p1: number): void; + setSeeingRange(value: number): void; + setShootRate(shootRate: number): void; + setShootsAtCoord(x: number, y: number, z: number, toggle: boolean): void; + setSphereDefensiveArea(x: number, y: number, z: number, radius: number, p5: boolean, p6: boolean): void; + setStayInVehicleWhenJacked(toggle: boolean): void; + setStealthMovement(p1: boolean, action: string): void; + setSteersAroundObjects(toggle: boolean): void; + setSteersAroundPeds(toggle: boolean): void; + setSteersAroundVehicles(toggle: boolean): void; + setStrafeClipset(clipSet: string): void; + setSuffersCriticalHits(toggle: boolean): void; + setSweat(sweat: number): void; + setTargetLossResponse(responseType: number): void; + setTaskVehicleChaseBehaviorFlag(flag: number, set: boolean): void; + setTaskVehicleChaseIdealPursuitDistance(distance: number): void; + setToInformRespectedFriends(radius: number, maxFriends: number): void; + setToLoadCover(toggle: boolean): void; + setToRagdoll(time1: number, time2: number, ragdollType: number, p4: boolean, p5: boolean, p6: boolean): boolean; + setUsingActionMode(p1: boolean, p2: any, action: string): void; + setVisualFieldCenterAngle(angle: number): void; + setVisualFieldMaxAngle(value: number): void; + setVisualFieldMaxElevationAngle(angle: number): void; + setVisualFieldMinAngle(value: number): void; + setVisualFieldMinElevationAngle(angle: number): void; + setVisualFieldPeripheralRange(range: number): void; + setWeaponMovementClipset(clipSet: string): void; + setWetnessEnabledThisFrame(): void; + setWetnessHeight(height: number): void; + stopAnimPlayback(p1: any, p2: boolean): void; + stopAnimTask(animDictionary: string, animationName: string, p3: number): void; + stopWeaponFiringWhenDropped(): void; + taskAchieveHeading(heading: number, timeout: number): void; + taskAimGunAt(entity: Handle, duration: number, p3: boolean): void; + taskAimGunAtCoord(x: number, y: number, z: number, time: number, p5: boolean, p6: boolean): void; + taskAimGunScripted(scriptTask: Hash, p2: boolean, p3: boolean): void; + taskArrest(target: Handle): void; + taskBoatMission(boat: Handle, p2: any, p3: any, x: number, y: number, z: number, p7: any, maxSpeed: number, + p9: any, p10: number, p11: any): void; + taskChatTo(target: Handle, p2: any, p3: number, p4: number, p5: number, p6: number, p7: number): void; + taskClearLookAt(): void; + taskClimb(unused: boolean): void; + taskClimbLadder(p1: number): void; + taskCombat(targetPed: Handle, p2: number, p3: number): void; + taskCombatHatedTargetsAround(radius: number, p2: number): void; + taskCombatHatedTargetsInArea(x: number, y: number, z: number, radius: number, p5: any): void; + taskCower(duration: number): void; + taskDriveBy(targetPed: Handle, p2: any, targetX: number, targetY: number, targetZ: number, p6: number, p7: any, + p8: boolean, firingPattern: Hash): void; + taskEnterVehicle(vehicle: Handle, timeout: number, seat: number, speed: number, p5: number, p6: any): void; + taskFollowNavMeshToCoord(x: number, y: number, z: number, speed: number, timeout: number, stoppingRange: number, + persistFollowing: boolean, unk: number): void; + taskFollowNavMeshToCoordAdvanced(x: number, y: number, z: number, speed: number, timeout: number, unkFloat: number, + unkInt: number, unkX: number, unkY: number, unkZ: number, unk2: number): void; + taskFollowPointRoute(speed: number, unknown: number): void; + taskFollowToOffsetOf(entity: Handle, offsetX: number, offsetY: number, offsetZ: number, movementSpeed: number, + timeout: number, stoppingRange: number, persistFollowing: boolean): void; + taskForceMotionState(state: Hash, p2: boolean): void; + taskGetOffBoat(boat: Handle): void; + taskGoStraightToCoord(x: number, y: number, z: number, speed: number, timeout: number, targetHeading: number, + distanceToSlide: number): void; + taskGotoAiming(target: Handle, distanceToStopAt: number, StartAimingDist: number): void; + taskGoToCoordAndAimAtHatedEntitiesNearCoord(gotoX: number, gotoY: number, gotoZ: number, aimNearX: number, + aimNearY: number, aimNearZ: number, speed: number, shoot: boolean, unknown1: number, unknown2: number, + unkTrue: boolean, unknown3: number, heading: boolean, firingPattern: Hash): void; + taskGoToCoordAnyMeans(x: number, y: number, z: number, speed: number, p5: any, p6: boolean, walkingStyle: number, + p8: number): void; + taskGoToCoordAnyMeansExtraParams(x: number, y: number, z: number, speed: number, p5: any, p6: boolean, + walkingStyle: number, p8: number, p9: any, p10: any, p11: any): void; + taskGoToCoordAnyMeansExtraParamsWithCruiseSpeed(x: number, y: number, z: number, speed: number, p5: any, + p6: boolean, walkingStyle: number, p8: number, p9: any, p10: any, p11: any, p12: any): void; + taskGoToCoordWhileAimingAtCoord(x: number, y: number, z: number, aimAtX: number, aimAtY: number, aimAtZ: number, + moveSpeed: number, p8: boolean, p9: number, p10: number, p11: boolean, flags: any, p13: boolean, + firingPattern: Hash): void; + taskGuardCurrentPosition(p1: number, p2: number, p3: number): void; + taskGuardSphereDefensiveArea(p1: number, p2: number, p3: number, p4: number, p5: number, p6: any, p7: number, + p8: number, p9: number, p10: number): void; + taskHandsUp(duration: number, facingPed: Handle, p3: number, p4: boolean): void; + taskHeliChase(entityToFollow: Handle, x: number, y: number, z: number): void; + taskHeliMission(vehicle: Handle, p2: any, pedToFollow: Handle, posX: number, posY: number, posZ: number, + mode: number, speed: number, radius: number, angle: number, p11: number, height: number, p13: number, p14: number): void; + taskJump(unused: boolean): void; + taskLeaveAnyVehicle(p1: number, p2: number): void; + taskLeaveVehicle(vehicle: Handle, flags: number): void; + taskLookAt(lookAt: Handle, duration: number, unknown1: number, unknown2: number): void; + taskMoveNetwork(task: string, multiplier: number, p3: boolean, animDict: string, flags: number): void; + taskMoveNetworkAdvanced(p1: string, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: any, p9: number, p10: boolean, animDict: string, flags: number): void; + taskOpenVehicleDoor(vehicle: Handle, timeOut: number, doorIndex: number, speed: number): void; + taskParachute(p1: boolean): void; + taskParachuteToTarget(x: number, y: number, z: number): void; + taskPatrol(p1: string, p2: any, p3: boolean, p4: boolean): void; + taskPause(ms: number): void; + taskPerformSequence(taskSequence: Handle): void; + taskPlaneChase(entityToFollow: Handle, x: number, y: number, z: number): void; + taskPlaneLand(plane: Handle, runwayStartX: number, runwayStartY: number, runwayStartZ: number, runwayEndX: number, + runwayEndY: number, runwayEndZ: number): void; + taskPlaneMission(plane: Handle, targetVehicle: Handle, targetPed: Handle, destinationX: number, destinationY: number, + destinationZ: number, p7: number, physicsSpeed: number, p9: number, p10: number, maxAltitude: number, minAltitude: number): void; + taskPlantBomb(x: number, y: number, z: number, heading: number): void; + taskPlayAnim(animDictionary: string, animationName: string, speed: number, speedMultiplier: number, duration: number, + flag: number, playbackRate: number, lockX: boolean, lockY: boolean, lockZ: boolean): void; + taskPlayAnimAdvanced(animDict: string, animName: string, posX: number, posY: number, posZ: number, rotX: number, + rotY: number, rotZ: number, speed: number, speedMultiplier: number, duration: number, flag: any, + animTime: number, p14: any, p15: any): void; + taskPlayPhoneGestureAnimation(p1: any, p2: any, p3: any, p4: number, p5: number, p6: boolean, p7: boolean): void; + taskPutDirectlyIntoCover(x: number, y: number, z: number, timeout: any, p5: boolean, p6: number, p7: boolean, + p8: boolean, p9:object, p10: boolean): void; + taskPutDirectlyIntoMelee(meleeTarget: Handle, p2: number, p3: number, p4: number, p5: boolean): void; + taskRappelFromHeli(p1: number): void; + taskReactAndFlee(fleeTarget: Handle): void; + taskReloadWeapon(doReload: boolean): void; + taskScriptedAnimation(p1: any, p2: any, p3: any, p4: number, p5: number): void; + taskSeekCoverFrom(target: Handle, duration: number, p3: boolean): void; + taskSeekCoverToCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p7: any, p8: boolean): void; + taskSetBlockingOfNonTemporaryEvents(toggle: boolean): void; + taskSetDecisionMaker(p1: Hash): void; + taskShockingEventReact(eventHandle: number): void; + taskShootAtCoord(x: number, y: number, z: number, duration: number, firingPattern: Hash): void; + taskShuffleToNextVehicleSeat(vehicle: Handle): void; + taskSkyDive(): void; + taskSlideToCoord(x: number, y: number, z: number, heading: number, p5: number): void; + taskSlideToCoordHdgRate(x: number, y: number, z: number, heading: number, p5: number, p6: number): void; + taskSmartFlee(fleeTarget: Handle, distance: number, fleeTime: any, p4: boolean, p5: boolean): void; + taskSmartFleeCoord(x: number, y: number, z: number, distance: number, time: number, p6: boolean, p7: boolean): void; + taskStandGuard(x: number, y: number, z: number, heading: number, scenarioName: string): void; + taskStandStill(time: number): void; + taskStartScenarioAtPosition(scenarioName: string, x: number, y: number, z: number, heading: number, p6: any, + p7: boolean, p8: boolean): void; + taskStartScenarioInPlace(scenarioName: string, unkDelay: number, playEnterAnim: boolean): void; + taskStayInCover(): void; + taskStealthKill(target: Handle, killType: Hash, p3: number, p4: boolean): void; + taskStopPhoneGestureAnimation(): void; + taskSwapWeapon(p1: boolean): void; + taskSweepAim(anim: string, p2: string, p3: string, p4: string, p5: number, vehicle: Handle, p7: number, p8: number): void; + taskSynchronizedScene(scene: number, animDictionary: string, animationName: string, speed: number, + speedMultiplier: number, duration: number, flag: number, playbackRate: number, p9: any): void; + taskTurnToFace(entity: Handle, duration: number): void; + taskTurnToFaceCoord(x: number, y: number, z: number, duration: number): void; + taskUseMobilePhone(p1: number): void; + taskUseMobilePhoneTimed(duration: number): void; + taskUseNearestScenarioToCoordWarp(x: number, y: number, z: number, radius: number, p5: any): void; + taskVehicleAimAt(target: Handle): void; + taskVehicleChase(targetEnt: Handle): void; + taskVehicleDriveToCoord(vehicle: Handle, x: number, y: number, z: number, speed: number, p6: any, + vehicleModel: Hash, drivingMode: number, stopRange: number, p10: number): void; + taskVehicleDriveToCoordLongrange(vehicle: Handle, x: number, y: number, z: number, speed: number, driveMode: number, + stopRange: number): void; + taskVehicleDriveWander(vehicle: Handle, speed: number, drivingStyle: number): void; + taskVehicleEscort(vehicle: Handle, targetVehicle: Handle, mode: number, speed: number, drivingStyle: number, + minDistance: number, p7: number, noRoadsDistance: number): void; + taskVehicleFollow(vehicle: Handle, targetEntity: Handle, drivingStyle: number, speed: number, minDistance: number): void; + taskVehicleFollowWaypointRecording(vehicle: Handle, WPRecording: string, p3: number, p4: number, p5: number, + p6: number, p7: number, p8: boolean, p9: number): void; + taskVehicleGotoNavmesh(vehicle: Handle, x: number, y: number, z: number, speed: number, behaviorFlag: number, + stoppingRange: number): void; + taskVehicleHeliProtect(vehicle: Handle, entityToFollow: Handle, targetSpeed: number, p4: number, radius: number, + altitude: number, p7: number): void; + taskVehicleMissionCoorsTarget(vehicle: Handle, x: number, y: number, z: number, p5: number, p6: number, p7: number, + p8: number, p9: number, p10: boolean): void; + taskVehicleMissionTarget(vehicle: Handle, pedTarget: Handle, mode: number, maxSpeed: number, drivingStyle: number, + minDistance: number, p7: number, p8: boolean): void; + taskVehiclePark(vehicle: Handle, x: number, y: number, z: number, heading: number, mode: number, radius: number, + keepEngineOn: boolean): void; + taskVehicleTempAction(vehicle: Handle, action: number, time: number): void; + taskWanderInArea(x: number, y: number, z: number, radius: number, minimalLength: number, timeBetweenWalks: number): void; + taskWanderStandard(p1: number, p2: number): void; + taskWarpIntoVehicle(vehicle: Handle, seat: number): void; + taskWrithe(target: Handle, time: number, p3: number): void; + uncuff(): void; + unregisterheadshot(): void; + updateHeadBlendData(shapeMix: number, skinMix: number, thirdMix: number): void; + updateTaskAimGunScriptedTarget(p1: Handle, p2: number, p3: number, p4: number, p5: boolean): void; + updateTaskHandsUpDuration(duration: number): void; + wasKilledByStealth(): boolean; + wasKilledByTakedown(): boolean; + wasSkeletonUpdated(): boolean; +} + +interface PedMp extends PedBaseMp { + spawnPosition: Vector3Mp; +} + +interface PickupMp extends EntityMp { + +} + +interface PlayerMp extends PedBaseMp { + armour: number; + eyeColour: number; + hairColour: number; + hairHighlightColour: number; + heading: number; + health: number; + name: string; + p2pEnabled: boolean; + p2pConnected: boolean; + voiceAutoVolume: boolean; + voiceVolume: number; + voice3d: any; // TODO + weapon: Hash; + readonly action: string; + readonly aimTarget: boolean; + readonly ip: string; + readonly isAiming: boolean; + readonly isClimbing: boolean; + readonly isEnteringVehicle: boolean; + readonly isInCover: boolean; + readonly isJumping: boolean; + readonly isLeavingVehicle: boolean; + readonly isTypingInTextChat: boolean; + readonly isVoiceActive: boolean; + readonly ping: number; + readonly vehicle: VehicleMp; + + addVehicleSubtaskAttack(ped2: Handle): void; + addVehicleSubtaskAttackCoord(x: number, y: number, z: number): void; + call(eventName: string, ...args: any[]): void; + canPedHear(ped: Handle): boolean; + changePed(ped: Handle, b2: boolean, b3: boolean): void; + clearHasDamagedAtLeastOneNonAnimalPed(): void; + clearHasDamagedAtLeastOnePed(): void; + clearParachuteModelOverride(): void; + clearParachutePackModelOverride(): void; + clearParachuteVariationOverride(): void; + clearSecondaryTask(): void; + clearWantedLevel(): void; + explodeHead(weaponHash: Hash): void; + getCurrentStealthNoise(): number; + getGroup(): number; + getHasReserveParachute(): boolean; + getInvincible(): boolean; + getMaxArmour(): number; + getName(): string; + getParachutePackTintIndex(tintIndex: number): number; + getParachuteSmokeTrailColor(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getPed(): Handle; + getPedScriptIndex(): Handle; + getReserveParachuteTintIndex(tintIndex: number): number; + getRgbColour(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getSprintStaminaRemaining(): number; + getSprintTimeRemaining(): number; + getTeam(): number; + getUnderwaterTimeRemaining(): number; + getVoiceAttribute(attribute: any): any; // TODO + getWantedCentrePosition(): Vector3Mp; + getWantedLevel(): number; + giveRagdollControl(toggle: boolean): void; + hasBeenSpottedInStolenVehicle(): boolean; + hasDamagedAtLeastOneNonAnimalPed(): boolean; + hasDamagedAtLeastOnePed(): boolean; + hasLeftTheWorld(): boolean; + hasTeleportFinished(): boolean; + hasUseScenarioTask(): boolean; + hideBloodDamageByZone(p1: any, p2: boolean): void; + isControlOn(): boolean; + isFreeAiming(): boolean; + isFreeForAmbientTask(): boolean; + isPlaying(): boolean; + isPressingHorn(): boolean; + isReadyForCutscene(): boolean; + isRidingTrain(): boolean; + isScriptControlOn(): boolean; + isTargettingAnything(): boolean; + isWantedLevelGreater(wantedLevel: number): boolean; + resetArrestState(): void; + resetInputGait(): void; + resetStamina(): void; + setCanBeHassledByGangs(toggle: boolean): void; + setCanDoDriveBy(toggle: boolean): void; + setCanLeaveParachuteSmokeTrail(enabled: boolean): void; + setCanUseCover(toggle: boolean): void; + setClothPinFrames(toggle: boolean): void; + setControl(toggle: boolean, possiblyFlags: number): void; + setEveryoneIgnore(toggle: boolean): void; + setForcedAim(toggle: boolean): void; + setForcedZoom(toggle: boolean): void; + setForceSkipAimIntro(toggle: boolean): void; + setHasReserveParachute(): void; + setLockon(toggle: boolean): void; + setLockonRangeOverride(range: number): void; + setMaxArmour(value: number): void; + setMayNotEnterAnyVehicle(): void; + setMayOnlyEnterThisVehicle(vehicle: Handle): void; + setMeleeWeaponDamageModifier(modifier: number): void; + setModel(model: Hash): void; + setNoiseMultiplier(multiplier: number): void; + setParachuteModelOverride(model: Hash): void; + setParachutePackModelOverride(model: Hash): void; + setParachutePackTintIndex(tintIndex: number): void; + setParachuteSmokeTrailColor(r: number, g: number, b: number): void; + setParachuteVariationOverride(p1: number, p2: any, p3: any, p4: boolean): void; + setPoliceIgnore(toggle: boolean): void; + setReserveParachuteTintIndex(tintIndex: number): void; + setSimulateAiming(toggle: boolean): void; + setSneakingNoiseMultiplier(multiplier: number): void; + setSprint(toggle: boolean): void; + setStealthPerceptionModifier(value: number): void; + setTeam(team: number): void; + setVehicleDamageModifier(damageAmount: number): void; + setVehicleDefenseModifier(modifier: number): void; + setVoiceAttribute(attribute: any, value: any): void; // TODO + setWantedCentrePosition(x: number, y: number, z: number): void; + setWantedLevel(wantedLevel: number, disableNoMission: boolean): void; + setWantedLevelNoDrop(wantedLevel: number, p2: boolean): void; + setWantedLevelNow(p1: boolean): void; + setWeaponDamageModifier(damageAmount: number): void; + setWeaponDefenseModifier(modifier: number): void; + taskGotoOffset(p1: any, p2: any, x: number, y: number, z: number, duration: number): void; + taskGoToWhileAimingAtEntity(entityToWalkTo: Handle, entityToAimAt: Handle, speed: number, shootatEntity: boolean, + p5: number, p6: number, p7: boolean, p8: boolean, firingPattern: Hash): void; + taskVehicleShootAt(target: Handle, p2: number): void; + updateTaskSweepAim(entity: Handle): void; +} + +interface TextLabelMp extends EntityMp { + color: RGB; + drawDistance: number; + los: boolean; + text: string; +} + +interface VehicleMp extends EntityMp { + gear: number; + rpm: number; + steeringAngle: number; + + addUpsidedownCheck(): void; + areAllWindowsIntact(): boolean; + attachToCargobob(cargobob: Handle, p1: number, x: number, y: number, z: number): void; + attachToTowTruck(vehicle: Handle, rear: boolean, hookOffsetX: number, hookOffsetY: number, hookOffsetZ: number): void; + attachToTrailer(trailer: Handle, radius: number): void; + canShuffleSeat(p0: any): boolean; + cargobobMagnetGrab(toggle: boolean): void; + clearCustomPrimaryColour(): void; + clearCustomSecondaryColour(): void; + closeBombBayDoors(): void; + detachFromAnyCargobob(): boolean; + detachFromAnyTowTruck(): boolean; + detachFromCargobob(cargobob: Handle): void; + detachFromTowTruck(vehicle: Handle): void; + detachFromTrailer(): void; + detachWindscreen(): void; + disableImpactExplosionActivation(toggle: boolean): void; + disablePlaneAileron(p0: boolean, p1: boolean): void; + doesExtraExist(extraId: number): boolean; + doesHaveRoof(): boolean; + doesHaveStuckVehicleCheck(): boolean; + doesHaveWeapon(): boolean; + ejectJb700Roof(x: number, y: number, z: number): void; + enableCargobobHook(state: number): void; + explode(isAudible: boolean, isInvisble: boolean): void; + explodeInCutscene(p0: boolean): void; + fixWindow(index: number): void; + getAcceleration(): number; + getAttachedToCargobob(): Handle; + getAttachedToTowTruck(): Handle; + getBoatAnchor(): boolean; + getBodyHealth(): number; + getBodyHealth2(): number; + getCargobobHookPosition(): Vector3Mp; + getCauseOfDestruction(): Hash; + getClass(): number; + getColor(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getColourCombination(): number; + getColours(colorPrimary: number, colorSecondary: number): { + colorPrimary: number; + colorSecondary: number; + }; + getConvertibleRoofState(): number; + getCustomPrimaryColour(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getCustomSecondaryColour(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getDeformationAtPos(offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; + getDirtLevel(): number; + getDoorAngleRatio(door: number): number; + getDoorLockStatus(): number; + getDoorsLockedForPlayer(player: Handle): boolean; + getEngineHealth(): number; + getExtraColours(pearlescentColor: number, wheelColor: number): { + pearlescentColor: number; + wheelColor: number; + }; + getHandling(typeName: string): number | string; + getDefaultHandling(typeName: string): number | string; + getHeliEngineHealth(): number; + getHeliMainRotorHealth(): number; + getHeliTailRotorHealth(): number; + getIsEngineRunning(): number; + getIsLeftHeadlightDamaged(): boolean; + getIsPrimaryColourCustom(): boolean; + getIsRightHeadlightDamaged(): boolean; + getIsSecondaryColourCustom(): boolean; + getLandingGearState(): number; + getLastPedInSeat(seatIndex: number): Handle; + getLayoutHash(): Hash; + getLightsState(lightsOn: boolean, highbeamsOn: boolean): { + lightsOn: boolean; + highbeamsOn: boolean; + }; + getLivery(): number; + getLiveryCount(): number; + getLiveryName(liveryIndex: number): string; + getMaxBreaking(): number; + getMaxNumberOfPassengers(): number; + getMaxTraction(): number; + getMod(modType: number): number; + getModColor1(paintType: number, color: number, p2: number): { + paintType: number; + color: number; + p2: number; + }; + getModColor1TextLabel(p0: boolean): string; + getModColor2(paintType: number, color: number): { + paintType: number; + color: number; + p2: number; + }; + getModColor2TextLabel(): string; + getModKit(): number; + getModKitType(): number; + getModModifierValue(modType: number, modIndex: number): any; // TODO + getModSlotName(modType: number): string; + getModTextLabel(modType: number, modValue: number): string; + getModVariation(modType: number): boolean; + getNeonLightsColour(r: number, g: number, b: number): { + r: number; + g: number; + b: number; + }; + getNumberOfColours(): number; + getNumberOfPassengers(): number; + getNumberPlateText(): string; + getNumberPlateTextIndex(): number; + getNumModKits(): number; + getNumMods(modType: number): number; + getOwner(entity: Handle): boolean; + getPaintFade(): number; + getPedInSeat(index: number): Handle; + getPedUsingDoor(doorIndex: number): Handle; + getPetrolTankHealth(): number; + getPlateType(): number; + getSuspensionHeight(): number; + getTrailer(vehicle: Handle): Handle; + getTrainCarriage(cariage: number): Handle; + getTyresCanBurst(): boolean; + getTyreSmokeColor(r: number, g: number, b: number): { + r: number; + g: number; + b: number + }; + getVehicleTrailer(vehicle: Handle): Handle; + getWheelType(): number; + getWindowTint(): number; + isAConvertible(p0: boolean): boolean; + isAlarmActivated(): boolean; + isAnySeatEmpty(): boolean; + isAttachedToCargobob(vehicleAttached: Handle): boolean; + isAttachedToTowTruck(vehicle: Handle): boolean; + isAttachedToTrailer(): boolean; + isBig(): boolean; + isBumperBrokenOff(front: boolean): boolean; + isCargobobHookActive(): boolean; + isCargobobMagnetActive(): boolean; + isDamaged(): boolean; + isDoorDamaged(doorId: number): boolean; + isDriveable(p0: boolean): boolean; + isExtraTurnedOn(extraId: number): boolean; + isHeliPartBroken(p0: boolean, p1: boolean, p2: boolean): boolean; + isHighDetail(): boolean; + isInBurnout(): boolean; + isModel(model: Hash): boolean; + isNeonLightEnabled(index: number): boolean; + isOnAllWheels(): boolean; + isSearchlightOn(): boolean; + isSeatFree(seatIndex: number): boolean; + isSirenOn(): boolean; + isSirenSoundOn(): boolean; + isStolen(): boolean; + isStopped(): boolean; + isStoppedAtTrafficLights(): boolean; + isStuckOnRoof(): boolean; + isStuckTimerUp(p0: number, p1: number): boolean; + isTaxiLightOn(): boolean; + isToggleModOn(modType: number): boolean; + isTyreBurst(wheelId: number, completely: boolean): boolean; + isVisible(): boolean; + isWindowIntact(windowIndex: number): boolean; + jitter(p0: boolean, yaw: number, pitch: number, roll: number): void; + lowerConvertibleRoof(instantlyLower: boolean): void; + movable(): boolean; + openBombBayDoors(): void; + raiseConvertibleRoof(instantlyRaise: boolean): void; + releasePreloadMods(): void; + removeHighDetailModel(): void; + removeMod(modType: number): void; + removeUpsidedownCheck(): void; + removeWindow(windowIndex: number): void; + requestHighDetailModel(): void; + resetStuckTimer(reset: boolean): void; + resetWheels(toggle: boolean): void; + retractCargobobHook(): void; + rollDownWindow(windowIndex: number): void; + rollDownWindows(): void; + rollUpWindow(windowIndex: number): void; + setAlarm(state: boolean): void; + setAllowNoPassengersLockon(toggle: boolean): void; + setAllsSpawns(p0: boolean, p1: boolean, p2: boolean): void; + setAutomaticallyAttaches(p0: any, p1: any): void; + setBikeLeanAngle(x: number, y: number): void; + setBoatAnchor(toggle: boolean): void; + setBodyHealth(value: number): void; + setBrakeLights(toggle: boolean): void; + setBurnout(toggle: boolean): void; + setCanBeTargetted(state: boolean): void; + setCanBeUsedByFleeingPeds(toggle: boolean): void; + setCanBeVisiblyDamaged(state: boolean): void; + setCanBreak(toggle: boolean): void; + setCanRespray(state: boolean): void; + setCeilingHeight(p0: number): void; + setColourCombination(numCombos: number): void; + setColours(colorPrimary: number, colorSecondary: number): void; + setConvertibleRoof(p0: boolean): void; + setCreatesMoneyPickupsWhenExploded(toggle: boolean): void; + setCustomPrimaryColour(r: number, g: number, b: number): void; + setCustomSecondaryColour(r: number, g: number, b: number): void; + setDamage(xOffset: number, yOffset: number, zOffset: number, damage: number, radius: number, p5: boolean): void; + setDeformationFixed(): void; + setDirtLevel(dirtLevel: number): void; + setDisablePetrolTankDamage(toggle: boolean): void; + setDisablePetrolTankFires(toggle: boolean): void; + setDoorBreakable(doorIndex: number, isBreakable: boolean): void; + setDoorBroken(doorIndex: number, createDoorObject: boolean): void; + setDoorControl(doorIndex: number, speed: number, angle: number): void; + setDoorLatched(doorIndex: number, p1: boolean, p2: boolean, p3: boolean): void; + setDoorOpen(doorIndex: number, loose: boolean, openInstantly: boolean): void; + setDoorShut(doorIndex: number, closeInstantly: boolean): void; + setDoorsLocked(doorLockStatus: number): void; + setDoorsLockedForAllPlayers(toggle: boolean): void; + setDoorsLockedForPlayer(player: Handle, toggle: boolean): void; + setDoorsLockedForTeam(team: number, toggle: boolean): void; + setDoorsShut(closeInstantly: boolean): void; + setEngineCanDegrade(toggle: boolean): void; + setEngineHealth(health: number): void; + setEngineOn(value: boolean, instantly: boolean, otherwise: boolean): void; + setEnginePowerMultiplier(value: number): void; + setEngineTorqueMultiplier(value: number): void; + setExclusiveDriver(ped: Handle, p1: number): void; + setExplodesOnHighExplosionDamage(toggle: boolean): void; + setExtra(extraId: number, toggle: number): void; + setExtraColours(pearlescentColor: number, wheelColor: number): void; + setFixed(): void; + setForwardSpeed(speed: number): void; + setFrictionOverride(friction: number): void; + setFullbeam(toggle: boolean): void; + setGravity(toggle: boolean): void; + setHalt(distance: number, killEngine: number, unknown: boolean): void; + setHandbrake(toggle: boolean): void; + setHandling(typeName: string, value: number | string): void; + setHasBeenOwnedByPlayer(owned: boolean): void; + setHasStrongAxles(toggle: boolean): void; + setHeliBladesFullSpeed(): void; + setHeliBladeSpeed(speed: number): void; + setHelicopterRollPitchYawMult(multiplier: number): void; + setIndicatorLights(turnSignal: number, toggle: boolean): void; + setInteriorLight(toggle: boolean): void; + setIsConsideredByPlayer(toggle: boolean): void; + setIsStolen(isStolen: boolean): void; + setIsWanted(state: boolean): void; + setJetEngineOn(toggle: boolean): void; + setLandingGear(state: number): void; + setLightMultiplier(multiplier: number): void; + setLights(state: number | boolean): void; + setLivery(livery: number): void; + setLodMultiplier(multiplier: number): void; + setMissionTrainCoords(x: number, y: number, z: number): void; + setMod(modType: number, modIndex: number): void; + setModColor1(paintType: number, color: number, p2: number): void; + setModColor2(paintType: number, color: number): void; + setModKit(modKit: number): void; + setNameDebug(name: string): void; + setNeedsToBeHotwired(toggle: boolean): void; + setNeonLightEnabled(index: number, toggle: boolean): void; + setNeonLightsColour(r: number, g: number, b: number): void; + setNumberPlateText(plateText: string): void; + setNumberPlateTextIndex(plateIndex: number): void; + setOnGroundProperly(): boolean; + setOutOfControl(killDriver: boolean, explodeOnImpact: boolean): void; + setPaintFade(fade: number): void; + setPedEnabledBikeRingtone(p0: any): boolean; + setPedTargettableDestory(vehicleComponent: number, destroyType: number): void; + setPetrolTankHealth(fix: number): void; + setPlaneMinHeightAboveGround(height: number): void; + setPlaybackToUseAi(flag: number): void; + setPlayersLast(): void; + setProvidesCover(toggle: boolean): void; + setReduceGrip(toggle: boolean): void; + setRenderTrainAsDerailed(toggle: boolean): void; + setRudderBroken(p0: boolean): void; + setSearchlight(toggle: boolean, canBeUsedByAI: boolean): void; + setSilent(toggle: boolean): void; + setSiren(toggle: boolean): void; + setSteerBias(value: number): void; + setStrong(toggle: boolean): void; + setTaxiLights(state: boolean): void; + setTimedExplosion(ped: Handle, toggle: boolean): void; + setTowTruckCraneHeight(height: number): void; + setTrainCruiseSpeed(speed: number): void; + setTrainSpeed(speed: number): void; + setTyreBurst(tyreIndex: number, onRim: boolean, p2: number): void; + setTyreFixed(tyreIndex: number): void; + setTyresCanBurst(toggle: boolean): void; + setTyreSmokeColor(r: number, g: number, b: number): void; + setUndriveable(toggle: boolean): void; + setWheelsCanBreak(enabled: boolean): void; + setWheelsCanBreakOffWhenBlowUp(toggle: boolean): void; + setWheelType(wheelType: number): void; + setWindowTint(tint: number): void; + smashWindow(index: number): void; + startAlarm(): void; + startHorn(duration: number, model: Hash, forever: boolean): void; + steerUnlockBias(toggle: boolean): void; + toggleMod(modType: number, toggle: boolean): void; + trackVisibility(): void; + wasCounterActivated(p0: any): boolean; +} + +// ------------------------------------------------------------------------- +// Simple MP types +// ------------------------------------------------------------------------- + +interface BrowserMp { + active: boolean; + url: string; + + destroy(): void; + execute(code: string): void; + markAsChat(): void; + reload(ignoreCache: boolean): void; + call(eventName: string, ...args: any[]): void; + callProc(procName: string, ...args: any[]): Promise; + executeCached(code: string): void; +} + +interface CameraMp { + handle: Handle; + + animatedShake(p0: string, p1: string, p2: string, p3: number): void; + attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, + zRot: number, p8: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, + fixedRot: boolean): void; + attachTo(entity: Handle, xOffset: number, yOffset: number, zOffset: number, isRelative: boolean): void; + attachToPedBone(ped: Handle, boneIndex: number, x: number, y: number, z: number, heading: boolean): void; + destroy(destroy?: boolean): void; + detach(): void; + doesExist(): boolean; + getAnimCurrentPhase(): number; + getCoord(): Vector3Mp; + getDirection(): Vector3Mp; + getFarClip(): number; + getFarDof(): number; + getFov(): number; + getNearClip(): number; + getRot(p0: number): Vector3Mp; + getSplinePhase(): number; + isActive(): boolean; + isInterpolating(): boolean; + isPlayingAnim(animName: string, animDictionary: string): boolean; + isRendering(): boolean; + isShaking(): boolean; + playAnim(animName: string, animDictionary: string, x: number, y: number, z: number, xRot: number, yRot: number, + zRot: number, p8: boolean, p9: number): void; + playAnim(animName: string, propName: string, p2: number, p3: boolean, p4: boolean, p5: boolean, delta: number, + bitset: any): boolean; + pointAt(entity: EntityMp, offsetX: number, offsetY: number, offsetZ: number, p4: boolean): void; + pointAtCoord(x: number, y: number, z: number): void; + pointAtPedBone(ped: Handle, boneIndex: number, x: number, y: number, z: number, heading: boolean): void; + setActive(active: boolean): void; + setActiveWithInterp(camFrom: Handle, duration: number, easeLocation: number, easeRotation: number): void; + setAffectsAiming(toggle: boolean): void; + setAnimCurrentPhase(phase: number): void; + setCoord(posX: number, posY: number, posZ: number): void; + setDebugName(name: string): void; + setDofFnumberOfLens(p1: number): void; + setDofFocusDistanceBias(p0: number): void; + setDofMaxNearInFocusDistance(p0: number): void; + setDofMaxNearInFocuxDistanceBlendLevel(p0: number): void; + setDofPlanes(p0: number, p1: number, p2: number, p3: number): void; + setDofStrength(dofStrength: number): void; + setFarClip(farClip: number): void; + setFarDof(farDof: number): void; + setFov(fieldOfView: number): void; + setInheritRollVehicle(p1: boolean): void; + setMotionBlurStrength(strength: number): void; + setNearClip(nearClip: number): void; + setNearDof(nearDof: number): void; + setParams(x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, fov: number, duration: number, + p8: number, p9: number, p10: number): void; + setRot(rotX: number, rotY: number, rotZ: number, p3: number): void; + setShakeAmplitude(amplitude: number): void; + setUseShallowDofMode(toggle: boolean): void; + shake(type: string, amplitude: number): void; + stopPointing(): void; + stopShaking(p0: boolean): void; +} + +interface ConsoleMp { + logInfo(message: string, save?: boolean, saveAsync?: boolean): void; + logWarning(message: string, save?: boolean, saveAsync?: boolean): void; + logError(message: string, save?: boolean, saveAsync?: boolean): void; + logFatal(message: string, save?: boolean, saveAsync?: boolean): void; + clear(): void; + reset(): void; + verbosity: RageEnums.ConsoleVerbosity | string; +} + +interface DiscordMp { + update(status: string, state: string): void; +} + +interface KeysMp { + bind(keyCode: number, keyHold: boolean, handler: Function): void; + isUp(keyCode: number): boolean; + isDown(keyCode: number): boolean; + unbind(keyCode: number, keyHold: boolean, handler?: Function): void; +} + +interface NametagsMp { + enabled: boolean; + + set(style: { + font: number; + outline: boolean; + offset: number; + veh_offset: number; + color: RGBA; + size: number; + + hbar?: { + size: [number, number]; + color: RGBA; + bg_color: RGBA; + } + }): void; +} + +interface RaycastingMp { + testPointToPoint(startPos: Vector3Mp, endPos: Vector3Mp, ignoreEntity?: Handle, flags?: number): RaycastResult; // TODO: ignoreEntity + testCapsule(startPos: Vector3Mp, endPos: Vector3Mp, radius: number, ignoreEntity?: Handle, flags?: number[]): RaycastResult; // TODO: ignoreEntity +} + +interface StorageMp { + data: { [key: string]: any }; + + flush(): void; +} + +interface SystemMp { + isFullscreen: boolean; + isFocused: boolean; + notify(args: { + title: string, + text: string, + attribute: string, + duration: number, + silent: boolean + }): void; +} + +interface UserMp { + preferences: UserPreferencesMp; +} + +interface UserPreferencesMp { + lowQualityAssets: boolean; + language: string; +} + +interface VoiceChatMp { + minVad: number; + muted: boolean; + readonly isAllowed: boolean; + readonly lastVad: number; + + getPreprocessingParam(param: number): any; // TODO + setPreprocessingParam(param: number, value: any): void; // TODO + cleanupAndReload(p0: boolean, p1: boolean, p2: boolean): void; +} + +// ------------------------------------------------------------------------- +// Game MP types +// ------------------------------------------------------------------------- + +interface GameAppMp { + appDeleteAppData(appName: string): boolean; + appGetFloat(property: string): number; + appGetString(property: string): string; + appGetInt(property: string): number; + appHasSyncedData(property: string): boolean; + appSetApp(appName: string): void; + appSetBlock(blockName: string): void; + appSetFloat(property: string, value: number): void; + appSetInt(property: string, value: number): void; + appSetString(property: string, value: string): void; +} + +interface GameAudioMp { + addLineToConversation(p0: any, p1: any, p2: any, p3: any, p4: any, p5: boolean, p6: boolean, + p7: boolean, p8: boolean, p9: any, p10: boolean, p11: boolean, p12: boolean): void; + addPedToConversation(p0: any, p1: any, p2: string): void; + cancelMusicEvent(eventName: string): boolean; + clearAmbientZoneListState(p0: any, p1: boolean): void; + clearAmbientZoneState(p0: any, p1: boolean): void; + findRadioStationIndex(station: number): number; + freezeRadioStation(radioStation: string): void; + getNetworkIdFromSoundId(soundId: number): number; + getNumberOfPassengerVoiceVariations(p0: any): number; + getPlayerHeadsetSoundAlternate(p0: string, p1: number): void; + getRadioStationName(radioStation: number): string; + getSoundIdFromNetworkId(netId: number): number; + getSynchronizedAudioEventPositionThisFrame(p0: string, p1: Handle): void; + getVehicleDefaultHorn(vehicle: Handle): Hash; + hasSoundFinished(soundId: number): boolean; + hintAmbientAudioBank(p0: any, p1: any): void; + hintScriptAudioBank(p0: any, p1: any): void; + interruptConversation(p0: any, p1: any, p2: any): void; + isAlarmPlayer(alarmName: string): boolean; + isAmbientSpeechPlaying(p0: Handle): boolean; + isAmbientZoneEnabled(ambientZone: string): boolean; + isAudioSceneActive(scene: string): boolean; + isScriptedSpeechPlaying(p0: any): boolean; + loadStream(streamName: string, soundSet: string): boolean; + loadStreamWithStartOffset(streamName: string, startOffset: number, soundSet: string): boolean; + overrideTrevorRage(p0: any): void; + overrideUnderwaterStream(p0: any, p1: boolean): void; + pauseScriptedConversation(p0: boolean): void; + playAmbientSpeechAtCoords(p0: string, p1: string, p2: number, p3: number, p4: number, p5: string): void; + playAmbientSpeechWithVoice(p0: Handle, speechName: string, voiceName: string, speechParam: string, + p4: boolean): void; + playEndCreditsMusic(play: boolean): void; + playMissionCompleteAudio(audioName: string): void; + playPain(painId: number, p1: number, p2: number): void; + playPedRingtone(ringtoneName: string, ped: Handle, p2: boolean): void; + playPoliceReport(name: string, p1: number): void; + playSound(soundId: number, audioName: string, audioRef: string, p3: boolean, p4: any, p5: boolean): void; + playSoundFromCoord(soundId: number, audioName: string, x: number, y: number, z: number, audioRef: string, p6: boolean, + p7: any, p8: boolean): void; + playSoundFromEntity(soundId: number, audioName: string, entity: Handle, audioRef: string, p4: boolean, p5: any): void; + playSoundFrontend(soundId: number, audioName: string, audioRef: string, p3: boolean): void; + playStreamFromObject(object: Handle): void; + playSynchronizedAudioEvent(p0: any): boolean; + preloadScriptConversation(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; + preloadScriptPhoneConversation(p0: boolean, p1: boolean): void; + prepareAlarm(alarmName: string): boolean; + prepareMusicEvent(eventName: string): boolean; + prepareSynchronizedAudioEvent(p0: string, p1: any): void; + prepareSynchronizedAudioEventForScene(p0: any, p1: any): boolean; + registerScriptWithAudio(p0: any): void; + releasedNamedScriptAudioBank(audioBank: string): void; + releaseSoundId(soundId: number): void; + requestAmbientAudioBank(p0: string, p1: boolean): boolean; + requestMissionAudioBank(p0: string, p1: boolean): boolean; + requestScriptAudioBank(p0: string, p1: boolean): boolean; + resetPedAudioFlags(p0: any): void; + setAggressiveHorns(toggle: boolean): void; + setAmbientZoneListState(p0: any, p1: boolean, p2: boolean): void; + setAmbientZoneListStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void; + setAmbientZoneState(p0: any, p1: boolean, p2: boolean): void; + setAmbientZoneStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void; + setAnimalMood(p0: any, p1: any): void; + setAudioFlag(flagName: string, toggle: boolean): void; + setAudioSceneVariable(p0: any, p1: any, p2: number): void; + setCutsceneAudioOverride(p0: string): void; + setEmitterRadioStation(emitterName: string, radioStation: string): void; + setFrontendRadioActive(active: boolean): void; + setGpsActive(active: boolean): void; + setInitialPlayerStation(radioStation: string): void; + setMicrophonePosition(p0: boolean, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, x3: number, + y3: number, z3: number): void; + setMobilePhoneRadioState(state: boolean): void; + setMobileRadioEnabledDuringGameplay(toggle: boolean): void; + setPlayerAngry(playerPed: Handle, disabled: boolean): void; + setRadioAutoUnfreeze(p0: boolean): void; + setRadioToStationIndex(radioStation: number): void; + setRadioToStationName(stationName: string): void; + setRadioTrack(radioStation: string, radioTrack: string): void; + setStaticEmitterEnabled(emitterName: string, toggle: boolean): void; + setUserRadioControlEnabled(p0: boolean): void; + setVariableOnSound(soundId: number, p1: any, p2: number): void; + setVariableOnStream(p0: string, p1: number): void; + specialFrontendEqual(x: number, y: number, z: number): void; + startAlarm(alarmName: string, p2: boolean): void; + startAudioScene(sceneName: string): boolean; + startScriptConversation(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; + startScriptPhoneConversation(p0: boolean, p1: boolean): void; + stopAlarm(alarmName: string, toggle: boolean): void; + stopAllAlarms(stop: boolean): void; + stopAudioScene(scene: string): void; + stopCurrentPlayerAmbientSpeech(p0: Handle): void; + stopScriptedConversation(p0: boolean): void; + stopSound(soundId: number): void; + stopSynchronizedAudioEvent(p0: any): boolean; + triggerMusicEvent(eventName: string): boolean; + unfreezeRadioStation(radioStation: string): void; + unlockMissionNewsStory(newsStory: number): void; +} + +interface GameBrainMp { + addScriptToRandom(name: string, model: Hash, p2: number, p3: number): void; + disableScriptBrainSet(brainSet: number): void; + enableScriptBrainSet(brainSet: number): void; + isObjectWithinBrainActivationRange(object: Handle): boolean; + registerObjectScriptBrain(stringName: string, p1: Hash, p2: number, p3: number, p4: number, p5: number): void; + registerWorldPointScriptBrain(p0: any, p1: number, p2: any): void; +} + +interface GameCamMp { + addCamSplineNode(camera: number, x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, + length: number, p8: number, p9: number): void; + animateGameplayCamZoom(p0: number, distance: number): void; + clampGameplayCamPitch(minimum: number, maximum: number): void; + clampGameplayCamYaw(minimum: number, maximum: number): void; + createCam(camName: string, p1: boolean): Handle; + createCamera(camHash: number, p1: boolean): Handle; + createCameraWithParams(camHash: number, posX: number, posY: number, posZ: number, rotX: number, rotY: number, + rotZ: number, fov: number, p8: boolean, p9: any): Handle; + createCamWithParams(camName: string, posX: number, posY: number, posZ: number, rotX: number, rotY: number, + rotZ: number, fov: number, p8: boolean, p9: any): Handle; + createCinematicShot(p0: any, p1: number, p2: any, entity: Handle): void; + destroyAllCams(destroy: boolean): void; + doScreenFadeIn(duration: number): void; + doScreenFadeOut(duration: number): void; + getCamSplineNodeIndex(cam: number): boolean; + getCamSplineNodePhase(p0: any): number; + getGameplayCamRelativeHeading(): number; + getGameplayCamRot(p0: number): Vector3Mp; + getGameplayCamRot(p0: number): Vector3Mp; + getIsMultiplayerBrief(p0: boolean): void; + isCamSplinePaused(p0: any): boolean; + isCinematicShotActive(p0: any): boolean; + isSphereVisible(x: number, y: number, z: number, radius: number): boolean; + overrideCamSplineMotionBlur(p0: any, p1: any, p2: number, p3: number): void; + overrideCamSplineVelocity(cam: number, p1: number, p2: number, p3: number): void; + playSynchronizedCamAnim(p0: any, p1: any, animName: string, animDictionary: string): boolean; + renderScriptCams(render: boolean, ease: boolean, easeTime: number, p3: boolean, p4: boolean): void; + setCamEffect(p0: number): void; + setCamSplineDuration(cam: number, timeDuration: number): void; + setCamSplinePhase(cam: number, p1: number): void; + setCinematicButtonActive(p0: boolean): void; + setCinematicCamShakeAmplitude(p0: number): void; + setCinematicModeActive(p0: boolean): void; + setFollowPedCamCutsceneChat(p0: string, p1: number): void; + setFollowPedCamViewMode(viewMode: number): void; + setFollowVehicleCamViewMode(viewMode: number): void; + setFollowVehicleCamZoomLevel(zoomLevel: number): void; + setGameplayCamRawPitch(pitch: number): void; + setGameplayCamRawYaw(yaw: number): void; + setGameplayCamRelativeHeading(heading: number): void; + setGameplayCamRelativePitch(x: number, p1: number): void; + setGameplayCamShakeAmplitude(amplitude: number): void; + setGameplayCoordHint(p0: number, p1: number, p2: number, p3: any, p4: any, p5: any, p6: any): void; + setGameplayEntityHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, p7: any, + p8: any): void; + setGameplayHintFov(fov: number): void; + setGameplayObjectHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, + p7: any): void; + setGameplayPedHint(p0: Handle, x1: number, y1: number, z1: number, p4: boolean, p5: any, p6: any, p7: any): void; + setGameplayVehicleHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, + p7: any): void; + setTimeIdleDrop(p0: boolean, p1: boolean): void; + setWidescreenBorders(p0: boolean, p1: number): void; + shakeCinematicCam(p0: string, p1: number): void; + shakeGameplayCam(shakeName: string, intensity: number): void; + stopCinematicCamShaking(p0: boolean): void; + stopCinematicShot(p0: any): void; + stopGameplayCamShaking(p0: boolean): void; + stopGameplayHint(p0: boolean): void; +} + +interface GameControlsMp { + useDefaultVehicleEntering: boolean; + + disableAllControlActions(inputGroup: number): void; + disableControlAction(inputGroup: number, control: number, disable: boolean): void; + enableAllControlActions(inputGroup: number): void; + enableControlAction(inputGroup: number, control: number, enable: boolean): void; + getControlActionName(inputGroup: number, control: number, p2: boolean): string; + getControlNormal(inputGroup: number, control: number): number; + getControlValue(inputGroup: number, control: number): number; + getDisabledControlNormal(inputGroup: number, control: number): number; + isControlEnabled(inputGroup: number, control: number): boolean; + isControlJustPressed(inputGroup: number, control: number): boolean; + isControlJustReleased(inputGroup: number, control: number): boolean; + isControlPressed(inputGroup: number, control: number): boolean; + isControlReleased(inputGroup: number, control: number): boolean; + isDisabledControlJustPressed(inputGroup: number, control: number): boolean; + isDisabledControlJustReleased(inputGroup: number, control: number): boolean; + isDisabledControlPressed(inputGroup: number, control: number): boolean; + isInputDisabled(inputGroup: number): boolean; + isInputJustDisabled(inputGroup: number): boolean; + setControlNormal(inputGroup: number, control: number, amount: number): boolean; + setInputExclusive(inputGroup: number, control: number): void; + setPadShake(p0: number, duration: number, frequency: number): void; + setPlayerpadShakesWhenControllerDisabled(toggle: boolean): void; + stopPadShake(p0: any): void; +} + +interface GameCutsceneMp { + setCutscenePedPropVariation(cutsceneEntName: string, p1: number, p2: number, p3: number, modelHash: Hash): void; + getEntityIndexOfCutsceneEntity(cutsceneEntName: string, modelHash: Hash): EntityMp; + startCutscene(p0: number): void; + startCutsceneAtCoords(x: number, y: number, z: number, p3: number): void; + hasThisCutsceneLoaded(cutsceneName: string): boolean; + doesCutsceneEntityExist(cutsceneEntName: string, modelHash: Hash): boolean; + canSetExitStateForRegisteredEntity(cutsceneEntName: string, modelHash: Hash): boolean; + canSetEnterForRegisteredEntity(cutsceneEntName: string, modelHash: Hash): boolean; + requestCutscene(cutsceneName: string, p1: number): void; + setCutsceneFadeValues(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; + setCutsceneTriggerArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; + canSetExitStateForCamera(p0: boolean): boolean; + setCutsceneOrigin(p0: any, p1: any, p2: any, p3: any, p4: any): void; + setCutscenePedComponentVariation(cutsceneEntName: string, p1: number, p2: number, p3: number, modelHash: number): void; + getEntityIndexOfRegisteredEntity(cutsceneEntName: string, modelHash: Hash): EntityMp; + requestCutscene2(cutsceneName: string, p1: number, p2: number): void; + stopCutscene(p0: boolean): void; + registerEntityForCutscene(cutscenePed: Handle, cutsceneEntName: string, p2: number, modelHash: number, p4: number): void; +} + +interface GameDatafileMp { + arrayValueAddBoolean(arrayData: any, value: boolean): void; + arrayValueAddFloat(arrayData: any, value: number): void; + arrayValueAddInteger(arrayData: any, value: number): void; + arrayValueAddObject(arrayData: any): void; + arrayValueAddString(arrayData: any, value: string): void; + arrayValueAddVector3(arrayData: any, valueX: number, valueY: number, valueZ: number): void; + arrayValueGetBoolean(arrayData: any, arrayIndex: number): boolean; + arrayValueGetFloat(arrayData: any, arrayIndex: number): number; + arrayValueGetInteger(arrayData: any, arrayIndex: number): number; + arrayValueGetObject(arrayData: any, arrayIndex: number): any; + arrayValueGetSize(arrayData: any): number; + arrayValueGetString(arrayData: any, arrayIndex: number): string; + arrayValueGetType(arrayData: any, arrayIndex: number): number; + arrayValueGetVector3(arrayData: any, arraayIndex: number): Vector3Mp; + loadUgcFile(filename: string): boolean; + objectValueAddArray(objectData: any, key: string): void; + objectValueAddBoolean(arrayData: any, key: string, value: boolean): void; + objectValueAddFloat(objectData: any, key: string, value: number): void; + objectValueAddInteger(objectData: any, key: string, value: number): void; + objectValueAddObject(objectData: any, key: string): void; + objectValueAddString(objectData: any, key: string, value: string): void; + objectValueAddVector3(objectData: any, key: string, valueX: number, valueY: number, valueZ: number): void; + objectValueGetArray(objectData: any, key: string): any; + objectValueGetBoolean(objectData: any, key: string): boolean; + objectValueGetFloat(objectData: any, key: string): number; + objectValueGetInteger(objectData: any, key: string): number; + objectValueGetObject(objectData: any, key: string): void; + objectValueGetString(objectData: any, key: string): string; + objectValueGetType(objectData: any, key: string): number; + objectValueGetVector3(objectData: any, key: string): Vector3Mp; + +} + +interface GameDecisioneventMp { + addShockingEventAtPosition(type: number, x: number, y: number, z: number, duration: number): GameScriptMp; + addShockingEventForEntity(type: number, entity: Handle, duration: number): GameScriptMp; + blockDecisionMakerEvent(name: Hash, type: number): void; + clearDecisionMakerEventResponse(name: Hash, type: number): void; + isShockingEventInSphere(type: number, x: number, y: number, z: number, radius: number): boolean; + removeAllShockingEvents(p0: boolean): void; + removeShockingEvent(event: GameScriptMp): boolean; + suppressShockingEvent(type: number): void; + unblockDecisionMakerEvent(name: Hash, type: number): void; +} + +interface GameDecoratorMp { + decorIsRegisteredAsType(propertyName: string, type: number): boolean; + decorRegister(propertyName: string, type: number): void; +} + +interface GameDlc1Mp { + getDlcVehicleData(dlcVehicleIndex: number, outData: any): boolean; + getDlcVehicleFlags(p0: number): number; + getDlcVehicleModel(dlcVehicleIndex: number): Hash; + getDlcWeaponComponentData(p0: any, p1: any, + componentDataPtr: { + attachBone: number; + padding1: number; + bActiveByDefault: number; + padding2: number; + unk: number; + padding3: number; + componentHash: number; + padding4: number; + unk2: number; + padding5: number; + componentCost: number; + padding6: number; + nameLabel: string; + descLabel: string; + } + ): boolean; + getDlcWeaponData(dlcWeaponIndex: number, + outData: { + emptyCheck: number; + padding1: number; + weaponHash: number; + padding2: number; + unk: number; + padding3: number; + weaponCost: number; + padding4: number; + ammoCost: number; + padding5: number; + ammoType: number; + padding6: number; + defaultClipSize: number; + padding7: number; + nameLabel: string; + descLabel: string; + desc2Label: string; + upperCaseNameLabel: string; + } + ): boolean; + getForcedComponent(componentHash: Hash, componentId: number, p2: any, p3: any, p4: any): void; + getNumDlcWeaponComponents(dlcWeaponIndex: number): number; + getNumForcedComponents(componentHash: Hash): number; + getNumPropsFromOutfit(p0: number, p1: number, p2: number, p3: boolean, p4: number, componentId: number): number; + getPropFromOutfit(outfit: any, slot: number, item: any): boolean; + getShopPedComponent(p0: any, p1: any): void; + getShopPedOutfit(p0: any, p1: any): void; + getShopPedQueryComponent(componentId: number, outComponent: number): number; + getShopPedQueryOutput(p0: any, + outfit: { + mask: number; + torso: number; + pants: number; + parachute: number; + shoes: number; + misc1: number; + tops1: number; + armour: number; + crew: number; + tops2: number; + hat: number; + glasses: number; + earpiece: number; + maskTexture: number; + torsoTexture: number; + pantsTexture: number; + parachuteTexture: number; + shoesTexture: number; + misc1Texture: number; + tops1Texture: number; + armourTexture: number; + crewTexture: number; + tops2Texture: number; + hatTexture: number; + glassesTexture: number; + earpiceTexture: number; + } + ): void; + getShopPedQueryProp(p0: any, p1: any): void; + getVariantComponent(componentHash: Hash, componentId: number, p2: any, p3: any, p4: any): void; + initShopPedComponent(outComponent: number): number; + initShopPedProp(outProp: number): number; + isDlcDataEmpty(dlcData: number): boolean; +} + +interface GameDlc2Mp { + isDlcPresent(dlcHash: Hash): boolean; + nullify(variable: any, unused: any): boolean; +} + +interface GameEntityMp { + createForcedObject(x: number, y: number, z: number, p3: any, modelHash: Hash, p5: boolean): void; + createModelHide(x: number, y: number, z: number, radius: number, model: Hash, p5: boolean): void; + createModelHideExcludingScriptObjects(x: number, y: number, z: number, radius: number, model: Hash, + p5: boolean): void; + createModelSwap(x: number, y: number, z: number, radius: number, originalModel: Hash, + newModel: Hash, p6: boolean): void; + findAnimEventPhase(animDictionary: string, animName: string, p2: string, p3: any, p4: any): boolean; + getEntityAnimDuration(animDict: string, animName: string): number; + isAnEntity(handle: Handle): boolean; + playSynchronizedMapEntityAnim(p0: number, p1: number, p2: number, p3: number, p4: any, p5: any, p6: any, + p7: any, p8: number, p9: number, p10: any, p11: number): boolean; + removeForcedObject(p0: any, p1: any, p2: any, p3: any, p4: any): void; + removeModelHide(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; + removeModelSwap(x: number, y: number, z: number, radius: number, originModel: Hash, + newModel: Hash, p6: boolean): void; + setObjectAsNoLongerNeeded(object: Handle): void; + stopSynchronizedMapEntityAnim(p0: number, p1: number, p2: number, p3: number, p4: any, p5: number): boolean; + wouldEntityBeOccluded(hash: Hash, x: number, y: number, z: number, p4: boolean): boolean; +} + +interface GameFireMp { + addSpecfxExplosion(x: number, y: number, z: number, explosionType: number, explosionFx: Hash, + damageScale: number, isAudible: boolean, isInvisible: boolean, cameraShake: number): void; + getClosestFirePos(outPosition: Vector3Mp, x: number, y: number, z: number): Vector3Mp; + getNumberOfFiresInRange(x: number, y: number, z: number, radius: number): number; + getPedInsideExplosionArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, + z2: number, radius: number): EntityMp; + isExplosionInAngledArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, + angle: number): boolean; + isExplosionInArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; + isExplosionInSphere(explosionType: number, x: number, y: number, z: number, radius: number): boolean; + removeScriptFire(fireHandle: Handle): void; + startScriptFire(x: number, y: number, z: number, maxChildren: number, isGasFire: boolean): number; + stopFireInRange(x: number, y: number, z: number, radius: number): void; +} + +interface GameGameplayMp { + absf(value: number): number; + absi(value: number): number; + acos(p0: number): number; + addHospitalRestart(x: number, y: number, z: number, p3: number, p4: any): number; + addPoliceRestart(p0: number, p1: number, p2: number, p3: number, p4: any): void; + addStuntJump(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: any, p16: any): number; + addStuntJumpAngled(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number, p16: number, + p17: any, p18: any): number + areStringsEqual(string1: string, string2: string): boolean; + asin(p0: number): number; + atan(p0: number): number; + atan2(p0: number, p1: number): number; + beginReplayStats(p0: any, p1: any): void; + clearAngledAreaOfVehicles(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: boolean, p8: boolean, p9: boolean, p10: boolean, p11: boolean): void; + clearArea(X: number, Y: number, Z: number, radius: number, p4: boolean, ignoreCopCars: boolean, ignoreObjects: boolean, + p7: boolean): void; + clearAreaOfCops(x: number, y: number, z: number, radius: number, flags: number): void; + clearAreaOfEverything(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, + p7: boolean): void; + clearAreaOfObjects(x: number, y: number, z: number, radius: number, flags: number): void; + clearAreaOfPeds(x: number, y: number, z: number, radius: number, flags: number): void; + clearAreaOfProjectiles(x: number, y: number, z: number, radius: number, flags: number): void; + clearAreaOfVehicles(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, + p7: boolean, p8: boolean): void; + clearBit(address: number, offset: number): number; + compareStrings(str1: string, str2: string, matchCase: boolean, maxLength: number): number; + createIncident(p0: number, p2: number, p3: number, p4: number, p5: number, p6: number, outIncident: number): number; + createIncidentWithEntity(p0: number, p1: EntityMp, p2: number, p3: number, outIncident: number): number; + deleteIncident(incidentId: number): number; + deleteStuntJump(p0: number): void; + disableAutomaticRespawn(disableRespawn: boolean): void; + disableHospitalRestart(hospitalIndex: number, toggle: boolean): void; + disablePoliceRestart(policeIndex: number, toggle: boolean): void; + disableStuntJumpSet(p0: number): void; + displayOnscreenKeyboard(p0: number, windowTitle: string, p2: string, defaultText: string, defaultConcat1: string, + defaultConcat2: string, defaultConcat3: string, maxInputLength: number): void; + enableDispatchService(dispatchType: number, toggle: boolean): void; + enableMpDlcMaps(toggle: boolean): void; + enableStuntJumpSet(p0: number): void; + findSpawnPointInDirection(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, distance: number, + spawnPoint: Vector3Mp): Vector3Mp; + getAngleBetween2dVectors(x1: number, y1: number, x2: number, y2: number): number; + getBitsInRange(vars: number, rangeStart: number, rangeEnd: number): number; + getDistanceBetweenCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, useZ: boolean): number; + getFreeStackSlotsCount(stackSize: number): number; + getGroundZFor3dCoord(x: number, y: number, z: number, groundZ: number, unk: boolean): number; + getHashKey(value: string): Hash; + getHeadingFromVector2d(dx: number, dy: number): number; + getModelDimensions(modelHash: Hash): { + min: Vector3Mp; + max: Vector3Mp; + }; + getProfileSetting(profileSetting: number): number; + getRandomFloatInRange(startRange: number, endRange: number): number; + getRandomIntInRange(startRange: number, endRange: number): number; + getWeatherTypeTransition(p0: any, p1: any, progress_or_time: number): number; + hasBulletImpactedInArea(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: boolean): boolean; + hasBulletImpactedInBox(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, + p7: boolean): boolean; + hasButtonCombinationJustBeenEntered(hash: Hash, amount: number): boolean; + hasCheatStringJustBeenEntered(hash: Hash): boolean; + ignoreNextRestart(toggle: boolean): void; + isAreaOccupied(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, p7: boolean, + p8: boolean, p9: boolean, p10: boolean, p11: any, p12: boolean): boolean; + isBitSet(address: number, offset: number): boolean; + isBulletInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: boolean): boolean; + isBulletInArea(p0: number, p1: number, p2: number, p3: number, p4: boolean): boolean; + isBulletInBox(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): boolean; + isIncidentValid(incidentId: number): number; + isNextWeatherType(weatherType: string): boolean; + isPointObscuredByAMissionEntity(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: any): boolean; + isPositionOccupied(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: boolean, p6: boolean, p7: boolean, + p8: boolean, p9: any, p10: boolean): boolean; + isPrevWeatherType(weatherType: string): boolean; + isProjectileInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, ownedByPlayer: boolean): boolean; + isProjectileTypeInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: any, p8: boolean): boolean; + isProjectileTypeInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, type: number, + p7: boolean): boolean; + isSniperBulletInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; + isStringNull(string: string): boolean; + isStringNullOrEmpty(string: string): boolean; + overrideSaveHouse(p0: boolean, p1: number, p2: number, p3: number, p4: number, p5: boolean, p6: number, p7: number): boolean; + registerBoolToSave(p0: any, name: string): void; + registerEnumToSave(p0: any, name: string): void; + registerFloatToSave(p0: any, name: string): void; + registerIntToSave(p0: any, name: string): void; + registerSaveHouse(p0: number, p1: number, p2: number, p3: number, p4: any, p5: any, p6: any): void; + registerTextLabelToSave(p0: any, name: string): void; + removeDispatchSpawnBlockingArea(p0: any): void; + setBit(address: number, offset: number): number; + setBitsInRange(vars: number, rangeStart: number, rangeEnd: number, p3: number): number; + setCloudHatTransition(type: string, transitionTime: number): void; + setCreditsActive(toggle: boolean): void; + setDispatchIdealSpawnDistance(p0: number): void; + setDispatchTimeBetweenSpawnAttempts(p0: any, p1: number): void; + setDispatchTimeBetweenSpawnAttemptsMultiplier(p0: any, p1: number): void; + setExplosiveAmmoThisFrame(): void; + setExplosiveMeleeThisFrame(): void; + setFadeInAfterDeathArrest(toggle: boolean): void; + setFadeInAfterLoad(toggle: boolean): void; + setFadeOutAfterArrest(toggle: boolean): void; + setFadeOutAfterDeath(toggle: boolean): void; + setFakeWantedLevel(fakeWantedLevel: number): void; + setFireAmmoThisFrame(): void; + setGamePaused(toggle: boolean): void; + setGravityLevel(level: number): void; + setMinigameInProgress(toggle: boolean): void; + setMissionFlag(toggle: boolean): void; + setOverrideWeather(weatherType: string): void; + setRainFxIntensity(intensity: number): void; + setRandomEventFlag(p0: boolean): void; + setRandomSeed(time: number): void; + setSaveHouse(p0: any, p1: boolean, p2: boolean): void; + setSaveMenuActive(unk: boolean): void; + setSuperJumpThisFrame(): void; + setThisScriptCanBePaused(toggle: boolean): void; + setThisScriptCanRemoveBlipsCreatedByAnyScript(toggle: boolean): void; + setTimeScale(time: number): void; + setUnkMapFlag(flag: number): void; + setWeatherTypeNow(weatherType: string): void; + setWeatherTypeNowPersist(weatherType: string): void; + setWeatherTypeOverTime(weatherType: string, time: number): void; + setWeatherTypePersist(weatherType: string): void; + setWeatherTypeTransition(sourceWeather: Hash, targetWeather: Hash, transitionTime: number): void; + setWind(p0: number): void; + setWindDirection(direction: number): void; + setWindSpeed(speed: number): void; + shootSingleBulletBetweenCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, damage: number, + p7: boolean, weaponHash: Hash, ownerPed: Handle, isAudible: boolean, isInvisible: boolean, speed: number): void; + startSaveArray(p0: any, p1: number, arrayName: string): void; + startSaveData(p0: any, p1: any, p2: boolean): void; + startSaveStruct(p0: any, p1: number, structName: string): void; + stringToInt(string: string, outInteger: number): number; + tan(p0: number): number; + terminateAllScriptsWithThisName(scriptName: string): void; + usingMissionCreator(toggle: boolean): void; +} + +interface GameGraphicsMp { + addDecal(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, + p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number, p16: number, p17: boolean, + p18: boolean, p19: boolean): number; + addPetrolDecal(x: number, y: number, z: number, groundLvl: number, width: number, transparency: number): void; + beginTextComponent(componentType: string): void; + callScaleformMovieFunctionFloatParams(scaleform: number, functionName: string, param1: number, param2: number, + param3: number, param4: number, param5: number): void; + callScaleformMovieFunctionMixedParams(scaleform: number, functionName: string, floatParam1: number, + floatParam2: number, floatParam3: number, floatParam4: number, floatParam5: number, stringParam1: string, + stringParam2: string, stringParam3: string, stringParam4: string, stringParam5: string): void; + callScaleformMovieFunctionStringParams(scaleform: number, functionName: string, param1: string, param2: string, + param3: string, param4: string, param5: string): void; + callScaleformMovieMethod(scaleform: number, method: string): void; + createCheckpoint(type: number, posX1: number, posY1: number, posZ1: number, posX2: number, posY2: number, + posZ2: number, radius: number, colorR: number, colorG: number, colorB: number, alpha: number, reserved: number): number; + destroyTrackedPoint(point: Handle): void; + disableVehicleDistantlights(toggle: boolean): void; + doesParticleFxLoopedExist(ptfxHandle: number): boolean; + drawBox(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, + alpha: number): void; + drawDebugBox(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, + alpha: number): void; + drawDebugCross(x: number, y: number, z: number, size: number, r: number, g: number, b: number, alpha: number): void; + drawDebugLine(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, + alpha: number): void; + drawDebugLineWithTwoColours(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r1: number, + g1: number, b1: number, r2: number, g2: number, b2: number, alpha1: number, alpha2: number): void; + drawDebugSphere(x: number, y: number, z: number, radius: number, r: number, g: number, b: number, alpha: number): void; + drawDebugText(text: string, x: number, y: number, z: number, r: number, g: number, b: number, alpha: number): void; + drawDebugText2d(text: string, x: number, y: number, z: number, r: number, g: number, b: number, alpha: number): void; + drawLightWithRange(posX: number, posY: number, posZ: number, colorR: number, colorG: number, colorB: number, + range: number, intensity: number): void; + drawLightWithRangeAndShadow(x: number, y: number, z: number, r: number, g: number, b: number, range: number, + intensity: number, shadow: number): void; + drawLine(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, + alpha: number): void; + drawMarker(type: number, posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, + rotX: number, rotY: number, rotZ: number, scaleX: number, scaleY: number, scaleZ: number, colorR: number, + colorG: number, colorB: number, alpha: number, bobUpAndDown: boolean, faceCamera: boolean, p19: number, + rotate: boolean, textureDict: string, textureName: string, drawOnEnts: boolean): void; + drawPoly(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, x3: number, y3: number, z3: number, + r: number, g: number, b: number, alpha: number): void; + drawRect(x: number, y: number, width: number, height: number, r: number, g: number, b: number, a: number): void; + drawScaleformMovie(scaleformHandle: number, x: number, y: number, width: number, height: number, red: number, + green: number, blue: number, alpha: number, p9: number): void; + drawScaleformMovie3d(scaleform: number, posX: number, posY: number, posZ: number, rotX: number, rotY: number, + rotZ: number, p7: number, p8: number, p9: number, scaleX: number, scaleY: number, scaleZ: number, p13: any): void; + drawScaleformMovie3dNonAdditive(scaleform: number, posX: number, posY: number, posZ: number, rotX: number, + rotY: number, rotZ: number, p7: number, p8: number, p9: number, scaleX: number, scaleY: number, scaleZ: number, + p13: any): void; + drawScaleformMovieFullscreen(scaleform: number, red: number, green: number, blue: number, alpha: number, + unk: boolean): void; + drawScaleformMovieFullscreenMasked(scaleform1: number, scaleform2: number, red: number, green: number, blue: number, + alpha: number): void; + drawSpotLight(posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, colorR: number, + colorG: number, colorB: number, distance: number, brightness: number, roundness: number, radius: number, + falloff: number): void; + drawSpotLightWithShadow(posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, + colorR: number, colorG: number, colorB: number, distance: number, brightness: number, roundness: number, + radius: number, falloff: number, shadow: number): void; + drawSprite(textureDict: string, textureName: string, screenX: number, screenY: number, scaleX: number, + scaleY: number,heading: number, colorR: number, colorG: number, colorB: number, alpha: number): void; + drawText(text: string, position: Array3d | Array2d, + data?: { + font: number, + centre: boolean, + color: RGBA, + scale: Array2d, + outline: boolean + } + ): void; + drawTvChannel(xPos: number, yPos: number, xScale: number, yScale: number, rotation: number, r: number, g: number, + b: number, alpha: number): void; + enableAlienBloodVfx(toggle: boolean): void; + enableClownBloodVfx(toggle: boolean): void; + enableMovieSubtitles(toggle: boolean): void; + enableLights(toggle: boolean): void; + fadeDecalsInRange(p0: any, p1: any, p2: any, p3: any, p4: any): void; + getDecalWashLevel(decal: number): number; + getSafeZoneSize(): number; + getScreenActiveResolution(x: number, y: number): { + x: number; + y: number; + }; + getScreenAspectRatio(b: boolean): number; + getScreenEffectIsActive(effectName: string): number; + getScreenResolution(x: number, y: number): { + x: number; + y: number; + }; + getTextureResolution(textureDict: string, textureName: string): Vector3Mp; + hasHudScaleformLoaded(componentIndex: RageEnums.HudComponent | number): boolean; + hasNamedScaleformMovieLoaded(scaleformName: string): boolean; + hasScaleformContainerMovieLoadedIntoParent(scaleformHandle: number): boolean; + hasScaleformMovieLoaded(scaleformHandle: number): boolean; + hasStreamedTextureDictLoaded(textureDict: string): boolean; + isDecalAlive(decal: number):boolean; + isTrackedPointVisible(point: Handle): boolean; + loadMovieMeshSet(movieMeshSetName: string): number; + loadTvChannel(tvChannel: Hash): boolean; + moveVehicleDecals(p0: any, p1: any): void; + notify(text: string): void; + pushScaleformMovieFunction(scaleform: number, functionName: string): boolean; + pushScaleformMovieFunctionFromHudComponent(componentIndex: RageEnums.HudComponent | number, functionName: string): boolean; + pushScaleformMovieFunctionN(functionName: string): boolean; + popScaleformMovieFunctionVoid(): void; + pushScaleformMovieFunctionParameterBool(value: boolean): void; + pushScaleformMovieFunctionParameterFloat(value: number): void; + pushScaleformMovieFunctionParameterInt(value: number): void; + pushScaleformMovieFunctionParameterString(value: string): void; + releaseMovieMeshSet(movieMeshSet: number): void; + removeDecal(decal: number): void; + removeDecalsFromObject(obj: Handle): void; + removeDecalsFromObjectFacing(obj: Handle, x: number, y: number, z: number): void; + removeDecalsInRange(x: number, y: number, z: number, range: number): void; + removeParticleFx(ptfxHandle: number, p1: boolean): void; + removeParticleFxInRange(X: number, Y: number, Z: number, radius: number): void; + requestHudScaleform(componentIndex: RageEnums.HudComponent | number): void; + requestScaleformMovie(scaleformName: string): number; + requestScaleformMovie3(scaleformName: string): number; + requestScaleformMovieInstance(scaleformName: string): number; + requestStreamedTextureDict(textureDict: string, p1: boolean): void; + screen2dToWorld3d(vector2: Vector3Mp): Vector3Mp; + set2dLayer(layer: number): void; + setBlackout(enable: boolean): void; + setDebugLinesAndSpheresDrawingActive(enabled: boolean): void; + setDrawOrigin(x: number, y: number, z: number, p3: any): void; + setFarShadowsSuppressed(toggle: boolean): void; + setFlash(p0: number, p1: number, fadeIn: number, duration: number, fadeOut: number): void; + setForcePedFootstepsTracks(toggle: boolean): void; + setForceVehicleTrails(toggle: boolean): void; + setFrozenRenderingDisabled(enabled: boolean): void; + setNightvision(toggle: boolean): void; + setNoiseoveride(toggle: boolean): void; + setNoisinessoveride(value: number): void; + setParticleFxBloodScale(p0: boolean): void; + setParticleFxCamInsideNonplayerVehicle(p0: any, p1: boolean): void; + setParticleFxCamInsideVehicle(p0: boolean): void; + setParticleFxLoopedAlpha(ptfxHandle: number, alpha: number): void; + setParticleFxLoopedColour(ptfxHandle: number, r: number, g: number, b: number, p4: boolean): void; + setParticleFxLoopedEvolution(ptfxHandle: number, propertyName: string, amount: number, Id: boolean): void; + setParticleFxLoopedOffsets(ptfxHandle: number, x: number, y: number, z: number, rotX: number, rotY: number, + rotZ: number): void; + setParticleFxLoopedRange(ptfxHandle: number, range: number): void; + setParticleFxLoopedScale(ptfxHandle: number, scale: number): void; + setParticleFxNonLoopedAlpha(alpha: number): void; + setParticleFxNonLoopedColour(r: number, g: number, b: number): void; + setParticleFxShootoutBoat(p0: any): void; + setPtfxAssetNextCall(name: string): void; + setPtfxAssetOldToNew(oldAsset: string, newAsset: string): void; + setScaleformMovieAsNoLongerNeeded(scaleformHandle: number): number; + setScaleformMovieToUseSystemTime(scaleform: number, toggle: boolean): void; + setScreenDrawPosition(x: number, y: number): void; + setSeethrough(toggle: boolean): void; + setStreamedTextureDictAsNoLongerNeeded(textureDict: string): void; + setTimecycleModifier(modifierName: string): void; + setTimecycleModifierStrength(strength: number): void; + setTrackedPointInfo(point: Handle, x: number, y: number, z: number, radius: number): void; + setTransitionTimecycleModifier(modifierName: string, transition: number): void; + setTvAudioFrontend(toggle: boolean): void; + setTvChannel(channel: number): void; + setTvVolume(volume: number): void; + sittingTv(scaleform: number): string; + startParticleFxLoopedAtCoord(effectName: string, x: number, y: number, z: number, xRot: number, yRot: number, + zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, p11: boolean): number; + startParticleFxLoopedOnEntity(effectName: string, entity: Handle, xOffset: number, yOffset: number, + zOffset: number, xRot: number, yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, + zAxis: boolean): number; + startParticleFxLoopedOnEntity2(effectName: string, entity: Handle, xOffset: number, yOffset: number, zOffset: number, + xRot: number, yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): number; + startParticleFxLoopedOnEntityBone(effectName: string, entity: Handle, xOffset: number, yOffset: number, + zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, + yAxis: boolean, zAxis: boolean): number; + startParticleFxLoopedOnEntityBone2(effectName: string, entity: Handle, xOffset: number, yOffset: number, + zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, + yAxis: boolean, zAxis: boolean): number; + startParticleFxLoopedOnPedBone(effectName: string, ped: Handle, xOffset: number, yOffset: number, zOffset: number, + xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, yAxis: boolean, + zAxis: boolean): number; + startParticleFxNonLoopedAtCoord(effectName: string, xPos: number, yPos: number, zPos: number, xRot: number, + yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): boolean; + startParticleFxNonLoopedAtCoord2(effectName: string, xPos: number, yPos: number, zPos: number, xRot: number, + yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): boolean; + startParticleFxNonLoopedOnEntity(effectName: string, entity: Handle, offsetX: number, offsetY: number, + offsetZ: number, rotX: number, rotY: number, rotZ: number, scale: number, axisX: boolean, axisY: boolean, + axisZ: boolean): boolean; + startParticleFxNonLoopedOnEntity2(effectName: string, entity: Handle, xOffset: number, yOffset: number, + zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, + yAxis: boolean, zAxis: boolean): boolean; + startParticleFxNonLoopedOnPedBone(effectName: string, ped: Handle, offsetX: number, offsetY: number, offsetZ: number, + rotX: number, rotY: number, rotZ: number, boneIndex: number, scale: number, axisX: boolean, axisY: boolean, + axisZ: boolean): boolean; + startParticleFxNonLoopedOnPedBone2(effectName: string, ped: Handle, offsetX: number, offsetY: number, offsetZ: number, + rotX: number, rotY: number, rotZ: number, boneIndex: number, scale: number, axisX: boolean, axisY: boolean, + axisZ: boolean): boolean; + startScreenEffect(effectName: string, duration: number, looped: boolean): void; + stopParticleFxLooped(ptfxHandle: number, p1: boolean): void; + stopScreenEffect(effectName: string): void; + transitionFromBlurred(transitionTime: number): boolean; + transitionToBlurred(transitionTime: number): boolean; + washDecalsInRange(p0: any, p1: any, p2: any, p3: any, p4: any): void; + world3dToScreen2d(worldX: number, worldY: number, worldZ: number): { + x: number; y: number; + }; + setLightsState(id: number, toggle: boolean): void; +} + +interface GameInteriorMp { + addPickupToInteriorRoomByName(pickup: PickupMp, roomName: string): void; + areCoordsCollidingWithExterior(x: number, y: number, z: number): boolean; + capInterior(interiorId: number, toggle: boolean): void; + disableInterior(interiorId: number, toggle: boolean): void; + disableInteriorProp(interiorId: number, propName: string): void; + enableInteriorProp(interiorId: number, propName: string): void; + getInteriorAtCoords(x: number, y: number, z: number): number; + getInteriorAtCoordsWithType(x: number, y: number, z: number, interiorType: string): number; + getInteriorFromCollision(x: number, y: number, z: number): number; + getInteriorGroupId(interiorId: number): number; + getOffsetFromInteriorInWorldCoords(interiorId: number, x: number, y: number, z: number): Vector3Mp; + hideMapObjectThisFrame(mapObjectHash: number): void; + hideMapObjectThisFrame(mapObjectHash: string): void; + isInteriorCapped(interiorId: number): boolean; + isInteriorDisabled(interiorId: number): boolean; + isInteriorPropEnabled(interiorId: number, propName: string): boolean; + isInteriorReady(interiorId: number): boolean; + isValidInterior(interiorId: number): boolean; + refreshInterior(interiorId: number): void; + unkGetInteriorAtCoords(x: number, y: number, z: number, unk: number): number; + unpinInterior(interiorId: number): void; +} + +interface GameItemsetMp { + addToItemset(itemset: number, p1: any): boolean; + cleanItemset(itemset: number): void; + createItemset(p0: boolean): number; + destroyItemset(itemset: number): void; + getIndexedItemInItemset(itemset: number, p1: any): any; + getItemsetSize(itemset: number): number; + isInItemset(itemset: number, p1: any): boolean; + isItemsetValid(itemset: number): boolean; + removeFromItemset(itemset: number, p1: any): void; +} + +interface GameMobileMp { + cellCamActivate(p0: boolean, p1: boolean): void; + createMobilePhone(phoneType: number): void; + getMobilePhonePosition(position: Vector3Mp): Vector3Mp; + getMobilePhoneRenderId(renderId: number): number; + getMobilePhoneRotation(rotation: Vector3Mp, p1: any): Vector3Mp; + moveFinger(direction: number): void; + scriptIsMovingMobilePhoneOffscreen(toggle: boolean): void; + setMobilePhonePosition(posX: number, posY: number, posZ: number): void; + setMobilePhoneRotation(rotX: number, rotY: number, rotZ: number, p3: any): void; + setMobilePhoneScale(scale: number): void; + setPhoneLean(toggle: boolean): void; +} + +interface GameObjectMp { + addDoorToSystem(doorHash: Hash, modelHash: Hash, x: number, y: number, z: number, p5: number, + p6: number, p7: number): void; + createAmbientPickup(pickupHash: Hash, posX: number, posY: number, posZ: number, p4: number, value: number, + modelHash: Hash, p7: boolean, p8: boolean): PickupMp; + createMoneyPickups(x: number, y: number, z: number, value: number, amount: number, model: Hash): void; + createObject(modelHash: Hash, x: number, y: number, z: number, networkHandle: boolean, + createHandle: boolean,dynamic: boolean): Handle; + createObjectNoOffset(modelHash: Hash, x: number, y: number, z: number, networkHandle: boolean, + createHandle: boolean, dynamic: boolean): Handle; + createPickup(pickupHash: Hash, posX: number, posY: number, posZ: number, p4: number, value: number, + p6: boolean, modelHash: Hash): PickupMp; + createPickupRotate(pickupHash: Hash, posX: number, posY: number, posZ: number, rotX: number, rotY: number, + rotZ: number, flag: number, amount: number, p9: any, p10: boolean, modelHash: Hash): PickupMp; + createPortablePickup(pickupHash: Hash, x: number, y: number, z: number, placeOnGround: boolean, + modelHash: Hash): PickupMp; + createPortablePickup2(pickupHash: Hash, x: number, y: number, z: number, placeOnGround: boolean, + modelHash: Hash): PickupMp; + deleteObject(object: Handle): Handle; + doesDoorExist(doorHash: Hash): boolean; + doesObjectOfTypeExistAtCoords(x: number, y: number, z: number, radius: number, hash: Hash, p5: boolean): boolean; + doesPickupExist(p0: any): boolean; + doesPickupObjectExist(p0: any): boolean; + doorControl(doorHash: Hash, x: number, y: number, z: number, locked: boolean, p5: number, p6: number, + p7: number): void; + getClosestObjectOfType(x: number, y: number, z: number, radius: number, modelHash: Hash, + isMissing: boolean, p6: boolean, p7: boolean): Handle; + getObjectFragmentDamageHealth(p0: any, p1: boolean): number; + getObjectOffsetFromCoords(xPos: number, yPos: number, zPos: number, heading: number, xOffset: number, yOffset: number, + zOffset: number): Vector3Mp; + getPickupCoords(p0: any): number; + getSafePickupCoords(x: number, y: number, z: number, p3: any, p4: any): Vector3Mp; + getStateOfClosestDoorOfType(type: Hash, x: number, y: number, z: number, locked: number, heading: number): { + locked: number; + heading: number; + }; + hasClosestObjectOfTypeBeenBroken(p0: number, p1: number, p2: number, p3: number, modelHash: Hash, + p5: any): boolean; + hasPickupBeenCollected(p0: any): boolean; + highlightPlacementCoords(x: number, y: number, z: number, colorIndex: number): void; + isAnyObjectNearPoint(x: number, y: number, z: number, range: number, p4: boolean): boolean; + isDoorClosed(door: Hash): boolean; + isGarageEmpty(garage: any, p1: boolean, p2: number): boolean; + isObjectNearPoint(objectHash: Hash, x: number, y: number, z: number, range: number): boolean; + isPickupWithinRadius(pickupHash: Hash, x: number, y: number, z: number, radius: number): boolean; + isPointInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: number, p9: number, p10: boolean, p11: boolean): boolean; + removeAllPickupsOfType(p0: any): void; + removeDoorFromSystem(doorHash: Hash): void; + removePickup(pickup: PickupMp): void; + setDoorAccelerationLimit(doorHash: Hash, limit: number, p2: boolean, p3: boolean): void; + setDoorAjarAngle(doorHash: Hash, ajar: number, p2: boolean, p3: boolean): void; + setForceObjectThisFrame(p0: any, p1: any, p2: any, p3: any): void; + setPickupRegenerationTime(p0: any, p1: any): void; + setStateOfClosestDoorOfType(type: Hash, x: number, y: number, z: number, locked: boolean, heading: number, + p6: boolean): void; + setTeamPickupObject(p0: any, p1: any, p2: any): void; + trackObjectVisibility(p0: any): void; +} + +interface GamePathfindMp { + addNavmeshBlockingObject(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: boolean, p8: any): void; + addNavmeshRequiredRegion(p0: number, p1: number, p2: number): void; + calculateTravelDistanceBetweenPoints(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; + disableNavmeshInArea(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): void; + generateDirectionsToCoord(x: number, y: number, z: number, p3: any, p4: number, vehicle: Handle, p6: number): { + p4: number; + vehicle: Handle; + p6: number; + }; + getClosestMajorVehicleNode(x: number, y: number, z: number, outPosition: Vector3Mp, unknown1: number, + unknown2: number): Vector3Mp; + getClosestRoad(x: number, y: number, z: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: number, p9: number, p10: boolean): boolean; + getClosestVehicleNode(x: number, y: number, z: number, outPosition: Vector3Mp, nodeType: number, p5: number, + p6: number): Vector3Mp; + getClosestVehicleNodeWithHeading(x: number, y: number, z: number, outPosition: Vector3Mp, outHeading: number, + nodeType: number, p6: number, p7: number): { + outPosition: Vector3Mp; + outHeading: number; + }; + getIsSlowRoadFlag(nodeID: number): boolean; + getNthClosestVehicleNode(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, + unknown1: any, unknown2: any, unknown3: any): Vector3Mp; + getNthClosestVehicleNodeFavourDirection(x: number, y: number, z: number, desiredX: number, desiredY: number, + desiredZ: number, nthClosest: number, outPosition: Vector3Mp, outHeading: number, nodetype: number, p10: any, + p11: any): { + outPosition: Vector3Mp; + outHeading: number; + }; + getNthClosestVehicleNodeId(x: number, y: number, z: number, nth: number, nodetype: number, p5: number, p6: number): number; + getNthClosestVehicleNodeIdWithHeading(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, + outHeading: number, p6: any, p7: number, p8: number): Vector3Mp; + getNthClosestVehicleNodeWithHeading(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, + heading: number, unknown1: any, unknown2: number, unknown3: number, unknown4: number): { + outPosition: Vector3Mp; + heading: number; + unknown1: any; + }; + getRandomVehicleNode(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, + outPosition: Vector3Mp, heading: number): { + outPosition: Vector3Mp; + outHeading: number; + }; + getSafeCoordForPed(x: number, y: number, z: number, onGround: boolean, outPosition: Vector3Mp, flags: number): Vector3Mp; + getStreetNameAtCoord(x: number, y: number, z: number, streetName: number, crossingRoad: number): { + streetName: number; + crossingRoad: number; + }; + getSupportsGpsRouteFlag(nodeID: number): boolean; + getVehicleNodePosition(nodeId: number, outPosition: Vector3Mp): Vector3Mp; + getVehicleNodeProperties(x: number, y: number, z: number, density: number, flags: number):{ + density: number; + flags: number; + }; + isNavmeshLoadedInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; + isPointOnRoad(x: number, y: number, z: number, vehicle: Handle): boolean; + isVehicleNodeIdValid(vehicleNodeId: number): boolean; + loadAllPathNodes(keepInMemory: boolean): boolean; + removeNavmeshBlockingObject(p0: any): void; + setGpsDisabledZone(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; + setIgnoreNoGpsFlag(ignore: boolean): void; + setPedPathsBackToOriginal(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; + setPedPathsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, unknown: boolean): void; + setRoadsBackToOriginal(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; + setRoadsBackToOriginalInAngledArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, + p6: number): void; + setRoadsInAngledArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, angle: number, + unknown1: boolean, unknown2: boolean, unknown3: boolean): void; + setRoadsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, unknown1: boolean, + unknown2: boolean): void; + updateNavmeshBlockingObject(p0: any, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: number, p8: any): void; +} + +interface GamePedMp { + addRelationshipGroup(name: string, groupHash: Hash): Hash; + addScenarioBlockingArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, + p7: boolean, p8: boolean, p9: boolean): void; + attachSynchronizedSceneToEntity(sceneId: number, entity: Handle, boneIndexId: number): void; + canCreateRandomPed(unk: boolean): boolean; + clearPedAlternateWalkAnim(p0: any, p1: number): void; + clearRelationshipBetweenGroups(relationship: number, group1: Hash, group2: Hash): void; + createGroup(unused: number): number; + createNmMessage(startImmediately: boolean, messageId: number): void; + createPed(pedType: number, modelHash: Hash, x: number, y: number, z: number, heading: number, + networkHandle: boolean, pedHandle: boolean): Handle; + createRandomPed(posX: number, posY: number, posZ: number): Handle; + createSynchronizedScene(x: number, y: number, z: number, roll: number, pitch: number, yaw: number, p6: number): number; + detachSynchronizedScene(sceneId: number): void; + disposeSynchronizedScene(scene: number): void; + doesGroupExist(groupId: number): boolean; + getAnimInitialOffsetPosition(animDict: string, animName: string, x: number, y: number, z: number, xRot: number, + yRot: number, zRot: number, p8: number, p9: number): Vector3Mp; + getAnimInitialOffsetRotation(animDict: string, animName: string, x: number, y: number, z: number, xRot: number, + yRot: number, zRot: number, p8: number, p9: number): Vector3Mp; + getClosestPed(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, outPed: Handle, p7: boolean, + p8: boolean, pedType: number): Handle; + getFirstParentIdForPedType(type: number): number; + getGroupSize(groupId: number, unknown: any, sizeInMembers: number): number; + getNumHeadOverlayValues(overlayId: number): number; + getNumParentPedsOfType(type: number): number; + getPeadheadshotTxdString(handle: number): string; + getPedAsGroupLeader(groupId: number): Handle; + getPedAsGroupMember(groupId: number, memberNumber: number): Handle; + getRandomPedAtCoord(x: number, y: number, z: number, xRadius: number, yRadius: number, zRadius: number, + pedType: number): Handle; + getRelationshipBetweenGroups(group1: Hash, group2: Hash): number; + getSynchronizedScenePhase(sceneId: number): number; + getSynchronizedSceneRate(sceneId: number): number; + getTattooZone(collection: Hash, overlay: Hash): number; + hasActionModeAssetLoaded(asset: string): boolean; + hasPedReceivedEvent(p0: any, p1: any): boolean; + hasStealthModeAssetLoaded(asset: string): boolean; + isAnyPedNearPoint(x: number, y: number, z: number, radius: number): boolean; + isAnyPedShootingInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p6: boolean, + p7: boolean): boolean; + isAValidBlushColor(colorId: number): boolean; + isAValidHairColor(colorId: number): boolean; + isAValidLipstickColor(colorId: number): boolean; + isCopPedInArea3d(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; + isPedheadshotReady(handle: number): boolean; + isPedheadshotValid(handle: number): number; + isPedRespondingToEvent(p0: any, p1: any): boolean; + isSynchronizedSceneLooped(sceneId: number): boolean; + isSynchronizedSceneRunning(sceneId: number): boolean; + removeActionModeAsset(asset: string): void; + removeGroup(groupId: number): void; + removeRelationshipGroup(groupHash: Hash): void; + removeScenarioBlockingArea(p0: any, p1: boolean): void; + removeStealthModeAsset(asset: string): void; + requestActionModeAsset(asset: string): void; + requestStealthModeAsset(asset: string): void; + resetGroupFormationDefaultSpacing(groupHandle: number): void; + setAiMeleeWeaponDamageModifier(modifier: number): void; + setAiWeaponDamageModifier(value: number): void; + setCreateRandomCops(toggle: boolean): void; + setCreateRandomCopsNotOnScenarios(toggle: boolean): void; + setCreateRandomCopsOnScenarios(toggle: boolean): void; + setGroupFormation(groupId: number, formationType: number): void; + setGroupFormationSpacing(groupId: number, p1: number, p2: number, p3: number): void; + setGroupSeparationRange(groundHandle: number, separationRange: number): void; + setPedAlternateWalkAnim(p0: any, p1: any, p2: any, p3: number, p4: boolean): void; + setPedDensityMultiplierThisFrame(multiplier: number): void; + setPedNonCreationArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): void; + setPedReserveParachuteTintIndex(p0: any, p1: any): void; + setPedToRagdollWithFall(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, + p7: any, p8: any, p9: any, p10: any, p11: any, p12: any, p13: any): boolean; + setRelationshipBetweenGroups(relationship: number, group1: Hash, group2: Hash): void; + setScenarioPedDensityMultiplierThisFrame(p0: number, p1: number): void; + setScenarioPedsSpawnInSphereArea(p0: any, p1: any, p2: any, p3: any, p4: any): void; + setScenarioPedsToBeReturnedByNextCommand(value: boolean): void; + setScriptedConversionCoordThisFrame(x: number, y: number, z: number): void; + setSynchronizedSceneLooped(sceneId: number, toggle: boolean): void; + setSynchronizedSceneOrigin(sceneId: number, x: number, y: number, z: number, roll: number, pitch: number, + yaw: number, p7: boolean): void; + setSynchronizedScenePhase(sceneId: number, phase: number): void; + setSynchronizedSceneRate(sceneId: number, rate: number): void; + setTimeExclusiveDisplayTexture(p0: any, p1: boolean): void; +} + +interface GamePlayerMp { + areFlashingStarsAboutToDrop(): boolean; + areStarsGreyedOut(): boolean; + canStartMission(): boolean; + disableFiring(toggle: boolean): void; + disableVehicleRewards(): void; + displaySystemSigninUi(unk: boolean): void; + enableSpecialAbility(toggle: boolean): void; + forceCleanup(cleanupFlags: number): void; + forceCleanupForAllThreadsWithThisName(name: string, cleanupFlags: number): void; + forceCleanupForThreadWithThisId(id: number, cleanupFlags: number): void; + getEntityIsFreeAimingAt(entity: Handle): boolean; + getTargetEntity(entity: Handle): boolean; + getTimeSinceDroveAgainstTraffic(): number; + getTimeSinceDroveOnPavement(): number; + getTimeSinceHitPed(): number; + getTimeSinceHitVehicle(): number; + getWantedLevelRadius(): boolean; + getWantedLevelThreshold(wantedLevel: number): number; + giveAchievementTo(achievement: number): boolean; + hasAchievementBeenPassed(achievement: number): boolean; + hasForceCleanupOccurred(cleanupFlags: number): boolean; + intToParticipantindex(value: number): number; + intToindex(value: number): Handle; + isFreeAiming(): boolean; + isFreeAimingAtEntity(entity: Handle): boolean; + isTargettingEntity(entity: Handle): boolean; + isSpecialAbilityActive(): boolean; + isSpecialAbilityEnabled(): boolean; + isSpecialAbilityMeterFull(): boolean; + isSpecialAbilityUnlocked(playerModel: Hash): boolean; + playerAttachVirtualBound(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: number): void; + reportCrime(crimeType: number, wantedLvlThresh: number): void; + reserveEntityExplodesOnHighExplosionCombo(p1: number): void; + resetWantedLevelDifficulty(): void; + restoreStamina(p1: number): void; + setAirDragMultiplierForsVehicle(multiplier: number): void; + setAllRandomPedsFlee(toggle: boolean): void; + setAllRandomPedsFleeThisFrame(): void; + setAreasGeneratorOrientation(): void; + setAutoGiveParachuteWhenEnterPlane(toggle: boolean): void; + setCanDoDriveBy(toggle: boolean): void; + setDisableAmbientMeleeMove(toggle: boolean): void; + setDispatchCopsFor(toggle: boolean): void; + setHealthRechargeMultiplier(regenRate: number): void; + setHudAnimStopLevel(toggle: boolean): void; + setIgnoreLowPriorityShockingEvents(toggle: boolean): void; + setInvincible(toggle: boolean): void; + setMaxWantedLevel(maxWantedLevel: number): void; + setMeleeWeaponDefenseModifier(modifier: number): void; + setClothLockCounter(value: number): void; + setClothPackageIndex(index: number): void; + setTargetingMode(targetMode: number): void; + setPoliceRadarBlips(toggle: boolean): void; + setRunSprintMultiplierFor(multiplier: number): void; + setSpecialAbilityMultiplier(multiplier: number): void; + setSwimMultiplierFor(multiplier: number): void; + setWantedLevelDifficulty(difficulty: number): void; + setWantedLevelMultiplier(multiplier: number): void; + simulateInputGait(amount: number,gaitType: number,speed: number,p4: boolean,p5: boolean): void; + specialAbilityChargeAbsolute(p1: number,p2: boolean): void; + specialAbilityChargeContinuous(p1: boolean): void; + specialAbilityChargeLarge(p1: boolean,p2: boolean): void; + specialAbilityChargeMedium(p1: boolean,p2: boolean): void; + specialAbilityChargeNormalized(normalizedValue: number,p2: boolean): void; + specialAbilityChargeSmall(p1: boolean, p2: boolean): void; + specialAbilityDeactivate(): void; + specialAbilityDeactivateFast(): void; + specialAbilityDepleteMeter(p1: boolean): void; + specialAbilityFillMeter(p1: boolean): void; + specialAbilityLock(playerModel: Hash): void; + specialAbilityReset(): void; + specialAbilityUnlock(playerModel: Hash): void; + startFiringAmnesty(duration: number): void; + startTeleport(x: number,y: number,z: number,heading: number,p5: boolean,p6: boolean,p7: boolean): void; +} + +interface GameRecorderMp { + isRecording(): boolean; + start(mode: number): void; + stop(save: boolean): void; +} + +interface GameRopeMp { + addRope(x: number, y: number, z: number, rotX: number, rotY: number, rotZ: number, length: number, ropeType: number, + maxLength: number, minLength: number, p10: number, p11: boolean, p12: boolean, rigid: boolean, p14: number, + breakWhenShot: boolean, unkPtr: any): Handle; + applyImpulseToCloth(posX: number, posY: number, posZ: number, vecX: number, vecY: number, vecZ: number, + impulse: number): void; + attachEntitiesToRope(rope: Handle, ent1: Handle, ent2: Handle, ent1_x: number, ent1_y: number, ent1_z: number, + ent2_x: number, ent2_y: number, ent2_z: number, length: number, p10: boolean, p11: boolean, p12: any, + p13: any): void; + attachRopeToEntity(rope: Handle, entity: Handle, x: number, y: number, z: number, p5: boolean): void; + breakEntityGlass(p0: any, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, + p8: number, p9: any, p10: boolean): void; + deleteChildRope(rope: Handle): any; + deleteRope(rope: Handle): void; + detachRopeFromEntity(rope: Handle, entity: Handle): void; + doesRopeExist(rope: Handle): Handle; + getCgoffset(rope: Handle): Vector3Mp; + getRopeLastVertexCoord(rope: Handle): void; + getRopeLength(rope: Handle): number; + getRopeVertexCoord(rope: Handle, vertex: number): any; + getRopeVertexCount(rope: Handle): number; + loadRopeData(rope: Handle, rope_preset: string): any; + pinRopeVertex(rope: Handle, vertex: number, x: number, y: number, z: number): void; + ropeConvertToSimple(rope: Handle): void; + ropeDrawShadowEnabled(rope: Handle, toggle: boolean): Handle; + ropeForceLength(rope: Handle, length: number): any; + ropeResetLength(rope: Handle, length: boolean): any; + ropeSetUpdatePinverts(rope: Handle): void; + setCgAtBoundcenter(rope: Handle): void; + setCgoffset(rope: Handle, x: number, y: number, z: number): void; + setDamping(rope: Handle, vertex: number, value: number): void; + setDisableBreaking(rope: Handle, enabled: boolean): void; + setDisableFragDamage(object: Handle, toggle: boolean): void; + startRopeUnwindingFront(rope: Handle): void; + startRopeWinding(rope: Handle): void; + stopRopeUnwindingFront(rope: Handle): void; + stopRopeWinding(rope: Handle): void; + unpinRopeVertex(rope: Handle, vertex: number): any; +} + +interface GameScriptMp { + doesScriptExist(scriptName: string): boolean; + getEventAtIndex(p0: number, eventIndex: number): number; + getEventdata(p0: number, eventIndex: number, eventData: number, p3: number): number; + getEventExists(p0: number, eventIndex: number): boolean; + getNumberOfEvents(p0: number): number; + getNumberOfInstancesOfStreamedScript(scriptHash: Hash): number; + getThreadName(threadId: number): string; + hasScriptLoaded(scriptName: string): boolean; + hasStreamedScriptLoaded(scriptHash: Hash): boolean; + isStreamedScriptRunning(scriptHash: Hash): boolean; + isThreadActive(threadId: number): boolean; + requestScript(scriptName: string): void; + requestStreamedScript(scriptHash: Hash): void; + setNoLoadingScreen(toggle: boolean): void; + setScriptAsNoLongerNeeded(scriptName: string): void; + setStreamedScriptAsNoLongerNeeded(scriptHash: Hash): void; + terminateThread(threadId: number): void; + triggerScriptEvent(p0: number, argsStruct: Vector3Mp, argsStructSize: number, bitset: number): Vector3Mp; +} + +interface GameStatsMp { + leaderboards2ReadByHandle(p0: any, p1: any): boolean; + leaderboards2ReadByRadius(p0: any, p1: any, p2: any): boolean; + leaderboards2ReadByRank(p0: any, p1: any, p2: any): boolean; + leaderboards2ReadByRow(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): boolean; + leaderboards2ReadByScoreFloat(p0: any, p1: number, p2: any): boolean; + leaderboards2ReadByScoreInt(p0: any, p1: any, p2: any): boolean; + leaderboards2ReadFriendsByRow(p0: any, p1: any, p2: any, p3: boolean, p4: any, p5: any): boolean; + leaderboards2WriteData(p0: any): boolean; + leaderboardsCacheDataRow(p0: any): boolean; + leaderboardsGetCacheDataRow(p0: any, p1: any, p2: any): boolean; + leaderboardsGetCacheExists(p0: any): boolean; + leaderboardsGetCacheTime(p0: any): any; + leaderboardsGetColumnId(p0: any, p1: any, p2: any): any; + leaderboardsGetColumnType(p0: any, p1: any, p2: any): any; + leaderboardsGetNumberOfColumns(p0: any, p1: any): any; + leaderboardsReadClear(p0: any, p1: any, p2: any): any; + leaderboardsReadPending(p0: any, p1: any, p2: any): boolean; + leaderboardsReadSuccessful(p0: any, p1: any, p2: any): boolean; + playstatsAwardXp(p0: any, p1: any, p2: any): void; + playstatsCheatApplied(cheat: string): void; + playstatsClothChange(p0: any, p1: any, p2: any, p3: any, p4: any): void; + playstatsFriendActivity(p0: any, p1: any): void; + playstatsMatchStarted(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): void; + playstatsMissionCheckpoint(p0: any, p1: any, p2: any, p3: any): void; + playstatsMissionOver(p0: any, p1: any, p2: any, p3: boolean, p4: boolean, p5: boolean): void; + playstatsMissionStarted(p0: any, p1: any, p2: any, p3: boolean): void; + playstatsNpcInvite(p0: any): void; + playstatsOddjobDone(p0: any, p1: any, p2: any): void; + playstatsPropChange(p0: any, p1: any, p2: any, p3: any): void; + playstatsRaceCheckpoint(p0: any, p1: any, p2: any, p3: any, p4: any): void; + playstatsRankUp(p0: any): void; + playstatsShopItem(p0: any, p1: any, p2: any, p3: any, p4: any): void; + playstatsWebsiteVisited(scaleformHash: Hash, p1: number): void; + statClearSlotForReload(statSlot: number): any; + statDeleteSlot(p0: any): any; + statGetBool(statHash: Hash, outValue: boolean, p2: any): boolean; + statGetBoolMasked(statName: Hash, mask: number, p2: number): boolean; + statGetDate(statHash: Hash, p1: any, p2: any, p3: any): boolean; + statGetFloat(statHash: Hash, outValue: number, p2: any): number; + statGetInt(statHash: Hash, outValue: number, p2: number): number; + statGetLicensePlate(statName: Hash): string; + statGetMaskedInt(p0: any, p1: any, p2: any, p3: any, p4: any): boolean; + statGetNumberOfDays(statName: Hash): number; + statGetNumberOfHours(statName: Hash): number; + statGetNumberOfMinutes(statName: Hash): number; + statGetNumberOfSeconds(statName: Hash): number; + statGetPos(p0: any, p1: any, p2: any, p3: any, p4: any): boolean; + statGetString(statHash: Hash, p1: number): string; + statGetUserId(p0: any): string; + statIncrement(statName: Hash, value: number): void; + statLoad(p0: number): boolean; + statLoadPending(p0: any): boolean; + statSave(p0: number, p1: boolean, p2: number): boolean; + statSetBool(statName: Hash, value: boolean, save: boolean): boolean; + statSetBoolMasked(statName: Hash, value: boolean, mask: number, save: boolean): boolean; + statSetCurrentPosixTime(statName: Hash, p1: boolean): boolean; + statSetDate(statName: Hash, + value: { + year: number; + month: number; + day: number; + hour: number; + minute: number; + second: number; + milisecond: number; + }, + numFields: number, save: boolean): void; + statSetFloat(statName: Hash, value: number, save: boolean): boolean; + statSetGxtLabel(statName: Hash, value: string, save: boolean): boolean; + statSetInt(statName: Hash, value: number, save: boolean): boolean; + statSetLicensePlate(statName: Hash, str: string): boolean; + statSetMaskedInt(statName: Hash, p1: any, p2: any, p3: number, save: boolean): boolean; + statSetPos(statName: Hash, x: number, y: number, z: number, save: boolean): boolean; + statSetProfileSetting(profileSetting: number, value: number): void; + statSetString(statName: Hash, value: string, save: boolean): boolean; + statSetUserId(statName: Hash, value: string, save: boolean): boolean; + statSlotIsLoaded(p0: any): boolean; +} + +interface GameStreamingMp { + doesAnimDictExist(animDict: string): boolean; + forceStreamingUpdate(): boolean; + getIdealPlayerSwitchType(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; + hasAnimDictLoaded(animDict: string): boolean; + hasAnimSetLoaded(animSet: string): boolean; + hasClipSetLoaded(clipSet: string): boolean; + hasCollisionForModelLoaded(model: Hash): boolean; + hasModelLoaded(model: Hash): boolean; + hasNamedPtfxAssetLoaded(fxName: string): boolean; + isIplActive(iplName: string): boolean; + isModelAVehicle(model: Hash): boolean; + isModelInCdimage(model: Hash): boolean; + isModelValid(model: Hash): boolean; + loadScene(x: number, y: number, z: number): void; + newLoadSceneStart(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: any): boolean; + newLoadSceneStartSafe(p0: number, p1: number, p2: number, p3: number, p4: any): boolean; + prefetchSrl(p0: any): void; + removeAnimDict(animDict: string): void; + removeAnimSet(animSet: string): void; + removeClipSet(clipSet: string): void; + removeIpl(iplName: string): void; + removeNamedPtfxAsset(fxName: string): void; + requestAdditionalCollisionAtCoord(p0: number, p1: number, p2: number): void; + requestAnimDict(animDict: string): void; + requestAnimSet(animSet: string): void; + requestClipSet(clipSet: string): void; + requestCollisionAtCoord(x: number, y: number, z: number): any; + requestCollisionForModel(model: Hash): void; + requestIpl(iplName: string): void; + requestModel(model: Hash, cb?: Function): void; + requestModel2(model: Hash): void; + requestNamedPtfxAsset(fxName: string): void; + setDitchPoliceModels(toggle: boolean): void; + setFocusArea(x: number, y: number, z: number, offsetX: number, offsetY: number, offsetZ: number): void; + setGamePausesForStreaming(toggle: boolean): void; + setHdArea(x: number, y: number, z: number, ground: number): void; + setInteriorActive(interiorID: number, toggle: boolean): void; + setModelAsNoLongerNeeded(model: Hash): void; + setPedPopulationBudget(p0: number): void; + setPlayerSwitchLocation(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, + p7: number, p8: any): void; + setReducePedModelBudget(toggle: boolean): void; + setReduceVehicleModelBudget(toggle: boolean): void; + setSrlTime(p0: number): void; + setStreaming(toggle: boolean): void; + setUnkCameraSettings(x: number, y: number, z: number, rad: number, p4: any, p5: any): any; + setVehiclePopulationBudget(p0: number): void; + startPlayerSwitch(from: Handle, to: Handle, flags: number, switchType: number): void; +} + +interface GameSystemMp { + ceil(value: number): number; + cos(value: number): number; + floor(value: number): number; + pow(base: number, exponent: number): number; + round(value: number): number; + settimera(value: number): void; + settimerb(value: number): void; + shiftLeft(value: number, bitShift: number): number; + shiftRight(value: number, bitShift: number): number; + sin(value: number): number; + sqrt(value: number): number; + startNewScript(scriptName: string, stackSize: number): number; + startNewScriptWithArgs(scriptName: string, args: any, argCount: number, stackSize: number): number; + startNewStreamedScript(scriptHash: Hash, stackSize: number): number; + startNewStreamedScriptWithArgs(scriptHash: Hash, args: any, argCount: number, stackSize: number): number; + toFloat(value: number): number; + vdist(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; + vdist2(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; + vmag(p0: number, p1: number, p2: number): number; + vmag2(p0: number, p1: number, p2: number): number; +} + +interface GameTimeMp { + addToClockTime(hour: number, minute: number, second: number): void; + advanceClockTimeTo(hour: number, minute: number, second: number): void; + getLocalTime(year: number, month: number, day: number, hour: number, minute: number, second: number): { + year: number; + month: number; + day: number; + hour: number; + minute: number; + second: number; + }; + getLocalTimeGmt(year: number, month: number, day: number, hour: number, minute: number, second: number): { + year: number; + month: number; + day: number; + hour: number; + minute: number; + second: number; + }; + getPosixTime(year: number, month: number, day: number, hour: number, minute: number, second: number): { + year: number; + month: number; + day: number; + hour: number; + minute: number; + second: number; + }; + pauseClock(toggle: boolean): void; + setClockDate(day: number, month: number, year: number): void; + setClockTime(hour: number, minute: number, second: number): void; + + // RAGE.MP extensions + serverTickCount: number; +} + +interface GameUiMp { + activateFrontendMenu(menuhash: Hash, Toggle_Pause: boolean, p2: number): void; + addBlipForCoord(x: number, y: number, z: number): BlipMp; + addBlipForPickup(pickup: PickupMp): BlipMp; + addBlipForRadius(posX: number, posY: number, posZ: number, radius: number): BlipMp; + addNextMessageToPreviousBriefs(p0: boolean): void; + addTextComponentFloat(value: number, decimalPlaces: number): void; + addTextComponentInteger(value: number): void; + addTextComponentItemString(labelName: string): void; + addTextComponentSubstringCash(cashAmount: number, p1: boolean): void; + addTextComponentSubstringLocalized(gxtEntryHash: Hash): void; + addTextComponentSubstringPlayerName(text: string): void; + addTextComponentSubstringTime(timestamp: number, flags: number): void; + addTextComponentSubstringWebsite(website: string): void; + addTrevorRandomModifier(headDisplayId: number): boolean; + beginTextCommandSetBlipName(gxtentry: string): void; + clearAdditionalText(p0: number, p1: boolean): void; + clearFloatingHelp(p0: any, p1: boolean): void; + clearHelp(toggle: boolean): void; + clearThisPrint(p0:string): void; + displayAmmoThisFrame(display: boolean): void; + displayAreaName(toggle: boolean): void; + displayCash(toggle: boolean): void; + displayHelpTextFromStringLabel(p0: any, loop: boolean, beep: boolean, shape: number): void; + displayHelpTextThisFrame(message: string, p1: boolean): void; + displayHud(toggle: boolean): void; + displayRadar(Toggle: boolean): any; + doesTextBlockExist(gxt: string): boolean; + doesTextLabelExist(gxt: string): boolean; + drawNotification(blink: boolean, p1: boolean): number; + drawNotification2(blink: boolean, p1: boolean): number; + drawNotification3(blink: boolean, p1: boolean): number; + drawNotification4(blink: boolean, p1: boolean): number; + drawSubtitleTimed(time: number, p1: boolean): void; + drawText(x: number, y: number): void; + enableDeathbloodSeethrough(p0: boolean): void; + flashAbilityBar(p0: any): void; + flashWantedDisplay(p0: boolean): any; + getBlipInfoIdCoord(p0: number): Vector3Mp; + getHudColour(hudIndex: number, r: number, g: number, b: number, a: number): { + hudIndex: number; + r: number; + g: number; + b: number; + a: number; + }; + getHudComponentPosition(componentIndex: RageEnums.HudComponent | number): number; + getLabelText(labelName: string): string; + getLengthOfLiteralString(string: string): number; + getLengthOfStringWithThisTextLabel(gxt: string): number; + getNamedRendertargetRenderId(p0: string): any; + getStreetNameFromHashKey(hash: Hash): string; + getTextScaleHeight(size: number, font: number): number; + getTextScreenWidth(p0: boolean): number; + getTextSubstring(text: string, position: number, length: number): string; + getTextSubstringSafe(text: string, position: number, length: number, maxLength: number): string; + getTextSubstringSlice(text: string, startPosition: number, endPosition: number): string; + hasAdditionalTextLoaded(slot: number): boolean; + hasHeadDisplayLoaded(headDisplayId: number): boolean; + hasThisAdditionalTextLoaded(gxt: string, slot: number): boolean; + hideHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; + hideScriptedHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; + hideSpecialAbilityLockonOperation(p0: any, p1: boolean): void; + isHudComponentActive(componentIndex: RageEnums.HudComponent | number): boolean; + isMinimapAreaRevealed(x: number, y: number, radius: number): boolean; + isNamedRendertargetLinked(hash: Hash): boolean; + isNamedRendertargetRegistered(p0: string): boolean; + isPauseMenuActive(): boolean; + isScriptedHudComponentActive(componentIndex: RageEnums.HudComponent | number): boolean; + isStreamingAdditionalText(p0: number): boolean; + keyHudColour(p0: boolean, p1: any): void; + linkNamedRendertarget(hash: Hash): void; + lockMinimapAngle(angle: number): void; + lockMinimapPosition(x: number, y: number): void; + objectDecalToggle(hash: Hash): void; + registerNamedRendertarget(p0: string, p1: boolean): boolean; + releaseNamedRendertarget(p0: any): boolean; + removeBlip(blip: Hash): void; + removeNotification(notifactionId: number): void; + requestAdditionalText(gxt: string, slot: number): void; + requestAdditionalText2(gxt: string, slot: number): void; + resetHudComponentValues(componentIndex: RageEnums.HudComponent | number): void; + respondingAsTemp(p0: number): void; + restartFrontendMenu(menuHash: Hash, p1: number): void; + setAbilityBarValue(p0: number, p1: number): void; + setCursorSprite(spriteId: number): void; + setFrontendActive(active: boolean): void; + setGpsFlags(p0: number, p1: number): void; + setGpsFlashes(toggle: boolean): void; + setHeadDisplayFlag(headDisplayId: number, sprite: number, toggle: boolean): void; + setHeadDisplayString(headDisplayId: number, string: string): void; + setHeadDisplayWanted(headDisplayId: number, wantedlvl: number): void; + setHudColour(componentIndex: RageEnums.HudComponent | number, r: number, g: number, b: number, a: number): void; + setHudComponentPosition(componentIndex: RageEnums.HudComponent | number, x: number, y: number): void; + setLoadingPromptTextEntry(string: string): void; + setMinimapAttitudeIndicatorLevel(altitude: number, p1: boolean): void; + setMinimapBlockWaypoint(toggle: boolean): void; + setMinimapComponent(p0: number, p1: boolean, p2: number): any; + setMinimapRevealed(toggle: boolean): void; + setMinimapVisible(toggle: boolean): void; + setMissionName(p0: boolean, name: string): void; + setMultiplayerHudCash(p0: number, p1: number): void; + setNewWaypoint(x: number, y: number): void; + setNotificationFlashColor(red: number, green: number, blue: number, alpha: number): void; + setNotificationMessage(picName1: string, picName2: string, flash: boolean, iconType: number, sender: string, + subject: string): number; + setNotificationMessageClanTag(picName1: string, picName2: string, flash: boolean, iconType: number, sender: string, + subject: string, duration: number, clanTag: string): number; + setNotificationMessageClanTag2(picName1: string, picName2: string, flash: boolean, iconType1: number, sender: string, + subject: string, duration: number, clanTag: string, iconType2: number, p9: number): number; + setNotificationTextEntry(type: string): void; + setPauseMenuActive(toggle: boolean): void; + setPlayerBlipPositionThisFrame(x: number, y: number): void; + setPlayerCashChange(cash: number, bank: number): void; + setRadarAsInteriorThisFrame(interior: Hash, x: number, y: number, z: number, p4: number): void; + setRadarBigmapEnabled(toggleBigMap: boolean, showFullMap: boolean): void; + setRadarZoom(zoomLevel: number): void; + setRadarZoomLevelThisFrame(zoomLevel: number): void; + setTextCentre(align: boolean): void; + setTextChatUnk(p0: boolean): void; + setTextColour(red: number, green: number, blue: number, alpha: number): void; + setTextComponentFormat(inputType: string): void; + setTextDropshadow(distance: number, r: number, g: number, b: number, a: number): void; + setTextEdge(p0: number, r: number, g: number, b: number, a: number): void; + setTextEntry(text: string): void; + setTextEntry2(p0: string): void; + setTextEntryForWidth(text: string): void; + setTextFont(fontType: number): void; + setTextGxtEntry(entry: string): void; + setTextJustification(justifyType: number): void; + setTextLeading(p0: boolean): void; + setTextProportional(p0: boolean): void; + setTextRenderId(renderId: number): void; + setTextRightJustify(toggle: boolean): void; + setTextScale(sizex: number, sizey: number): void; + setTextWrap(start: number, end: number): void; + setUseridsUihidden(p0: any, p1: any): boolean; + setWarningMessage(entryLine1: string, instructionalKey: number, entryLine2: string, p3: boolean, p4: any, + p5: any, p6: any, background: boolean): void; + setWarningMessage2(entryHeader: string, entryLine1: string, instructionalKey: number, entryLine2: string, + p4: boolean, p5: any, p6: any, p7: any, background: boolean): void; + setWarningMessage3(entryHeader: string, entryLine1: string, instructionalKey: any, entryLine2: string, + p4: any, p5: any, p6: any, p7: any, p8: any, p9: boolean): void; + setWidescreenFormat(p0: any): void; + showHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; + showLoadingPrompt(busySpinnerType: number): void; + showWeaponWheel(forcedShow: boolean): void; + toggleStealthRadar(toggle: boolean): void; +} + +interface GameUnkMp { + getBroadcastFinishedLosSound(p0: boolean): void; +} + +interface GameVehicleMp { + addVehicleStuckCheckWithWarp(p0: any, p1: number, p2: any, p3: boolean, p4: boolean, p5: boolean, p6: any): void; + createMissionTrain(variation: number, x: number, y: number, z: number, direction: boolean): Handle; + createScriptVehicleGenerator(x: number, y: number, z: number, heading: number, p4: number, p5: number, + modelHash: Hash, p7: number, p8: number, p9: number, p10: number, p11: boolean, p12: boolean, + p13: boolean, p14: boolean, p15: boolean, p16: number): number; + createVehicle(modelHash: Hash, x: number, y: number, z: number, heading: number, networkHandle: boolean, + vehiclehandle: boolean): any; + deleteMissionTrain(train: Handle): Handle; + deleteScriptVehicleGenerator(vehicleGenerator: number): void; + disableVehicleWeapon(disabled: boolean, weaponHash: Hash, vehicle: Handle, owner: Handle): void; + displayDistantVehicles(toggle: boolean): void; + doesScriptVehicleGeneratorExist(vehicleGenerator: number): boolean; + doesVehicleExistWithDecorator(decorator: string): boolean; + getClosestVehicle(x: number, y: number, z: number, radius: number, modelHash: Hash, flags: number): Handle; + getCurrentPlaybackForVehicle(p0: any): any; + getDisplayNameFromVehicleModel(modelHash: Hash): string; + getNumModColors(p0: number, p1: boolean): number; + getPositionInRecording(p0: any): number; + getPositionOfVehicleRecordingAtTime(p0: any, p1: number, p2: any): number; + getRandomVehicleBackBumperInSphere(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, + p6: number): Handle; + getRandomVehicleFrontBumperInSphere(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, + p6: number): Handle; + getRandomVehicleInSphere(x: number, y: number, z: number, radius: number, modelHash: Hash, flags: number): Handle; + getRandomVehicleModelInMemory(p0: boolean, modelHash: number, p2: number): { + modelHash: number; + p2: number; + }; + getRotationOfVehicleRecordingAtTime(p0: any, p1: number, p2: any): number; + getTimePositionInRecording(p0: any): number; + getTotalDurationOfVehicleRecording(p0: any, p1: any): any; + getTotalDurationOfVehicleRecordingId(p0: any): number; + getVehicleClassFromName(modelHash: Hash): number; + getVehicleClassMaxAcceleration(p0: any): number; + getVehicleClassMaxAgility(p0: any): number; + getVehicleClassMaxBraking(p0: any): number; + getVehicleClassMaxTraction(p0: any): number; + getVehicleModelAcceleration(modelHash: Hash): number; + getVehicleModelMaxBraking(modelHash: Hash): number; + getVehicleModelMaxNumberOfPassengers(modelHash: Hash): number; + getVehicleModelMaxSpeed(modelHash: Hash): number; + getVehicleModelMaxTraction(modelHash: Hash): number; + getVehicleRecordingId(p0: any, p1: any): any; + hasPreloadModsFinished(p0: any): boolean; + hasVehicleAssetLoaded(vehicleAsset: number): boolean; + hasVehicleRecordingBeenLoaded(p0: any, p1: any): boolean; + isAnyVehicleNearPoint(x: number, y: number, z: number, radius: number): boolean; + isCopVehicleInArea3d(x1: number, x2: number, y1: number, y2: number, z1: number, z2: number): boolean; + isPlaybackGoingOnForVehicle(p0: any): boolean; + isPlaybackUsingAiGoingOnForVehicle(p0: any): boolean; + isThisModelABicycle(model: Hash): boolean; + isThisModelABike(model: Hash): boolean; + isThisModelABoat(model: Hash): boolean; + isThisModelACar(model: Hash): boolean; + isThisModelAHeli(model: Hash): boolean; + isThisModelAnEmergencyBoat(model: Hash): boolean; + isThisModelAPlane(model: Hash): boolean; + isThisModelAQuadbike(model: Hash): boolean; + isThisModelATrain(model: Hash): boolean; + isVehicleInGarageArea(garageName: string, vehicle: Handle): boolean; + pausePlaybackRecordedVehicle(p0: any): void; + preloadVehicleMod(p0: any, p1: any, p2: any): void; + removeVehicleAsset(vehicleAsset: number): void; + removeVehicleRecording(p0: any, p1: any): void; + removeVehiclesFromGeneratorsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, + unk: any): void; + removeVehicleStuckCheck(p0: any): void; + requestVehicleAsset(vehicleHash: Hash, vehicleAsset: number): void; + requestVehicleRecording(p0: any, p1: any): void; + setAllLowPriorityVehicleGeneratorsActive(active: boolean): void; + setAllVehicleGeneratorsActiveInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, + p6: boolean, p7: boolean): void; + setCargobobHookPosition(p0: any, p1: number, p2: number, p3: boolean): void; + setFarDrawVehicles(toggle: boolean): void; + setGarbageTrucks(toggle: boolean): any; + setMissionTrainAsNoLongerNeeded(train: Handle, p1: boolean): Handle; + setNumberOfParkedVehicles(value: number): any; + setParkedVehicleDensityMultiplierThisFrame(multiplier: number): void; + setPlaybackSpeed(p0: any, speed: number): any; + setPlaybackToUseAiTryToRevertBackLater(p0: any, p1: any, p2: any, p3: boolean): void; + setRandomBoats(toggle: boolean): any; + setRandomTrains(toggle: boolean): void; + setRandomVehicleDensityMultiplierThisFrame(multiplier: number): void; + setScriptVehicleGenerator(vehicleGenerator: any, enabled: boolean): void; + setVehicleDensityMultiplierThisFrame(multiplier: number): void; + setVehicleModelIsSuppressed(model: Hash, suppressed: boolean): void; + setVehicleShootAtTarget(driver: Handle, entity: Handle, xTarget: number, yTarget: number, zTarget: number): void; + skipTimeInPlaybackRecordedVehicle(p0: any, p1: number): void; + skipToEndAndStopPlaybackRecordedVehicle(p0: any): void; + startPlaybackRecordedVehicle(p0: any, p1: any, p2: any, p3: boolean): void; + startPlaybackRecordedVehicleUsingAi(p0: any, p1: any, p2: any, p3: number, p4: any): void; + startPlaybackRecordedVehicleWithFlags(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; + stopPlaybackRecordedVehicle(p0: any): void; + switchTrainTrack(intersectionId: number, state: boolean): any; + unpausePlaybackRecordedVehicle(p0: any): void; + + // RAGE.MP extensions + repairOnExtraToggle: boolean; + defaultEngineBehaviour: boolean; + + addModelOverride(model: string, replaceToModel: string): void; + clearModelOverrides(): void; + removeModelOverride(model: string): void; +} + +interface GameWaterMp { + getWaterHeight(x: number, y: number, z: number, height: number): number; + getWaterHeightNoWaves(x: number, y: number, z: number, height: number): number; + modifyWater(x: number, y: number, radius: number, height: number): void; + setWavesIntensity(intensity: number): void; + testProbeAgainstAllWater(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, + p6: any, p7s: any): boolean; + testProbeAgainstWater(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, + p6: boolean): boolean; + testVerticalProbeAgainstAllWater(x: number, y: number, z: number, p3: any, p4: any): boolean; +} + +interface GameWeaponMp { + canUseWeaponOnParachute(weaponHash: Hash): boolean; + createWeaponObject(weaponHash: Hash, ammoCount: number, x: number, y: number, z: number, + showWorldModel: boolean, heading: number, p7: any): Handle; + doesWeaponTakeWeaponComponent(weaponHash: Hash, componentHash: Hash): boolean; + enableLaserSightRendering(toggle: boolean): void; + getWeaponClipSize(weaponHash: Hash): number; + getWeaponComponentHudStats(p0: any, p1: any): boolean; + getWeaponComponentTypeModel(componentHash: Hash): Hash; + getWeaponDamageType(weaponHash: Hash): number; + getWeaponHudStats(weaponHash: Hash, data: { + hudDamage: number; + hudSpeed: number; + hudCapacity: number; + hudAccuracy: number; + hudRange: number; + }): boolean; + getWeaponObjectTintIndex(weapon: EntityMp): number; + getWeaponTintCount(weaponHash: Hash): number; + getWeapontypeGroup(weaponHash: Hash): Hash; + getWeapontypeModel(weaponHash: Hash): Hash; + getWeapontypeSlot(weaponHash: Hash): Hash; + giveWeaponComponentToWeaponObject(weaponObject: Handle, addonHash: Hash): void; + giveWeaponObjectToPed(weaponObject: Handle, ped: Handle): void; + hasVehicleGotProjectileAttached(driver: Handle, vehicle: Handle, weapon: Hash, p3: any): boolean; + hasWeaponAssetLoaded(weaponHash: Hash): boolean; + hasWeaponGotWeaponComponent(weapon: Handle, addonHash: Hash): boolean; + isWeaponValid(weaponHash: Hash): boolean; + removeAllProjectilesOfType(weaponhash: Hash, p1: boolean): void; + removeWeaponAsset(weaponHash: Hash): void; + removeWeaponComponentFromWeaponObject(p0: any, p1: any): void; + requestWeaponAsset(weaponHash: Hash, p1: number, p2: number): void; + requestWeaponHighDetailModel(weaponObject: Handle): void; + setFlashLightFadeDistance(distance: number): void; + setPedAmmoToDrop(p0: any, p1: any): void; + setWeaponObjectTintIndex(weapon: EntityMp, tint: number): void; + unequipEmptyWeapons: boolean; +} + +interface GameWorldprobeMp { + castRayPointToPoint(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, flags: number, + ignoreEntity: EntityMp, p8: number): number; + getShapeTestResult(rayHandle: number, hit: boolean, endCoords: Vector3Mp, surfaceNormal: Vector3Mp, + entityHit: EntityMp): { + hit: boolean; + endCoords: Vector3Mp; + surfaceNormal: Vector3Mp; + entityHit: EntityMp; + }; + getShapeTestResultEx(rayHandle: number, hit: boolean, endCoords: Vector3Mp, surfaceNormal: Vector3Mp, + materialHash: number, entityHit: EntityMp): { + hit: boolean; + endCoords: Vector3Mp; + surfaceNormal: Vector3Mp; + materialHash: number; + entityHit: EntityMp; + }; + startShapeTestBox(x: number, y: number, z: number, sizeX: number, sizeY: number, sizeZ: number, rotationX: number, + rotationY: number, rotationZ: number, rotationOrder: number, flags: number, ignoreEntity: EntityMp | number, + p12: number): number; + startShapeTestCapsule(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, radius: number, + flags: number, ignoreEntity: EntityMp, p9: number): number; + startShapeTestLosProbe(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, flags: number, + ignoreEntity: EntityMp, p8: number): number; +} + +interface GameZoneMp { + clearPopscheduleOverrideVehicleModel(scheduleId: number): void; + getHashOfMapAreaAtCoords(x: number, y: number, z: number): number; + getHashOfMapAreaAtCoords(x: number, y: number, z: number): string; + getZoneAtCoords(x: number, y: number, z: number): number; + getZoneFromNameId(zoneName: string): number; + getNameOfZone(x: number, y: number, z: number): string; + getZonePopschedule(zoneId: number): number; + getZoneScumminess(zoneId: number): number; + overridePopscheduleVehicleModel(scheduleId: number, vehicleHash: number): void; + overridePopscheduleVehicleModel(scheduleId: number, vehicleHash: string): void; + setZoneEnabled(zoneId: number, toggle: boolean): void; +} + +interface GameGxtMp { + set(labelNameOrHash: string, newLabelValue:string): void; + get(labelNameOrHash: string): string; + getDefault(labelNameOrHash: string): string; + reset(): void; +} + +// ------------------------------------------------------------------------- +// Gui MP types +// ------------------------------------------------------------------------- + +interface GuiChatMp { + colors: boolean; + safe: boolean; + + activate(state: boolean): void; + push(text: string): void; + show(state: boolean): void; +} + +interface GuiCursorMp { + position: Array2d; + visible: boolean; + + show(freezeControls: boolean, state: boolean): void; +} + +// ------------------------------------------------------------------------- +// Pool MP types +// ------------------------------------------------------------------------- + +interface BlipMpPool extends EntityMpPool { + "new"(sprite: number, position: Vector3Mp, options?: { + alpha?: number, + color?: number, + dimension?: number, + drawDistance?: number, + name?: string, + rotation?: number, + scale?: number, + shortRange?: boolean + }): BlipMp; +} + +interface BrowserMpPool extends EntityMpPool { + "new"(url: string): BrowserMp; +} + +interface CameraMpPool extends EntityMpPool { + "new"(name: string, position?: Vector3Mp, rotation?: Vector3Mp, fov?: number): CameraMp; +} + +interface CheckpointMpPool extends EntityMpPool { + "new"(type: number, position: Vector3Mp, radius: number, options?: { + color?: RGBA, + dimension?: number, + direction?: Vector3Mp, + visible? : boolean + }): CheckpointMp; +} + +interface ColshapeMpPool extends EntityMpPool { + newCircle(x: number, y: number, range: number, dimension?: number): ColshapeMp; + newCuboid(x: number, y: number, z: number, width: number, depth: number, height: number, dimension?: number): ColshapeMp; + newRectangle(x: number, y: number, width: number, height: number, dimension?: number): ColshapeMp; + newSphere(x: number, y: number, z: number, range: number, dimension?: number): ColshapeMp; + newTube(x: number, y: number, z: number, range: number, height: number, dimension?: number): ColshapeMp; +} + +interface EntityMpPool { + readonly length: number; + readonly size: number; + streamed: TEntity[]; + + apply(fn: (...args: any[]) => void, ...args: any[]): void; + at(index: number): TEntity; + atHandle(handle: number): TEntity; + atRemoteId(remoteId: number): TEntity; + exists(entity: TEntity | number): boolean; + forEach(fn: (entity: TEntity) => void): void; + forEachInRange(position: Vector3Mp, range: number, fn: (entity: TEntity) => void): void; + forEachInDimension(position: Vector3Mp, range: number, dimension: number, fn: (entity: TEntity) => void): void; + forEachInStreamRange(fn: (entity: TEntity) => void): void; + getClosest(position: Vector3Mp): TEntity + getClosest(position: Vector3Mp, limit: number): TEntity[] + toArray(): TEntity[]; + toArrayFast(): TEntity[]; + + /** + @deprecated (1.1+) considering optimizations applied to the reimplemented mp.Pool.forEach in this update without side effects, it's not longer required; for now it's an alias to forEach. + */ + forEachFast(fn: (entity: TEntity) => void): void; +} + +interface EventMpPool { + addDataHandler(keyName: string, callback: (...args: any[]) => void): void; + + add(eventName: RageEnums.EventKey.BROWSER_CREATED, callback: (browser: BrowserMp) => void): void; + add(eventName: RageEnums.EventKey.BROWSER_DOM_READY, callback: (browser: BrowserMp) => void): void; + add(eventName: RageEnums.EventKey.BROWSER_LOADING_FAILED, callback: (browser: BrowserMp) => void): void; + add(eventName: RageEnums.EventKey.CLICK, callback: (x: number, y: number, upOrDown: string, leftOrRight: string, relativeX: number, relativeY: number, worldPosition: Vector3MpLike, hitEntity: number) => void): void; + add(eventName: RageEnums.EventKey.CONSOLE_COMMAND, callback: (command: string) => void): void; + add(eventName: RageEnums.EventKey.DUMMY_ENTITY_CREATED, callback: (dummyType: number, dummy: DummyEntityMp) => void): void; + add(eventName: RageEnums.EventKey.DUMMY_ENTITY_DESTROYED, callback: (dummyType: number, dummy: DummyEntityMp) => void): void; + add(eventName: RageEnums.EventKey.ENTITY_CONTROLLER_CHANGE, callback: (entity: EntityMp, newController: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.ENTITY_CREATED, callback: (entity: EntityMp) => void): void; + add(eventName: RageEnums.EventKey.ENTITY_STREAM_IN, callback: (entity: EntityMp) => void): void; + add(eventName: RageEnums.EventKey.ENTITY_STREAM_OUT, callback: (entity: EntityMp) => void): void; + add(eventName: RageEnums.EventKey.GUI_READY, callback: () => void): void; + add(eventName: RageEnums.EventKey.INCOMING_DAMAGE, callback: (sourceEntity: EntityMp, sourcePlayer: PlayerMp, targetEntity: EntityMp, weapon: number, boneIndex: number, damage: number) => void): void; + add(eventName: RageEnums.EventKey.OUTGOING_DAMAGE, callback: (sourceEntity: EntityMp, targetEntity: EntityMp, targetPlayer: PlayerMp, weapon: number, boneIndex: number, damage: number) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_CHAT, callback: (text: string) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_CREATE_WAYPOINT, callback: (position: Vector3Mp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_COMMAND, callback: (command: string) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_DEATH, callback: (player: PlayerMp, reason: number, killer: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_ENTER_CHECKPOINT, callback: (checkpoint: CheckpointMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_ENTER_COLSHAPE, callback: (colshape: ColshapeMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_ENTER_VEHICLE, callback: (vehicle: VehicleMp, seat: number) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_EXIT_CHECKPOINT, callback: (checkpoint: CheckpointMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_EXIT_COLSHAPE, callback: (colshape: ColshapeMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_JOIN, callback: (player: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_LEAVE_VEHICLE, callback: (vehicle: VehicleMp, seat: number) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_QUIT, callback: (player: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_REACH_WAYPOINT, callback: (...args: any[]) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_READY, callback: () => void): void; + add(eventName: RageEnums.EventKey.PLAYER_REMOVE_WAYPOINT, callback: (...args: any[]) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_RESURRECT, callback: () => void): void; + add(eventName: RageEnums.EventKey.PLAYER_RULE_TRIGGERED, callback: (rule: string, counter: number) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_SPAWN, callback: (player: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_START_TALKING, callback: (player: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_STOP_TALKING, callback: (player: PlayerMp) => void): void; + add(eventName: RageEnums.EventKey.PLAYER_WEAPON_SHOT, callback: (targetPosition: Vector3Mp, targetEntity?: undefined | EntityMp) => void): void; + add(eventName: RageEnums.EventKey.RENDER, callback: (nametags: [PlayerMp, number, number, number][]) => void): void; + add(eventName: RageEnums.EventKey.VEHICLE_DEATH, callback: (vehicle: VehicleMp) => void): void; + + add(eventName: RageEnums.EventKey | string, callback: (...args: any[]) => void): void; + add(events: ({ [name: string]: (...args: any[]) => void; })): void; + addProc(procName: string, callback: (...args: any[]) => void): void; + addProc(procs: ({ [name: string]: (...args: any[]) => void; })): void; + call(eventName: string, ...args: any[]): void; + callRemoteProc(procName: string, ...args: any[]): Promise; + callRemoteUnreliable(eventName: string, ...args: any[]): void; + callRemote(eventName: string, ...args: any[]): void; + cancelPendingRpc(procName?: string): void; + hasPendingRpc(procName?: string): boolean; + remove(eventName: string, handler?: (...args: any[]) => void): void; + remove(eventNames: string[]): void; +} + +interface DummyEntityMpPool extends EntityMpPool { + forEachByType(dummyType: number, fn: (entity: DummyEntityMp) => void): void; +} + +interface MarkerMpPool extends EntityMpPool { + "new"(type: number, position: Vector3Mp, scale: number, options?: { + bobUpAndDown?: boolean, + color?: RGBA, + dimension?: number, + direction?: Vector3Mp, + rotation?: Vector3Mp, + visible?: boolean + }): MarkerMp; +} + +interface ObjectMpPool extends EntityMpPool { + "new"(model: HashOrString, position: Vector3Mp, options?: { + alpha?: number, + dimension?: number, + rotation?: Vector3Mp + }): ObjectMp; + newWeak(handle: number): ObjectMp; +} + +interface PedMpPool extends EntityMpPool { + "new"(model: RageEnums.Hashes.Ped | Hash, position: Vector3Mp, heading: number, dimension?: number): PedMp; +} + +interface PickupMpPool extends EntityMpPool { + "new"(...args: any[]): PickupMp; // TODO +} + +interface PlayerMpPool extends EntityMpPool { + local: PlayerMp; +} + +interface TextLabelMpPool extends EntityMpPool { + "new"(text: string, position: Vector3Mp, options?: { + color?: RGBA, + dimension?: number, + drawDistance?: number, + font?: number, + los?: boolean + }): TextLabelMp; +} + +interface VehicleMpPool extends EntityMpPool { + "new"(model: HashOrString, position: Vector3Mp, options?: { + alpha?: number, + color?: [ Array2d, Array2d ] | [ RGB, RGB ], + dimension?: number, + engine?: boolean, + heading?: number; + locked?: boolean, + numberPlate?: string + }): VehicleMp; +} + +// ------------------------------------------------------------------------- +// Additional MP types +// ------------------------------------------------------------------------- + +interface Vector3MpLike { + x: number; + y: number; + z: number; +} + +interface Vector3Mp { + new(vector: Vector3MpLike): Vector3Mp; + new(vector: [number, number, number]): Vector3Mp; + new(x?: number, y?: number, z?: number): Vector3Mp; + + x: number; + y: number; + z: number; + + add(value: number): Vector3Mp; + add(vector3: Vector3Mp): Vector3Mp; + angleTo(number: Vector3Mp): number; + clone(): Vector3Mp; + cross(vector3: Vector3MpLike): Vector3Mp; + divide(value: number): Vector3Mp; + divide(vector3: Vector3Mp): Vector3Mp; + dot(vector3: Vector3MpLike): number; + equals(vector3: Vector3MpLike): boolean; + length(): number; + negative(): Vector3Mp; + max(): Vector3Mp; + min(): Vector3Mp; + multiply(value: number): Vector3Mp; + multiply(vector3: Vector3Mp): Vector3Mp; + subtract(value: number): Vector3Mp; + subtract(vector3: Vector3Mp): Vector3Mp; + toAngles(): [number, number]; + toArray(): [number, number, number]; + toArray(limit: number): number[]; + toString(): string; + unit(): Vector3Mp; +} + +interface RaycastResult { + entity: EntityMp, + position: Vector3Mp, + surfaceNormal: Vector3Mp +} + +// ------------------------------------------------------------------------- +// Vars +// ------------------------------------------------------------------------- + +declare const mp: Mp; From bce480aad540444e564a52e8825a5a7a601c2bcc Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:29:34 +0200 Subject: [PATCH 043/111] test --- ReallifeGamemode.Client/core/rage-mp/entities.ts | 3 +-- ReallifeGamemode.Client/game.ts | 2 +- .../node_modules/@types/ragemp-c/index.d.ts | 7 +++++-- ReallifeGamemode.Client/util/attachmentMngr.ts | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 69cd3e1a..8b3b91fc 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -194,13 +194,12 @@ class RageObject extends RageEntity implements IObject { public object: ObjectMp; public __attachmentData: object; - constructor(object: ObjectMp, attachmentData: object) { + constructor(object: ObjectMp) { if (!object) { throw "Object is undefined" } super(object); this.object = object; - this.__attachmentData = attachmentData; } } diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 8b1f6883..44e0609b 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -81,7 +81,7 @@ interface IEntityPool { } interface IObjectPool extends IEntityPool { - setData(entity: ObjectMp, attachmentData: object): void; + setData(entity: ObjectMp): void; } interface IPlayerPool extends IEntityPool { diff --git a/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts b/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts index ddef2c97..22a41556 100644 --- a/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts +++ b/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts @@ -339,7 +339,9 @@ interface EntityMp { setVelocity(x: number, y: number, z: number): void; setVisible(toggle: boolean, p1: boolean): void; stopAnim(animation: string, animGroup: string, p2: number): void; - stopSynchronizedAnim(p0: number, p1: boolean): boolean; + stopSynchronizedAnim(p0: number, p1: boolean): boolean; + __attachments: any; + __attachmentObjects: any; } interface CheckpointMp extends EntityMp { @@ -385,7 +387,8 @@ interface ObjectMp extends EntityMp { setPhysicsParams(weight: number, p1: number, p2: number, p3: number, p4: number, gravity: number, p6: number, p7: number, p8: number, p9: number, buoyancy: number): void; setTargettable(targettable: boolean): void; - slide(toX: number, toY: number, toZ: number, speedX: number, speedY: number, speedZ: number, collision: boolean): boolean; + slide(toX: number, toY: number, toZ: number, speedX: number, speedY: number, speedZ: number, collision: boolean): boolean; + __attMgrData: any; } interface PedBaseMp extends EntityMp { diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts index 2da23324..41c07536 100644 --- a/ReallifeGamemode.Client/util/attachmentMngr.ts +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -1,6 +1,5 @@ import { IGame, IEntity } from "../game"; -var attachId = 0; export default function attachmentManager(game: IGame) { mp.events.add("SERVER:LoadAttachments", () => { @@ -12,6 +11,8 @@ export default function attachmentManager(game: IGame) { attachmentMngr.register("weapondeal2", "w_sg_pumpshotgun", "weapondeal2w_sg_pumpshotgun", new mp.Vector3(0.4, 1.6, 0.62), new mp.Vector3(90, 0, 180)); }); + + const attachmentMngr = { attachments: {}, From 5b81ba886e8c4e0229dcfab284be4433d21df7d4 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:37:06 +0200 Subject: [PATCH 044/111] test --- ReallifeGamemode.Client/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/package.json b/ReallifeGamemode.Client/package.json index 5c8c6d97..c32753f1 100644 --- a/ReallifeGamemode.Client/package.json +++ b/ReallifeGamemode.Client/package.json @@ -4,7 +4,7 @@ "devDependencies": { "@babel/core": "^7.5.5", "@types/node": "^11.13.18", - "@types/ragemp-c": "github:CocaColaBear/types-ragemp-c#v1.0", + "@types/ragemp-c": "github:kookroach/types-ragemp-c#v1.0", "babel-loader": "^8.0.6", "copy-webpack-plugin": "^5.1.1", "serialize-javascript": "^3.0.0", From 8b21742d64966c61abc811af72fb0d98d75c6d29 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:41:31 +0200 Subject: [PATCH 045/111] test --- ReallifeGamemode.Client/package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/package-lock.json b/ReallifeGamemode.Client/package-lock.json index 3abe7faf..be4274d9 100644 --- a/ReallifeGamemode.Client/package-lock.json +++ b/ReallifeGamemode.Client/package-lock.json @@ -151,8 +151,8 @@ "dev": true }, "@types/ragemp-c": { - "version": "github:CocaColaBear/types-ragemp-c#12a2c2d39d5114076b60c32b99ac0d80e3b05677", - "from": "github:CocaColaBear/types-ragemp-c#v1.0", + "version": "github:kookroach/types-ragemp-c#849cf51f85066c786ad3c563872ae74d9af2dd7c", + "from": "github:kookroach/types-ragemp-c#v1.0", "dev": true }, "@webassemblyjs/ast": { From fa81b7fc79d004468c5e6d8289675c883cb38b52 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:53:51 +0200 Subject: [PATCH 046/111] =?UTF-8?q?=C2=B4remove=20garbage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/rage-mp/entities.ts | 47 +------------------ ReallifeGamemode.Client/core/rage-mp/game.ts | 5 +- ReallifeGamemode.Client/game.ts | 9 ---- 3 files changed, 4 insertions(+), 57 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 8b3b91fc..389c2b9b 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -1,4 +1,4 @@ -import { IEntity, IPlayer, IEntityAttachments, IEntityAttachmentPool, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType, IObjectPool, IObject } from "../../game"; +import { IEntity, IPlayer, IEntityAttachments, IEntityAttachmentPool, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType } from "../../game"; import { parseJson } from "../../util"; import game from "../.."; @@ -190,18 +190,6 @@ class RagePlayerPool implements IPlayerPool { } } -class RageObject extends RageEntity implements IObject { - public object: ObjectMp; - public __attachmentData: object; - - constructor(object: ObjectMp) { - if (!object) { - throw "Object is undefined" - } - super(object); - this.object = object; - } -} class RageVehicle extends RageEntity implements IVehicle { private vehicle: VehicleMp; @@ -240,36 +228,6 @@ class RageVehicle extends RageEntity implements IVehicle { } -class RageObjectPool implements IObjectPool { - public attachmentDataMap: Map; - - - setData(entity: ObjectMp, attachmentData: object): void { - if (!this.attachmentDataMap) - this.attachmentDataMap = new Map(); - - this.attachmentDataMap.set(entity, attachmentData); - } - - at(id: number): IObject { - var object = mp.objects.atRemoteId(Number(id)); - - if (!object) - return null; - - return new RageObject(object, this.attachmentDataMap.get(object)); - } - - forEach(fn: (entity: IObject) => void): void { - mp.objects.forEach(e => { - if (!e) { - game.ui.sendChatMessage("forEach - e is null"); - return; - } - fn(new RageObject(e, this.attachmentDataMap.get(e))); - }) - } -} class RageVehiclePool implements IVehiclePool { at(id: number): IVehicle { @@ -301,6 +259,5 @@ export { RageEntityAttachmentPool, RageVehicle, RageVehiclePool, - RageObject, - RageObjectPool, + } \ No newline at end of file diff --git a/ReallifeGamemode.Client/core/rage-mp/game.ts b/ReallifeGamemode.Client/core/rage-mp/game.ts index 106f21fb..5094ba9f 100644 --- a/ReallifeGamemode.Client/core/rage-mp/game.ts +++ b/ReallifeGamemode.Client/core/rage-mp/game.ts @@ -1,13 +1,12 @@ -import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool, IEntityAttachmentPool, IObjectPool } from "../../game"; +import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool, IEntityAttachmentPool } from "../../game"; import RageEvents from "./events"; import RageUi from "./ui"; -import { RagePlayerPool, RageVehiclePool, RageEntityAttachmentPool, RageObjectPool } from "./entities"; +import { RagePlayerPool, RageVehiclePool, RageEntityAttachmentPool } from "./entities"; export default class RageGame implements IGame { players: IPlayerPool = new RagePlayerPool(); vehicles: IVehiclePool = new RageVehiclePool(); attachments: IEntityAttachmentPool = new RageEntityAttachmentPool(); - objects: IObjectPool = new RageObjectPool(); events: IEvents = new RageEvents; ui: IUi = new RageUi; diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 44e0609b..42a0d1ed 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -6,7 +6,6 @@ players: IPlayerPool; vehicles: IVehiclePool; attachments: IEntityAttachmentPool; - objects: IObjectPool; disableDefaultEngineBehaviour(): void; } @@ -56,9 +55,6 @@ interface IPlayer extends IEntity { nametagColor: number; } -interface IObject extends IEntity { - __attachmentData: object; -} interface IEntityAttachments { remoteId: any; @@ -80,9 +76,6 @@ interface IEntityPool { forEach(fn: (entity: TEntity) => void): void; } -interface IObjectPool extends IEntityPool { - setData(entity: ObjectMp): void; -} interface IPlayerPool extends IEntityPool { local: IPlayer; @@ -159,7 +152,6 @@ export { IBrowser, IPlayer, - IObject, IEntityAttachments, IEntityAttachmentPool, IVehicle, @@ -167,7 +159,6 @@ export { IEntityPool, IPlayerPool, IVehiclePool, - IObjectPool, EventName, Key, From 24486b5b47c46b05f0ad37fbf647c1a4da712452 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:56:55 +0200 Subject: [PATCH 047/111] remove more garbage --- ReallifeGamemode.Client/Gui/blips.ts | 4 ++-- ReallifeGamemode.Client/index.ts | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 87c46329..b4510e14 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -7,7 +7,7 @@ export default function playerBlips() { - /* mp.events.add("entityStreamIn", (entity) => { + mp.events.add("entityStreamIn", (entity) => { if (entity.type === "player") { var entityMp = entity; @@ -36,7 +36,7 @@ export default function playerBlips() { } }); - */ + diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts index 3dfc7746..70a08959 100644 --- a/ReallifeGamemode.Client/index.ts +++ b/ReallifeGamemode.Client/index.ts @@ -224,10 +224,9 @@ refuseCollector(); import PedCreator from './Ped/PedCreator'; PedCreator(); -/* + import attachmentManager from './util/attachmentMngr'; attachmentManager(game); -*/ import relativeVector from './util/relativevector'; relativeVector(); From 5687b69b7209659dbd6074b18b6ae07d7cded4d7 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 21:58:48 +0200 Subject: [PATCH 048/111] remove life support --- .../node_modules/@types/ragemp-c/index.d.ts | 3561 ----------------- 1 file changed, 3561 deletions(-) delete mode 100644 ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts diff --git a/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts b/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts deleted file mode 100644 index 22a41556..00000000 --- a/ReallifeGamemode.Client/node_modules/@types/ragemp-c/index.d.ts +++ /dev/null @@ -1,3561 +0,0 @@ -/// -/// -/// -/// -/// - -// ------------------------------------------------------------------------- -// Custom types -// ------------------------------------------------------------------------- - -type Handle = number; // TODO: Temp type. Replace to the Entity, when methods are updated -type Hash = number; // TODO: Temp type. Replace to HashOrString, when methods are updated -type HashOrString = Hash; -type RGB = [ number, number, number ]; -type RGBA = [ number, number, number, number ]; -type Array3d = [ number, number, number ]; -type Array2d = [ number, number ]; - -// ------------------------------------------------------------------------- -// Main MP interfaces -// ------------------------------------------------------------------------- - -interface Mp { - blips: BlipMpPool; - browsers: BrowserMpPool; - cameras: CameraMpPool; - checkpoints: CheckpointMpPool; - colshapes: ColshapeMpPool; - console: ConsoleMp; - discord: DiscordMp; - dummies: DummyEntityMpPool; - events: EventMpPool; - game: GameMp; - gui: GuiMp; - keys: KeysMp; - labels: TextLabelMpPool; - markers: MarkerMpPool; - nametags: NametagsMp; - objects: ObjectMpPool; - peds: PedMpPool; - pickups: PickupMpPool; - players: PlayerMpPool; - raycasting: RaycastingMp; - storage: StorageMp; - system: SystemMp; - user: UserMp; - Vector3: Vector3Mp; - vehicles: VehicleMpPool; - voiceChat: VoiceChatMp; -} - -interface GameMp { - app: GameAppMp; - audio: GameAudioMp; - brain: GameBrainMp; - cam: GameCamMp; - controls: GameControlsMp; - cutscene: GameCutsceneMp; - datafile: GameDatafileMp; - decisionevent: GameDecisioneventMp; - decorator: GameDecoratorMp; - dlc1: GameDlc1Mp; - dlc2: GameDlc2Mp; - entity: GameEntityMp; - fire: GameFireMp; - gameplay: GameGameplayMp; - graphics: GameGraphicsMp; - gxt: GameGxtMp; - interior: GameInteriorMp; - itemset: GameItemsetMp; - mobile: GameMobileMp; - object: GameObjectMp; - pathfind: GamePathfindMp; - ped: GamePedMp; - player: GamePlayerMp; - rope: GameRopeMp; - script: GameScriptMp; - stats: GameStatsMp; - streaming: GameStreamingMp; - system: GameSystemMp; - time: GameTimeMp; - ui: GameUiMp; - unk: GameUnkMp; - recorder: GameRecorderMp; - vehicle: GameVehicleMp; - water: GameWaterMp; - weapon: GameWeaponMp; - worldprobe: GameWorldprobeMp; - zone: GameZoneMp; - - invoke(hash: string, ...args: any[]): any; - invokeFloat(hash: string, ...args: any[]): any; - invokeString(hash: string, ...args: any[]): any; - invokeVector3(hash: string, ...args: any[]): any; - joaat(text: string): Hash; - joaat(textArray: string[]): Hash[]; - wait(ms: number): void; - waitAsync(ms: number): Promise; -} - -interface GuiMp { - chat: GuiChatMp; - cursor: GuiCursorMp; - - execute(code: string): void; - takeScreenshot(name: string, type: RageEnums.ScreenshotType | number, quality: number, compressionQuality: number): void; -} - -// ------------------------------------------------------------------------- -// Entity MP types -// ------------------------------------------------------------------------- - -interface BlipMp { - dimension: number; - handle: number; - id: number; - remoteId: number; - type: string; - - addTextComponentSubstringName(): void; - destroy(): void; - doesExist(): boolean; - endTextCommandSetName(): void; - getAlpha(): number; - getColour(): number; - getCoords(): Vector3Mp; - getFirstInfoId(): BlipMp; - getHudColour(): number; - getInfoIdDisplay(): number; - getInfoIdEntityIndex(): Handle; - getInfoIdPickupIndex(): PickupMp; - getInfoIdType(): number; - getNextInfoId(): BlipMp; - getSprite(): number; - getVariable(value: string): any; - hasVariable(value: string): boolean; - hideNumberOn(): void; - isFlashing(): boolean; - isMissionCreator(): boolean; - isOnMinimap(): boolean; - isShortRange(): boolean; - pulse(): void; - setAlpha(alpha: number): void; - setAsFriendly(toggle: boolean): void; - setAsMissionCreator(toggle: boolean): void; - setAsShortRange(toggle: boolean): void; - setBright(toggle: boolean): void; - setCategory(index: number): void; - setColour(color: number): void; - setCoords(position: Vector3Mp): void; - setDisplay(displayId: number): void; - setFade(opacity: number, duration: number): void; - setFlashes(toggle: boolean): void; - setFlashesAlternate(toggle: boolean): void; - setFlashInterval(p1: any): void; - setFlashTimer(duration: number): void; - setHighDetail(toggle: boolean): void; - setNameFromTextFile(gxtEntry: string): void; - setNameToPlayerName(player: PlayerMp): void; - setPosition(posX: number, posY: number, posZ: number): void; - setPriority(priority: number): void; - setRotation(rotation: number): void; - setRoute(enabled: boolean): void; - setRouteColour(colour: number): void; - setScale(scale: number): void; - setSecondaryColour(r: number, g: number, b: number): void; - setShowCone(toggle: boolean): void; - setShowHeadingIndicator(toggle: boolean): void; - setSprite(spriteId: number): void; - showNumberOn(number: number): void; -} - -interface EntityMp { - alpha: number; - dimension: number; - model: number; - position: Vector3Mp; -  readonly handle: any; -  readonly id: number; -  readonly remoteId: number; -  readonly type: string; - - applyForceTo(forceType: number, x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, - boneIndex: number, isRel: number, p9: boolean, highForce: boolean, p11: boolean, p12: boolean): void; - applyForceToCenterOfMass(forceType: number, x: number, y: number, z: number, p4: boolean, isRel: boolean, - highForce: boolean, p7: boolean): void; - attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, - zRot: number, p8: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, - fixedRot: boolean): void; - attachToPhysically(entity: Handle, boneIndex1: number, boneIndex2: number, xPos1: number, yPos1: number, - zPos1: number, xPos2: number, yPos2: number, zPos2: number, xRot: number, yRot: number, zRot: number, - breakForce: number, fixedRot: boolean, p14: boolean, collision: boolean, p16: boolean, p17: number): void; - clearLastDamage(): void; - destroy(): void; - detach(p0: boolean, collision: boolean): void; - dist(position: Vector3Mp): number; - distSquared(position: Vector3Mp): number; - doesBelongToThisScript(p0: boolean): boolean; - doesExist(): boolean; - doesHaveDrawable(): boolean; - doesHavePhysics(): boolean; - forceAiAndAnimationUpdate(): void; - forceStreamingUpdate(): void; - freezePosition(toggle: boolean): void; - getAlpha(): number; - getAnimCurrentTime(animDict: string, animName: string): number; - getAnimTotalTime(animDict: string, animName: string): number; - getAttachedTo(): Handle; - getBoneIndexByName(boneName: string): number; - getCollisionNormalOfLastHitFor(): Vector3Mp; - getCoords(alive: boolean): Vector3Mp; - getForwardVector(): Vector3Mp; - getForwardX(): number; - getForwardY(): number; - getHeading(): number; - getHealth(): number; - getHeight(x: number, y: number, z: number, atTop: boolean, inWorldCoords: boolean): number; - getHeightAboveGround(): number; - getLastMaterialHitBy(): Hash; - getLodDist(): number; - getMatrix(rightVector: Vector3Mp, forwardVector: Vector3Mp, upVector: Vector3Mp, position: Vector3Mp): { - rightVector: Vector3Mp; - forwardVector: Vector3Mp; - upVector: Vector3Mp; - position: Vector3Mp; - }; - getMaxHealth(): number; - getModel(): Hash; - getNearestPlayerTo(): Handle; - getNearestPlayerToOnTeam(team: number): Handle; - getObjectIndexFromIndex(): Handle; - getOffsetFromGivenWorldCoords(posX: number, posY: number, posZ: number): Vector3Mp; - getOffsetFromInWorldCoords(offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; - getPedIndexFromIndex(): Handle; - getPhysicsHeading(): number; - getPitch(): number; - getPopulationType(): number; - getQuaternion(x: number, y: number, z: number, w: number): { - x: number; - y: number; - z: number; - w: number; - }; - getRoll(): number; - getRotation(rotationOrder: number): Vector3Mp; - getRotationVelocity(): Vector3Mp; - getScript(script: Handle): Handle; - getSpeed(): number; - getSpeedVector(relative: boolean): Vector3Mp; - getSubmergedLevel(): number; - getType(): number; - getUprightValue(): number; - getVariable(value: string): any; - getVehicleIndexFromIndex(): Handle; - getVelocity(): Vector3Mp; - getWorldPositionOfBone(boneIndex: number): Vector3Mp; - hasAnimEventFired(actionHash: Hash): boolean; - hasAnimFinished(animDict: string, animName: string, p2: number): boolean; - hasBeenDamagedBy(entity: Handle, p1: boolean): boolean; - hasBeenDamagedByAnyObject(): boolean; - hasBeenDamagedByAnyPed(): boolean; - hasBeenDamagedByAnyVehicle(): boolean; - hasClearLosTo(entity: Handle, traceType: number): boolean; - hasClearLosToInFront(entity: Handle): boolean; - hasCollidedWithAnything(): boolean; - hasCollisionLoadedAround(): boolean; - isAMission(): boolean; - isAnObject(): boolean; - isAPed(): boolean; - isAt(entity: Handle, xSize: number, ySize: number, zSize: number, p4: boolean, p5: boolean, p6: number): boolean; - isAtCoord(xPos: number, yPos: number, zPos: number, xSize: number, ySize: number, zSize: number, p6: boolean, - p7: boolean, p8: number): boolean; - isAttached(): boolean; - isAttachedTo(to: Handle): boolean; - isAttachedToAnyObject(): boolean; - isAttachedToAnyPed(): boolean; - isAttachedToAnyVehicle(): boolean; - isAVehicle(): boolean; - isCollisonDisabled(): boolean; - isDead(): boolean; - isInAir(): boolean; - isInAngledArea(originX: number, originY: number, originZ: number, edgeX: number, edgeY: number, edgeZ: number, - angle: number, p7: boolean, p8: boolean, p9: any): boolean; - isInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p6: boolean, p7: boolean, p8: any): boolean; - isInWater(): boolean; - isInZone(zone: string): boolean; - isOccluded(): boolean; - isOnScreen(): boolean; - isPlayingAnim(animDict: string, animName: string, p2: number): boolean; - isStatic(): boolean; - isTouching(targetEntity: Handle): boolean; - isTouchingModel(modelHash: Hash): boolean; - isUpright(angle: number): boolean; - isUpsidedown(): boolean; - isVisible(): boolean; - isVisibleToScript(): boolean; - isWaitingForWorldCollision(): boolean; - playAnim(animName: string, propName: string, p2: number, p3: boolean, p4: boolean, p5: boolean, delta: number, - bitset: any): boolean; - playSynchronizedAnim(syncedScene: number, animation: string, propName: string, p3: number, p4: number, p5: any, - p6: number): boolean; - processAttachments(): void; - resetAlpha(): void; - setAlpha(alphaLevel: number/*skin: boolean*/): void; // TODO: Check this - setAlwaysPrerender(toggle: boolean): void; - setAnimCurrentTime(animDict: string, animName: string, time: number): void; - setAnimSpeed(animDict: string, animName: string, speedMultiplier: number): void; - setAsMission(p0: boolean, byThisScript: boolean): void; - setCanBeDamaged(toggle: boolean): void; - setCanBeDamagedByRelationshipGroup(p0: boolean, p1: any): void; - setCanBeTargetedWithoutLos(toggle: boolean): void; - setCollision(toggle: boolean, keepPhysics: boolean): void; - setCoords(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, clearArea: boolean): void; - setCoords2(xPos: number, yPos: number, zPos: number, xAxis: number, yAxis: number, zAxis: number, clearArea: boolean): void; - setCoordsNoOffset(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): void; - setDynamic(toggle: boolean): void; - setHasGravity(toggle: boolean): void; - setHeading(heading: number): void; - setHealth(health: number): void; - setInvincible(toggle: boolean): void; - setIsTargetPriority(p0: boolean, p1: number): void; - setLights(toggle: boolean): void; - setLoadCollisionFlag(toggle: boolean): void; - setLodDist(value: number): void; - setMaxHealth(value: number): void; - setMaxSpeed(speed: number): void; - setMotionBlur(toggle: boolean): void; - setNoCollision(entity: Handle, collision: boolean): void; - setOnlyDamagedByPlayer(toggle: boolean): void; - setOnlyDamagedByRelationshipGroup(p0: boolean, p1: any): void; - setProofs(bulletProof: boolean, fireProof: boolean, explosionProof: boolean, collisionProof: boolean, - meleeProof: boolean, p5: boolean, p6: boolean,drownProof: boolean): void; - setQuaternion(x: number, y: number, z: number, w: number): void; - setRecordsCollisions(toggle: boolean): void; - setRenderScorched(toggle: boolean): void; - setRotation(pitch: number, roll: number, yaw: number, rotationOrder: number, p4: boolean): void; - setTrafficlightOverride(state: number): void; - setVariable(key: string, value: any): any; - setVelocity(x: number, y: number, z: number): void; - setVisible(toggle: boolean, p1: boolean): void; - stopAnim(animation: string, animGroup: string, p2: number): void; - stopSynchronizedAnim(p0: number, p1: boolean): boolean; - __attachments: any; - __attachmentObjects: any; -} - -interface CheckpointMp extends EntityMp { - // TODO -} - -interface ColshapeMp extends EntityMp { - triggered: boolean; -} - -interface DummyEntityMp { - // TODO (temporary solution): - // Since this is a very abstract concept, it is not at all a familiar essence, but it has most of its properties. - // The easiest option is, of course, to inherit the EntityMpPool interface, but this will add - // non-existent methods and parameters associated with the dimension and position. - // It is proposed in the future to introduce a more abstract concept than an entity, which will have only an ID, a type and several basic - // methods such as deletion, enumeration and transformation into an array. The same goes for the entity pool. - - readonly dummyType: number; - readonly id: number; - readonly remoteId: number; - readonly type: string; - - getVariable(value: string): any; -} - -interface MarkerMp extends EntityMp { - // TODO -} - -interface ObjectMp extends EntityMp { - hidden: boolean; - isWeak: boolean; - notifyStreaming: boolean; - streamingRange: number; - rotation: Vector3Mp; - - hasBeenBroken(): boolean; - isVisible(): boolean; - markForDeletion(): void; - placeOnGroundProperly(): boolean; - setActivatePhysicsAsSoonAsItIsUnfrozen(toggle: boolean): void; - setPhysicsParams(weight: number, p1: number, p2: number, p3: number, p4: number, gravity: number, p6: number, - p7: number, p8: number, p9: number, buoyancy: number): void; - setTargettable(targettable: boolean): void; - slide(toX: number, toY: number, toZ: number, speedX: number, speedY: number, speedZ: number, collision: boolean): boolean; - __attMgrData: any; -} - -interface PedBaseMp extends EntityMp { - applyBlood(boneIndex: number, xRot: number, yRot: number, zRot: number, woundType: string): void; - applyBloodByZone(p1: any, p2: number, p3: number, p4: any): void; - applyBloodDamageByZone(p1: any, p2: number, p3: number, p4: any): void; - applyBloodSpecific(p1: any, p2: number, p3: number, p4: number, p5: number, p6: any, p7: number, p8: any): void; - applyDamageDecal(p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: boolean, - p9: string): void; - applyDamagePack(damagePack: string, damage: number, mult: number): void; - applyDamageTo(damageAmount: number, p2: boolean): void; - canInCombatSeeTarget(target: Handle): boolean; - canKnockOffVehicle(): boolean; - canRagdoll(): boolean; - clearAllProps(): void; - clearAlternateMovementAnim(stance: number, p2: number): void; - clearBloodDamage(): void; - clearBloodDamageByZone(p1: number): void; - clearDamageDecalByZone(p1: number, p2: string): void; - clearDecorations(): void; - clearDriveByClipsetOverride(): void; - clearDrivebyTaskUnderneathDrivingTask(): void; - clearFacialDecorations(): void; - clearFacialIdleAnimOverride(): void; - clearLastDamageBone(): void; - clearProp(propId: number): void; - clearTasks(): void; - clearTasksImmediately(): void; - clearWetness(): void; - clone(heading: number, networkHandle: boolean, pedHandle: boolean): Handle; - cloneToTarget(ped2: Handle): void; - controlMountedWeapon(): boolean; - forceMotionState(motionStateHash: Hash, p2: boolean, p3: boolean, p4: boolean): boolean; - forceToOpenParachute(): void; - getAccuracy(): number; - getAlertness(): number; - getAmmoInClip(weapon: Hash): number; - getArmour(): number; - getBoneCoords(boneId: number, offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; - getBoneIndex(boneId: number): number; - getCauseOfDeath(): Hash; - getCombatFloat(ped: Handle, p1: number): number - getCombatMovement(): number; - getCombatRange(): number; - getConfigFlag(flagId: number, p2: boolean): boolean; - getDeadPickupCoords(p1: number, p2: number): Vector3Mp; - getDecorationsState(): number; - getDefensiveAreaPosition(p1: boolean): Vector3Mp; - getDesiredMoveBlendRatio(): number; - getDrawableVariation(componentId: number): number; - getEnveffScale(): number; - getExtractedDisplacement(worldSpace: boolean): Vector3Mp; - getFloodInvincibility(p1: boolean): void; - getGroupIndex(): number; - getHeadBlendData(headBlendData: { - shapeFirst: number; - shapeSecond: number; - shapeThird: number; - skinFirst: number; - skinSecond: number; - skinThird: number; - shapeMix: number; - skinMix: number; - thirdMix: number; - }): void; - getHeadOverlayValue(overlayID: number): number; - getIsTaskActive(taskNumber: number): boolean; - getJackTarget(): Handle; - getLastDamageBone(outBone: number): number; - getMaxHealth(): number; - getMeleeTargetFor(): Handle; - getMoney(): number; - getMount(): Handle; - getNavmeshRouteDistanceRemaining(p1: any, p2: any): any; - getNearbyPeds(sizeAndPeds: number, ignore: number): number; - getNearbyVehicles(sizeAndVehs: number): number; - getNumberOfDrawableVariations(componentId: number): number; - getNumberOfPropDrawableVariations(propId: number): number; - getNumberOfPropTextureVariations(propId: number, drawableId: number): number; - getNumberOfTextureVariations(componentId: number, drawableId: number): number; - getPaletteVariation(componentId: number): number; - getParachuteLandingType(): number; - getParachuteState(): number; - getParachuteTintIndex(tintIndex: number): number; - getPhoneGestureAnimCurrentTime(): number; - getPhoneGestureAnimTotalTime(): number; - getPlayerIsFollowing(): Handle; - getPropIndex(componentId: number): number; - getPropTextureIndex(componentId: number): number; - getRagdollBoneIndex(bone: number): number; - getRelationshipBetweens(ped2: Handle): void; - getRelationshipGroupDefaultHash(): Hash; - getRelationshipGroupHash(): Hash; - getResetFlag(flagId: number): boolean; - getScriptTaskStatus(taskHash: Hash): number; - getSeatIsTryingToEnter(): number; - getSequenceProgress(): number; - getsJacker(): Handle; - getSourceOfDeath(): Handle; - getTextureVariation(componentId: number): number; - getTimeOfDeath(): number; - getType(): number; - getVehicleIsIn(getLastVehicle: boolean): Handle; - getVehicleIsTryingToEnter(): Handle; - getVehicleIsUsing(): Handle; - giveHelmet(cannotRemove: boolean, helmetFlag: number, textureIndex: number): void; - giveNmMessage(): void; - giveWeapon(weapon: RageEnums.Hashes.Weapon | Hash, ammo: number, equipNow: boolean): void; - hasHeadBlendFinished(): boolean; - isActiveInScenario(): boolean; - isAimingFromCover(): boolean; - isBeingArrested(atArresting: boolean): boolean; - isBeingJacked(): boolean; - isBeingStealthKilled(): boolean; - isBeingStunned(p1: number): boolean; - isComponentVariationValid(componentId: number, drawableId: number, textureId: number): boolean; - isConversationDead(): boolean; - isCuffed(): boolean; - isDead(): boolean; - isDeadOrDying(p1: boolean): boolean; - isDiving(): boolean; - isDoingDriveby(): boolean; - isDrivebyTaskUnderneathDrivingTask(): boolean; - isDucking(): boolean; - isEvasiveDiving(evadingEntity: Handle): boolean; - isFacingPed(otherPed: Handle, angle: number): boolean; - isFalling(): boolean; - isFatallyInjured(): boolean; - isFleeing(): boolean; - isGettingIntoAVehicle(): boolean; - isGettingUp(): boolean; - isGoingIntoCover(): boolean; - isGroupMember(groupId: number): boolean; - isHangingOnToVehicle(): boolean; - isHeadtracking(entity: Handle): boolean; - isHeadtrackingPed(ped2: Handle): boolean; - isHuman(): boolean; - isHurt(): boolean; - isInAnyBoat(): boolean; - isInAnyHeli(): boolean; - isInAnyPlane(): boolean; - isInAnyPoliceVehicle(): boolean; - isInAnySub(): boolean; - isInAnyTaxi(): boolean; - isInAnyTrain(): boolean; - isInAnyVehicle(atGetIn: boolean): boolean; - isInCombat(target: Handle): boolean; - isInCoverFacingLeft(): boolean; - isInFlyingVehicle(): boolean; - isInGroup(): boolean; - isInjured(): boolean; - isInMeleeCombat(): boolean; - isInModel(modelHash: Hash): boolean; - isInParachuteFreeFall(): boolean; - isInVehicle(vehicle: Handle, atGetIn: boolean): boolean; - isInWrithe(): boolean; - isJacking(): boolean; - isJumpingOutOfVehicle(): boolean; - isMale(): boolean; - isModel(modelHash: Hash): boolean; - isMountedWeaponTaskUnderneathDrivingTask(): boolean; - isMoveBlendRatioRunning(): boolean; - isMoveBlendRatioSprinting(): boolean; - isMoveBlendRatioStill(): boolean; - isMoveBlendRatioWalking(): boolean; - isOnAnyBike(): boolean; - isOnFoot(): boolean; - isOnMount(): boolean; - isOnSpecificVehicle(vehicle: Handle): boolean; - isOnVehicle(): boolean; - isPerformingStealthKill(): boolean; - isPlantingBomb(): boolean; - isPlayingPhoneGestureAnim(): boolean; - isProne(): boolean; - isPropValid(componentId: number, drawableId: number, TextureId: number): boolean; - isRagdoll(): boolean; - isReloading(): boolean; - isRunning(): boolean; - isRunningArrestTask(): boolean; - isRunningMobilePhoneTask():boolean; - isRunningRagdollTask(): boolean; - isScriptedScenarioUsingConditionalAnim(animDict: string, anim: string): boolean; - isShooting(): boolean; - isShootingInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p7: boolean, p8: boolean): boolean; - isSittingInAnyVehicle(): boolean; - isSittingInVehicle(vehicle: Handle): boolean; - isSprinting(): boolean; - isStill(): boolean; - isStopped(): boolean; - isStrafing(): boolean; - isSwimming(): boolean; - isSwimmingUnderWater(): boolean; - isTracked(): boolean; - isTrackedVisible(): boolean; - isTryingToEnterALockedVehicle(): boolean; - isUsingActionMode(): boolean; - isUsingAnyScenario(): boolean; - isUsingScenario(scenario: string): boolean; - isVaulting(): boolean; - isWalking(): boolean; - isWearingHelmet(): boolean; - knockOffProp(p1: boolean, p2: boolean, p3: boolean, p4: boolean): void; - knockOffVehicle(): void; - playAnimOnRunningScenario(animDict: string, animName: string): void; - playFacialAnim(animName: string, animDict: string): void; - registerHatedTargetsAround(radius: number): void; - registerheadshot(): number; - registerTarget(target: Handle): void; - removeDefensiveArea(toggle: boolean): void; - removeFromGroup(): void; - removeHelmet(p2: boolean): void; - removePreferredCoverSet(): void; - removeWeapon(weapon: RageEnums.Hashes.Weapon | Hash): void; - removeAllWeapons(): void; - resetInVehicleContext(): void; - resetLastVehicle(): void; - resetMovementClipset(p1: number): void; - resetRagdollTimer(): void; - resetStrafeClipset(): void; - resetVisibleDamage(): void; - resetWeaponMovementClipset(): void; - resurrect(): void; - reviveInjured(): void; - setAccuracy(accuracy: number): void; - setAlertness(value:number): void; - setAllowedToDuck(toggle: boolean): void; - setAllowVehiclesOverride(toggle: boolean): void; - setAlternateMovementAnim(stance: number, animDictionary: string, animationName: string, p4: number, p5: boolean): void; - setAmmoInClip(weapon: RageEnums.Hashes.Weapon | Hash, ammo: number): void; - setAngledDefensiveArea(p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: boolean, p9: boolean): void; - setArmour(amount: number): void; - setAsCop(toggle: boolean): void; - setAsEnemy(toggle: boolean): void; - setAsGroupLeader(groupId: number): void; - setAsGroupMember(groupId: number): void; - setBlendFromParents(p1: any, p2: any, p3: number, p4: number): void; - setBlockingOfNonTemporaryEvents(toggle: boolean): void; - setBoundsOrientation(p1: number, p2: number, p3: number, p4: number, p5: number): void; - setCanArmIk(toggle: boolean): void; - setCanAttackFriendly(toggle: boolean, p2: boolean): void; - setCanBeDraggedOut(toggle: boolean): void; - setCanBeKnockedOffVehicle(state: number): void; - setCanBeShotInVehicle(toggle: boolean): void; - setCanBeTargetedWhenInjured(toggle: boolean): void; - setCanBeTargetedWithoutLos(toggle: boolean): void; - setCanBeTargetted(toggle: boolean): void; - setCanBeTargettedByPlayer(player: Handle, toggle: boolean): void; - setCanBeTargettedByTeam(team: number, toggle: boolean): void; - setCanCowerInCover(toggle: boolean): void; - setCanEvasiveDive(toggle: boolean): void; - setCanHeadIk(toggle: boolean): void; - setCanLegIk(toggle: boolean): void; - setCanPeekInCover(toggle: boolean): void; - setCanPlayAmbientAnims(toggle: boolean): void; - setCanPlayAmbientBaseAnims(toggle: boolean): void; - setCanPlayGestureAnims(toggle: boolean): void; - setCanPlayVisemeAnims(p1: boolean, p2: boolean): void; - setCanRagdoll(toggle: boolean): void; - setCanRagdollFromPlayerImpact(toggle: boolean): void; - setCanSmashGlass(p1: boolean, p2: boolean): void; - setCanSwitchWeapon(toggle: boolean): void; - setCanTeleportToGroupLeader(groupHandle: number, toggle: boolean): void; - setCanTorsoIk(toggle: boolean): void; - setCanUseAutoConversationLookat(toggle: boolean): void; - setCapsule(value: number): void; - setCombatAbility(p1: number): void; - setCombatAttributes(attributeIndex: number, enabled: boolean): void; - setCombatFloat(combatType: number, p2: number): void; - setCombatMovement(combatMovement: number): void; - setCombatRange(p1: number): void; - setComponentVariation(componentId: number, drawableId: number, textureId: number, paletteId: number): void; - setConfigFlag(flagId: number, value: boolean): void; - setCoordsKeepVehicle(posX: number, posY: number, posZ: number): void; - setCoordsNoGang(posX: number, posY: number, posZ: number): void; - setCowerHash(p1: string): void; - setDecoration(collection: Hash, overlay: Hash): void; - setDefaultComponentVariation(): void; - setDefensiveAreaAttachedToPed(attachPed: Handle, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: number, p8: number, p9: boolean, p10: boolean): void; - setDefensiveAreaDirection(p1: number, p2: number, p3: number, p4: boolean): void; - setDefensiveSphereAttachedToPed(p1: any, p2: number, p3: number, p4: number, p5: number, p6: boolean): void; - setDesiredHeading(heading: number): void; - setDesiredMoveBlendRatio(p1: number): void; - setDiesInSinkingVehicle(toggle: boolean): void; - setDiesInstantlyInWater(toggle: boolean): void; - setDiesInVehicle(toggle: boolean): void; - setDiesInWater(toggle: boolean): void; - setDiesWhenInjured(toggle: boolean): void; - setDriveByClipsetOverride(clipset: string): void; - setDriverAbility(ability: number): void; - setDriverAggressiveness(aggressiveness: number): void; - setDriveTaskCruiseSpeed(cruiseSpeed: number): void; - setDriveTaskDrivingStyle(drivingStyle: number): void; - setDucking(toggle: boolean): void; - setEnableBoundAnkles(toggle: boolean): void; - setEnableEnveffScale(toggle: boolean): void; - setEnableHandcuffs(toggle: boolean): void; - setEnableScuba(toggle: boolean): void; - setEnableWeaponBlocking(toggle: boolean): void; - setEnveffScale(value: number): void; - setExclusivePhoneRelationships(): Handle; - setEyeColor(index: number): void; - setFaceFeature(index: number, scale: number): void; - setFacialDecoration(collection: Hash, overlay: Hash): void; - setFacialIdleAnimOverride(animName: string, animDict: string): void; - setFiringPattern(patternHash: Hash): void; - setFleeAttributes(attributes: number, p2: boolean): void; - setGeneratesDeadBodyEvents(toggle: boolean): void; - setGestureGroup(p1: any): void; - setGetOutUpsideDownVehicle(toggle: boolean): void; - setGravity(toggle: boolean): void; - setGroupMemberPassengerIndex(index: number): void; - setHairColor(colorID: number, highlightColorID: number): void; - setHeadBlendData(shapeFirstID: number, shapeSecondID: number, shapeThirdID: number, skinFirstID: number, - skinSecondID: number, skinThirdID: number, shapeMix: number, skinMix: number, thirdMix: number, isParent: boolean): void; - setHeadOverlay(overlayID: number, index: number, opacity: number, firstColor: number, secondColor: number): void; - setHeadOverlayColor(overlayID: number, colorType: number, colorID: number, secondColorID: number): void; - setHearingRange(value: number): void; - setHelmet(canWearHelmet: boolean): void; - setHelmetFlag(helmetFlag: number): void; - setHelmetPropIndex(propIndex: number): void; - setHelmetTextureIndex(textureIndex: number): void; - setHighFallTask(p1: any, p2: any, p3: any): void; - setIdRange(value: number): void; - setIkTarget(p1: number, targetPed: Handle, boneLookAt: number, x: number, y: number, z: number, p7: any, - duration: number, duration1: number): void; - setIntoVehicle(vehicle: Handle, seatIndex: number): void; - setInVehicleContext(context: Hash): void; - setKeepTask(toggle: boolean): void; - setLegIkMode(mode: number): void; - setLodMultiplier(multiplier: number): void; - setMaxHealth(value: number): void; - setMaxMoveBlendRatio(value: number): void; - setMaxTimeInWater(value: number): void; - setMaxTimeUnderwater(value: number): void; - setMinGroundTimeForStungun(ms: number): void; - setMinMoveBlendRatio(value: number): void; - setModelIsSuppressed(toggle: boolean): void; - setMoney(amount: number): void; - setMotionBlur(toggle: boolean): void; - setMountedWeaponTarget(targetEntity: Handle, p2: any, x: number, y: number, z: number): void; - setMoveAnimsBlendOut(): void; - setMovementClipset(clipSet: string, p2: number): void; - setMoveRateOverride(value: number): void; - setNameDebug(name: string): void; - setNeverLeavesGroup(toggle: boolean): void; - setParachuteTaskTarget(x: number, y: number, z: number): void; - setParachuteTaskThrust(thrust: number): void; - setParachuteTintIndex(tintIndex: number): void; - setPathAvoidFire(avoidFire: boolean): void; - setPathCanDropFromHeight(Toggle: boolean): void; - setPathCanUseClimbovers(Toggle: boolean): void; - setPathCanUseLadders(Toggle: boolean): void; - setPathPreferToAvoidWater(avoidWater: boolean): void; - setPathsWidthPlant(mayEnterWater: boolean): void; - setPinnedDown(pinned: boolean, i: number): void; - setPlaysHeadOnHornAnimWhenDiesInVehicle(toggle: boolean): void; - setPreferredCoverSet(itemSet: any): void; - setPrimaryLookat(lookAt: Handle): void; - setPropIndex(componentId: number, drawableId: number, TextureId: number, attach: boolean): void; - setRagdollFlag(flag: number): void; - setRagdollForceFall(): void; - setRagdollOnCollision(toggle: boolean): void; - setRandomComponentVariation(p1: boolean): void; - setRandomProps(): void; - setRelationshipGroupDefaultHash(hash: Hash): void; - setRelationshipGroupHash(hash: Hash): void; - setResetFlag(flagId: number, doReset: boolean): void; - setResetFlagPreferRearSeats(flags: number): void; - setResetRagdollFlag(flag: number): void; - setScriptedAnimSeatOffset(p1: number): void; - setSeeingRange(value: number): void; - setShootRate(shootRate: number): void; - setShootsAtCoord(x: number, y: number, z: number, toggle: boolean): void; - setSphereDefensiveArea(x: number, y: number, z: number, radius: number, p5: boolean, p6: boolean): void; - setStayInVehicleWhenJacked(toggle: boolean): void; - setStealthMovement(p1: boolean, action: string): void; - setSteersAroundObjects(toggle: boolean): void; - setSteersAroundPeds(toggle: boolean): void; - setSteersAroundVehicles(toggle: boolean): void; - setStrafeClipset(clipSet: string): void; - setSuffersCriticalHits(toggle: boolean): void; - setSweat(sweat: number): void; - setTargetLossResponse(responseType: number): void; - setTaskVehicleChaseBehaviorFlag(flag: number, set: boolean): void; - setTaskVehicleChaseIdealPursuitDistance(distance: number): void; - setToInformRespectedFriends(radius: number, maxFriends: number): void; - setToLoadCover(toggle: boolean): void; - setToRagdoll(time1: number, time2: number, ragdollType: number, p4: boolean, p5: boolean, p6: boolean): boolean; - setUsingActionMode(p1: boolean, p2: any, action: string): void; - setVisualFieldCenterAngle(angle: number): void; - setVisualFieldMaxAngle(value: number): void; - setVisualFieldMaxElevationAngle(angle: number): void; - setVisualFieldMinAngle(value: number): void; - setVisualFieldMinElevationAngle(angle: number): void; - setVisualFieldPeripheralRange(range: number): void; - setWeaponMovementClipset(clipSet: string): void; - setWetnessEnabledThisFrame(): void; - setWetnessHeight(height: number): void; - stopAnimPlayback(p1: any, p2: boolean): void; - stopAnimTask(animDictionary: string, animationName: string, p3: number): void; - stopWeaponFiringWhenDropped(): void; - taskAchieveHeading(heading: number, timeout: number): void; - taskAimGunAt(entity: Handle, duration: number, p3: boolean): void; - taskAimGunAtCoord(x: number, y: number, z: number, time: number, p5: boolean, p6: boolean): void; - taskAimGunScripted(scriptTask: Hash, p2: boolean, p3: boolean): void; - taskArrest(target: Handle): void; - taskBoatMission(boat: Handle, p2: any, p3: any, x: number, y: number, z: number, p7: any, maxSpeed: number, - p9: any, p10: number, p11: any): void; - taskChatTo(target: Handle, p2: any, p3: number, p4: number, p5: number, p6: number, p7: number): void; - taskClearLookAt(): void; - taskClimb(unused: boolean): void; - taskClimbLadder(p1: number): void; - taskCombat(targetPed: Handle, p2: number, p3: number): void; - taskCombatHatedTargetsAround(radius: number, p2: number): void; - taskCombatHatedTargetsInArea(x: number, y: number, z: number, radius: number, p5: any): void; - taskCower(duration: number): void; - taskDriveBy(targetPed: Handle, p2: any, targetX: number, targetY: number, targetZ: number, p6: number, p7: any, - p8: boolean, firingPattern: Hash): void; - taskEnterVehicle(vehicle: Handle, timeout: number, seat: number, speed: number, p5: number, p6: any): void; - taskFollowNavMeshToCoord(x: number, y: number, z: number, speed: number, timeout: number, stoppingRange: number, - persistFollowing: boolean, unk: number): void; - taskFollowNavMeshToCoordAdvanced(x: number, y: number, z: number, speed: number, timeout: number, unkFloat: number, - unkInt: number, unkX: number, unkY: number, unkZ: number, unk2: number): void; - taskFollowPointRoute(speed: number, unknown: number): void; - taskFollowToOffsetOf(entity: Handle, offsetX: number, offsetY: number, offsetZ: number, movementSpeed: number, - timeout: number, stoppingRange: number, persistFollowing: boolean): void; - taskForceMotionState(state: Hash, p2: boolean): void; - taskGetOffBoat(boat: Handle): void; - taskGoStraightToCoord(x: number, y: number, z: number, speed: number, timeout: number, targetHeading: number, - distanceToSlide: number): void; - taskGotoAiming(target: Handle, distanceToStopAt: number, StartAimingDist: number): void; - taskGoToCoordAndAimAtHatedEntitiesNearCoord(gotoX: number, gotoY: number, gotoZ: number, aimNearX: number, - aimNearY: number, aimNearZ: number, speed: number, shoot: boolean, unknown1: number, unknown2: number, - unkTrue: boolean, unknown3: number, heading: boolean, firingPattern: Hash): void; - taskGoToCoordAnyMeans(x: number, y: number, z: number, speed: number, p5: any, p6: boolean, walkingStyle: number, - p8: number): void; - taskGoToCoordAnyMeansExtraParams(x: number, y: number, z: number, speed: number, p5: any, p6: boolean, - walkingStyle: number, p8: number, p9: any, p10: any, p11: any): void; - taskGoToCoordAnyMeansExtraParamsWithCruiseSpeed(x: number, y: number, z: number, speed: number, p5: any, - p6: boolean, walkingStyle: number, p8: number, p9: any, p10: any, p11: any, p12: any): void; - taskGoToCoordWhileAimingAtCoord(x: number, y: number, z: number, aimAtX: number, aimAtY: number, aimAtZ: number, - moveSpeed: number, p8: boolean, p9: number, p10: number, p11: boolean, flags: any, p13: boolean, - firingPattern: Hash): void; - taskGuardCurrentPosition(p1: number, p2: number, p3: number): void; - taskGuardSphereDefensiveArea(p1: number, p2: number, p3: number, p4: number, p5: number, p6: any, p7: number, - p8: number, p9: number, p10: number): void; - taskHandsUp(duration: number, facingPed: Handle, p3: number, p4: boolean): void; - taskHeliChase(entityToFollow: Handle, x: number, y: number, z: number): void; - taskHeliMission(vehicle: Handle, p2: any, pedToFollow: Handle, posX: number, posY: number, posZ: number, - mode: number, speed: number, radius: number, angle: number, p11: number, height: number, p13: number, p14: number): void; - taskJump(unused: boolean): void; - taskLeaveAnyVehicle(p1: number, p2: number): void; - taskLeaveVehicle(vehicle: Handle, flags: number): void; - taskLookAt(lookAt: Handle, duration: number, unknown1: number, unknown2: number): void; - taskMoveNetwork(task: string, multiplier: number, p3: boolean, animDict: string, flags: number): void; - taskMoveNetworkAdvanced(p1: string, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: any, p9: number, p10: boolean, animDict: string, flags: number): void; - taskOpenVehicleDoor(vehicle: Handle, timeOut: number, doorIndex: number, speed: number): void; - taskParachute(p1: boolean): void; - taskParachuteToTarget(x: number, y: number, z: number): void; - taskPatrol(p1: string, p2: any, p3: boolean, p4: boolean): void; - taskPause(ms: number): void; - taskPerformSequence(taskSequence: Handle): void; - taskPlaneChase(entityToFollow: Handle, x: number, y: number, z: number): void; - taskPlaneLand(plane: Handle, runwayStartX: number, runwayStartY: number, runwayStartZ: number, runwayEndX: number, - runwayEndY: number, runwayEndZ: number): void; - taskPlaneMission(plane: Handle, targetVehicle: Handle, targetPed: Handle, destinationX: number, destinationY: number, - destinationZ: number, p7: number, physicsSpeed: number, p9: number, p10: number, maxAltitude: number, minAltitude: number): void; - taskPlantBomb(x: number, y: number, z: number, heading: number): void; - taskPlayAnim(animDictionary: string, animationName: string, speed: number, speedMultiplier: number, duration: number, - flag: number, playbackRate: number, lockX: boolean, lockY: boolean, lockZ: boolean): void; - taskPlayAnimAdvanced(animDict: string, animName: string, posX: number, posY: number, posZ: number, rotX: number, - rotY: number, rotZ: number, speed: number, speedMultiplier: number, duration: number, flag: any, - animTime: number, p14: any, p15: any): void; - taskPlayPhoneGestureAnimation(p1: any, p2: any, p3: any, p4: number, p5: number, p6: boolean, p7: boolean): void; - taskPutDirectlyIntoCover(x: number, y: number, z: number, timeout: any, p5: boolean, p6: number, p7: boolean, - p8: boolean, p9:object, p10: boolean): void; - taskPutDirectlyIntoMelee(meleeTarget: Handle, p2: number, p3: number, p4: number, p5: boolean): void; - taskRappelFromHeli(p1: number): void; - taskReactAndFlee(fleeTarget: Handle): void; - taskReloadWeapon(doReload: boolean): void; - taskScriptedAnimation(p1: any, p2: any, p3: any, p4: number, p5: number): void; - taskSeekCoverFrom(target: Handle, duration: number, p3: boolean): void; - taskSeekCoverToCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p7: any, p8: boolean): void; - taskSetBlockingOfNonTemporaryEvents(toggle: boolean): void; - taskSetDecisionMaker(p1: Hash): void; - taskShockingEventReact(eventHandle: number): void; - taskShootAtCoord(x: number, y: number, z: number, duration: number, firingPattern: Hash): void; - taskShuffleToNextVehicleSeat(vehicle: Handle): void; - taskSkyDive(): void; - taskSlideToCoord(x: number, y: number, z: number, heading: number, p5: number): void; - taskSlideToCoordHdgRate(x: number, y: number, z: number, heading: number, p5: number, p6: number): void; - taskSmartFlee(fleeTarget: Handle, distance: number, fleeTime: any, p4: boolean, p5: boolean): void; - taskSmartFleeCoord(x: number, y: number, z: number, distance: number, time: number, p6: boolean, p7: boolean): void; - taskStandGuard(x: number, y: number, z: number, heading: number, scenarioName: string): void; - taskStandStill(time: number): void; - taskStartScenarioAtPosition(scenarioName: string, x: number, y: number, z: number, heading: number, p6: any, - p7: boolean, p8: boolean): void; - taskStartScenarioInPlace(scenarioName: string, unkDelay: number, playEnterAnim: boolean): void; - taskStayInCover(): void; - taskStealthKill(target: Handle, killType: Hash, p3: number, p4: boolean): void; - taskStopPhoneGestureAnimation(): void; - taskSwapWeapon(p1: boolean): void; - taskSweepAim(anim: string, p2: string, p3: string, p4: string, p5: number, vehicle: Handle, p7: number, p8: number): void; - taskSynchronizedScene(scene: number, animDictionary: string, animationName: string, speed: number, - speedMultiplier: number, duration: number, flag: number, playbackRate: number, p9: any): void; - taskTurnToFace(entity: Handle, duration: number): void; - taskTurnToFaceCoord(x: number, y: number, z: number, duration: number): void; - taskUseMobilePhone(p1: number): void; - taskUseMobilePhoneTimed(duration: number): void; - taskUseNearestScenarioToCoordWarp(x: number, y: number, z: number, radius: number, p5: any): void; - taskVehicleAimAt(target: Handle): void; - taskVehicleChase(targetEnt: Handle): void; - taskVehicleDriveToCoord(vehicle: Handle, x: number, y: number, z: number, speed: number, p6: any, - vehicleModel: Hash, drivingMode: number, stopRange: number, p10: number): void; - taskVehicleDriveToCoordLongrange(vehicle: Handle, x: number, y: number, z: number, speed: number, driveMode: number, - stopRange: number): void; - taskVehicleDriveWander(vehicle: Handle, speed: number, drivingStyle: number): void; - taskVehicleEscort(vehicle: Handle, targetVehicle: Handle, mode: number, speed: number, drivingStyle: number, - minDistance: number, p7: number, noRoadsDistance: number): void; - taskVehicleFollow(vehicle: Handle, targetEntity: Handle, drivingStyle: number, speed: number, minDistance: number): void; - taskVehicleFollowWaypointRecording(vehicle: Handle, WPRecording: string, p3: number, p4: number, p5: number, - p6: number, p7: number, p8: boolean, p9: number): void; - taskVehicleGotoNavmesh(vehicle: Handle, x: number, y: number, z: number, speed: number, behaviorFlag: number, - stoppingRange: number): void; - taskVehicleHeliProtect(vehicle: Handle, entityToFollow: Handle, targetSpeed: number, p4: number, radius: number, - altitude: number, p7: number): void; - taskVehicleMissionCoorsTarget(vehicle: Handle, x: number, y: number, z: number, p5: number, p6: number, p7: number, - p8: number, p9: number, p10: boolean): void; - taskVehicleMissionTarget(vehicle: Handle, pedTarget: Handle, mode: number, maxSpeed: number, drivingStyle: number, - minDistance: number, p7: number, p8: boolean): void; - taskVehiclePark(vehicle: Handle, x: number, y: number, z: number, heading: number, mode: number, radius: number, - keepEngineOn: boolean): void; - taskVehicleTempAction(vehicle: Handle, action: number, time: number): void; - taskWanderInArea(x: number, y: number, z: number, radius: number, minimalLength: number, timeBetweenWalks: number): void; - taskWanderStandard(p1: number, p2: number): void; - taskWarpIntoVehicle(vehicle: Handle, seat: number): void; - taskWrithe(target: Handle, time: number, p3: number): void; - uncuff(): void; - unregisterheadshot(): void; - updateHeadBlendData(shapeMix: number, skinMix: number, thirdMix: number): void; - updateTaskAimGunScriptedTarget(p1: Handle, p2: number, p3: number, p4: number, p5: boolean): void; - updateTaskHandsUpDuration(duration: number): void; - wasKilledByStealth(): boolean; - wasKilledByTakedown(): boolean; - wasSkeletonUpdated(): boolean; -} - -interface PedMp extends PedBaseMp { - spawnPosition: Vector3Mp; -} - -interface PickupMp extends EntityMp { - -} - -interface PlayerMp extends PedBaseMp { - armour: number; - eyeColour: number; - hairColour: number; - hairHighlightColour: number; - heading: number; - health: number; - name: string; - p2pEnabled: boolean; - p2pConnected: boolean; - voiceAutoVolume: boolean; - voiceVolume: number; - voice3d: any; // TODO - weapon: Hash; - readonly action: string; - readonly aimTarget: boolean; - readonly ip: string; - readonly isAiming: boolean; - readonly isClimbing: boolean; - readonly isEnteringVehicle: boolean; - readonly isInCover: boolean; - readonly isJumping: boolean; - readonly isLeavingVehicle: boolean; - readonly isTypingInTextChat: boolean; - readonly isVoiceActive: boolean; - readonly ping: number; - readonly vehicle: VehicleMp; - - addVehicleSubtaskAttack(ped2: Handle): void; - addVehicleSubtaskAttackCoord(x: number, y: number, z: number): void; - call(eventName: string, ...args: any[]): void; - canPedHear(ped: Handle): boolean; - changePed(ped: Handle, b2: boolean, b3: boolean): void; - clearHasDamagedAtLeastOneNonAnimalPed(): void; - clearHasDamagedAtLeastOnePed(): void; - clearParachuteModelOverride(): void; - clearParachutePackModelOverride(): void; - clearParachuteVariationOverride(): void; - clearSecondaryTask(): void; - clearWantedLevel(): void; - explodeHead(weaponHash: Hash): void; - getCurrentStealthNoise(): number; - getGroup(): number; - getHasReserveParachute(): boolean; - getInvincible(): boolean; - getMaxArmour(): number; - getName(): string; - getParachutePackTintIndex(tintIndex: number): number; - getParachuteSmokeTrailColor(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getPed(): Handle; - getPedScriptIndex(): Handle; - getReserveParachuteTintIndex(tintIndex: number): number; - getRgbColour(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getSprintStaminaRemaining(): number; - getSprintTimeRemaining(): number; - getTeam(): number; - getUnderwaterTimeRemaining(): number; - getVoiceAttribute(attribute: any): any; // TODO - getWantedCentrePosition(): Vector3Mp; - getWantedLevel(): number; - giveRagdollControl(toggle: boolean): void; - hasBeenSpottedInStolenVehicle(): boolean; - hasDamagedAtLeastOneNonAnimalPed(): boolean; - hasDamagedAtLeastOnePed(): boolean; - hasLeftTheWorld(): boolean; - hasTeleportFinished(): boolean; - hasUseScenarioTask(): boolean; - hideBloodDamageByZone(p1: any, p2: boolean): void; - isControlOn(): boolean; - isFreeAiming(): boolean; - isFreeForAmbientTask(): boolean; - isPlaying(): boolean; - isPressingHorn(): boolean; - isReadyForCutscene(): boolean; - isRidingTrain(): boolean; - isScriptControlOn(): boolean; - isTargettingAnything(): boolean; - isWantedLevelGreater(wantedLevel: number): boolean; - resetArrestState(): void; - resetInputGait(): void; - resetStamina(): void; - setCanBeHassledByGangs(toggle: boolean): void; - setCanDoDriveBy(toggle: boolean): void; - setCanLeaveParachuteSmokeTrail(enabled: boolean): void; - setCanUseCover(toggle: boolean): void; - setClothPinFrames(toggle: boolean): void; - setControl(toggle: boolean, possiblyFlags: number): void; - setEveryoneIgnore(toggle: boolean): void; - setForcedAim(toggle: boolean): void; - setForcedZoom(toggle: boolean): void; - setForceSkipAimIntro(toggle: boolean): void; - setHasReserveParachute(): void; - setLockon(toggle: boolean): void; - setLockonRangeOverride(range: number): void; - setMaxArmour(value: number): void; - setMayNotEnterAnyVehicle(): void; - setMayOnlyEnterThisVehicle(vehicle: Handle): void; - setMeleeWeaponDamageModifier(modifier: number): void; - setModel(model: Hash): void; - setNoiseMultiplier(multiplier: number): void; - setParachuteModelOverride(model: Hash): void; - setParachutePackModelOverride(model: Hash): void; - setParachutePackTintIndex(tintIndex: number): void; - setParachuteSmokeTrailColor(r: number, g: number, b: number): void; - setParachuteVariationOverride(p1: number, p2: any, p3: any, p4: boolean): void; - setPoliceIgnore(toggle: boolean): void; - setReserveParachuteTintIndex(tintIndex: number): void; - setSimulateAiming(toggle: boolean): void; - setSneakingNoiseMultiplier(multiplier: number): void; - setSprint(toggle: boolean): void; - setStealthPerceptionModifier(value: number): void; - setTeam(team: number): void; - setVehicleDamageModifier(damageAmount: number): void; - setVehicleDefenseModifier(modifier: number): void; - setVoiceAttribute(attribute: any, value: any): void; // TODO - setWantedCentrePosition(x: number, y: number, z: number): void; - setWantedLevel(wantedLevel: number, disableNoMission: boolean): void; - setWantedLevelNoDrop(wantedLevel: number, p2: boolean): void; - setWantedLevelNow(p1: boolean): void; - setWeaponDamageModifier(damageAmount: number): void; - setWeaponDefenseModifier(modifier: number): void; - taskGotoOffset(p1: any, p2: any, x: number, y: number, z: number, duration: number): void; - taskGoToWhileAimingAtEntity(entityToWalkTo: Handle, entityToAimAt: Handle, speed: number, shootatEntity: boolean, - p5: number, p6: number, p7: boolean, p8: boolean, firingPattern: Hash): void; - taskVehicleShootAt(target: Handle, p2: number): void; - updateTaskSweepAim(entity: Handle): void; -} - -interface TextLabelMp extends EntityMp { - color: RGB; - drawDistance: number; - los: boolean; - text: string; -} - -interface VehicleMp extends EntityMp { - gear: number; - rpm: number; - steeringAngle: number; - - addUpsidedownCheck(): void; - areAllWindowsIntact(): boolean; - attachToCargobob(cargobob: Handle, p1: number, x: number, y: number, z: number): void; - attachToTowTruck(vehicle: Handle, rear: boolean, hookOffsetX: number, hookOffsetY: number, hookOffsetZ: number): void; - attachToTrailer(trailer: Handle, radius: number): void; - canShuffleSeat(p0: any): boolean; - cargobobMagnetGrab(toggle: boolean): void; - clearCustomPrimaryColour(): void; - clearCustomSecondaryColour(): void; - closeBombBayDoors(): void; - detachFromAnyCargobob(): boolean; - detachFromAnyTowTruck(): boolean; - detachFromCargobob(cargobob: Handle): void; - detachFromTowTruck(vehicle: Handle): void; - detachFromTrailer(): void; - detachWindscreen(): void; - disableImpactExplosionActivation(toggle: boolean): void; - disablePlaneAileron(p0: boolean, p1: boolean): void; - doesExtraExist(extraId: number): boolean; - doesHaveRoof(): boolean; - doesHaveStuckVehicleCheck(): boolean; - doesHaveWeapon(): boolean; - ejectJb700Roof(x: number, y: number, z: number): void; - enableCargobobHook(state: number): void; - explode(isAudible: boolean, isInvisble: boolean): void; - explodeInCutscene(p0: boolean): void; - fixWindow(index: number): void; - getAcceleration(): number; - getAttachedToCargobob(): Handle; - getAttachedToTowTruck(): Handle; - getBoatAnchor(): boolean; - getBodyHealth(): number; - getBodyHealth2(): number; - getCargobobHookPosition(): Vector3Mp; - getCauseOfDestruction(): Hash; - getClass(): number; - getColor(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getColourCombination(): number; - getColours(colorPrimary: number, colorSecondary: number): { - colorPrimary: number; - colorSecondary: number; - }; - getConvertibleRoofState(): number; - getCustomPrimaryColour(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getCustomSecondaryColour(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getDeformationAtPos(offsetX: number, offsetY: number, offsetZ: number): Vector3Mp; - getDirtLevel(): number; - getDoorAngleRatio(door: number): number; - getDoorLockStatus(): number; - getDoorsLockedForPlayer(player: Handle): boolean; - getEngineHealth(): number; - getExtraColours(pearlescentColor: number, wheelColor: number): { - pearlescentColor: number; - wheelColor: number; - }; - getHandling(typeName: string): number | string; - getDefaultHandling(typeName: string): number | string; - getHeliEngineHealth(): number; - getHeliMainRotorHealth(): number; - getHeliTailRotorHealth(): number; - getIsEngineRunning(): number; - getIsLeftHeadlightDamaged(): boolean; - getIsPrimaryColourCustom(): boolean; - getIsRightHeadlightDamaged(): boolean; - getIsSecondaryColourCustom(): boolean; - getLandingGearState(): number; - getLastPedInSeat(seatIndex: number): Handle; - getLayoutHash(): Hash; - getLightsState(lightsOn: boolean, highbeamsOn: boolean): { - lightsOn: boolean; - highbeamsOn: boolean; - }; - getLivery(): number; - getLiveryCount(): number; - getLiveryName(liveryIndex: number): string; - getMaxBreaking(): number; - getMaxNumberOfPassengers(): number; - getMaxTraction(): number; - getMod(modType: number): number; - getModColor1(paintType: number, color: number, p2: number): { - paintType: number; - color: number; - p2: number; - }; - getModColor1TextLabel(p0: boolean): string; - getModColor2(paintType: number, color: number): { - paintType: number; - color: number; - p2: number; - }; - getModColor2TextLabel(): string; - getModKit(): number; - getModKitType(): number; - getModModifierValue(modType: number, modIndex: number): any; // TODO - getModSlotName(modType: number): string; - getModTextLabel(modType: number, modValue: number): string; - getModVariation(modType: number): boolean; - getNeonLightsColour(r: number, g: number, b: number): { - r: number; - g: number; - b: number; - }; - getNumberOfColours(): number; - getNumberOfPassengers(): number; - getNumberPlateText(): string; - getNumberPlateTextIndex(): number; - getNumModKits(): number; - getNumMods(modType: number): number; - getOwner(entity: Handle): boolean; - getPaintFade(): number; - getPedInSeat(index: number): Handle; - getPedUsingDoor(doorIndex: number): Handle; - getPetrolTankHealth(): number; - getPlateType(): number; - getSuspensionHeight(): number; - getTrailer(vehicle: Handle): Handle; - getTrainCarriage(cariage: number): Handle; - getTyresCanBurst(): boolean; - getTyreSmokeColor(r: number, g: number, b: number): { - r: number; - g: number; - b: number - }; - getVehicleTrailer(vehicle: Handle): Handle; - getWheelType(): number; - getWindowTint(): number; - isAConvertible(p0: boolean): boolean; - isAlarmActivated(): boolean; - isAnySeatEmpty(): boolean; - isAttachedToCargobob(vehicleAttached: Handle): boolean; - isAttachedToTowTruck(vehicle: Handle): boolean; - isAttachedToTrailer(): boolean; - isBig(): boolean; - isBumperBrokenOff(front: boolean): boolean; - isCargobobHookActive(): boolean; - isCargobobMagnetActive(): boolean; - isDamaged(): boolean; - isDoorDamaged(doorId: number): boolean; - isDriveable(p0: boolean): boolean; - isExtraTurnedOn(extraId: number): boolean; - isHeliPartBroken(p0: boolean, p1: boolean, p2: boolean): boolean; - isHighDetail(): boolean; - isInBurnout(): boolean; - isModel(model: Hash): boolean; - isNeonLightEnabled(index: number): boolean; - isOnAllWheels(): boolean; - isSearchlightOn(): boolean; - isSeatFree(seatIndex: number): boolean; - isSirenOn(): boolean; - isSirenSoundOn(): boolean; - isStolen(): boolean; - isStopped(): boolean; - isStoppedAtTrafficLights(): boolean; - isStuckOnRoof(): boolean; - isStuckTimerUp(p0: number, p1: number): boolean; - isTaxiLightOn(): boolean; - isToggleModOn(modType: number): boolean; - isTyreBurst(wheelId: number, completely: boolean): boolean; - isVisible(): boolean; - isWindowIntact(windowIndex: number): boolean; - jitter(p0: boolean, yaw: number, pitch: number, roll: number): void; - lowerConvertibleRoof(instantlyLower: boolean): void; - movable(): boolean; - openBombBayDoors(): void; - raiseConvertibleRoof(instantlyRaise: boolean): void; - releasePreloadMods(): void; - removeHighDetailModel(): void; - removeMod(modType: number): void; - removeUpsidedownCheck(): void; - removeWindow(windowIndex: number): void; - requestHighDetailModel(): void; - resetStuckTimer(reset: boolean): void; - resetWheels(toggle: boolean): void; - retractCargobobHook(): void; - rollDownWindow(windowIndex: number): void; - rollDownWindows(): void; - rollUpWindow(windowIndex: number): void; - setAlarm(state: boolean): void; - setAllowNoPassengersLockon(toggle: boolean): void; - setAllsSpawns(p0: boolean, p1: boolean, p2: boolean): void; - setAutomaticallyAttaches(p0: any, p1: any): void; - setBikeLeanAngle(x: number, y: number): void; - setBoatAnchor(toggle: boolean): void; - setBodyHealth(value: number): void; - setBrakeLights(toggle: boolean): void; - setBurnout(toggle: boolean): void; - setCanBeTargetted(state: boolean): void; - setCanBeUsedByFleeingPeds(toggle: boolean): void; - setCanBeVisiblyDamaged(state: boolean): void; - setCanBreak(toggle: boolean): void; - setCanRespray(state: boolean): void; - setCeilingHeight(p0: number): void; - setColourCombination(numCombos: number): void; - setColours(colorPrimary: number, colorSecondary: number): void; - setConvertibleRoof(p0: boolean): void; - setCreatesMoneyPickupsWhenExploded(toggle: boolean): void; - setCustomPrimaryColour(r: number, g: number, b: number): void; - setCustomSecondaryColour(r: number, g: number, b: number): void; - setDamage(xOffset: number, yOffset: number, zOffset: number, damage: number, radius: number, p5: boolean): void; - setDeformationFixed(): void; - setDirtLevel(dirtLevel: number): void; - setDisablePetrolTankDamage(toggle: boolean): void; - setDisablePetrolTankFires(toggle: boolean): void; - setDoorBreakable(doorIndex: number, isBreakable: boolean): void; - setDoorBroken(doorIndex: number, createDoorObject: boolean): void; - setDoorControl(doorIndex: number, speed: number, angle: number): void; - setDoorLatched(doorIndex: number, p1: boolean, p2: boolean, p3: boolean): void; - setDoorOpen(doorIndex: number, loose: boolean, openInstantly: boolean): void; - setDoorShut(doorIndex: number, closeInstantly: boolean): void; - setDoorsLocked(doorLockStatus: number): void; - setDoorsLockedForAllPlayers(toggle: boolean): void; - setDoorsLockedForPlayer(player: Handle, toggle: boolean): void; - setDoorsLockedForTeam(team: number, toggle: boolean): void; - setDoorsShut(closeInstantly: boolean): void; - setEngineCanDegrade(toggle: boolean): void; - setEngineHealth(health: number): void; - setEngineOn(value: boolean, instantly: boolean, otherwise: boolean): void; - setEnginePowerMultiplier(value: number): void; - setEngineTorqueMultiplier(value: number): void; - setExclusiveDriver(ped: Handle, p1: number): void; - setExplodesOnHighExplosionDamage(toggle: boolean): void; - setExtra(extraId: number, toggle: number): void; - setExtraColours(pearlescentColor: number, wheelColor: number): void; - setFixed(): void; - setForwardSpeed(speed: number): void; - setFrictionOverride(friction: number): void; - setFullbeam(toggle: boolean): void; - setGravity(toggle: boolean): void; - setHalt(distance: number, killEngine: number, unknown: boolean): void; - setHandbrake(toggle: boolean): void; - setHandling(typeName: string, value: number | string): void; - setHasBeenOwnedByPlayer(owned: boolean): void; - setHasStrongAxles(toggle: boolean): void; - setHeliBladesFullSpeed(): void; - setHeliBladeSpeed(speed: number): void; - setHelicopterRollPitchYawMult(multiplier: number): void; - setIndicatorLights(turnSignal: number, toggle: boolean): void; - setInteriorLight(toggle: boolean): void; - setIsConsideredByPlayer(toggle: boolean): void; - setIsStolen(isStolen: boolean): void; - setIsWanted(state: boolean): void; - setJetEngineOn(toggle: boolean): void; - setLandingGear(state: number): void; - setLightMultiplier(multiplier: number): void; - setLights(state: number | boolean): void; - setLivery(livery: number): void; - setLodMultiplier(multiplier: number): void; - setMissionTrainCoords(x: number, y: number, z: number): void; - setMod(modType: number, modIndex: number): void; - setModColor1(paintType: number, color: number, p2: number): void; - setModColor2(paintType: number, color: number): void; - setModKit(modKit: number): void; - setNameDebug(name: string): void; - setNeedsToBeHotwired(toggle: boolean): void; - setNeonLightEnabled(index: number, toggle: boolean): void; - setNeonLightsColour(r: number, g: number, b: number): void; - setNumberPlateText(plateText: string): void; - setNumberPlateTextIndex(plateIndex: number): void; - setOnGroundProperly(): boolean; - setOutOfControl(killDriver: boolean, explodeOnImpact: boolean): void; - setPaintFade(fade: number): void; - setPedEnabledBikeRingtone(p0: any): boolean; - setPedTargettableDestory(vehicleComponent: number, destroyType: number): void; - setPetrolTankHealth(fix: number): void; - setPlaneMinHeightAboveGround(height: number): void; - setPlaybackToUseAi(flag: number): void; - setPlayersLast(): void; - setProvidesCover(toggle: boolean): void; - setReduceGrip(toggle: boolean): void; - setRenderTrainAsDerailed(toggle: boolean): void; - setRudderBroken(p0: boolean): void; - setSearchlight(toggle: boolean, canBeUsedByAI: boolean): void; - setSilent(toggle: boolean): void; - setSiren(toggle: boolean): void; - setSteerBias(value: number): void; - setStrong(toggle: boolean): void; - setTaxiLights(state: boolean): void; - setTimedExplosion(ped: Handle, toggle: boolean): void; - setTowTruckCraneHeight(height: number): void; - setTrainCruiseSpeed(speed: number): void; - setTrainSpeed(speed: number): void; - setTyreBurst(tyreIndex: number, onRim: boolean, p2: number): void; - setTyreFixed(tyreIndex: number): void; - setTyresCanBurst(toggle: boolean): void; - setTyreSmokeColor(r: number, g: number, b: number): void; - setUndriveable(toggle: boolean): void; - setWheelsCanBreak(enabled: boolean): void; - setWheelsCanBreakOffWhenBlowUp(toggle: boolean): void; - setWheelType(wheelType: number): void; - setWindowTint(tint: number): void; - smashWindow(index: number): void; - startAlarm(): void; - startHorn(duration: number, model: Hash, forever: boolean): void; - steerUnlockBias(toggle: boolean): void; - toggleMod(modType: number, toggle: boolean): void; - trackVisibility(): void; - wasCounterActivated(p0: any): boolean; -} - -// ------------------------------------------------------------------------- -// Simple MP types -// ------------------------------------------------------------------------- - -interface BrowserMp { - active: boolean; - url: string; - - destroy(): void; - execute(code: string): void; - markAsChat(): void; - reload(ignoreCache: boolean): void; - call(eventName: string, ...args: any[]): void; - callProc(procName: string, ...args: any[]): Promise; - executeCached(code: string): void; -} - -interface CameraMp { - handle: Handle; - - animatedShake(p0: string, p1: string, p2: string, p3: number): void; - attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, - zRot: number, p8: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, - fixedRot: boolean): void; - attachTo(entity: Handle, xOffset: number, yOffset: number, zOffset: number, isRelative: boolean): void; - attachToPedBone(ped: Handle, boneIndex: number, x: number, y: number, z: number, heading: boolean): void; - destroy(destroy?: boolean): void; - detach(): void; - doesExist(): boolean; - getAnimCurrentPhase(): number; - getCoord(): Vector3Mp; - getDirection(): Vector3Mp; - getFarClip(): number; - getFarDof(): number; - getFov(): number; - getNearClip(): number; - getRot(p0: number): Vector3Mp; - getSplinePhase(): number; - isActive(): boolean; - isInterpolating(): boolean; - isPlayingAnim(animName: string, animDictionary: string): boolean; - isRendering(): boolean; - isShaking(): boolean; - playAnim(animName: string, animDictionary: string, x: number, y: number, z: number, xRot: number, yRot: number, - zRot: number, p8: boolean, p9: number): void; - playAnim(animName: string, propName: string, p2: number, p3: boolean, p4: boolean, p5: boolean, delta: number, - bitset: any): boolean; - pointAt(entity: EntityMp, offsetX: number, offsetY: number, offsetZ: number, p4: boolean): void; - pointAtCoord(x: number, y: number, z: number): void; - pointAtPedBone(ped: Handle, boneIndex: number, x: number, y: number, z: number, heading: boolean): void; - setActive(active: boolean): void; - setActiveWithInterp(camFrom: Handle, duration: number, easeLocation: number, easeRotation: number): void; - setAffectsAiming(toggle: boolean): void; - setAnimCurrentPhase(phase: number): void; - setCoord(posX: number, posY: number, posZ: number): void; - setDebugName(name: string): void; - setDofFnumberOfLens(p1: number): void; - setDofFocusDistanceBias(p0: number): void; - setDofMaxNearInFocusDistance(p0: number): void; - setDofMaxNearInFocuxDistanceBlendLevel(p0: number): void; - setDofPlanes(p0: number, p1: number, p2: number, p3: number): void; - setDofStrength(dofStrength: number): void; - setFarClip(farClip: number): void; - setFarDof(farDof: number): void; - setFov(fieldOfView: number): void; - setInheritRollVehicle(p1: boolean): void; - setMotionBlurStrength(strength: number): void; - setNearClip(nearClip: number): void; - setNearDof(nearDof: number): void; - setParams(x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, fov: number, duration: number, - p8: number, p9: number, p10: number): void; - setRot(rotX: number, rotY: number, rotZ: number, p3: number): void; - setShakeAmplitude(amplitude: number): void; - setUseShallowDofMode(toggle: boolean): void; - shake(type: string, amplitude: number): void; - stopPointing(): void; - stopShaking(p0: boolean): void; -} - -interface ConsoleMp { - logInfo(message: string, save?: boolean, saveAsync?: boolean): void; - logWarning(message: string, save?: boolean, saveAsync?: boolean): void; - logError(message: string, save?: boolean, saveAsync?: boolean): void; - logFatal(message: string, save?: boolean, saveAsync?: boolean): void; - clear(): void; - reset(): void; - verbosity: RageEnums.ConsoleVerbosity | string; -} - -interface DiscordMp { - update(status: string, state: string): void; -} - -interface KeysMp { - bind(keyCode: number, keyHold: boolean, handler: Function): void; - isUp(keyCode: number): boolean; - isDown(keyCode: number): boolean; - unbind(keyCode: number, keyHold: boolean, handler?: Function): void; -} - -interface NametagsMp { - enabled: boolean; - - set(style: { - font: number; - outline: boolean; - offset: number; - veh_offset: number; - color: RGBA; - size: number; - - hbar?: { - size: [number, number]; - color: RGBA; - bg_color: RGBA; - } - }): void; -} - -interface RaycastingMp { - testPointToPoint(startPos: Vector3Mp, endPos: Vector3Mp, ignoreEntity?: Handle, flags?: number): RaycastResult; // TODO: ignoreEntity - testCapsule(startPos: Vector3Mp, endPos: Vector3Mp, radius: number, ignoreEntity?: Handle, flags?: number[]): RaycastResult; // TODO: ignoreEntity -} - -interface StorageMp { - data: { [key: string]: any }; - - flush(): void; -} - -interface SystemMp { - isFullscreen: boolean; - isFocused: boolean; - notify(args: { - title: string, - text: string, - attribute: string, - duration: number, - silent: boolean - }): void; -} - -interface UserMp { - preferences: UserPreferencesMp; -} - -interface UserPreferencesMp { - lowQualityAssets: boolean; - language: string; -} - -interface VoiceChatMp { - minVad: number; - muted: boolean; - readonly isAllowed: boolean; - readonly lastVad: number; - - getPreprocessingParam(param: number): any; // TODO - setPreprocessingParam(param: number, value: any): void; // TODO - cleanupAndReload(p0: boolean, p1: boolean, p2: boolean): void; -} - -// ------------------------------------------------------------------------- -// Game MP types -// ------------------------------------------------------------------------- - -interface GameAppMp { - appDeleteAppData(appName: string): boolean; - appGetFloat(property: string): number; - appGetString(property: string): string; - appGetInt(property: string): number; - appHasSyncedData(property: string): boolean; - appSetApp(appName: string): void; - appSetBlock(blockName: string): void; - appSetFloat(property: string, value: number): void; - appSetInt(property: string, value: number): void; - appSetString(property: string, value: string): void; -} - -interface GameAudioMp { - addLineToConversation(p0: any, p1: any, p2: any, p3: any, p4: any, p5: boolean, p6: boolean, - p7: boolean, p8: boolean, p9: any, p10: boolean, p11: boolean, p12: boolean): void; - addPedToConversation(p0: any, p1: any, p2: string): void; - cancelMusicEvent(eventName: string): boolean; - clearAmbientZoneListState(p0: any, p1: boolean): void; - clearAmbientZoneState(p0: any, p1: boolean): void; - findRadioStationIndex(station: number): number; - freezeRadioStation(radioStation: string): void; - getNetworkIdFromSoundId(soundId: number): number; - getNumberOfPassengerVoiceVariations(p0: any): number; - getPlayerHeadsetSoundAlternate(p0: string, p1: number): void; - getRadioStationName(radioStation: number): string; - getSoundIdFromNetworkId(netId: number): number; - getSynchronizedAudioEventPositionThisFrame(p0: string, p1: Handle): void; - getVehicleDefaultHorn(vehicle: Handle): Hash; - hasSoundFinished(soundId: number): boolean; - hintAmbientAudioBank(p0: any, p1: any): void; - hintScriptAudioBank(p0: any, p1: any): void; - interruptConversation(p0: any, p1: any, p2: any): void; - isAlarmPlayer(alarmName: string): boolean; - isAmbientSpeechPlaying(p0: Handle): boolean; - isAmbientZoneEnabled(ambientZone: string): boolean; - isAudioSceneActive(scene: string): boolean; - isScriptedSpeechPlaying(p0: any): boolean; - loadStream(streamName: string, soundSet: string): boolean; - loadStreamWithStartOffset(streamName: string, startOffset: number, soundSet: string): boolean; - overrideTrevorRage(p0: any): void; - overrideUnderwaterStream(p0: any, p1: boolean): void; - pauseScriptedConversation(p0: boolean): void; - playAmbientSpeechAtCoords(p0: string, p1: string, p2: number, p3: number, p4: number, p5: string): void; - playAmbientSpeechWithVoice(p0: Handle, speechName: string, voiceName: string, speechParam: string, - p4: boolean): void; - playEndCreditsMusic(play: boolean): void; - playMissionCompleteAudio(audioName: string): void; - playPain(painId: number, p1: number, p2: number): void; - playPedRingtone(ringtoneName: string, ped: Handle, p2: boolean): void; - playPoliceReport(name: string, p1: number): void; - playSound(soundId: number, audioName: string, audioRef: string, p3: boolean, p4: any, p5: boolean): void; - playSoundFromCoord(soundId: number, audioName: string, x: number, y: number, z: number, audioRef: string, p6: boolean, - p7: any, p8: boolean): void; - playSoundFromEntity(soundId: number, audioName: string, entity: Handle, audioRef: string, p4: boolean, p5: any): void; - playSoundFrontend(soundId: number, audioName: string, audioRef: string, p3: boolean): void; - playStreamFromObject(object: Handle): void; - playSynchronizedAudioEvent(p0: any): boolean; - preloadScriptConversation(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; - preloadScriptPhoneConversation(p0: boolean, p1: boolean): void; - prepareAlarm(alarmName: string): boolean; - prepareMusicEvent(eventName: string): boolean; - prepareSynchronizedAudioEvent(p0: string, p1: any): void; - prepareSynchronizedAudioEventForScene(p0: any, p1: any): boolean; - registerScriptWithAudio(p0: any): void; - releasedNamedScriptAudioBank(audioBank: string): void; - releaseSoundId(soundId: number): void; - requestAmbientAudioBank(p0: string, p1: boolean): boolean; - requestMissionAudioBank(p0: string, p1: boolean): boolean; - requestScriptAudioBank(p0: string, p1: boolean): boolean; - resetPedAudioFlags(p0: any): void; - setAggressiveHorns(toggle: boolean): void; - setAmbientZoneListState(p0: any, p1: boolean, p2: boolean): void; - setAmbientZoneListStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void; - setAmbientZoneState(p0: any, p1: boolean, p2: boolean): void; - setAmbientZoneStatePersistent(ambientZone: string, p1: boolean, p2: boolean): void; - setAnimalMood(p0: any, p1: any): void; - setAudioFlag(flagName: string, toggle: boolean): void; - setAudioSceneVariable(p0: any, p1: any, p2: number): void; - setCutsceneAudioOverride(p0: string): void; - setEmitterRadioStation(emitterName: string, radioStation: string): void; - setFrontendRadioActive(active: boolean): void; - setGpsActive(active: boolean): void; - setInitialPlayerStation(radioStation: string): void; - setMicrophonePosition(p0: boolean, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, x3: number, - y3: number, z3: number): void; - setMobilePhoneRadioState(state: boolean): void; - setMobileRadioEnabledDuringGameplay(toggle: boolean): void; - setPlayerAngry(playerPed: Handle, disabled: boolean): void; - setRadioAutoUnfreeze(p0: boolean): void; - setRadioToStationIndex(radioStation: number): void; - setRadioToStationName(stationName: string): void; - setRadioTrack(radioStation: string, radioTrack: string): void; - setStaticEmitterEnabled(emitterName: string, toggle: boolean): void; - setUserRadioControlEnabled(p0: boolean): void; - setVariableOnSound(soundId: number, p1: any, p2: number): void; - setVariableOnStream(p0: string, p1: number): void; - specialFrontendEqual(x: number, y: number, z: number): void; - startAlarm(alarmName: string, p2: boolean): void; - startAudioScene(sceneName: string): boolean; - startScriptConversation(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; - startScriptPhoneConversation(p0: boolean, p1: boolean): void; - stopAlarm(alarmName: string, toggle: boolean): void; - stopAllAlarms(stop: boolean): void; - stopAudioScene(scene: string): void; - stopCurrentPlayerAmbientSpeech(p0: Handle): void; - stopScriptedConversation(p0: boolean): void; - stopSound(soundId: number): void; - stopSynchronizedAudioEvent(p0: any): boolean; - triggerMusicEvent(eventName: string): boolean; - unfreezeRadioStation(radioStation: string): void; - unlockMissionNewsStory(newsStory: number): void; -} - -interface GameBrainMp { - addScriptToRandom(name: string, model: Hash, p2: number, p3: number): void; - disableScriptBrainSet(brainSet: number): void; - enableScriptBrainSet(brainSet: number): void; - isObjectWithinBrainActivationRange(object: Handle): boolean; - registerObjectScriptBrain(stringName: string, p1: Hash, p2: number, p3: number, p4: number, p5: number): void; - registerWorldPointScriptBrain(p0: any, p1: number, p2: any): void; -} - -interface GameCamMp { - addCamSplineNode(camera: number, x: number, y: number, z: number, xRot: number, yRot: number, zRot: number, - length: number, p8: number, p9: number): void; - animateGameplayCamZoom(p0: number, distance: number): void; - clampGameplayCamPitch(minimum: number, maximum: number): void; - clampGameplayCamYaw(minimum: number, maximum: number): void; - createCam(camName: string, p1: boolean): Handle; - createCamera(camHash: number, p1: boolean): Handle; - createCameraWithParams(camHash: number, posX: number, posY: number, posZ: number, rotX: number, rotY: number, - rotZ: number, fov: number, p8: boolean, p9: any): Handle; - createCamWithParams(camName: string, posX: number, posY: number, posZ: number, rotX: number, rotY: number, - rotZ: number, fov: number, p8: boolean, p9: any): Handle; - createCinematicShot(p0: any, p1: number, p2: any, entity: Handle): void; - destroyAllCams(destroy: boolean): void; - doScreenFadeIn(duration: number): void; - doScreenFadeOut(duration: number): void; - getCamSplineNodeIndex(cam: number): boolean; - getCamSplineNodePhase(p0: any): number; - getGameplayCamRelativeHeading(): number; - getGameplayCamRot(p0: number): Vector3Mp; - getGameplayCamRot(p0: number): Vector3Mp; - getIsMultiplayerBrief(p0: boolean): void; - isCamSplinePaused(p0: any): boolean; - isCinematicShotActive(p0: any): boolean; - isSphereVisible(x: number, y: number, z: number, radius: number): boolean; - overrideCamSplineMotionBlur(p0: any, p1: any, p2: number, p3: number): void; - overrideCamSplineVelocity(cam: number, p1: number, p2: number, p3: number): void; - playSynchronizedCamAnim(p0: any, p1: any, animName: string, animDictionary: string): boolean; - renderScriptCams(render: boolean, ease: boolean, easeTime: number, p3: boolean, p4: boolean): void; - setCamEffect(p0: number): void; - setCamSplineDuration(cam: number, timeDuration: number): void; - setCamSplinePhase(cam: number, p1: number): void; - setCinematicButtonActive(p0: boolean): void; - setCinematicCamShakeAmplitude(p0: number): void; - setCinematicModeActive(p0: boolean): void; - setFollowPedCamCutsceneChat(p0: string, p1: number): void; - setFollowPedCamViewMode(viewMode: number): void; - setFollowVehicleCamViewMode(viewMode: number): void; - setFollowVehicleCamZoomLevel(zoomLevel: number): void; - setGameplayCamRawPitch(pitch: number): void; - setGameplayCamRawYaw(yaw: number): void; - setGameplayCamRelativeHeading(heading: number): void; - setGameplayCamRelativePitch(x: number, p1: number): void; - setGameplayCamShakeAmplitude(amplitude: number): void; - setGameplayCoordHint(p0: number, p1: number, p2: number, p3: any, p4: any, p5: any, p6: any): void; - setGameplayEntityHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, p7: any, - p8: any): void; - setGameplayHintFov(fov: number): void; - setGameplayObjectHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, - p7: any): void; - setGameplayPedHint(p0: Handle, x1: number, y1: number, z1: number, p4: boolean, p5: any, p6: any, p7: any): void; - setGameplayVehicleHint(p0: any, p1: number, p2: number, p3: number, p4: boolean, p5: any, p6: any, - p7: any): void; - setTimeIdleDrop(p0: boolean, p1: boolean): void; - setWidescreenBorders(p0: boolean, p1: number): void; - shakeCinematicCam(p0: string, p1: number): void; - shakeGameplayCam(shakeName: string, intensity: number): void; - stopCinematicCamShaking(p0: boolean): void; - stopCinematicShot(p0: any): void; - stopGameplayCamShaking(p0: boolean): void; - stopGameplayHint(p0: boolean): void; -} - -interface GameControlsMp { - useDefaultVehicleEntering: boolean; - - disableAllControlActions(inputGroup: number): void; - disableControlAction(inputGroup: number, control: number, disable: boolean): void; - enableAllControlActions(inputGroup: number): void; - enableControlAction(inputGroup: number, control: number, enable: boolean): void; - getControlActionName(inputGroup: number, control: number, p2: boolean): string; - getControlNormal(inputGroup: number, control: number): number; - getControlValue(inputGroup: number, control: number): number; - getDisabledControlNormal(inputGroup: number, control: number): number; - isControlEnabled(inputGroup: number, control: number): boolean; - isControlJustPressed(inputGroup: number, control: number): boolean; - isControlJustReleased(inputGroup: number, control: number): boolean; - isControlPressed(inputGroup: number, control: number): boolean; - isControlReleased(inputGroup: number, control: number): boolean; - isDisabledControlJustPressed(inputGroup: number, control: number): boolean; - isDisabledControlJustReleased(inputGroup: number, control: number): boolean; - isDisabledControlPressed(inputGroup: number, control: number): boolean; - isInputDisabled(inputGroup: number): boolean; - isInputJustDisabled(inputGroup: number): boolean; - setControlNormal(inputGroup: number, control: number, amount: number): boolean; - setInputExclusive(inputGroup: number, control: number): void; - setPadShake(p0: number, duration: number, frequency: number): void; - setPlayerpadShakesWhenControllerDisabled(toggle: boolean): void; - stopPadShake(p0: any): void; -} - -interface GameCutsceneMp { - setCutscenePedPropVariation(cutsceneEntName: string, p1: number, p2: number, p3: number, modelHash: Hash): void; - getEntityIndexOfCutsceneEntity(cutsceneEntName: string, modelHash: Hash): EntityMp; - startCutscene(p0: number): void; - startCutsceneAtCoords(x: number, y: number, z: number, p3: number): void; - hasThisCutsceneLoaded(cutsceneName: string): boolean; - doesCutsceneEntityExist(cutsceneEntName: string, modelHash: Hash): boolean; - canSetExitStateForRegisteredEntity(cutsceneEntName: string, modelHash: Hash): boolean; - canSetEnterForRegisteredEntity(cutsceneEntName: string, modelHash: Hash): boolean; - requestCutscene(cutsceneName: string, p1: number): void; - setCutsceneFadeValues(p0: boolean, p1: boolean, p2: boolean, p3: boolean): void; - setCutsceneTriggerArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number): void; - canSetExitStateForCamera(p0: boolean): boolean; - setCutsceneOrigin(p0: any, p1: any, p2: any, p3: any, p4: any): void; - setCutscenePedComponentVariation(cutsceneEntName: string, p1: number, p2: number, p3: number, modelHash: number): void; - getEntityIndexOfRegisteredEntity(cutsceneEntName: string, modelHash: Hash): EntityMp; - requestCutscene2(cutsceneName: string, p1: number, p2: number): void; - stopCutscene(p0: boolean): void; - registerEntityForCutscene(cutscenePed: Handle, cutsceneEntName: string, p2: number, modelHash: number, p4: number): void; -} - -interface GameDatafileMp { - arrayValueAddBoolean(arrayData: any, value: boolean): void; - arrayValueAddFloat(arrayData: any, value: number): void; - arrayValueAddInteger(arrayData: any, value: number): void; - arrayValueAddObject(arrayData: any): void; - arrayValueAddString(arrayData: any, value: string): void; - arrayValueAddVector3(arrayData: any, valueX: number, valueY: number, valueZ: number): void; - arrayValueGetBoolean(arrayData: any, arrayIndex: number): boolean; - arrayValueGetFloat(arrayData: any, arrayIndex: number): number; - arrayValueGetInteger(arrayData: any, arrayIndex: number): number; - arrayValueGetObject(arrayData: any, arrayIndex: number): any; - arrayValueGetSize(arrayData: any): number; - arrayValueGetString(arrayData: any, arrayIndex: number): string; - arrayValueGetType(arrayData: any, arrayIndex: number): number; - arrayValueGetVector3(arrayData: any, arraayIndex: number): Vector3Mp; - loadUgcFile(filename: string): boolean; - objectValueAddArray(objectData: any, key: string): void; - objectValueAddBoolean(arrayData: any, key: string, value: boolean): void; - objectValueAddFloat(objectData: any, key: string, value: number): void; - objectValueAddInteger(objectData: any, key: string, value: number): void; - objectValueAddObject(objectData: any, key: string): void; - objectValueAddString(objectData: any, key: string, value: string): void; - objectValueAddVector3(objectData: any, key: string, valueX: number, valueY: number, valueZ: number): void; - objectValueGetArray(objectData: any, key: string): any; - objectValueGetBoolean(objectData: any, key: string): boolean; - objectValueGetFloat(objectData: any, key: string): number; - objectValueGetInteger(objectData: any, key: string): number; - objectValueGetObject(objectData: any, key: string): void; - objectValueGetString(objectData: any, key: string): string; - objectValueGetType(objectData: any, key: string): number; - objectValueGetVector3(objectData: any, key: string): Vector3Mp; - -} - -interface GameDecisioneventMp { - addShockingEventAtPosition(type: number, x: number, y: number, z: number, duration: number): GameScriptMp; - addShockingEventForEntity(type: number, entity: Handle, duration: number): GameScriptMp; - blockDecisionMakerEvent(name: Hash, type: number): void; - clearDecisionMakerEventResponse(name: Hash, type: number): void; - isShockingEventInSphere(type: number, x: number, y: number, z: number, radius: number): boolean; - removeAllShockingEvents(p0: boolean): void; - removeShockingEvent(event: GameScriptMp): boolean; - suppressShockingEvent(type: number): void; - unblockDecisionMakerEvent(name: Hash, type: number): void; -} - -interface GameDecoratorMp { - decorIsRegisteredAsType(propertyName: string, type: number): boolean; - decorRegister(propertyName: string, type: number): void; -} - -interface GameDlc1Mp { - getDlcVehicleData(dlcVehicleIndex: number, outData: any): boolean; - getDlcVehicleFlags(p0: number): number; - getDlcVehicleModel(dlcVehicleIndex: number): Hash; - getDlcWeaponComponentData(p0: any, p1: any, - componentDataPtr: { - attachBone: number; - padding1: number; - bActiveByDefault: number; - padding2: number; - unk: number; - padding3: number; - componentHash: number; - padding4: number; - unk2: number; - padding5: number; - componentCost: number; - padding6: number; - nameLabel: string; - descLabel: string; - } - ): boolean; - getDlcWeaponData(dlcWeaponIndex: number, - outData: { - emptyCheck: number; - padding1: number; - weaponHash: number; - padding2: number; - unk: number; - padding3: number; - weaponCost: number; - padding4: number; - ammoCost: number; - padding5: number; - ammoType: number; - padding6: number; - defaultClipSize: number; - padding7: number; - nameLabel: string; - descLabel: string; - desc2Label: string; - upperCaseNameLabel: string; - } - ): boolean; - getForcedComponent(componentHash: Hash, componentId: number, p2: any, p3: any, p4: any): void; - getNumDlcWeaponComponents(dlcWeaponIndex: number): number; - getNumForcedComponents(componentHash: Hash): number; - getNumPropsFromOutfit(p0: number, p1: number, p2: number, p3: boolean, p4: number, componentId: number): number; - getPropFromOutfit(outfit: any, slot: number, item: any): boolean; - getShopPedComponent(p0: any, p1: any): void; - getShopPedOutfit(p0: any, p1: any): void; - getShopPedQueryComponent(componentId: number, outComponent: number): number; - getShopPedQueryOutput(p0: any, - outfit: { - mask: number; - torso: number; - pants: number; - parachute: number; - shoes: number; - misc1: number; - tops1: number; - armour: number; - crew: number; - tops2: number; - hat: number; - glasses: number; - earpiece: number; - maskTexture: number; - torsoTexture: number; - pantsTexture: number; - parachuteTexture: number; - shoesTexture: number; - misc1Texture: number; - tops1Texture: number; - armourTexture: number; - crewTexture: number; - tops2Texture: number; - hatTexture: number; - glassesTexture: number; - earpiceTexture: number; - } - ): void; - getShopPedQueryProp(p0: any, p1: any): void; - getVariantComponent(componentHash: Hash, componentId: number, p2: any, p3: any, p4: any): void; - initShopPedComponent(outComponent: number): number; - initShopPedProp(outProp: number): number; - isDlcDataEmpty(dlcData: number): boolean; -} - -interface GameDlc2Mp { - isDlcPresent(dlcHash: Hash): boolean; - nullify(variable: any, unused: any): boolean; -} - -interface GameEntityMp { - createForcedObject(x: number, y: number, z: number, p3: any, modelHash: Hash, p5: boolean): void; - createModelHide(x: number, y: number, z: number, radius: number, model: Hash, p5: boolean): void; - createModelHideExcludingScriptObjects(x: number, y: number, z: number, radius: number, model: Hash, - p5: boolean): void; - createModelSwap(x: number, y: number, z: number, radius: number, originalModel: Hash, - newModel: Hash, p6: boolean): void; - findAnimEventPhase(animDictionary: string, animName: string, p2: string, p3: any, p4: any): boolean; - getEntityAnimDuration(animDict: string, animName: string): number; - isAnEntity(handle: Handle): boolean; - playSynchronizedMapEntityAnim(p0: number, p1: number, p2: number, p3: number, p4: any, p5: any, p6: any, - p7: any, p8: number, p9: number, p10: any, p11: number): boolean; - removeForcedObject(p0: any, p1: any, p2: any, p3: any, p4: any): void; - removeModelHide(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; - removeModelSwap(x: number, y: number, z: number, radius: number, originModel: Hash, - newModel: Hash, p6: boolean): void; - setObjectAsNoLongerNeeded(object: Handle): void; - stopSynchronizedMapEntityAnim(p0: number, p1: number, p2: number, p3: number, p4: any, p5: number): boolean; - wouldEntityBeOccluded(hash: Hash, x: number, y: number, z: number, p4: boolean): boolean; -} - -interface GameFireMp { - addSpecfxExplosion(x: number, y: number, z: number, explosionType: number, explosionFx: Hash, - damageScale: number, isAudible: boolean, isInvisible: boolean, cameraShake: number): void; - getClosestFirePos(outPosition: Vector3Mp, x: number, y: number, z: number): Vector3Mp; - getNumberOfFiresInRange(x: number, y: number, z: number, radius: number): number; - getPedInsideExplosionArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, - z2: number, radius: number): EntityMp; - isExplosionInAngledArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, - angle: number): boolean; - isExplosionInArea(explosionType: number, x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; - isExplosionInSphere(explosionType: number, x: number, y: number, z: number, radius: number): boolean; - removeScriptFire(fireHandle: Handle): void; - startScriptFire(x: number, y: number, z: number, maxChildren: number, isGasFire: boolean): number; - stopFireInRange(x: number, y: number, z: number, radius: number): void; -} - -interface GameGameplayMp { - absf(value: number): number; - absi(value: number): number; - acos(p0: number): number; - addHospitalRestart(x: number, y: number, z: number, p3: number, p4: any): number; - addPoliceRestart(p0: number, p1: number, p2: number, p3: number, p4: any): void; - addStuntJump(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: any, p16: any): number; - addStuntJumpAngled(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: number, p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number, p16: number, - p17: any, p18: any): number - areStringsEqual(string1: string, string2: string): boolean; - asin(p0: number): number; - atan(p0: number): number; - atan2(p0: number, p1: number): number; - beginReplayStats(p0: any, p1: any): void; - clearAngledAreaOfVehicles(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: boolean, p8: boolean, p9: boolean, p10: boolean, p11: boolean): void; - clearArea(X: number, Y: number, Z: number, radius: number, p4: boolean, ignoreCopCars: boolean, ignoreObjects: boolean, - p7: boolean): void; - clearAreaOfCops(x: number, y: number, z: number, radius: number, flags: number): void; - clearAreaOfEverything(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, - p7: boolean): void; - clearAreaOfObjects(x: number, y: number, z: number, radius: number, flags: number): void; - clearAreaOfPeds(x: number, y: number, z: number, radius: number, flags: number): void; - clearAreaOfProjectiles(x: number, y: number, z: number, radius: number, flags: number): void; - clearAreaOfVehicles(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, - p7: boolean, p8: boolean): void; - clearBit(address: number, offset: number): number; - compareStrings(str1: string, str2: string, matchCase: boolean, maxLength: number): number; - createIncident(p0: number, p2: number, p3: number, p4: number, p5: number, p6: number, outIncident: number): number; - createIncidentWithEntity(p0: number, p1: EntityMp, p2: number, p3: number, outIncident: number): number; - deleteIncident(incidentId: number): number; - deleteStuntJump(p0: number): void; - disableAutomaticRespawn(disableRespawn: boolean): void; - disableHospitalRestart(hospitalIndex: number, toggle: boolean): void; - disablePoliceRestart(policeIndex: number, toggle: boolean): void; - disableStuntJumpSet(p0: number): void; - displayOnscreenKeyboard(p0: number, windowTitle: string, p2: string, defaultText: string, defaultConcat1: string, - defaultConcat2: string, defaultConcat3: string, maxInputLength: number): void; - enableDispatchService(dispatchType: number, toggle: boolean): void; - enableMpDlcMaps(toggle: boolean): void; - enableStuntJumpSet(p0: number): void; - findSpawnPointInDirection(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, distance: number, - spawnPoint: Vector3Mp): Vector3Mp; - getAngleBetween2dVectors(x1: number, y1: number, x2: number, y2: number): number; - getBitsInRange(vars: number, rangeStart: number, rangeEnd: number): number; - getDistanceBetweenCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, useZ: boolean): number; - getFreeStackSlotsCount(stackSize: number): number; - getGroundZFor3dCoord(x: number, y: number, z: number, groundZ: number, unk: boolean): number; - getHashKey(value: string): Hash; - getHeadingFromVector2d(dx: number, dy: number): number; - getModelDimensions(modelHash: Hash): { - min: Vector3Mp; - max: Vector3Mp; - }; - getProfileSetting(profileSetting: number): number; - getRandomFloatInRange(startRange: number, endRange: number): number; - getRandomIntInRange(startRange: number, endRange: number): number; - getWeatherTypeTransition(p0: any, p1: any, progress_or_time: number): number; - hasBulletImpactedInArea(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: boolean): boolean; - hasBulletImpactedInBox(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, - p7: boolean): boolean; - hasButtonCombinationJustBeenEntered(hash: Hash, amount: number): boolean; - hasCheatStringJustBeenEntered(hash: Hash): boolean; - ignoreNextRestart(toggle: boolean): void; - isAreaOccupied(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, p7: boolean, - p8: boolean, p9: boolean, p10: boolean, p11: any, p12: boolean): boolean; - isBitSet(address: number, offset: number): boolean; - isBulletInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: boolean): boolean; - isBulletInArea(p0: number, p1: number, p2: number, p3: number, p4: boolean): boolean; - isBulletInBox(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean): boolean; - isIncidentValid(incidentId: number): number; - isNextWeatherType(weatherType: string): boolean; - isPointObscuredByAMissionEntity(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: any): boolean; - isPositionOccupied(p0: number, p1: number, p2: number, p3: number, p4: boolean, p5: boolean, p6: boolean, p7: boolean, - p8: boolean, p9: any, p10: boolean): boolean; - isPrevWeatherType(weatherType: string): boolean; - isProjectileInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, ownedByPlayer: boolean): boolean; - isProjectileTypeInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: any, p8: boolean): boolean; - isProjectileTypeInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, type: number, - p7: boolean): boolean; - isSniperBulletInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; - isStringNull(string: string): boolean; - isStringNullOrEmpty(string: string): boolean; - overrideSaveHouse(p0: boolean, p1: number, p2: number, p3: number, p4: number, p5: boolean, p6: number, p7: number): boolean; - registerBoolToSave(p0: any, name: string): void; - registerEnumToSave(p0: any, name: string): void; - registerFloatToSave(p0: any, name: string): void; - registerIntToSave(p0: any, name: string): void; - registerSaveHouse(p0: number, p1: number, p2: number, p3: number, p4: any, p5: any, p6: any): void; - registerTextLabelToSave(p0: any, name: string): void; - removeDispatchSpawnBlockingArea(p0: any): void; - setBit(address: number, offset: number): number; - setBitsInRange(vars: number, rangeStart: number, rangeEnd: number, p3: number): number; - setCloudHatTransition(type: string, transitionTime: number): void; - setCreditsActive(toggle: boolean): void; - setDispatchIdealSpawnDistance(p0: number): void; - setDispatchTimeBetweenSpawnAttempts(p0: any, p1: number): void; - setDispatchTimeBetweenSpawnAttemptsMultiplier(p0: any, p1: number): void; - setExplosiveAmmoThisFrame(): void; - setExplosiveMeleeThisFrame(): void; - setFadeInAfterDeathArrest(toggle: boolean): void; - setFadeInAfterLoad(toggle: boolean): void; - setFadeOutAfterArrest(toggle: boolean): void; - setFadeOutAfterDeath(toggle: boolean): void; - setFakeWantedLevel(fakeWantedLevel: number): void; - setFireAmmoThisFrame(): void; - setGamePaused(toggle: boolean): void; - setGravityLevel(level: number): void; - setMinigameInProgress(toggle: boolean): void; - setMissionFlag(toggle: boolean): void; - setOverrideWeather(weatherType: string): void; - setRainFxIntensity(intensity: number): void; - setRandomEventFlag(p0: boolean): void; - setRandomSeed(time: number): void; - setSaveHouse(p0: any, p1: boolean, p2: boolean): void; - setSaveMenuActive(unk: boolean): void; - setSuperJumpThisFrame(): void; - setThisScriptCanBePaused(toggle: boolean): void; - setThisScriptCanRemoveBlipsCreatedByAnyScript(toggle: boolean): void; - setTimeScale(time: number): void; - setUnkMapFlag(flag: number): void; - setWeatherTypeNow(weatherType: string): void; - setWeatherTypeNowPersist(weatherType: string): void; - setWeatherTypeOverTime(weatherType: string, time: number): void; - setWeatherTypePersist(weatherType: string): void; - setWeatherTypeTransition(sourceWeather: Hash, targetWeather: Hash, transitionTime: number): void; - setWind(p0: number): void; - setWindDirection(direction: number): void; - setWindSpeed(speed: number): void; - shootSingleBulletBetweenCoords(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, damage: number, - p7: boolean, weaponHash: Hash, ownerPed: Handle, isAudible: boolean, isInvisible: boolean, speed: number): void; - startSaveArray(p0: any, p1: number, arrayName: string): void; - startSaveData(p0: any, p1: any, p2: boolean): void; - startSaveStruct(p0: any, p1: number, structName: string): void; - stringToInt(string: string, outInteger: number): number; - tan(p0: number): number; - terminateAllScriptsWithThisName(scriptName: string): void; - usingMissionCreator(toggle: boolean): void; -} - -interface GameGraphicsMp { - addDecal(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, p8: number, - p9: number, p10: number, p11: number, p12: number, p13: number, p14: number, p15: number, p16: number, p17: boolean, - p18: boolean, p19: boolean): number; - addPetrolDecal(x: number, y: number, z: number, groundLvl: number, width: number, transparency: number): void; - beginTextComponent(componentType: string): void; - callScaleformMovieFunctionFloatParams(scaleform: number, functionName: string, param1: number, param2: number, - param3: number, param4: number, param5: number): void; - callScaleformMovieFunctionMixedParams(scaleform: number, functionName: string, floatParam1: number, - floatParam2: number, floatParam3: number, floatParam4: number, floatParam5: number, stringParam1: string, - stringParam2: string, stringParam3: string, stringParam4: string, stringParam5: string): void; - callScaleformMovieFunctionStringParams(scaleform: number, functionName: string, param1: string, param2: string, - param3: string, param4: string, param5: string): void; - callScaleformMovieMethod(scaleform: number, method: string): void; - createCheckpoint(type: number, posX1: number, posY1: number, posZ1: number, posX2: number, posY2: number, - posZ2: number, radius: number, colorR: number, colorG: number, colorB: number, alpha: number, reserved: number): number; - destroyTrackedPoint(point: Handle): void; - disableVehicleDistantlights(toggle: boolean): void; - doesParticleFxLoopedExist(ptfxHandle: number): boolean; - drawBox(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, - alpha: number): void; - drawDebugBox(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, - alpha: number): void; - drawDebugCross(x: number, y: number, z: number, size: number, r: number, g: number, b: number, alpha: number): void; - drawDebugLine(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, - alpha: number): void; - drawDebugLineWithTwoColours(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r1: number, - g1: number, b1: number, r2: number, g2: number, b2: number, alpha1: number, alpha2: number): void; - drawDebugSphere(x: number, y: number, z: number, radius: number, r: number, g: number, b: number, alpha: number): void; - drawDebugText(text: string, x: number, y: number, z: number, r: number, g: number, b: number, alpha: number): void; - drawDebugText2d(text: string, x: number, y: number, z: number, r: number, g: number, b: number, alpha: number): void; - drawLightWithRange(posX: number, posY: number, posZ: number, colorR: number, colorG: number, colorB: number, - range: number, intensity: number): void; - drawLightWithRangeAndShadow(x: number, y: number, z: number, r: number, g: number, b: number, range: number, - intensity: number, shadow: number): void; - drawLine(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, r: number, g: number, b: number, - alpha: number): void; - drawMarker(type: number, posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, - rotX: number, rotY: number, rotZ: number, scaleX: number, scaleY: number, scaleZ: number, colorR: number, - colorG: number, colorB: number, alpha: number, bobUpAndDown: boolean, faceCamera: boolean, p19: number, - rotate: boolean, textureDict: string, textureName: string, drawOnEnts: boolean): void; - drawPoly(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, x3: number, y3: number, z3: number, - r: number, g: number, b: number, alpha: number): void; - drawRect(x: number, y: number, width: number, height: number, r: number, g: number, b: number, a: number): void; - drawScaleformMovie(scaleformHandle: number, x: number, y: number, width: number, height: number, red: number, - green: number, blue: number, alpha: number, p9: number): void; - drawScaleformMovie3d(scaleform: number, posX: number, posY: number, posZ: number, rotX: number, rotY: number, - rotZ: number, p7: number, p8: number, p9: number, scaleX: number, scaleY: number, scaleZ: number, p13: any): void; - drawScaleformMovie3dNonAdditive(scaleform: number, posX: number, posY: number, posZ: number, rotX: number, - rotY: number, rotZ: number, p7: number, p8: number, p9: number, scaleX: number, scaleY: number, scaleZ: number, - p13: any): void; - drawScaleformMovieFullscreen(scaleform: number, red: number, green: number, blue: number, alpha: number, - unk: boolean): void; - drawScaleformMovieFullscreenMasked(scaleform1: number, scaleform2: number, red: number, green: number, blue: number, - alpha: number): void; - drawSpotLight(posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, colorR: number, - colorG: number, colorB: number, distance: number, brightness: number, roundness: number, radius: number, - falloff: number): void; - drawSpotLightWithShadow(posX: number, posY: number, posZ: number, dirX: number, dirY: number, dirZ: number, - colorR: number, colorG: number, colorB: number, distance: number, brightness: number, roundness: number, - radius: number, falloff: number, shadow: number): void; - drawSprite(textureDict: string, textureName: string, screenX: number, screenY: number, scaleX: number, - scaleY: number,heading: number, colorR: number, colorG: number, colorB: number, alpha: number): void; - drawText(text: string, position: Array3d | Array2d, - data?: { - font: number, - centre: boolean, - color: RGBA, - scale: Array2d, - outline: boolean - } - ): void; - drawTvChannel(xPos: number, yPos: number, xScale: number, yScale: number, rotation: number, r: number, g: number, - b: number, alpha: number): void; - enableAlienBloodVfx(toggle: boolean): void; - enableClownBloodVfx(toggle: boolean): void; - enableMovieSubtitles(toggle: boolean): void; - enableLights(toggle: boolean): void; - fadeDecalsInRange(p0: any, p1: any, p2: any, p3: any, p4: any): void; - getDecalWashLevel(decal: number): number; - getSafeZoneSize(): number; - getScreenActiveResolution(x: number, y: number): { - x: number; - y: number; - }; - getScreenAspectRatio(b: boolean): number; - getScreenEffectIsActive(effectName: string): number; - getScreenResolution(x: number, y: number): { - x: number; - y: number; - }; - getTextureResolution(textureDict: string, textureName: string): Vector3Mp; - hasHudScaleformLoaded(componentIndex: RageEnums.HudComponent | number): boolean; - hasNamedScaleformMovieLoaded(scaleformName: string): boolean; - hasScaleformContainerMovieLoadedIntoParent(scaleformHandle: number): boolean; - hasScaleformMovieLoaded(scaleformHandle: number): boolean; - hasStreamedTextureDictLoaded(textureDict: string): boolean; - isDecalAlive(decal: number):boolean; - isTrackedPointVisible(point: Handle): boolean; - loadMovieMeshSet(movieMeshSetName: string): number; - loadTvChannel(tvChannel: Hash): boolean; - moveVehicleDecals(p0: any, p1: any): void; - notify(text: string): void; - pushScaleformMovieFunction(scaleform: number, functionName: string): boolean; - pushScaleformMovieFunctionFromHudComponent(componentIndex: RageEnums.HudComponent | number, functionName: string): boolean; - pushScaleformMovieFunctionN(functionName: string): boolean; - popScaleformMovieFunctionVoid(): void; - pushScaleformMovieFunctionParameterBool(value: boolean): void; - pushScaleformMovieFunctionParameterFloat(value: number): void; - pushScaleformMovieFunctionParameterInt(value: number): void; - pushScaleformMovieFunctionParameterString(value: string): void; - releaseMovieMeshSet(movieMeshSet: number): void; - removeDecal(decal: number): void; - removeDecalsFromObject(obj: Handle): void; - removeDecalsFromObjectFacing(obj: Handle, x: number, y: number, z: number): void; - removeDecalsInRange(x: number, y: number, z: number, range: number): void; - removeParticleFx(ptfxHandle: number, p1: boolean): void; - removeParticleFxInRange(X: number, Y: number, Z: number, radius: number): void; - requestHudScaleform(componentIndex: RageEnums.HudComponent | number): void; - requestScaleformMovie(scaleformName: string): number; - requestScaleformMovie3(scaleformName: string): number; - requestScaleformMovieInstance(scaleformName: string): number; - requestStreamedTextureDict(textureDict: string, p1: boolean): void; - screen2dToWorld3d(vector2: Vector3Mp): Vector3Mp; - set2dLayer(layer: number): void; - setBlackout(enable: boolean): void; - setDebugLinesAndSpheresDrawingActive(enabled: boolean): void; - setDrawOrigin(x: number, y: number, z: number, p3: any): void; - setFarShadowsSuppressed(toggle: boolean): void; - setFlash(p0: number, p1: number, fadeIn: number, duration: number, fadeOut: number): void; - setForcePedFootstepsTracks(toggle: boolean): void; - setForceVehicleTrails(toggle: boolean): void; - setFrozenRenderingDisabled(enabled: boolean): void; - setNightvision(toggle: boolean): void; - setNoiseoveride(toggle: boolean): void; - setNoisinessoveride(value: number): void; - setParticleFxBloodScale(p0: boolean): void; - setParticleFxCamInsideNonplayerVehicle(p0: any, p1: boolean): void; - setParticleFxCamInsideVehicle(p0: boolean): void; - setParticleFxLoopedAlpha(ptfxHandle: number, alpha: number): void; - setParticleFxLoopedColour(ptfxHandle: number, r: number, g: number, b: number, p4: boolean): void; - setParticleFxLoopedEvolution(ptfxHandle: number, propertyName: string, amount: number, Id: boolean): void; - setParticleFxLoopedOffsets(ptfxHandle: number, x: number, y: number, z: number, rotX: number, rotY: number, - rotZ: number): void; - setParticleFxLoopedRange(ptfxHandle: number, range: number): void; - setParticleFxLoopedScale(ptfxHandle: number, scale: number): void; - setParticleFxNonLoopedAlpha(alpha: number): void; - setParticleFxNonLoopedColour(r: number, g: number, b: number): void; - setParticleFxShootoutBoat(p0: any): void; - setPtfxAssetNextCall(name: string): void; - setPtfxAssetOldToNew(oldAsset: string, newAsset: string): void; - setScaleformMovieAsNoLongerNeeded(scaleformHandle: number): number; - setScaleformMovieToUseSystemTime(scaleform: number, toggle: boolean): void; - setScreenDrawPosition(x: number, y: number): void; - setSeethrough(toggle: boolean): void; - setStreamedTextureDictAsNoLongerNeeded(textureDict: string): void; - setTimecycleModifier(modifierName: string): void; - setTimecycleModifierStrength(strength: number): void; - setTrackedPointInfo(point: Handle, x: number, y: number, z: number, radius: number): void; - setTransitionTimecycleModifier(modifierName: string, transition: number): void; - setTvAudioFrontend(toggle: boolean): void; - setTvChannel(channel: number): void; - setTvVolume(volume: number): void; - sittingTv(scaleform: number): string; - startParticleFxLoopedAtCoord(effectName: string, x: number, y: number, z: number, xRot: number, yRot: number, - zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, p11: boolean): number; - startParticleFxLoopedOnEntity(effectName: string, entity: Handle, xOffset: number, yOffset: number, - zOffset: number, xRot: number, yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, - zAxis: boolean): number; - startParticleFxLoopedOnEntity2(effectName: string, entity: Handle, xOffset: number, yOffset: number, zOffset: number, - xRot: number, yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): number; - startParticleFxLoopedOnEntityBone(effectName: string, entity: Handle, xOffset: number, yOffset: number, - zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, - yAxis: boolean, zAxis: boolean): number; - startParticleFxLoopedOnEntityBone2(effectName: string, entity: Handle, xOffset: number, yOffset: number, - zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, - yAxis: boolean, zAxis: boolean): number; - startParticleFxLoopedOnPedBone(effectName: string, ped: Handle, xOffset: number, yOffset: number, zOffset: number, - xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, yAxis: boolean, - zAxis: boolean): number; - startParticleFxNonLoopedAtCoord(effectName: string, xPos: number, yPos: number, zPos: number, xRot: number, - yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): boolean; - startParticleFxNonLoopedAtCoord2(effectName: string, xPos: number, yPos: number, zPos: number, xRot: number, - yRot: number, zRot: number, scale: number, xAxis: boolean, yAxis: boolean, zAxis: boolean): boolean; - startParticleFxNonLoopedOnEntity(effectName: string, entity: Handle, offsetX: number, offsetY: number, - offsetZ: number, rotX: number, rotY: number, rotZ: number, scale: number, axisX: boolean, axisY: boolean, - axisZ: boolean): boolean; - startParticleFxNonLoopedOnEntity2(effectName: string, entity: Handle, xOffset: number, yOffset: number, - zOffset: number, xRot: number, yRot: number, zRot: number, boneIndex: number, scale: number, xAxis: boolean, - yAxis: boolean, zAxis: boolean): boolean; - startParticleFxNonLoopedOnPedBone(effectName: string, ped: Handle, offsetX: number, offsetY: number, offsetZ: number, - rotX: number, rotY: number, rotZ: number, boneIndex: number, scale: number, axisX: boolean, axisY: boolean, - axisZ: boolean): boolean; - startParticleFxNonLoopedOnPedBone2(effectName: string, ped: Handle, offsetX: number, offsetY: number, offsetZ: number, - rotX: number, rotY: number, rotZ: number, boneIndex: number, scale: number, axisX: boolean, axisY: boolean, - axisZ: boolean): boolean; - startScreenEffect(effectName: string, duration: number, looped: boolean): void; - stopParticleFxLooped(ptfxHandle: number, p1: boolean): void; - stopScreenEffect(effectName: string): void; - transitionFromBlurred(transitionTime: number): boolean; - transitionToBlurred(transitionTime: number): boolean; - washDecalsInRange(p0: any, p1: any, p2: any, p3: any, p4: any): void; - world3dToScreen2d(worldX: number, worldY: number, worldZ: number): { - x: number; y: number; - }; - setLightsState(id: number, toggle: boolean): void; -} - -interface GameInteriorMp { - addPickupToInteriorRoomByName(pickup: PickupMp, roomName: string): void; - areCoordsCollidingWithExterior(x: number, y: number, z: number): boolean; - capInterior(interiorId: number, toggle: boolean): void; - disableInterior(interiorId: number, toggle: boolean): void; - disableInteriorProp(interiorId: number, propName: string): void; - enableInteriorProp(interiorId: number, propName: string): void; - getInteriorAtCoords(x: number, y: number, z: number): number; - getInteriorAtCoordsWithType(x: number, y: number, z: number, interiorType: string): number; - getInteriorFromCollision(x: number, y: number, z: number): number; - getInteriorGroupId(interiorId: number): number; - getOffsetFromInteriorInWorldCoords(interiorId: number, x: number, y: number, z: number): Vector3Mp; - hideMapObjectThisFrame(mapObjectHash: number): void; - hideMapObjectThisFrame(mapObjectHash: string): void; - isInteriorCapped(interiorId: number): boolean; - isInteriorDisabled(interiorId: number): boolean; - isInteriorPropEnabled(interiorId: number, propName: string): boolean; - isInteriorReady(interiorId: number): boolean; - isValidInterior(interiorId: number): boolean; - refreshInterior(interiorId: number): void; - unkGetInteriorAtCoords(x: number, y: number, z: number, unk: number): number; - unpinInterior(interiorId: number): void; -} - -interface GameItemsetMp { - addToItemset(itemset: number, p1: any): boolean; - cleanItemset(itemset: number): void; - createItemset(p0: boolean): number; - destroyItemset(itemset: number): void; - getIndexedItemInItemset(itemset: number, p1: any): any; - getItemsetSize(itemset: number): number; - isInItemset(itemset: number, p1: any): boolean; - isItemsetValid(itemset: number): boolean; - removeFromItemset(itemset: number, p1: any): void; -} - -interface GameMobileMp { - cellCamActivate(p0: boolean, p1: boolean): void; - createMobilePhone(phoneType: number): void; - getMobilePhonePosition(position: Vector3Mp): Vector3Mp; - getMobilePhoneRenderId(renderId: number): number; - getMobilePhoneRotation(rotation: Vector3Mp, p1: any): Vector3Mp; - moveFinger(direction: number): void; - scriptIsMovingMobilePhoneOffscreen(toggle: boolean): void; - setMobilePhonePosition(posX: number, posY: number, posZ: number): void; - setMobilePhoneRotation(rotX: number, rotY: number, rotZ: number, p3: any): void; - setMobilePhoneScale(scale: number): void; - setPhoneLean(toggle: boolean): void; -} - -interface GameObjectMp { - addDoorToSystem(doorHash: Hash, modelHash: Hash, x: number, y: number, z: number, p5: number, - p6: number, p7: number): void; - createAmbientPickup(pickupHash: Hash, posX: number, posY: number, posZ: number, p4: number, value: number, - modelHash: Hash, p7: boolean, p8: boolean): PickupMp; - createMoneyPickups(x: number, y: number, z: number, value: number, amount: number, model: Hash): void; - createObject(modelHash: Hash, x: number, y: number, z: number, networkHandle: boolean, - createHandle: boolean,dynamic: boolean): Handle; - createObjectNoOffset(modelHash: Hash, x: number, y: number, z: number, networkHandle: boolean, - createHandle: boolean, dynamic: boolean): Handle; - createPickup(pickupHash: Hash, posX: number, posY: number, posZ: number, p4: number, value: number, - p6: boolean, modelHash: Hash): PickupMp; - createPickupRotate(pickupHash: Hash, posX: number, posY: number, posZ: number, rotX: number, rotY: number, - rotZ: number, flag: number, amount: number, p9: any, p10: boolean, modelHash: Hash): PickupMp; - createPortablePickup(pickupHash: Hash, x: number, y: number, z: number, placeOnGround: boolean, - modelHash: Hash): PickupMp; - createPortablePickup2(pickupHash: Hash, x: number, y: number, z: number, placeOnGround: boolean, - modelHash: Hash): PickupMp; - deleteObject(object: Handle): Handle; - doesDoorExist(doorHash: Hash): boolean; - doesObjectOfTypeExistAtCoords(x: number, y: number, z: number, radius: number, hash: Hash, p5: boolean): boolean; - doesPickupExist(p0: any): boolean; - doesPickupObjectExist(p0: any): boolean; - doorControl(doorHash: Hash, x: number, y: number, z: number, locked: boolean, p5: number, p6: number, - p7: number): void; - getClosestObjectOfType(x: number, y: number, z: number, radius: number, modelHash: Hash, - isMissing: boolean, p6: boolean, p7: boolean): Handle; - getObjectFragmentDamageHealth(p0: any, p1: boolean): number; - getObjectOffsetFromCoords(xPos: number, yPos: number, zPos: number, heading: number, xOffset: number, yOffset: number, - zOffset: number): Vector3Mp; - getPickupCoords(p0: any): number; - getSafePickupCoords(x: number, y: number, z: number, p3: any, p4: any): Vector3Mp; - getStateOfClosestDoorOfType(type: Hash, x: number, y: number, z: number, locked: number, heading: number): { - locked: number; - heading: number; - }; - hasClosestObjectOfTypeBeenBroken(p0: number, p1: number, p2: number, p3: number, modelHash: Hash, - p5: any): boolean; - hasPickupBeenCollected(p0: any): boolean; - highlightPlacementCoords(x: number, y: number, z: number, colorIndex: number): void; - isAnyObjectNearPoint(x: number, y: number, z: number, range: number, p4: boolean): boolean; - isDoorClosed(door: Hash): boolean; - isGarageEmpty(garage: any, p1: boolean, p2: number): boolean; - isObjectNearPoint(objectHash: Hash, x: number, y: number, z: number, range: number): boolean; - isPickupWithinRadius(pickupHash: Hash, x: number, y: number, z: number, radius: number): boolean; - isPointInAngledArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: number, p9: number, p10: boolean, p11: boolean): boolean; - removeAllPickupsOfType(p0: any): void; - removeDoorFromSystem(doorHash: Hash): void; - removePickup(pickup: PickupMp): void; - setDoorAccelerationLimit(doorHash: Hash, limit: number, p2: boolean, p3: boolean): void; - setDoorAjarAngle(doorHash: Hash, ajar: number, p2: boolean, p3: boolean): void; - setForceObjectThisFrame(p0: any, p1: any, p2: any, p3: any): void; - setPickupRegenerationTime(p0: any, p1: any): void; - setStateOfClosestDoorOfType(type: Hash, x: number, y: number, z: number, locked: boolean, heading: number, - p6: boolean): void; - setTeamPickupObject(p0: any, p1: any, p2: any): void; - trackObjectVisibility(p0: any): void; -} - -interface GamePathfindMp { - addNavmeshBlockingObject(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: boolean, p8: any): void; - addNavmeshRequiredRegion(p0: number, p1: number, p2: number): void; - calculateTravelDistanceBetweenPoints(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; - disableNavmeshInArea(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): void; - generateDirectionsToCoord(x: number, y: number, z: number, p3: any, p4: number, vehicle: Handle, p6: number): { - p4: number; - vehicle: Handle; - p6: number; - }; - getClosestMajorVehicleNode(x: number, y: number, z: number, outPosition: Vector3Mp, unknown1: number, - unknown2: number): Vector3Mp; - getClosestRoad(x: number, y: number, z: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: number, p9: number, p10: boolean): boolean; - getClosestVehicleNode(x: number, y: number, z: number, outPosition: Vector3Mp, nodeType: number, p5: number, - p6: number): Vector3Mp; - getClosestVehicleNodeWithHeading(x: number, y: number, z: number, outPosition: Vector3Mp, outHeading: number, - nodeType: number, p6: number, p7: number): { - outPosition: Vector3Mp; - outHeading: number; - }; - getIsSlowRoadFlag(nodeID: number): boolean; - getNthClosestVehicleNode(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, - unknown1: any, unknown2: any, unknown3: any): Vector3Mp; - getNthClosestVehicleNodeFavourDirection(x: number, y: number, z: number, desiredX: number, desiredY: number, - desiredZ: number, nthClosest: number, outPosition: Vector3Mp, outHeading: number, nodetype: number, p10: any, - p11: any): { - outPosition: Vector3Mp; - outHeading: number; - }; - getNthClosestVehicleNodeId(x: number, y: number, z: number, nth: number, nodetype: number, p5: number, p6: number): number; - getNthClosestVehicleNodeIdWithHeading(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, - outHeading: number, p6: any, p7: number, p8: number): Vector3Mp; - getNthClosestVehicleNodeWithHeading(x: number, y: number, z: number, nthClosest: number, outPosition: Vector3Mp, - heading: number, unknown1: any, unknown2: number, unknown3: number, unknown4: number): { - outPosition: Vector3Mp; - heading: number; - unknown1: any; - }; - getRandomVehicleNode(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, p6: boolean, - outPosition: Vector3Mp, heading: number): { - outPosition: Vector3Mp; - outHeading: number; - }; - getSafeCoordForPed(x: number, y: number, z: number, onGround: boolean, outPosition: Vector3Mp, flags: number): Vector3Mp; - getStreetNameAtCoord(x: number, y: number, z: number, streetName: number, crossingRoad: number): { - streetName: number; - crossingRoad: number; - }; - getSupportsGpsRouteFlag(nodeID: number): boolean; - getVehicleNodePosition(nodeId: number, outPosition: Vector3Mp): Vector3Mp; - getVehicleNodeProperties(x: number, y: number, z: number, density: number, flags: number):{ - density: number; - flags: number; - }; - isNavmeshLoadedInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; - isPointOnRoad(x: number, y: number, z: number, vehicle: Handle): boolean; - isVehicleNodeIdValid(vehicleNodeId: number): boolean; - loadAllPathNodes(keepInMemory: boolean): boolean; - removeNavmeshBlockingObject(p0: any): void; - setGpsDisabledZone(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; - setIgnoreNoGpsFlag(ignore: boolean): void; - setPedPathsBackToOriginal(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; - setPedPathsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, unknown: boolean): void; - setRoadsBackToOriginal(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; - setRoadsBackToOriginalInAngledArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, - p6: number): void; - setRoadsInAngledArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, angle: number, - unknown1: boolean, unknown2: boolean, unknown3: boolean): void; - setRoadsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, unknown1: boolean, - unknown2: boolean): void; - updateNavmeshBlockingObject(p0: any, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: number, p8: any): void; -} - -interface GamePedMp { - addRelationshipGroup(name: string, groupHash: Hash): Hash; - addScenarioBlockingArea(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: boolean, - p7: boolean, p8: boolean, p9: boolean): void; - attachSynchronizedSceneToEntity(sceneId: number, entity: Handle, boneIndexId: number): void; - canCreateRandomPed(unk: boolean): boolean; - clearPedAlternateWalkAnim(p0: any, p1: number): void; - clearRelationshipBetweenGroups(relationship: number, group1: Hash, group2: Hash): void; - createGroup(unused: number): number; - createNmMessage(startImmediately: boolean, messageId: number): void; - createPed(pedType: number, modelHash: Hash, x: number, y: number, z: number, heading: number, - networkHandle: boolean, pedHandle: boolean): Handle; - createRandomPed(posX: number, posY: number, posZ: number): Handle; - createSynchronizedScene(x: number, y: number, z: number, roll: number, pitch: number, yaw: number, p6: number): number; - detachSynchronizedScene(sceneId: number): void; - disposeSynchronizedScene(scene: number): void; - doesGroupExist(groupId: number): boolean; - getAnimInitialOffsetPosition(animDict: string, animName: string, x: number, y: number, z: number, xRot: number, - yRot: number, zRot: number, p8: number, p9: number): Vector3Mp; - getAnimInitialOffsetRotation(animDict: string, animName: string, x: number, y: number, z: number, xRot: number, - yRot: number, zRot: number, p8: number, p9: number): Vector3Mp; - getClosestPed(x: number, y: number, z: number, radius: number, p4: boolean, p5: boolean, outPed: Handle, p7: boolean, - p8: boolean, pedType: number): Handle; - getFirstParentIdForPedType(type: number): number; - getGroupSize(groupId: number, unknown: any, sizeInMembers: number): number; - getNumHeadOverlayValues(overlayId: number): number; - getNumParentPedsOfType(type: number): number; - getPeadheadshotTxdString(handle: number): string; - getPedAsGroupLeader(groupId: number): Handle; - getPedAsGroupMember(groupId: number, memberNumber: number): Handle; - getRandomPedAtCoord(x: number, y: number, z: number, xRadius: number, yRadius: number, zRadius: number, - pedType: number): Handle; - getRelationshipBetweenGroups(group1: Hash, group2: Hash): number; - getSynchronizedScenePhase(sceneId: number): number; - getSynchronizedSceneRate(sceneId: number): number; - getTattooZone(collection: Hash, overlay: Hash): number; - hasActionModeAssetLoaded(asset: string): boolean; - hasPedReceivedEvent(p0: any, p1: any): boolean; - hasStealthModeAssetLoaded(asset: string): boolean; - isAnyPedNearPoint(x: number, y: number, z: number, radius: number): boolean; - isAnyPedShootingInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, p6: boolean, - p7: boolean): boolean; - isAValidBlushColor(colorId: number): boolean; - isAValidHairColor(colorId: number): boolean; - isAValidLipstickColor(colorId: number): boolean; - isCopPedInArea3d(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): boolean; - isPedheadshotReady(handle: number): boolean; - isPedheadshotValid(handle: number): number; - isPedRespondingToEvent(p0: any, p1: any): boolean; - isSynchronizedSceneLooped(sceneId: number): boolean; - isSynchronizedSceneRunning(sceneId: number): boolean; - removeActionModeAsset(asset: string): void; - removeGroup(groupId: number): void; - removeRelationshipGroup(groupHash: Hash): void; - removeScenarioBlockingArea(p0: any, p1: boolean): void; - removeStealthModeAsset(asset: string): void; - requestActionModeAsset(asset: string): void; - requestStealthModeAsset(asset: string): void; - resetGroupFormationDefaultSpacing(groupHandle: number): void; - setAiMeleeWeaponDamageModifier(modifier: number): void; - setAiWeaponDamageModifier(value: number): void; - setCreateRandomCops(toggle: boolean): void; - setCreateRandomCopsNotOnScenarios(toggle: boolean): void; - setCreateRandomCopsOnScenarios(toggle: boolean): void; - setGroupFormation(groupId: number, formationType: number): void; - setGroupFormationSpacing(groupId: number, p1: number, p2: number, p3: number): void; - setGroupSeparationRange(groundHandle: number, separationRange: number): void; - setPedAlternateWalkAnim(p0: any, p1: any, p2: any, p3: number, p4: boolean): void; - setPedDensityMultiplierThisFrame(multiplier: number): void; - setPedNonCreationArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): void; - setPedReserveParachuteTintIndex(p0: any, p1: any): void; - setPedToRagdollWithFall(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any, - p7: any, p8: any, p9: any, p10: any, p11: any, p12: any, p13: any): boolean; - setRelationshipBetweenGroups(relationship: number, group1: Hash, group2: Hash): void; - setScenarioPedDensityMultiplierThisFrame(p0: number, p1: number): void; - setScenarioPedsSpawnInSphereArea(p0: any, p1: any, p2: any, p3: any, p4: any): void; - setScenarioPedsToBeReturnedByNextCommand(value: boolean): void; - setScriptedConversionCoordThisFrame(x: number, y: number, z: number): void; - setSynchronizedSceneLooped(sceneId: number, toggle: boolean): void; - setSynchronizedSceneOrigin(sceneId: number, x: number, y: number, z: number, roll: number, pitch: number, - yaw: number, p7: boolean): void; - setSynchronizedScenePhase(sceneId: number, phase: number): void; - setSynchronizedSceneRate(sceneId: number, rate: number): void; - setTimeExclusiveDisplayTexture(p0: any, p1: boolean): void; -} - -interface GamePlayerMp { - areFlashingStarsAboutToDrop(): boolean; - areStarsGreyedOut(): boolean; - canStartMission(): boolean; - disableFiring(toggle: boolean): void; - disableVehicleRewards(): void; - displaySystemSigninUi(unk: boolean): void; - enableSpecialAbility(toggle: boolean): void; - forceCleanup(cleanupFlags: number): void; - forceCleanupForAllThreadsWithThisName(name: string, cleanupFlags: number): void; - forceCleanupForThreadWithThisId(id: number, cleanupFlags: number): void; - getEntityIsFreeAimingAt(entity: Handle): boolean; - getTargetEntity(entity: Handle): boolean; - getTimeSinceDroveAgainstTraffic(): number; - getTimeSinceDroveOnPavement(): number; - getTimeSinceHitPed(): number; - getTimeSinceHitVehicle(): number; - getWantedLevelRadius(): boolean; - getWantedLevelThreshold(wantedLevel: number): number; - giveAchievementTo(achievement: number): boolean; - hasAchievementBeenPassed(achievement: number): boolean; - hasForceCleanupOccurred(cleanupFlags: number): boolean; - intToParticipantindex(value: number): number; - intToindex(value: number): Handle; - isFreeAiming(): boolean; - isFreeAimingAtEntity(entity: Handle): boolean; - isTargettingEntity(entity: Handle): boolean; - isSpecialAbilityActive(): boolean; - isSpecialAbilityEnabled(): boolean; - isSpecialAbilityMeterFull(): boolean; - isSpecialAbilityUnlocked(playerModel: Hash): boolean; - playerAttachVirtualBound(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: number): void; - reportCrime(crimeType: number, wantedLvlThresh: number): void; - reserveEntityExplodesOnHighExplosionCombo(p1: number): void; - resetWantedLevelDifficulty(): void; - restoreStamina(p1: number): void; - setAirDragMultiplierForsVehicle(multiplier: number): void; - setAllRandomPedsFlee(toggle: boolean): void; - setAllRandomPedsFleeThisFrame(): void; - setAreasGeneratorOrientation(): void; - setAutoGiveParachuteWhenEnterPlane(toggle: boolean): void; - setCanDoDriveBy(toggle: boolean): void; - setDisableAmbientMeleeMove(toggle: boolean): void; - setDispatchCopsFor(toggle: boolean): void; - setHealthRechargeMultiplier(regenRate: number): void; - setHudAnimStopLevel(toggle: boolean): void; - setIgnoreLowPriorityShockingEvents(toggle: boolean): void; - setInvincible(toggle: boolean): void; - setMaxWantedLevel(maxWantedLevel: number): void; - setMeleeWeaponDefenseModifier(modifier: number): void; - setClothLockCounter(value: number): void; - setClothPackageIndex(index: number): void; - setTargetingMode(targetMode: number): void; - setPoliceRadarBlips(toggle: boolean): void; - setRunSprintMultiplierFor(multiplier: number): void; - setSpecialAbilityMultiplier(multiplier: number): void; - setSwimMultiplierFor(multiplier: number): void; - setWantedLevelDifficulty(difficulty: number): void; - setWantedLevelMultiplier(multiplier: number): void; - simulateInputGait(amount: number,gaitType: number,speed: number,p4: boolean,p5: boolean): void; - specialAbilityChargeAbsolute(p1: number,p2: boolean): void; - specialAbilityChargeContinuous(p1: boolean): void; - specialAbilityChargeLarge(p1: boolean,p2: boolean): void; - specialAbilityChargeMedium(p1: boolean,p2: boolean): void; - specialAbilityChargeNormalized(normalizedValue: number,p2: boolean): void; - specialAbilityChargeSmall(p1: boolean, p2: boolean): void; - specialAbilityDeactivate(): void; - specialAbilityDeactivateFast(): void; - specialAbilityDepleteMeter(p1: boolean): void; - specialAbilityFillMeter(p1: boolean): void; - specialAbilityLock(playerModel: Hash): void; - specialAbilityReset(): void; - specialAbilityUnlock(playerModel: Hash): void; - startFiringAmnesty(duration: number): void; - startTeleport(x: number,y: number,z: number,heading: number,p5: boolean,p6: boolean,p7: boolean): void; -} - -interface GameRecorderMp { - isRecording(): boolean; - start(mode: number): void; - stop(save: boolean): void; -} - -interface GameRopeMp { - addRope(x: number, y: number, z: number, rotX: number, rotY: number, rotZ: number, length: number, ropeType: number, - maxLength: number, minLength: number, p10: number, p11: boolean, p12: boolean, rigid: boolean, p14: number, - breakWhenShot: boolean, unkPtr: any): Handle; - applyImpulseToCloth(posX: number, posY: number, posZ: number, vecX: number, vecY: number, vecZ: number, - impulse: number): void; - attachEntitiesToRope(rope: Handle, ent1: Handle, ent2: Handle, ent1_x: number, ent1_y: number, ent1_z: number, - ent2_x: number, ent2_y: number, ent2_z: number, length: number, p10: boolean, p11: boolean, p12: any, - p13: any): void; - attachRopeToEntity(rope: Handle, entity: Handle, x: number, y: number, z: number, p5: boolean): void; - breakEntityGlass(p0: any, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: number, - p8: number, p9: any, p10: boolean): void; - deleteChildRope(rope: Handle): any; - deleteRope(rope: Handle): void; - detachRopeFromEntity(rope: Handle, entity: Handle): void; - doesRopeExist(rope: Handle): Handle; - getCgoffset(rope: Handle): Vector3Mp; - getRopeLastVertexCoord(rope: Handle): void; - getRopeLength(rope: Handle): number; - getRopeVertexCoord(rope: Handle, vertex: number): any; - getRopeVertexCount(rope: Handle): number; - loadRopeData(rope: Handle, rope_preset: string): any; - pinRopeVertex(rope: Handle, vertex: number, x: number, y: number, z: number): void; - ropeConvertToSimple(rope: Handle): void; - ropeDrawShadowEnabled(rope: Handle, toggle: boolean): Handle; - ropeForceLength(rope: Handle, length: number): any; - ropeResetLength(rope: Handle, length: boolean): any; - ropeSetUpdatePinverts(rope: Handle): void; - setCgAtBoundcenter(rope: Handle): void; - setCgoffset(rope: Handle, x: number, y: number, z: number): void; - setDamping(rope: Handle, vertex: number, value: number): void; - setDisableBreaking(rope: Handle, enabled: boolean): void; - setDisableFragDamage(object: Handle, toggle: boolean): void; - startRopeUnwindingFront(rope: Handle): void; - startRopeWinding(rope: Handle): void; - stopRopeUnwindingFront(rope: Handle): void; - stopRopeWinding(rope: Handle): void; - unpinRopeVertex(rope: Handle, vertex: number): any; -} - -interface GameScriptMp { - doesScriptExist(scriptName: string): boolean; - getEventAtIndex(p0: number, eventIndex: number): number; - getEventdata(p0: number, eventIndex: number, eventData: number, p3: number): number; - getEventExists(p0: number, eventIndex: number): boolean; - getNumberOfEvents(p0: number): number; - getNumberOfInstancesOfStreamedScript(scriptHash: Hash): number; - getThreadName(threadId: number): string; - hasScriptLoaded(scriptName: string): boolean; - hasStreamedScriptLoaded(scriptHash: Hash): boolean; - isStreamedScriptRunning(scriptHash: Hash): boolean; - isThreadActive(threadId: number): boolean; - requestScript(scriptName: string): void; - requestStreamedScript(scriptHash: Hash): void; - setNoLoadingScreen(toggle: boolean): void; - setScriptAsNoLongerNeeded(scriptName: string): void; - setStreamedScriptAsNoLongerNeeded(scriptHash: Hash): void; - terminateThread(threadId: number): void; - triggerScriptEvent(p0: number, argsStruct: Vector3Mp, argsStructSize: number, bitset: number): Vector3Mp; -} - -interface GameStatsMp { - leaderboards2ReadByHandle(p0: any, p1: any): boolean; - leaderboards2ReadByRadius(p0: any, p1: any, p2: any): boolean; - leaderboards2ReadByRank(p0: any, p1: any, p2: any): boolean; - leaderboards2ReadByRow(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): boolean; - leaderboards2ReadByScoreFloat(p0: any, p1: number, p2: any): boolean; - leaderboards2ReadByScoreInt(p0: any, p1: any, p2: any): boolean; - leaderboards2ReadFriendsByRow(p0: any, p1: any, p2: any, p3: boolean, p4: any, p5: any): boolean; - leaderboards2WriteData(p0: any): boolean; - leaderboardsCacheDataRow(p0: any): boolean; - leaderboardsGetCacheDataRow(p0: any, p1: any, p2: any): boolean; - leaderboardsGetCacheExists(p0: any): boolean; - leaderboardsGetCacheTime(p0: any): any; - leaderboardsGetColumnId(p0: any, p1: any, p2: any): any; - leaderboardsGetColumnType(p0: any, p1: any, p2: any): any; - leaderboardsGetNumberOfColumns(p0: any, p1: any): any; - leaderboardsReadClear(p0: any, p1: any, p2: any): any; - leaderboardsReadPending(p0: any, p1: any, p2: any): boolean; - leaderboardsReadSuccessful(p0: any, p1: any, p2: any): boolean; - playstatsAwardXp(p0: any, p1: any, p2: any): void; - playstatsCheatApplied(cheat: string): void; - playstatsClothChange(p0: any, p1: any, p2: any, p3: any, p4: any): void; - playstatsFriendActivity(p0: any, p1: any): void; - playstatsMatchStarted(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any, p6: any): void; - playstatsMissionCheckpoint(p0: any, p1: any, p2: any, p3: any): void; - playstatsMissionOver(p0: any, p1: any, p2: any, p3: boolean, p4: boolean, p5: boolean): void; - playstatsMissionStarted(p0: any, p1: any, p2: any, p3: boolean): void; - playstatsNpcInvite(p0: any): void; - playstatsOddjobDone(p0: any, p1: any, p2: any): void; - playstatsPropChange(p0: any, p1: any, p2: any, p3: any): void; - playstatsRaceCheckpoint(p0: any, p1: any, p2: any, p3: any, p4: any): void; - playstatsRankUp(p0: any): void; - playstatsShopItem(p0: any, p1: any, p2: any, p3: any, p4: any): void; - playstatsWebsiteVisited(scaleformHash: Hash, p1: number): void; - statClearSlotForReload(statSlot: number): any; - statDeleteSlot(p0: any): any; - statGetBool(statHash: Hash, outValue: boolean, p2: any): boolean; - statGetBoolMasked(statName: Hash, mask: number, p2: number): boolean; - statGetDate(statHash: Hash, p1: any, p2: any, p3: any): boolean; - statGetFloat(statHash: Hash, outValue: number, p2: any): number; - statGetInt(statHash: Hash, outValue: number, p2: number): number; - statGetLicensePlate(statName: Hash): string; - statGetMaskedInt(p0: any, p1: any, p2: any, p3: any, p4: any): boolean; - statGetNumberOfDays(statName: Hash): number; - statGetNumberOfHours(statName: Hash): number; - statGetNumberOfMinutes(statName: Hash): number; - statGetNumberOfSeconds(statName: Hash): number; - statGetPos(p0: any, p1: any, p2: any, p3: any, p4: any): boolean; - statGetString(statHash: Hash, p1: number): string; - statGetUserId(p0: any): string; - statIncrement(statName: Hash, value: number): void; - statLoad(p0: number): boolean; - statLoadPending(p0: any): boolean; - statSave(p0: number, p1: boolean, p2: number): boolean; - statSetBool(statName: Hash, value: boolean, save: boolean): boolean; - statSetBoolMasked(statName: Hash, value: boolean, mask: number, save: boolean): boolean; - statSetCurrentPosixTime(statName: Hash, p1: boolean): boolean; - statSetDate(statName: Hash, - value: { - year: number; - month: number; - day: number; - hour: number; - minute: number; - second: number; - milisecond: number; - }, - numFields: number, save: boolean): void; - statSetFloat(statName: Hash, value: number, save: boolean): boolean; - statSetGxtLabel(statName: Hash, value: string, save: boolean): boolean; - statSetInt(statName: Hash, value: number, save: boolean): boolean; - statSetLicensePlate(statName: Hash, str: string): boolean; - statSetMaskedInt(statName: Hash, p1: any, p2: any, p3: number, save: boolean): boolean; - statSetPos(statName: Hash, x: number, y: number, z: number, save: boolean): boolean; - statSetProfileSetting(profileSetting: number, value: number): void; - statSetString(statName: Hash, value: string, save: boolean): boolean; - statSetUserId(statName: Hash, value: string, save: boolean): boolean; - statSlotIsLoaded(p0: any): boolean; -} - -interface GameStreamingMp { - doesAnimDictExist(animDict: string): boolean; - forceStreamingUpdate(): boolean; - getIdealPlayerSwitchType(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; - hasAnimDictLoaded(animDict: string): boolean; - hasAnimSetLoaded(animSet: string): boolean; - hasClipSetLoaded(clipSet: string): boolean; - hasCollisionForModelLoaded(model: Hash): boolean; - hasModelLoaded(model: Hash): boolean; - hasNamedPtfxAssetLoaded(fxName: string): boolean; - isIplActive(iplName: string): boolean; - isModelAVehicle(model: Hash): boolean; - isModelInCdimage(model: Hash): boolean; - isModelValid(model: Hash): boolean; - loadScene(x: number, y: number, z: number): void; - newLoadSceneStart(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, p7: any): boolean; - newLoadSceneStartSafe(p0: number, p1: number, p2: number, p3: number, p4: any): boolean; - prefetchSrl(p0: any): void; - removeAnimDict(animDict: string): void; - removeAnimSet(animSet: string): void; - removeClipSet(clipSet: string): void; - removeIpl(iplName: string): void; - removeNamedPtfxAsset(fxName: string): void; - requestAdditionalCollisionAtCoord(p0: number, p1: number, p2: number): void; - requestAnimDict(animDict: string): void; - requestAnimSet(animSet: string): void; - requestClipSet(clipSet: string): void; - requestCollisionAtCoord(x: number, y: number, z: number): any; - requestCollisionForModel(model: Hash): void; - requestIpl(iplName: string): void; - requestModel(model: Hash, cb?: Function): void; - requestModel2(model: Hash): void; - requestNamedPtfxAsset(fxName: string): void; - setDitchPoliceModels(toggle: boolean): void; - setFocusArea(x: number, y: number, z: number, offsetX: number, offsetY: number, offsetZ: number): void; - setGamePausesForStreaming(toggle: boolean): void; - setHdArea(x: number, y: number, z: number, ground: number): void; - setInteriorActive(interiorID: number, toggle: boolean): void; - setModelAsNoLongerNeeded(model: Hash): void; - setPedPopulationBudget(p0: number): void; - setPlayerSwitchLocation(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, p6: number, - p7: number, p8: any): void; - setReducePedModelBudget(toggle: boolean): void; - setReduceVehicleModelBudget(toggle: boolean): void; - setSrlTime(p0: number): void; - setStreaming(toggle: boolean): void; - setUnkCameraSettings(x: number, y: number, z: number, rad: number, p4: any, p5: any): any; - setVehiclePopulationBudget(p0: number): void; - startPlayerSwitch(from: Handle, to: Handle, flags: number, switchType: number): void; -} - -interface GameSystemMp { - ceil(value: number): number; - cos(value: number): number; - floor(value: number): number; - pow(base: number, exponent: number): number; - round(value: number): number; - settimera(value: number): void; - settimerb(value: number): void; - shiftLeft(value: number, bitShift: number): number; - shiftRight(value: number, bitShift: number): number; - sin(value: number): number; - sqrt(value: number): number; - startNewScript(scriptName: string, stackSize: number): number; - startNewScriptWithArgs(scriptName: string, args: any, argCount: number, stackSize: number): number; - startNewStreamedScript(scriptHash: Hash, stackSize: number): number; - startNewStreamedScriptWithArgs(scriptHash: Hash, args: any, argCount: number, stackSize: number): number; - toFloat(value: number): number; - vdist(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; - vdist2(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number): number; - vmag(p0: number, p1: number, p2: number): number; - vmag2(p0: number, p1: number, p2: number): number; -} - -interface GameTimeMp { - addToClockTime(hour: number, minute: number, second: number): void; - advanceClockTimeTo(hour: number, minute: number, second: number): void; - getLocalTime(year: number, month: number, day: number, hour: number, minute: number, second: number): { - year: number; - month: number; - day: number; - hour: number; - minute: number; - second: number; - }; - getLocalTimeGmt(year: number, month: number, day: number, hour: number, minute: number, second: number): { - year: number; - month: number; - day: number; - hour: number; - minute: number; - second: number; - }; - getPosixTime(year: number, month: number, day: number, hour: number, minute: number, second: number): { - year: number; - month: number; - day: number; - hour: number; - minute: number; - second: number; - }; - pauseClock(toggle: boolean): void; - setClockDate(day: number, month: number, year: number): void; - setClockTime(hour: number, minute: number, second: number): void; - - // RAGE.MP extensions - serverTickCount: number; -} - -interface GameUiMp { - activateFrontendMenu(menuhash: Hash, Toggle_Pause: boolean, p2: number): void; - addBlipForCoord(x: number, y: number, z: number): BlipMp; - addBlipForPickup(pickup: PickupMp): BlipMp; - addBlipForRadius(posX: number, posY: number, posZ: number, radius: number): BlipMp; - addNextMessageToPreviousBriefs(p0: boolean): void; - addTextComponentFloat(value: number, decimalPlaces: number): void; - addTextComponentInteger(value: number): void; - addTextComponentItemString(labelName: string): void; - addTextComponentSubstringCash(cashAmount: number, p1: boolean): void; - addTextComponentSubstringLocalized(gxtEntryHash: Hash): void; - addTextComponentSubstringPlayerName(text: string): void; - addTextComponentSubstringTime(timestamp: number, flags: number): void; - addTextComponentSubstringWebsite(website: string): void; - addTrevorRandomModifier(headDisplayId: number): boolean; - beginTextCommandSetBlipName(gxtentry: string): void; - clearAdditionalText(p0: number, p1: boolean): void; - clearFloatingHelp(p0: any, p1: boolean): void; - clearHelp(toggle: boolean): void; - clearThisPrint(p0:string): void; - displayAmmoThisFrame(display: boolean): void; - displayAreaName(toggle: boolean): void; - displayCash(toggle: boolean): void; - displayHelpTextFromStringLabel(p0: any, loop: boolean, beep: boolean, shape: number): void; - displayHelpTextThisFrame(message: string, p1: boolean): void; - displayHud(toggle: boolean): void; - displayRadar(Toggle: boolean): any; - doesTextBlockExist(gxt: string): boolean; - doesTextLabelExist(gxt: string): boolean; - drawNotification(blink: boolean, p1: boolean): number; - drawNotification2(blink: boolean, p1: boolean): number; - drawNotification3(blink: boolean, p1: boolean): number; - drawNotification4(blink: boolean, p1: boolean): number; - drawSubtitleTimed(time: number, p1: boolean): void; - drawText(x: number, y: number): void; - enableDeathbloodSeethrough(p0: boolean): void; - flashAbilityBar(p0: any): void; - flashWantedDisplay(p0: boolean): any; - getBlipInfoIdCoord(p0: number): Vector3Mp; - getHudColour(hudIndex: number, r: number, g: number, b: number, a: number): { - hudIndex: number; - r: number; - g: number; - b: number; - a: number; - }; - getHudComponentPosition(componentIndex: RageEnums.HudComponent | number): number; - getLabelText(labelName: string): string; - getLengthOfLiteralString(string: string): number; - getLengthOfStringWithThisTextLabel(gxt: string): number; - getNamedRendertargetRenderId(p0: string): any; - getStreetNameFromHashKey(hash: Hash): string; - getTextScaleHeight(size: number, font: number): number; - getTextScreenWidth(p0: boolean): number; - getTextSubstring(text: string, position: number, length: number): string; - getTextSubstringSafe(text: string, position: number, length: number, maxLength: number): string; - getTextSubstringSlice(text: string, startPosition: number, endPosition: number): string; - hasAdditionalTextLoaded(slot: number): boolean; - hasHeadDisplayLoaded(headDisplayId: number): boolean; - hasThisAdditionalTextLoaded(gxt: string, slot: number): boolean; - hideHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; - hideScriptedHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; - hideSpecialAbilityLockonOperation(p0: any, p1: boolean): void; - isHudComponentActive(componentIndex: RageEnums.HudComponent | number): boolean; - isMinimapAreaRevealed(x: number, y: number, radius: number): boolean; - isNamedRendertargetLinked(hash: Hash): boolean; - isNamedRendertargetRegistered(p0: string): boolean; - isPauseMenuActive(): boolean; - isScriptedHudComponentActive(componentIndex: RageEnums.HudComponent | number): boolean; - isStreamingAdditionalText(p0: number): boolean; - keyHudColour(p0: boolean, p1: any): void; - linkNamedRendertarget(hash: Hash): void; - lockMinimapAngle(angle: number): void; - lockMinimapPosition(x: number, y: number): void; - objectDecalToggle(hash: Hash): void; - registerNamedRendertarget(p0: string, p1: boolean): boolean; - releaseNamedRendertarget(p0: any): boolean; - removeBlip(blip: Hash): void; - removeNotification(notifactionId: number): void; - requestAdditionalText(gxt: string, slot: number): void; - requestAdditionalText2(gxt: string, slot: number): void; - resetHudComponentValues(componentIndex: RageEnums.HudComponent | number): void; - respondingAsTemp(p0: number): void; - restartFrontendMenu(menuHash: Hash, p1: number): void; - setAbilityBarValue(p0: number, p1: number): void; - setCursorSprite(spriteId: number): void; - setFrontendActive(active: boolean): void; - setGpsFlags(p0: number, p1: number): void; - setGpsFlashes(toggle: boolean): void; - setHeadDisplayFlag(headDisplayId: number, sprite: number, toggle: boolean): void; - setHeadDisplayString(headDisplayId: number, string: string): void; - setHeadDisplayWanted(headDisplayId: number, wantedlvl: number): void; - setHudColour(componentIndex: RageEnums.HudComponent | number, r: number, g: number, b: number, a: number): void; - setHudComponentPosition(componentIndex: RageEnums.HudComponent | number, x: number, y: number): void; - setLoadingPromptTextEntry(string: string): void; - setMinimapAttitudeIndicatorLevel(altitude: number, p1: boolean): void; - setMinimapBlockWaypoint(toggle: boolean): void; - setMinimapComponent(p0: number, p1: boolean, p2: number): any; - setMinimapRevealed(toggle: boolean): void; - setMinimapVisible(toggle: boolean): void; - setMissionName(p0: boolean, name: string): void; - setMultiplayerHudCash(p0: number, p1: number): void; - setNewWaypoint(x: number, y: number): void; - setNotificationFlashColor(red: number, green: number, blue: number, alpha: number): void; - setNotificationMessage(picName1: string, picName2: string, flash: boolean, iconType: number, sender: string, - subject: string): number; - setNotificationMessageClanTag(picName1: string, picName2: string, flash: boolean, iconType: number, sender: string, - subject: string, duration: number, clanTag: string): number; - setNotificationMessageClanTag2(picName1: string, picName2: string, flash: boolean, iconType1: number, sender: string, - subject: string, duration: number, clanTag: string, iconType2: number, p9: number): number; - setNotificationTextEntry(type: string): void; - setPauseMenuActive(toggle: boolean): void; - setPlayerBlipPositionThisFrame(x: number, y: number): void; - setPlayerCashChange(cash: number, bank: number): void; - setRadarAsInteriorThisFrame(interior: Hash, x: number, y: number, z: number, p4: number): void; - setRadarBigmapEnabled(toggleBigMap: boolean, showFullMap: boolean): void; - setRadarZoom(zoomLevel: number): void; - setRadarZoomLevelThisFrame(zoomLevel: number): void; - setTextCentre(align: boolean): void; - setTextChatUnk(p0: boolean): void; - setTextColour(red: number, green: number, blue: number, alpha: number): void; - setTextComponentFormat(inputType: string): void; - setTextDropshadow(distance: number, r: number, g: number, b: number, a: number): void; - setTextEdge(p0: number, r: number, g: number, b: number, a: number): void; - setTextEntry(text: string): void; - setTextEntry2(p0: string): void; - setTextEntryForWidth(text: string): void; - setTextFont(fontType: number): void; - setTextGxtEntry(entry: string): void; - setTextJustification(justifyType: number): void; - setTextLeading(p0: boolean): void; - setTextProportional(p0: boolean): void; - setTextRenderId(renderId: number): void; - setTextRightJustify(toggle: boolean): void; - setTextScale(sizex: number, sizey: number): void; - setTextWrap(start: number, end: number): void; - setUseridsUihidden(p0: any, p1: any): boolean; - setWarningMessage(entryLine1: string, instructionalKey: number, entryLine2: string, p3: boolean, p4: any, - p5: any, p6: any, background: boolean): void; - setWarningMessage2(entryHeader: string, entryLine1: string, instructionalKey: number, entryLine2: string, - p4: boolean, p5: any, p6: any, p7: any, background: boolean): void; - setWarningMessage3(entryHeader: string, entryLine1: string, instructionalKey: any, entryLine2: string, - p4: any, p5: any, p6: any, p7: any, p8: any, p9: boolean): void; - setWidescreenFormat(p0: any): void; - showHudComponentThisFrame(componentIndex: RageEnums.HudComponent | number): void; - showLoadingPrompt(busySpinnerType: number): void; - showWeaponWheel(forcedShow: boolean): void; - toggleStealthRadar(toggle: boolean): void; -} - -interface GameUnkMp { - getBroadcastFinishedLosSound(p0: boolean): void; -} - -interface GameVehicleMp { - addVehicleStuckCheckWithWarp(p0: any, p1: number, p2: any, p3: boolean, p4: boolean, p5: boolean, p6: any): void; - createMissionTrain(variation: number, x: number, y: number, z: number, direction: boolean): Handle; - createScriptVehicleGenerator(x: number, y: number, z: number, heading: number, p4: number, p5: number, - modelHash: Hash, p7: number, p8: number, p9: number, p10: number, p11: boolean, p12: boolean, - p13: boolean, p14: boolean, p15: boolean, p16: number): number; - createVehicle(modelHash: Hash, x: number, y: number, z: number, heading: number, networkHandle: boolean, - vehiclehandle: boolean): any; - deleteMissionTrain(train: Handle): Handle; - deleteScriptVehicleGenerator(vehicleGenerator: number): void; - disableVehicleWeapon(disabled: boolean, weaponHash: Hash, vehicle: Handle, owner: Handle): void; - displayDistantVehicles(toggle: boolean): void; - doesScriptVehicleGeneratorExist(vehicleGenerator: number): boolean; - doesVehicleExistWithDecorator(decorator: string): boolean; - getClosestVehicle(x: number, y: number, z: number, radius: number, modelHash: Hash, flags: number): Handle; - getCurrentPlaybackForVehicle(p0: any): any; - getDisplayNameFromVehicleModel(modelHash: Hash): string; - getNumModColors(p0: number, p1: boolean): number; - getPositionInRecording(p0: any): number; - getPositionOfVehicleRecordingAtTime(p0: any, p1: number, p2: any): number; - getRandomVehicleBackBumperInSphere(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, - p6: number): Handle; - getRandomVehicleFrontBumperInSphere(p0: number, p1: number, p2: number, p3: number, p4: number, p5: number, - p6: number): Handle; - getRandomVehicleInSphere(x: number, y: number, z: number, radius: number, modelHash: Hash, flags: number): Handle; - getRandomVehicleModelInMemory(p0: boolean, modelHash: number, p2: number): { - modelHash: number; - p2: number; - }; - getRotationOfVehicleRecordingAtTime(p0: any, p1: number, p2: any): number; - getTimePositionInRecording(p0: any): number; - getTotalDurationOfVehicleRecording(p0: any, p1: any): any; - getTotalDurationOfVehicleRecordingId(p0: any): number; - getVehicleClassFromName(modelHash: Hash): number; - getVehicleClassMaxAcceleration(p0: any): number; - getVehicleClassMaxAgility(p0: any): number; - getVehicleClassMaxBraking(p0: any): number; - getVehicleClassMaxTraction(p0: any): number; - getVehicleModelAcceleration(modelHash: Hash): number; - getVehicleModelMaxBraking(modelHash: Hash): number; - getVehicleModelMaxNumberOfPassengers(modelHash: Hash): number; - getVehicleModelMaxSpeed(modelHash: Hash): number; - getVehicleModelMaxTraction(modelHash: Hash): number; - getVehicleRecordingId(p0: any, p1: any): any; - hasPreloadModsFinished(p0: any): boolean; - hasVehicleAssetLoaded(vehicleAsset: number): boolean; - hasVehicleRecordingBeenLoaded(p0: any, p1: any): boolean; - isAnyVehicleNearPoint(x: number, y: number, z: number, radius: number): boolean; - isCopVehicleInArea3d(x1: number, x2: number, y1: number, y2: number, z1: number, z2: number): boolean; - isPlaybackGoingOnForVehicle(p0: any): boolean; - isPlaybackUsingAiGoingOnForVehicle(p0: any): boolean; - isThisModelABicycle(model: Hash): boolean; - isThisModelABike(model: Hash): boolean; - isThisModelABoat(model: Hash): boolean; - isThisModelACar(model: Hash): boolean; - isThisModelAHeli(model: Hash): boolean; - isThisModelAnEmergencyBoat(model: Hash): boolean; - isThisModelAPlane(model: Hash): boolean; - isThisModelAQuadbike(model: Hash): boolean; - isThisModelATrain(model: Hash): boolean; - isVehicleInGarageArea(garageName: string, vehicle: Handle): boolean; - pausePlaybackRecordedVehicle(p0: any): void; - preloadVehicleMod(p0: any, p1: any, p2: any): void; - removeVehicleAsset(vehicleAsset: number): void; - removeVehicleRecording(p0: any, p1: any): void; - removeVehiclesFromGeneratorsInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, - unk: any): void; - removeVehicleStuckCheck(p0: any): void; - requestVehicleAsset(vehicleHash: Hash, vehicleAsset: number): void; - requestVehicleRecording(p0: any, p1: any): void; - setAllLowPriorityVehicleGeneratorsActive(active: boolean): void; - setAllVehicleGeneratorsActiveInArea(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, - p6: boolean, p7: boolean): void; - setCargobobHookPosition(p0: any, p1: number, p2: number, p3: boolean): void; - setFarDrawVehicles(toggle: boolean): void; - setGarbageTrucks(toggle: boolean): any; - setMissionTrainAsNoLongerNeeded(train: Handle, p1: boolean): Handle; - setNumberOfParkedVehicles(value: number): any; - setParkedVehicleDensityMultiplierThisFrame(multiplier: number): void; - setPlaybackSpeed(p0: any, speed: number): any; - setPlaybackToUseAiTryToRevertBackLater(p0: any, p1: any, p2: any, p3: boolean): void; - setRandomBoats(toggle: boolean): any; - setRandomTrains(toggle: boolean): void; - setRandomVehicleDensityMultiplierThisFrame(multiplier: number): void; - setScriptVehicleGenerator(vehicleGenerator: any, enabled: boolean): void; - setVehicleDensityMultiplierThisFrame(multiplier: number): void; - setVehicleModelIsSuppressed(model: Hash, suppressed: boolean): void; - setVehicleShootAtTarget(driver: Handle, entity: Handle, xTarget: number, yTarget: number, zTarget: number): void; - skipTimeInPlaybackRecordedVehicle(p0: any, p1: number): void; - skipToEndAndStopPlaybackRecordedVehicle(p0: any): void; - startPlaybackRecordedVehicle(p0: any, p1: any, p2: any, p3: boolean): void; - startPlaybackRecordedVehicleUsingAi(p0: any, p1: any, p2: any, p3: number, p4: any): void; - startPlaybackRecordedVehicleWithFlags(p0: any, p1: any, p2: any, p3: any, p4: any, p5: any): void; - stopPlaybackRecordedVehicle(p0: any): void; - switchTrainTrack(intersectionId: number, state: boolean): any; - unpausePlaybackRecordedVehicle(p0: any): void; - - // RAGE.MP extensions - repairOnExtraToggle: boolean; - defaultEngineBehaviour: boolean; - - addModelOverride(model: string, replaceToModel: string): void; - clearModelOverrides(): void; - removeModelOverride(model: string): void; -} - -interface GameWaterMp { - getWaterHeight(x: number, y: number, z: number, height: number): number; - getWaterHeightNoWaves(x: number, y: number, z: number, height: number): number; - modifyWater(x: number, y: number, radius: number, height: number): void; - setWavesIntensity(intensity: number): void; - testProbeAgainstAllWater(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, - p6: any, p7s: any): boolean; - testProbeAgainstWater(startX: number, startY: number, startZ: number, endX: number, endY: number, endZ: number, - p6: boolean): boolean; - testVerticalProbeAgainstAllWater(x: number, y: number, z: number, p3: any, p4: any): boolean; -} - -interface GameWeaponMp { - canUseWeaponOnParachute(weaponHash: Hash): boolean; - createWeaponObject(weaponHash: Hash, ammoCount: number, x: number, y: number, z: number, - showWorldModel: boolean, heading: number, p7: any): Handle; - doesWeaponTakeWeaponComponent(weaponHash: Hash, componentHash: Hash): boolean; - enableLaserSightRendering(toggle: boolean): void; - getWeaponClipSize(weaponHash: Hash): number; - getWeaponComponentHudStats(p0: any, p1: any): boolean; - getWeaponComponentTypeModel(componentHash: Hash): Hash; - getWeaponDamageType(weaponHash: Hash): number; - getWeaponHudStats(weaponHash: Hash, data: { - hudDamage: number; - hudSpeed: number; - hudCapacity: number; - hudAccuracy: number; - hudRange: number; - }): boolean; - getWeaponObjectTintIndex(weapon: EntityMp): number; - getWeaponTintCount(weaponHash: Hash): number; - getWeapontypeGroup(weaponHash: Hash): Hash; - getWeapontypeModel(weaponHash: Hash): Hash; - getWeapontypeSlot(weaponHash: Hash): Hash; - giveWeaponComponentToWeaponObject(weaponObject: Handle, addonHash: Hash): void; - giveWeaponObjectToPed(weaponObject: Handle, ped: Handle): void; - hasVehicleGotProjectileAttached(driver: Handle, vehicle: Handle, weapon: Hash, p3: any): boolean; - hasWeaponAssetLoaded(weaponHash: Hash): boolean; - hasWeaponGotWeaponComponent(weapon: Handle, addonHash: Hash): boolean; - isWeaponValid(weaponHash: Hash): boolean; - removeAllProjectilesOfType(weaponhash: Hash, p1: boolean): void; - removeWeaponAsset(weaponHash: Hash): void; - removeWeaponComponentFromWeaponObject(p0: any, p1: any): void; - requestWeaponAsset(weaponHash: Hash, p1: number, p2: number): void; - requestWeaponHighDetailModel(weaponObject: Handle): void; - setFlashLightFadeDistance(distance: number): void; - setPedAmmoToDrop(p0: any, p1: any): void; - setWeaponObjectTintIndex(weapon: EntityMp, tint: number): void; - unequipEmptyWeapons: boolean; -} - -interface GameWorldprobeMp { - castRayPointToPoint(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, flags: number, - ignoreEntity: EntityMp, p8: number): number; - getShapeTestResult(rayHandle: number, hit: boolean, endCoords: Vector3Mp, surfaceNormal: Vector3Mp, - entityHit: EntityMp): { - hit: boolean; - endCoords: Vector3Mp; - surfaceNormal: Vector3Mp; - entityHit: EntityMp; - }; - getShapeTestResultEx(rayHandle: number, hit: boolean, endCoords: Vector3Mp, surfaceNormal: Vector3Mp, - materialHash: number, entityHit: EntityMp): { - hit: boolean; - endCoords: Vector3Mp; - surfaceNormal: Vector3Mp; - materialHash: number; - entityHit: EntityMp; - }; - startShapeTestBox(x: number, y: number, z: number, sizeX: number, sizeY: number, sizeZ: number, rotationX: number, - rotationY: number, rotationZ: number, rotationOrder: number, flags: number, ignoreEntity: EntityMp | number, - p12: number): number; - startShapeTestCapsule(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, radius: number, - flags: number, ignoreEntity: EntityMp, p9: number): number; - startShapeTestLosProbe(x1: number, y1: number, z1: number, x2: number, y2: number, z2: number, flags: number, - ignoreEntity: EntityMp, p8: number): number; -} - -interface GameZoneMp { - clearPopscheduleOverrideVehicleModel(scheduleId: number): void; - getHashOfMapAreaAtCoords(x: number, y: number, z: number): number; - getHashOfMapAreaAtCoords(x: number, y: number, z: number): string; - getZoneAtCoords(x: number, y: number, z: number): number; - getZoneFromNameId(zoneName: string): number; - getNameOfZone(x: number, y: number, z: number): string; - getZonePopschedule(zoneId: number): number; - getZoneScumminess(zoneId: number): number; - overridePopscheduleVehicleModel(scheduleId: number, vehicleHash: number): void; - overridePopscheduleVehicleModel(scheduleId: number, vehicleHash: string): void; - setZoneEnabled(zoneId: number, toggle: boolean): void; -} - -interface GameGxtMp { - set(labelNameOrHash: string, newLabelValue:string): void; - get(labelNameOrHash: string): string; - getDefault(labelNameOrHash: string): string; - reset(): void; -} - -// ------------------------------------------------------------------------- -// Gui MP types -// ------------------------------------------------------------------------- - -interface GuiChatMp { - colors: boolean; - safe: boolean; - - activate(state: boolean): void; - push(text: string): void; - show(state: boolean): void; -} - -interface GuiCursorMp { - position: Array2d; - visible: boolean; - - show(freezeControls: boolean, state: boolean): void; -} - -// ------------------------------------------------------------------------- -// Pool MP types -// ------------------------------------------------------------------------- - -interface BlipMpPool extends EntityMpPool { - "new"(sprite: number, position: Vector3Mp, options?: { - alpha?: number, - color?: number, - dimension?: number, - drawDistance?: number, - name?: string, - rotation?: number, - scale?: number, - shortRange?: boolean - }): BlipMp; -} - -interface BrowserMpPool extends EntityMpPool { - "new"(url: string): BrowserMp; -} - -interface CameraMpPool extends EntityMpPool { - "new"(name: string, position?: Vector3Mp, rotation?: Vector3Mp, fov?: number): CameraMp; -} - -interface CheckpointMpPool extends EntityMpPool { - "new"(type: number, position: Vector3Mp, radius: number, options?: { - color?: RGBA, - dimension?: number, - direction?: Vector3Mp, - visible? : boolean - }): CheckpointMp; -} - -interface ColshapeMpPool extends EntityMpPool { - newCircle(x: number, y: number, range: number, dimension?: number): ColshapeMp; - newCuboid(x: number, y: number, z: number, width: number, depth: number, height: number, dimension?: number): ColshapeMp; - newRectangle(x: number, y: number, width: number, height: number, dimension?: number): ColshapeMp; - newSphere(x: number, y: number, z: number, range: number, dimension?: number): ColshapeMp; - newTube(x: number, y: number, z: number, range: number, height: number, dimension?: number): ColshapeMp; -} - -interface EntityMpPool { - readonly length: number; - readonly size: number; - streamed: TEntity[]; - - apply(fn: (...args: any[]) => void, ...args: any[]): void; - at(index: number): TEntity; - atHandle(handle: number): TEntity; - atRemoteId(remoteId: number): TEntity; - exists(entity: TEntity | number): boolean; - forEach(fn: (entity: TEntity) => void): void; - forEachInRange(position: Vector3Mp, range: number, fn: (entity: TEntity) => void): void; - forEachInDimension(position: Vector3Mp, range: number, dimension: number, fn: (entity: TEntity) => void): void; - forEachInStreamRange(fn: (entity: TEntity) => void): void; - getClosest(position: Vector3Mp): TEntity - getClosest(position: Vector3Mp, limit: number): TEntity[] - toArray(): TEntity[]; - toArrayFast(): TEntity[]; - - /** - @deprecated (1.1+) considering optimizations applied to the reimplemented mp.Pool.forEach in this update without side effects, it's not longer required; for now it's an alias to forEach. - */ - forEachFast(fn: (entity: TEntity) => void): void; -} - -interface EventMpPool { - addDataHandler(keyName: string, callback: (...args: any[]) => void): void; - - add(eventName: RageEnums.EventKey.BROWSER_CREATED, callback: (browser: BrowserMp) => void): void; - add(eventName: RageEnums.EventKey.BROWSER_DOM_READY, callback: (browser: BrowserMp) => void): void; - add(eventName: RageEnums.EventKey.BROWSER_LOADING_FAILED, callback: (browser: BrowserMp) => void): void; - add(eventName: RageEnums.EventKey.CLICK, callback: (x: number, y: number, upOrDown: string, leftOrRight: string, relativeX: number, relativeY: number, worldPosition: Vector3MpLike, hitEntity: number) => void): void; - add(eventName: RageEnums.EventKey.CONSOLE_COMMAND, callback: (command: string) => void): void; - add(eventName: RageEnums.EventKey.DUMMY_ENTITY_CREATED, callback: (dummyType: number, dummy: DummyEntityMp) => void): void; - add(eventName: RageEnums.EventKey.DUMMY_ENTITY_DESTROYED, callback: (dummyType: number, dummy: DummyEntityMp) => void): void; - add(eventName: RageEnums.EventKey.ENTITY_CONTROLLER_CHANGE, callback: (entity: EntityMp, newController: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.ENTITY_CREATED, callback: (entity: EntityMp) => void): void; - add(eventName: RageEnums.EventKey.ENTITY_STREAM_IN, callback: (entity: EntityMp) => void): void; - add(eventName: RageEnums.EventKey.ENTITY_STREAM_OUT, callback: (entity: EntityMp) => void): void; - add(eventName: RageEnums.EventKey.GUI_READY, callback: () => void): void; - add(eventName: RageEnums.EventKey.INCOMING_DAMAGE, callback: (sourceEntity: EntityMp, sourcePlayer: PlayerMp, targetEntity: EntityMp, weapon: number, boneIndex: number, damage: number) => void): void; - add(eventName: RageEnums.EventKey.OUTGOING_DAMAGE, callback: (sourceEntity: EntityMp, targetEntity: EntityMp, targetPlayer: PlayerMp, weapon: number, boneIndex: number, damage: number) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_CHAT, callback: (text: string) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_CREATE_WAYPOINT, callback: (position: Vector3Mp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_COMMAND, callback: (command: string) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_DEATH, callback: (player: PlayerMp, reason: number, killer: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_ENTER_CHECKPOINT, callback: (checkpoint: CheckpointMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_ENTER_COLSHAPE, callback: (colshape: ColshapeMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_ENTER_VEHICLE, callback: (vehicle: VehicleMp, seat: number) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_EXIT_CHECKPOINT, callback: (checkpoint: CheckpointMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_EXIT_COLSHAPE, callback: (colshape: ColshapeMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_JOIN, callback: (player: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_LEAVE_VEHICLE, callback: (vehicle: VehicleMp, seat: number) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_QUIT, callback: (player: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_REACH_WAYPOINT, callback: (...args: any[]) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_READY, callback: () => void): void; - add(eventName: RageEnums.EventKey.PLAYER_REMOVE_WAYPOINT, callback: (...args: any[]) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_RESURRECT, callback: () => void): void; - add(eventName: RageEnums.EventKey.PLAYER_RULE_TRIGGERED, callback: (rule: string, counter: number) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_SPAWN, callback: (player: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_START_TALKING, callback: (player: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_STOP_TALKING, callback: (player: PlayerMp) => void): void; - add(eventName: RageEnums.EventKey.PLAYER_WEAPON_SHOT, callback: (targetPosition: Vector3Mp, targetEntity?: undefined | EntityMp) => void): void; - add(eventName: RageEnums.EventKey.RENDER, callback: (nametags: [PlayerMp, number, number, number][]) => void): void; - add(eventName: RageEnums.EventKey.VEHICLE_DEATH, callback: (vehicle: VehicleMp) => void): void; - - add(eventName: RageEnums.EventKey | string, callback: (...args: any[]) => void): void; - add(events: ({ [name: string]: (...args: any[]) => void; })): void; - addProc(procName: string, callback: (...args: any[]) => void): void; - addProc(procs: ({ [name: string]: (...args: any[]) => void; })): void; - call(eventName: string, ...args: any[]): void; - callRemoteProc(procName: string, ...args: any[]): Promise; - callRemoteUnreliable(eventName: string, ...args: any[]): void; - callRemote(eventName: string, ...args: any[]): void; - cancelPendingRpc(procName?: string): void; - hasPendingRpc(procName?: string): boolean; - remove(eventName: string, handler?: (...args: any[]) => void): void; - remove(eventNames: string[]): void; -} - -interface DummyEntityMpPool extends EntityMpPool { - forEachByType(dummyType: number, fn: (entity: DummyEntityMp) => void): void; -} - -interface MarkerMpPool extends EntityMpPool { - "new"(type: number, position: Vector3Mp, scale: number, options?: { - bobUpAndDown?: boolean, - color?: RGBA, - dimension?: number, - direction?: Vector3Mp, - rotation?: Vector3Mp, - visible?: boolean - }): MarkerMp; -} - -interface ObjectMpPool extends EntityMpPool { - "new"(model: HashOrString, position: Vector3Mp, options?: { - alpha?: number, - dimension?: number, - rotation?: Vector3Mp - }): ObjectMp; - newWeak(handle: number): ObjectMp; -} - -interface PedMpPool extends EntityMpPool { - "new"(model: RageEnums.Hashes.Ped | Hash, position: Vector3Mp, heading: number, dimension?: number): PedMp; -} - -interface PickupMpPool extends EntityMpPool { - "new"(...args: any[]): PickupMp; // TODO -} - -interface PlayerMpPool extends EntityMpPool { - local: PlayerMp; -} - -interface TextLabelMpPool extends EntityMpPool { - "new"(text: string, position: Vector3Mp, options?: { - color?: RGBA, - dimension?: number, - drawDistance?: number, - font?: number, - los?: boolean - }): TextLabelMp; -} - -interface VehicleMpPool extends EntityMpPool { - "new"(model: HashOrString, position: Vector3Mp, options?: { - alpha?: number, - color?: [ Array2d, Array2d ] | [ RGB, RGB ], - dimension?: number, - engine?: boolean, - heading?: number; - locked?: boolean, - numberPlate?: string - }): VehicleMp; -} - -// ------------------------------------------------------------------------- -// Additional MP types -// ------------------------------------------------------------------------- - -interface Vector3MpLike { - x: number; - y: number; - z: number; -} - -interface Vector3Mp { - new(vector: Vector3MpLike): Vector3Mp; - new(vector: [number, number, number]): Vector3Mp; - new(x?: number, y?: number, z?: number): Vector3Mp; - - x: number; - y: number; - z: number; - - add(value: number): Vector3Mp; - add(vector3: Vector3Mp): Vector3Mp; - angleTo(number: Vector3Mp): number; - clone(): Vector3Mp; - cross(vector3: Vector3MpLike): Vector3Mp; - divide(value: number): Vector3Mp; - divide(vector3: Vector3Mp): Vector3Mp; - dot(vector3: Vector3MpLike): number; - equals(vector3: Vector3MpLike): boolean; - length(): number; - negative(): Vector3Mp; - max(): Vector3Mp; - min(): Vector3Mp; - multiply(value: number): Vector3Mp; - multiply(vector3: Vector3Mp): Vector3Mp; - subtract(value: number): Vector3Mp; - subtract(vector3: Vector3Mp): Vector3Mp; - toAngles(): [number, number]; - toArray(): [number, number, number]; - toArray(limit: number): number[]; - toString(): string; - unit(): Vector3Mp; -} - -interface RaycastResult { - entity: EntityMp, - position: Vector3Mp, - surfaceNormal: Vector3Mp -} - -// ------------------------------------------------------------------------- -// Vars -// ------------------------------------------------------------------------- - -declare const mp: Mp; From af0b51d0dcbfaa17768a6c17329a9c351ec06ac6 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 22:00:03 +0200 Subject: [PATCH 049/111] fix --- ReallifeGamemode.Client/Gui/blips.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index b4510e14..44eca82f 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -12,21 +12,14 @@ export default function playerBlips() { var entityMp = entity; - mp.gui.chat.push("Player recieved: Yes"); let color = parseInt(entity.getVariable("blipColor")); - mp.gui.chat.push("Color : " + color); entity.createBlip(1); - mp.gui.chat.push(parseInt(entity.blip) == 0 ? "Blip was not created" : "Blip was created"); - - mp.gui.chat.push("entity.blip is actually " + entity.blip); var blip = entity.blip; - mp.gui.chat.push("1 -" + blip.getAlpha() + " 2- " + blip.doesExist() + " 3-" + blip.dimension + " 4-" + entityMp.dimension); - entity.setBlipColor(isNaN(color) ? 0 : color); mp.game.invoke(Natives.SET_BLIP_CATEGORY, entity.blip, 7); From 68302f4d6cf5d6a33ffd9ead37d3e2f2f80eec17 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 18:58:42 +0200 Subject: [PATCH 050/111] fix IsAdmin macht server kaputt --- ReallifeGamemode.Database/Entities/User.cs | 1 - .../Extensions/ClientExtension.cs | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Database/Entities/User.cs b/ReallifeGamemode.Database/Entities/User.cs index b64fa754..c4b76095 100644 --- a/ReallifeGamemode.Database/Entities/User.cs +++ b/ReallifeGamemode.Database/Entities/User.cs @@ -120,7 +120,6 @@ namespace ReallifeGamemode.Database.Entities public bool WeaponLicense { get; set; } = false; - public bool IsAdmin(AdminLevel level) => AdminLevel >= level; public int Points { get; set; } public int otheramount { get; set; } = 0; diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 6b04c579..97322445 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -7,6 +7,7 @@ using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Types; /** * @overview Life of German Reallife - Player Extension (PlayerExtension.cs) @@ -93,7 +94,7 @@ namespace ReallifeGamemode.Server.Extensions internal static T GetData(this User user, string key, T nullValue) { - if(user == null) + if (user == null) { return default; } @@ -107,7 +108,7 @@ namespace ReallifeGamemode.Server.Extensions internal static void SetData(this User user, string key, object value) { - if(user == null) + if (user == null) { return; } @@ -232,5 +233,14 @@ namespace ReallifeGamemode.Server.Extensions return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); } } + + public static bool IsAdmin(this User user, AdminLevel adminLevel) + { + if(user == null) + { + return false; + } + return user.AdminLevel >= adminLevel; + } } } From 704e4e9a07996752e3360cbb515ace561f6c47c3 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 22:30:35 +0200 Subject: [PATCH 051/111] broadcastfaction toadmins wieder aktiviert --- ReallifeGamemode.Server/Services/ChatService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Server/Services/ChatService.cs b/ReallifeGamemode.Server/Services/ChatService.cs index d552bb3e..777ad884 100644 --- a/ReallifeGamemode.Server/Services/ChatService.cs +++ b/ReallifeGamemode.Server/Services/ChatService.cs @@ -65,10 +65,10 @@ namespace ReallifeGamemode.Server.Services ChatService.SendMessage(c, message); } } - /*else if(user.IsAdmin(AdminLevel.ADMIN) && toAdmins) + else if (user.IsAdmin(AdminLevel.ADMIN) && toAdmins) { ChatService.SendMessage(c, message); - }*/ + } } } From cf6fa13080769f88c81bfdd4a9013ecabef2d144 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 22:42:49 +0200 Subject: [PATCH 052/111] Attachmen Manager --- ReallifeGamemode.Client/util/attachmentMngr.ts | 8 ++++---- ReallifeGamemode.Server/Events/Key.cs | 10 ++++++++-- ReallifeGamemode.Server/Inventory/GroundItem.cs | 2 +- ReallifeGamemode.Server/Job/RefuseCollectorJob.cs | 10 ++++++++-- ReallifeGamemode.Server/Managers/PositionManager.cs | 2 +- .../WeaponDeal/WeaponDealManager.cs | 3 +++ package-lock.json | 3 +++ 7 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 package-lock.json diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts index 41c07536..e35305ba 100644 --- a/ReallifeGamemode.Client/util/attachmentMngr.ts +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -19,14 +19,14 @@ export default function attachmentManager(game: IGame) { addFor: async function (entity, id) { if (this.attachments.hasOwnProperty(id)) { + if (!entity.__attachmentObjects) { + entity.__attachmentObjects = {}; + } if (!entity.__attachmentObjects.hasOwnProperty(id)) { let attInfo = this.attachments[id]; let object = mp.objects.new(attInfo.model, entity.position); - while (object.handle === 0) { - await mp.game.waitAsync(0); - } - + object.__attMgrData = { targetEntity: entity.handle, bone: (typeof (attInfo.boneName) === 'string') ? entity.getBoneIndexByName(attInfo.boneName) : entity.getBoneIndex(attInfo.boneName), diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index bd5527fe..3b81ba64 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -218,8 +218,16 @@ namespace ReallifeGamemode.Server.Events List vehicleItems = dbContext.VehicleItems.ToList().Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList(); if (vehicleItems.Count == 0) { + GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle; + if (vehicle.HasAttachment("weapondeal")) + { + vehicle.AddAttachment("weapondeal", true); + vehicle.AddAttachment("weapondeal1", true); + vehicle.AddAttachment("weapondeal2", true); + } + if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) { vehicle.ResetData("WeaponDealLoad"); @@ -365,13 +373,11 @@ namespace ReallifeGamemode.Server.Events using (var context = new DatabaseContext()) { - /* if (player.HasAttachment("ammobox")) { player.AddAttachment("ammobox", true); player.StopAnimation(); } - */ bool unloadedWeaponPackage = false; List fItem = context.UserItems.Where(u => u.UserId == user.Id).ToList(); diff --git a/ReallifeGamemode.Server/Inventory/GroundItem.cs b/ReallifeGamemode.Server/Inventory/GroundItem.cs index 2737d5fc..25f8dcb6 100644 --- a/ReallifeGamemode.Server/Inventory/GroundItem.cs +++ b/ReallifeGamemode.Server/Inventory/GroundItem.cs @@ -102,7 +102,7 @@ namespace ReallifeGamemode.Server.Inventory if (!player.HasAttachment("ammobox")) { player.PlayAnimation("anim@heists@box_carry@", "idle", 49); - //player.AddAttachment("ammobox", false); + player.AddAttachment("ammobox", false); NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); } } diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index a348d29a..bf091a09 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -195,6 +195,12 @@ namespace ReallifeGamemode.Server.Job muellmanData.Remove(data); return; } + + if (player.HasAttachment("binbag")) + { + player.AddAttachment("binbag", true); + } + ChatService.SendMessage(data.getPartnerClient(player), $"~y~[Job] ~s~Dein Partner hat den Job beendet."); data.removeClientFromData(player); @@ -211,7 +217,7 @@ namespace ReallifeGamemode.Server.Job Player target = data.getPartnerClient(player); if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen."); - //player.AddAttachment("binbag", false); + player.AddAttachment("binbag", false); return; } } @@ -240,7 +246,7 @@ namespace ReallifeGamemode.Server.Job target.SendNotification("Müllsack: " + data.getTrashCount() + " von " + MAX_BAG + "."); } - // player.AddAttachment("binbag", true); + player.AddAttachment("binbag", true); if (data.getTrashCount() == MAX_BAG) { diff --git a/ReallifeGamemode.Server/Managers/PositionManager.cs b/ReallifeGamemode.Server/Managers/PositionManager.cs index 19736b30..ab097f63 100644 --- a/ReallifeGamemode.Server/Managers/PositionManager.cs +++ b/ReallifeGamemode.Server/Managers/PositionManager.cs @@ -348,7 +348,7 @@ public class BehindVehiclePoint if (!player.HasAttachment("ammobox")) { player.PlayAnimation("anim@heists@box_carry@", "idle", 49); - //player.AddAttachment("ammobox", false); + player.AddAttachment("ammobox", false); NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); } } diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs index 77bbe84a..e6f28349 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs @@ -185,6 +185,9 @@ namespace ReallifeGamemode.Server.WeaponDeal Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); fVeh.SetData("weaponDeal", false); fVeh.SetData("WeaponDealLoad", true); + fVeh.AddAttachment("weapondeal", false); + fVeh.AddAttachment("weapondeal1", false); + fVeh.AddAttachment("weapondeal2", false); InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count(); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..48e341a0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3 @@ +{ + "lockfileVersion": 1 +} From d2920f5c879a9c5fa69d2c0cd75bee11beca69f8 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 23:02:45 +0200 Subject: [PATCH 053/111] try fix --- ReallifeGamemode.Client/Gui/blips.ts | 14 ++++++-------- ReallifeGamemode.Server/Util/AttachmentSync.cs | 1 - 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 44eca82f..7aa0cb81 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -9,17 +9,10 @@ export default function playerBlips() { mp.events.add("entityStreamIn", (entity) => { if (entity.type === "player") { - var entityMp = entity; - - let color = parseInt(entity.getVariable("blipColor")); - - entity.createBlip(1); - var blip = entity.blip; - entity.setBlipColor(isNaN(color) ? 0 : color); mp.game.invoke(Natives.SET_BLIP_CATEGORY, entity.blip, 7); @@ -31,7 +24,12 @@ export default function playerBlips() { }); - + mp.events.add("entityStreamOut", (entity) => { + if (entity.type === "player") { + var blip = entity.blip + blip.destroy(); + } + }); mp.events.addDataHandler("blipColor", (entity, value) => { if (entity.type === "player") { diff --git a/ReallifeGamemode.Server/Util/AttachmentSync.cs b/ReallifeGamemode.Server/Util/AttachmentSync.cs index cfa403ef..6021b912 100644 --- a/ReallifeGamemode.Server/Util/AttachmentSync.cs +++ b/ReallifeGamemode.Server/Util/AttachmentSync.cs @@ -97,7 +97,6 @@ public static class AttachmentSync } } - entity.ResetSharedData("attachmentsData"); entity.SetData("Attachments", new List()); } From 9f986fc53ffb2a02c980aa248882cb04d1d17db2 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 22:54:15 +0200 Subject: [PATCH 054/111] nametags debug --- ReallifeGamemode.Client/Gui/nametags.ts | 3 +-- ReallifeGamemode.Client/core/rage-mp/entities.ts | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index 4648d30b..30ab2b05 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -31,8 +31,6 @@ const colors = [ export default function customNametags() { mp.nametags.enabled = false; - - mp.events.add('render', (nametags) => { const graphics = mp.game.graphics; @@ -53,6 +51,7 @@ export default function customNametags() { y -= scale * (0.005 * (screenRes.y / 1080)); let colorId = game.players.at(player.remoteId).nametagColor; + let color = colors.find(c => c.id === colorId).color; mp.game.graphics.drawText(player.name + " (" + player.remoteId + ")", [x, y], diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 389c2b9b..61e522d8 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -72,7 +72,8 @@ class RagePlayer extends RageEntity implements IPlayer { } get nametagColor(): number { - var color = this.player.getVariable("nametagColor"); + var color = this.player.getVariable("nameTagColor"); + game.ui.sendChatMessage(`player = ${this.player.name} - color = ${color}`); if (!color) return 0; return color; From eb1eebe123eda390b54d3c089631e80abb05215b Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 22:54:35 +0200 Subject: [PATCH 055/111] npm package --- ReallifeGamemode.Client/package-lock.json | 5562 ++++++++++++++++++++- ReallifeGamemode.Client/package.json | 3 +- 2 files changed, 5541 insertions(+), 24 deletions(-) diff --git a/ReallifeGamemode.Client/package-lock.json b/ReallifeGamemode.Client/package-lock.json index be4274d9..959fda12 100644 --- a/ReallifeGamemode.Client/package-lock.json +++ b/ReallifeGamemode.Client/package-lock.json @@ -1,8 +1,5526 @@ { "name": "client", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "client", + "version": "1.0.0", + "devDependencies": { + "@babel/core": "^7.5.5", + "@types/node": "^11.13.18", + "@types/ragemp-c": "github:kookroach/types-ragemp-c#v1.0", + "babel-loader": "^8.0.6", + "copy-webpack-plugin": "^5.1.1", + "serialize-javascript": "^3.0.0", + "ts-loader": "^5.4.5", + "typescript": "^3.5.3", + "uglifyjs-webpack-plugin": "^2.2.0", + "webpack": "^4.38.0", + "webpack-cli": "^3.3.6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.0.0" + } + }, + "node_modules/@babel/core": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", + "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helpers": "^7.5.5", + "@babel/parser": "^7.5.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", + "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.5.5", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.4.4" + } + }, + "node_modules/@babel/helpers": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", + "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", + "dev": true, + "dependencies": { + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.5.5", + "@babel/types": "^7.5.5" + } + }, + "node_modules/@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", + "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "node_modules/@babel/traverse": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", + "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.5.5", + "@babel/types": "^7.5.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "node_modules/@babel/types": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", + "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "node_modules/@types/node": { + "version": "11.13.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.18.tgz", + "integrity": "sha512-sMHdXLccscaxI+Hlzz58yLQue3lQyXP+6aQniDRi5oju3n0123kcjhicVGF20WF7cHiwJ2vxMbXc4skOclosoA==", + "dev": true + }, + "node_modules/@types/ragemp-c": { + "resolved": "git+ssh://git@github.com/kookroach/types-ragemp-c.git#849cf51f85066c786ad3c563872ae74d9af2dd7c", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "engines": { + "node": ">= 6.9" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "dependencies": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "dependencies": { + "date-now": "^0.1.4" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "dev": true, + "dependencies": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "node_modules/date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/elliptic": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "dev": true, + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "dependencies": { + "estraverse": "^4.1.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "node_modules/figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "bundleDependencies": [ + "abbrev", + "ansi-regex", + "aproba", + "are-we-there-yet", + "balanced-match", + "brace-expansion", + "chownr", + "code-point-at", + "concat-map", + "console-control-strings", + "core-util-is", + "debug", + "deep-extend", + "delegates", + "detect-libc", + "fs-minipass", + "fs.realpath", + "gauge", + "glob", + "has-unicode", + "iconv-lite", + "ignore-walk", + "inflight", + "inherits", + "ini", + "is-fullwidth-code-point", + "isarray", + "minimatch", + "minimist", + "minipass", + "minizlib", + "mkdirp", + "ms", + "needle", + "node-pre-gyp", + "nopt", + "npm-bundled", + "npm-normalize-package-bin", + "npm-packlist", + "npmlog", + "number-is-nan", + "object-assign", + "once", + "os-homedir", + "os-tmpdir", + "osenv", + "path-is-absolute", + "process-nextick-args", + "rc", + "readable-stream", + "rimraf", + "safe-buffer", + "safer-buffer", + "sax", + "semver", + "set-blocking", + "signal-exit", + "string-width", + "string_decoder", + "strip-ansi", + "strip-json-comments", + "tar", + "util-deprecate", + "wide-align", + "wrappy", + "yallist" + ], + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/fsevents/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/aproba": { + "version": "1.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/are-we-there-yet": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/fsevents/node_modules/balanced-match": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fsevents/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/code-point-at": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/debug": { + "version": "3.2.6", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/fsevents/node_modules/deep-extend": { + "version": "0.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/fsevents/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/detect-libc": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/fsevents/node_modules/fs-minipass": { + "version": "1.2.7", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/fsevents/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/gauge": { + "version": "2.7.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/fsevents/node_modules/glob": { + "version": "7.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/ignore-walk": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/fsevents/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/ini": { + "version": "1.3.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/fsevents/node_modules/minimist": { + "version": "1.2.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/fsevents/node_modules/minizlib": { + "version": "1.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/fsevents/node_modules/mkdirp": { + "version": "0.5.3", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/fsevents/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/needle": { + "version": "2.3.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/fsevents/node_modules/node-pre-gyp": { + "version": "0.14.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/fsevents/node_modules/nopt": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/fsevents/node_modules/npm-bundled": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/npm-packlist": { + "version": "1.4.8", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/fsevents/node_modules/npmlog": { + "version": "4.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/fsevents/node_modules/number-is-nan": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/fsevents/node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/osenv": { + "version": "0.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/fsevents/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/rc": { + "version": "1.2.8", + "dev": true, + "inBundle": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "optional": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/fsevents/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fsevents/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/fsevents/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/sax": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/fsevents/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/signal-exit": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fsevents/node_modules/string-width": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/strip-json-comments": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fsevents/node_modules/tar": { + "version": "4.4.13", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/fsevents/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/fsevents/node_modules/wide-align": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/fsevents/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/fsevents/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "optional": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-modules/node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "dependencies": { + "invert-kv": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "dependencies": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "dependencies": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-javascript": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", + "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "dependencies": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.2.tgz", + "integrity": "sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/uglifyjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ts-loader": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", + "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^3.1.4", + "semver": "^5.0.1" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", + "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz", + "integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==", + "dev": true, + "dependencies": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglifyjs-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "uglify-js": "^3.6.0", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglifyjs-webpack-plugin/node_modules/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, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "node_modules/vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "dev": true, + "dependencies": { + "chokidar": "^2.1.8", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "node_modules/webpack": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.38.0.tgz", + "integrity": "sha512-lbuFsVOq8PZY+1Ytz/mYOvYOo+d4IJ31hHk/7iyoeWtwN33V+5HYotSH+UIb9tq914ey0Hot7z6HugD+je3sWw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^1.0.0", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/webpack-cli": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", + "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", + "dev": true, + "dependencies": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/webpack-cli/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.5.5", @@ -151,9 +5669,9 @@ "dev": true }, "@types/ragemp-c": { - "version": "github:kookroach/types-ragemp-c#849cf51f85066c786ad3c563872ae74d9af2dd7c", - "from": "github:kookroach/types-ragemp-c#v1.0", - "dev": true + "version": "git+ssh://git@github.com/kookroach/types-ragemp-c.git#849cf51f85066c786ad3c563872ae74d9af2dd7c", + "dev": true, + "from": "@types/ragemp-c@github:kookroach/types-ragemp-c#v1.0" }, "@webassemblyjs/ast": { "version": "1.8.5", @@ -2152,6 +7670,15 @@ "dev": true, "optional": true }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "1.0.2", "bundled": true, @@ -2163,15 +7690,6 @@ "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -3950,6 +9468,15 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -3961,15 +9488,6 @@ "strip-ansi": "^5.1.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", diff --git a/ReallifeGamemode.Client/package.json b/ReallifeGamemode.Client/package.json index c32753f1..0c0b26ac 100644 --- a/ReallifeGamemode.Client/package.json +++ b/ReallifeGamemode.Client/package.json @@ -22,6 +22,5 @@ "ProjectOpened": [ "watch" ] - }, - "dependencies": {} + } } From 4041983d53d760484b981933b2482efecf99d290 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 23:08:06 +0200 Subject: [PATCH 056/111] admin lc ga --- .../Commands/FactionCommands.cs | 30 +++++++++++++++++-- .../Services/ChatService.cs | 7 ++--- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index fdabd88a..bac65955 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -55,7 +55,18 @@ namespace ReallifeGamemode.Server.Commands { message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); - string broadcastMessage = "!{FF0000}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + " **"; + string rank = string.Empty; + + if(f.Name == "Ballas" || f.Name == "Grove") + { + rank = player.GetUser().GetFactionRank().RankName; + } + else + { + rank = "[ADMIN]"; + } + + string broadcastMessage = "!{FF0000}** " + rank + " " + player.Name + ": " + message + " **"; using (var context = new DatabaseContext()) { ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true); @@ -188,12 +199,25 @@ namespace ReallifeGamemode.Server.Commands message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); - string broadcastMsg = "~y~[" + player.GetUser().Faction.Name + "] " + player.Name + ": " + message; + string factionName = string.Empty; + if(user.FactionLeader) + { + factionName = player.GetUser().Faction.Name; + } + else + { + factionName = "ADMIN"; + } + + string broadcastMsg = "~y~[" + factionName + "] " + player.Name + ": " + message; NAPI.Pools.GetAllPlayers().ForEach(p => { User pUser = p.GetUser(); - if (pUser?.FactionLeader ?? false || pUser.IsAdmin(AdminLevel.ADMIN)) ChatService.SendMessage(p, broadcastMsg); + if (pUser.FactionLeader || pUser.IsAdmin(AdminLevel.ADMIN)) + { + ChatService.SendMessage(p, broadcastMsg); + } }); } diff --git a/ReallifeGamemode.Server/Services/ChatService.cs b/ReallifeGamemode.Server/Services/ChatService.cs index 777ad884..692c4263 100644 --- a/ReallifeGamemode.Server/Services/ChatService.cs +++ b/ReallifeGamemode.Server/Services/ChatService.cs @@ -58,12 +58,9 @@ namespace ReallifeGamemode.Server.Services { User user = c.GetUser(); Faction f = user?.Faction; - if (f != null) + if (f != null && factions.Find(fT => fT.Id == f.Id) != null) { - if (factions.Find(fT => fT.Id == f.Id) != null) - { - ChatService.SendMessage(c, message); - } + ChatService.SendMessage(c, message); } else if (user.IsAdmin(AdminLevel.ADMIN) && toAdmins) { From 3dbd7975f273d3a33065b82e0c55589cb19418f7 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 23:08:29 +0200 Subject: [PATCH 057/111] Push --- ReallifeGamemode.Client/Gui/blips.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 7aa0cb81..12a415df 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -7,7 +7,8 @@ export default function playerBlips() { - mp.events.add("entityStreamIn", (entity) => { + mp.events.add("entityStreamIn", (entity) => { + mp.game.wait(500); if (entity.type === "player") { var entityMp = entity; let color = parseInt(entity.getVariable("blipColor")); @@ -26,8 +27,7 @@ export default function playerBlips() { mp.events.add("entityStreamOut", (entity) => { if (entity.type === "player") { - var blip = entity.blip - blip.destroy(); + entity.blip = null; } }); From 5ba74a4c97e364ddc5a05babc29a75e5a1c0aa90 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Sun, 4 Apr 2021 23:34:19 +0200 Subject: [PATCH 058/111] =?UTF-8?q?Sanis=20Aufzug,=20Waffenschein=20Geld?= =?UTF-8?q?=20f=C3=BCr=20Fraks,=20HQ=20Message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs | 4 ++-- ReallifeGamemode.Server/Events/Key.cs | 2 +- ReallifeGamemode.Server/Managers/InteractionManager.cs | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs b/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs index f4c5da37..65aa993f 100644 --- a/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs +++ b/ReallifeGamemode.Server.Core/Menus/PoliceDepartment.cs @@ -50,8 +50,8 @@ namespace ReallifeGamemode.Server.Core.Menus player.SendMessage("Du hast den Waffenschein erfolgreich erworben.", ChatPrefix.Info); - dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1).First().BankAccount.Balance += 2500; - dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 3).First().BankAccount.Balance += 2500; + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 1).First().BankAccount.Balance += 1000; + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 3).First().BankAccount.Balance += 1000; user.WeaponLicense = true; dbContext.SaveChanges(); diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index bd5527fe..fbe5a689 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -201,7 +201,7 @@ namespace ReallifeGamemode.Server.Events DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId); WeaponPoint nearestWeapon = PositionManager.WeaponPoints.Find(w => w.Position.DistanceTo(player.Position) <= 1.5 && w.FactionId == user.FactionId); JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData("duty")); - ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3)); + ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 2 || user.FactionId == 3)); ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData("duty"))); FriseurPoint nearestFriseurPoint = PositionManager.friseurPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData("duty"))); ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5); diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 8675816d..2ad64926 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -640,7 +640,7 @@ namespace ReallifeGamemode.Server.Managers } player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~."); target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true); - ChatService.BroadcastFaction("~y~" + targetname + "~b~ hat von ~g~" + playername + " ~y~" + amount + " ~b~Strafpunkt erhalten. Gesamt: ~y~" + target.GetUser().Points, new List() { 1, 3 }); + ChatService.BroadcastFaction("!{#8181E9}HQ: " + targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten. Gesamt: " + target.GetUser().Points, new List() { 1, 3 }); if (target.GetUser().Points < 0) { using (var dbContext = new DatabaseContext()) @@ -653,8 +653,8 @@ namespace ReallifeGamemode.Server.Managers else if (target.GetUser().Points >= 12) { target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true); - target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); - ChatService.BroadcastFaction("~y~" + targetname + "~b~ hat von ~g~" + playername + " ~y~" + amount + " ~b~Strafpunkt erhalten. Gesamt: ~y~" + target.GetUser().Points, new List() { 1, 3 }); + target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); //FlashNotif + ChatService.HQMessage(targetname + "hat von" + playername + " " + amount + " Strafpunkt erhalten(e). Gesamt: " + target.GetUser().Points); foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) { User copUser = copPlayer.GetUser(); @@ -667,7 +667,7 @@ namespace ReallifeGamemode.Server.Managers { if (copUser.GetData("duty") == true) { - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + targetname + " besitzt nun keinen Führerschein mehr."); + ChatService.HQMessage(targetname + " besitzt nun keinen Führerschein mehr."); } } } @@ -687,7 +687,7 @@ namespace ReallifeGamemode.Server.Managers } else { - player.SendNotification("~r~Du kannst nur zwischen 1 und 8 Punkte verteilen!"); + player.SendNotification("~r~Du kannst nur zwischen 1 und 12 Punkte verteilen!"); } } } From 5c875fbb9b62ed12708aca7d9bfb0f37d2e87e94 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Sun, 4 Apr 2021 23:40:56 +0200 Subject: [PATCH 059/111] try pipeline --- ReallifeGamemode.Client/package-lock.json | 6098 +-------------------- 1 file changed, 20 insertions(+), 6078 deletions(-) diff --git a/ReallifeGamemode.Client/package-lock.json b/ReallifeGamemode.Client/package-lock.json index 959fda12..e523848f 100644 --- a/ReallifeGamemode.Client/package-lock.json +++ b/ReallifeGamemode.Client/package-lock.json @@ -1,5526 +1,8 @@ { "name": "client", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "client", - "version": "1.0.0", - "devDependencies": { - "@babel/core": "^7.5.5", - "@types/node": "^11.13.18", - "@types/ragemp-c": "github:kookroach/types-ragemp-c#v1.0", - "babel-loader": "^8.0.6", - "copy-webpack-plugin": "^5.1.1", - "serialize-javascript": "^3.0.0", - "ts-loader": "^5.4.5", - "typescript": "^3.5.3", - "uglifyjs-webpack-plugin": "^2.2.0", - "webpack": "^4.38.0", - "webpack-cli": "^3.3.6" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.0.0" - } - }, - "node_modules/@babel/core": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz", - "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helpers": "^7.5.5", - "@babel/parser": "^7.5.5", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.5.5", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.4.4" - } - }, - "node_modules/@babel/helpers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz", - "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==", - "dev": true, - "dependencies": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" - } - }, - "node_modules/@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, - "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" - } - }, - "node_modules/@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "node_modules/@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@types/node": { - "version": "11.13.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.18.tgz", - "integrity": "sha512-sMHdXLccscaxI+Hlzz58yLQue3lQyXP+6aQniDRi5oju3n0123kcjhicVGF20WF7cHiwJ2vxMbXc4skOclosoA==", - "dev": true - }, - "node_modules/@types/ragemp-c": { - "resolved": "git+ssh://git@github.com/kookroach/types-ragemp-c.git#849cf51f85066c786ad3c563872ae74d9af2dd7c", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", - "dev": true, - "dependencies": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" - }, - "engines": { - "node": ">= 6.9" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true - }, - "node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "dependencies": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chownr": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", - "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", - "dev": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "dependencies": { - "date-now": "^0.1.4" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", - "dev": true, - "dependencies": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "node_modules/date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", - "dev": true, - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "dependencies": { - "estraverse": "^4.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "node_modules/figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", - "bundleDependencies": [ - "abbrev", - "ansi-regex", - "aproba", - "are-we-there-yet", - "balanced-match", - "brace-expansion", - "chownr", - "code-point-at", - "concat-map", - "console-control-strings", - "core-util-is", - "debug", - "deep-extend", - "delegates", - "detect-libc", - "fs-minipass", - "fs.realpath", - "gauge", - "glob", - "has-unicode", - "iconv-lite", - "ignore-walk", - "inflight", - "inherits", - "ini", - "is-fullwidth-code-point", - "isarray", - "minimatch", - "minimist", - "minipass", - "minizlib", - "mkdirp", - "ms", - "needle", - "node-pre-gyp", - "nopt", - "npm-bundled", - "npm-normalize-package-bin", - "npm-packlist", - "npmlog", - "number-is-nan", - "object-assign", - "once", - "os-homedir", - "os-tmpdir", - "osenv", - "path-is-absolute", - "process-nextick-args", - "rc", - "readable-stream", - "rimraf", - "safe-buffer", - "safer-buffer", - "sax", - "semver", - "set-blocking", - "signal-exit", - "string-width", - "string_decoder", - "strip-ansi", - "strip-json-comments", - "tar", - "util-deprecate", - "wide-align", - "wrappy", - "yallist" - ], - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/fsevents/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/aproba": { - "version": "1.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/are-we-there-yet": { - "version": "1.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/fsevents/node_modules/balanced-match": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/fsevents/node_modules/chownr": { - "version": "1.1.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/code-point-at": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/core-util-is": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/debug": { - "version": "3.2.6", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/fsevents/node_modules/deep-extend": { - "version": "0.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fsevents/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/detect-libc": { - "version": "1.0.3", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/fsevents/node_modules/fs-minipass": { - "version": "1.2.7", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^2.6.0" - } - }, - "node_modules/fsevents/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/gauge": { - "version": "2.7.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/fsevents/node_modules/glob": { - "version": "7.1.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fsevents/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/ignore-walk": { - "version": "3.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/fsevents/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/ini": { - "version": "1.3.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minimatch": { - "version": "3.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fsevents/node_modules/minimist": { - "version": "1.2.5", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/minipass": { - "version": "2.9.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/fsevents/node_modules/minizlib": { - "version": "1.3.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/fsevents/node_modules/mkdirp": { - "version": "0.5.3", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fsevents/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/needle": { - "version": "2.3.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/fsevents/node_modules/node-pre-gyp": { - "version": "0.14.0", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/fsevents/node_modules/nopt": { - "version": "4.0.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/fsevents/node_modules/npm-bundled": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/npm-packlist": { - "version": "1.4.8", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/fsevents/node_modules/npmlog": { - "version": "4.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/fsevents/node_modules/number-is-nan": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/fsevents/node_modules/os-homedir": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/osenv": { - "version": "0.1.5", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/fsevents/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/process-nextick-args": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/rc": { - "version": "1.2.8", - "dev": true, - "inBundle": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/fsevents/node_modules/readable-stream": { - "version": "2.3.7", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/fsevents/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fsevents/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/safer-buffer": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/sax": { - "version": "1.2.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/fsevents/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/signal-exit": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fsevents/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/strip-json-comments": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fsevents/node_modules/tar": { - "version": "4.4.13", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/fsevents/node_modules/util-deprecate": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true - }, - "node_modules/fsevents/node_modules/wide-align": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/fsevents/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/fsevents/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "optional": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-modules/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", - "dev": true - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "node_modules/os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true - }, - "node_modules/parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "dependencies": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "dev": true, - "dependencies": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - } - }, - "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/serialize-javascript": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.0.0.tgz", - "integrity": "sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw==", - "dev": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "dependencies": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.2.tgz", - "integrity": "sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/uglifyjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", - "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", - "dev": true, - "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - }, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "node_modules/typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", - "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.0.tgz", - "integrity": "sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ==", - "dev": true, - "dependencies": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglifyjs-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "source-map": "^0.6.1", - "uglify-js": "^3.6.0", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - } - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/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, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", - "dev": true - }, - "node_modules/vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", - "dev": true - }, - "node_modules/watchpack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", - "dev": true, - "dependencies": { - "chokidar": "^2.1.8", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "node_modules/webpack": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.38.0.tgz", - "integrity": "sha512-lbuFsVOq8PZY+1Ytz/mYOvYOo+d4IJ31hHk/7iyoeWtwN33V+5HYotSH+UIb9tq914ey0Hot7z6HugD+je3sWw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", - "dev": true, - "dependencies": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/webpack-cli/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "node_modules/yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - }, - "node_modules/yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "node_modules/yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - }, "dependencies": { "@babel/code-frame": { "version": "7.5.5", @@ -5669,9 +151,9 @@ "dev": true }, "@types/ragemp-c": { - "version": "git+ssh://git@github.com/kookroach/types-ragemp-c.git#849cf51f85066c786ad3c563872ae74d9af2dd7c", - "dev": true, - "from": "@types/ragemp-c@github:kookroach/types-ragemp-c#v1.0" + "version": "github:kookroach/types-ragemp-c#849cf51f85066c786ad3c563872ae74d9af2dd7c", + "from": "github:kookroach/types-ragemp-c#v1.0", + "dev": true }, "@webassemblyjs/ast": { "version": "1.8.5", @@ -7199,554 +1681,14 @@ "dev": true }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, "optional": true, "requires": { "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } + "nan": "^2.12.1" } }, "get-caller-file": { @@ -8504,9 +2446,9 @@ "dev": true }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "dev": true, "optional": true }, @@ -9468,15 +3410,6 @@ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -9488,6 +3421,15 @@ "strip-ansi": "^5.1.0" } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", From dcf5e4eb2d67b61998c2eca38cbc1049500404e7 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 23:46:40 +0200 Subject: [PATCH 060/111] try fix clientside error --- ReallifeGamemode.Client/core/rage-mp/game.ts | 2 +- ReallifeGamemode.Client/inputhelper/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/game.ts b/ReallifeGamemode.Client/core/rage-mp/game.ts index 5094ba9f..62c9661a 100644 --- a/ReallifeGamemode.Client/core/rage-mp/game.ts +++ b/ReallifeGamemode.Client/core/rage-mp/game.ts @@ -11,7 +11,7 @@ export default class RageGame implements IGame { ui: IUi = new RageUi; wait(ms: number): void { - mp.game.wait(ms); + mp.game.waitAsync(ms); } disableDefaultEngineBehaviour(): void { diff --git a/ReallifeGamemode.Client/inputhelper/index.ts b/ReallifeGamemode.Client/inputhelper/index.ts index ce216572..5898bd5c 100644 --- a/ReallifeGamemode.Client/inputhelper/index.ts +++ b/ReallifeGamemode.Client/inputhelper/index.ts @@ -69,7 +69,7 @@ export default class InputHelper { private valueGetter(): Promise { return new Promise(resolve => { while (this.value === undefined) { - mp.game.wait(1); + mp.game.waitAsync(1); } resolve(this.value); }); From cb68bcaf531d06872bd043ae841640ae8ff2a285 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 4 Apr 2021 23:56:35 +0200 Subject: [PATCH 061/111] try fix error --- ReallifeGamemode.Client/Gui/blips.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 12a415df..54bb8e21 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -7,8 +7,8 @@ export default function playerBlips() { - mp.events.add("entityStreamIn", (entity) => { - mp.game.wait(500); + mp.events.add("entityStreamIn", async (entity) => { + await mp.game.waitAsync(500); if (entity.type === "player") { var entityMp = entity; let color = parseInt(entity.getVariable("blipColor")); From 70c25598ff036804cd9419d175c1ef701ef66b87 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:03:00 +0200 Subject: [PATCH 062/111] ga fix --- ReallifeGamemode.Server/Commands/FactionCommands.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index bac65955..724fc33e 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -51,7 +51,7 @@ namespace ReallifeGamemode.Server.Commands ChatService.NotAuthorized(player); return; } - if (f.Name == "Ballas" || f.Name == "Grove" || user.IsAdmin(AdminLevel.ADMIN)) + if (f?.Name == "Ballas" || f?.Name == "Grove" || user.IsAdmin(AdminLevel.ADMIN)) { message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); From 7b130c6e15b7d5c1111d6ce4ae11c03223e3afd1 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:06:52 +0200 Subject: [PATCH 063/111] ga fix --- ReallifeGamemode.Server/Commands/FactionCommands.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 724fc33e..a41601a1 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -57,7 +57,7 @@ namespace ReallifeGamemode.Server.Commands string rank = string.Empty; - if(f.Name == "Ballas" || f.Name == "Grove") + if(f?.Name == "Ballas" || f?.Name == "Grove") { rank = player.GetUser().GetFactionRank().RankName; } From 37555aacd35af892c64885cdc9096fe316400b37 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:16:06 +0200 Subject: [PATCH 064/111] blips und nametag color --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- .../core/rage-mp/entities.ts | 1 - .../Commands/AdminCommands.cs | 22 +++++++++---------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 54bb8e21..18b5c524 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -27,7 +27,7 @@ export default function playerBlips() { mp.events.add("entityStreamOut", (entity) => { if (entity.type === "player") { - entity.blip = null; + //entity.blip = null; } }); diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 61e522d8..df59090c 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -73,7 +73,6 @@ class RagePlayer extends RageEntity implements IPlayer { get nametagColor(): number { var color = this.player.getVariable("nameTagColor"); - game.ui.sendChatMessage(`player = ${this.player.name} - color = ${color}`); if (!color) return 0; return color; diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index c11dcb65..ac533405 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1493,30 +1493,30 @@ namespace ReallifeGamemode.Server.Commands { case null: target.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 0: - player.SetSharedData("nameTagColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 8: - player.SetSharedData("nameTagColor", 8); + target.SetSharedData("nameTagColor", 8); break; case 7: - player.SetSharedData("nameTagColor", 7); + target.SetSharedData("nameTagColor", 7); break; case 4: - player.SetSharedData("nameTagColor", 4); + target.SetSharedData("nameTagColor", 4); break; case 9: - player.SetSharedData("nameTagColor", 9); + target.SetSharedData("nameTagColor", 9); break; } target.TriggerEvent("jailTime", 0); - if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); + if (targetUser.FactionId != null) target.SetSharedData("nameTagColor", targetUser.FactionId); targetUser.Wanteds = 0; dbContext.SaveChanges(); } @@ -2452,7 +2452,7 @@ namespace ReallifeGamemode.Server.Commands { case null: target.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 0: @@ -2475,7 +2475,7 @@ namespace ReallifeGamemode.Server.Commands break; } - if (u.FactionId != null) player.SetSharedData("nameTagColor", u.FactionId); + if (u.FactionId != null) target.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } @@ -2522,7 +2522,7 @@ namespace ReallifeGamemode.Server.Commands { case null: target.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 8: @@ -2540,7 +2540,7 @@ namespace ReallifeGamemode.Server.Commands target.SetSharedData("blipColor", 25); break; } - if (u.FactionId != null) player.SetSharedData("nameTagColor", u.FactionId); + if (u.FactionId != null) target.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } From 9809085678bcdf2495ce517baff4dc549f66d8e9 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:32:00 +0200 Subject: [PATCH 065/111] disable db logs --- ReallifeGamemode.Server.Core/Commands/Command.cs | 2 +- ReallifeGamemode.Server.Core/Main.cs | 2 +- ReallifeGamemode.Server.Core/Script.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Server.Core/Commands/Command.cs b/ReallifeGamemode.Server.Core/Commands/Command.cs index 92966605..ecb91b54 100644 --- a/ReallifeGamemode.Server.Core/Commands/Command.cs +++ b/ReallifeGamemode.Server.Core/Commands/Command.cs @@ -23,6 +23,6 @@ namespace ReallifeGamemode.Server.Core.Commands Log = LogManager.GetLogger(this.GetType()); } - protected DatabaseContext GetDbContext(bool useLoggerFactory = true) => Main.GetDbContext(useLoggerFactory); + protected DatabaseContext GetDbContext(bool useLoggerFactory = false) => Main.GetDbContext(useLoggerFactory); } } diff --git a/ReallifeGamemode.Server.Core/Main.cs b/ReallifeGamemode.Server.Core/Main.cs index 128b4d58..bceec473 100644 --- a/ReallifeGamemode.Server.Core/Main.cs +++ b/ReallifeGamemode.Server.Core/Main.cs @@ -64,7 +64,7 @@ namespace ReallifeGamemode.Server.Core } } - public static DatabaseContext GetDbContext(bool useLoggerFactory = true) + public static DatabaseContext GetDbContext(bool useLoggerFactory = false) { return new DatabaseContext(useLoggerFactory); } diff --git a/ReallifeGamemode.Server.Core/Script.cs b/ReallifeGamemode.Server.Core/Script.cs index 5d87f5d2..c3474a38 100644 --- a/ReallifeGamemode.Server.Core/Script.cs +++ b/ReallifeGamemode.Server.Core/Script.cs @@ -21,6 +21,6 @@ namespace ReallifeGamemode.Server.Core Log = LogManager.GetLogger(GetType()); } - protected DatabaseContext GetDbContext(bool useLoggerFactory = true) => Main.GetDbContext(useLoggerFactory); + protected DatabaseContext GetDbContext(bool useLoggerFactory = false) => Main.GetDbContext(useLoggerFactory); } } From e30f8710d6bf692db86c28c907fb7a6a4866eff8 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:37:45 +0200 Subject: [PATCH 066/111] nametags range 40 --- ReallifeGamemode.Client/Gui/nametags.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index 30ab2b05..9f434607 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -2,7 +2,7 @@ import game from ".."; -const maxDistance = 25 * 25; +const maxDistance = 40 * 40; const width = 0.03; const height = 0.0065; const border = 0.001; From d9c39638c6871d1ad459d0417644ec400cbf09be Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 00:45:44 +0200 Subject: [PATCH 067/111] blips test --- ReallifeGamemode.Client/Gui/blips.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 12a415df..e9f2ad95 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -8,12 +8,11 @@ export default function playerBlips() { mp.events.add("entityStreamIn", (entity) => { - mp.game.wait(500); + mp.game.wait(100); if (entity.type === "player") { - var entityMp = entity; let color = parseInt(entity.getVariable("blipColor")); - entity.createBlip(1); - var blip = entity.blip; + if (entity.blip == 0) entity.createBlip(1); + entity.setBlipColor(isNaN(color) ? 0 : color); mp.game.invoke(Natives.SET_BLIP_CATEGORY, entity.blip, 7); @@ -23,20 +22,12 @@ export default function playerBlips() { } }); - - - mp.events.add("entityStreamOut", (entity) => { - if (entity.type === "player") { - entity.blip = null; - } - }); + mp.events.addDataHandler("blipColor", (entity, value) => { if (entity.type === "player") { - //mp.gui.chat.push("Setting Blip color..."); let color = parseInt(value); entity.setBlipColor(isNaN(color) ? 0 : color); - // mp.gui.chat.push("Player blip color was set."); } }); } \ No newline at end of file From d463dadbfba74883144cd696a21b40ce17ff9fc7 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:48:23 +0200 Subject: [PATCH 068/111] ballas und grove nametag angepasst --- ReallifeGamemode.Client/Gui/nametags.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts index 9f434607..c780693d 100644 --- a/ReallifeGamemode.Client/Gui/nametags.ts +++ b/ReallifeGamemode.Client/Gui/nametags.ts @@ -22,8 +22,8 @@ const colors = [ { id: 4, color: [255, 180, 0, alpha] }, //trucker { id: 5, color: [255, 255, 255, alpha] }, //terroristen { id: 6, color: [255, 255, 255, alpha] }, //hitman - { id: 7, color: [0, 54, 0, alpha] }, //grove - { id: 8, color: [171, 0, 207, alpha] }, //ballas + { id: 7, color: [0, 64, 0, alpha] }, //grove + { id: 8, color: [171, 0, 150, alpha] }, //ballas { id: 9, color: [0, 166, 133, alpha] }, //news ]; From f17df0103c24436dab8033b476086331bab28e42 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 00:49:15 +0200 Subject: [PATCH 069/111] push --- ReallifeGamemode.Client/Gui/blips.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index e9f2ad95..c465c548 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -7,8 +7,8 @@ export default function playerBlips() { - mp.events.add("entityStreamIn", (entity) => { - mp.game.wait(100); + mp.events.add("entityStreamIn", async (entity) => { + await mp.game.waitAsync(100); if (entity.type === "player") { let color = parseInt(entity.getVariable("blipColor")); if (entity.blip == 0) entity.createBlip(1); From 535b6155fec636a2864b225e675cff8d3a6f2c8c Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 00:55:03 +0200 Subject: [PATCH 070/111] =?UTF-8?q?Pilot=202=20fix,=20M=C3=BCllsacklimit?= =?UTF-8?q?=20auf=2040?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Server/Events/Key.cs | 10 +++------- ReallifeGamemode.Server/Job/RefuseCollectorJob.cs | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index ce81bd1f..1ae3c9c5 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -560,7 +560,8 @@ namespace ReallifeGamemode.Server.Events player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Fahrzeuge und starte den Motor mit der Taste 'N'."); return; } - } else if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3) + } + else if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3) { if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill >= 0) { @@ -578,11 +579,6 @@ namespace ReallifeGamemode.Server.Events return; } } - else - { - player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig."); - return; - } if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300) { if (job.GetUsersInJob().Contains(player)) @@ -598,7 +594,7 @@ namespace ReallifeGamemode.Server.Events player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Flugzeuge und starte den Motor mit der Taste 'N'."); return; } - } + } else { player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig."); diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index bf091a09..252e5d36 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Job public override bool NeedVehicleToStart => false; - const int MAX_BAG = 50; + const int MAX_BAG = 40; public RefuseCollectorJob() { From 3f134acd0923467babb70de9fc9c1f66d0778ac5 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 00:56:51 +0200 Subject: [PATCH 071/111] wait immer async --- ReallifeGamemode.Client/core/rage-mp/game.ts | 4 ++-- ReallifeGamemode.Client/game.ts | 2 +- ReallifeGamemode.Client/vehiclesync/vehiclesync.ts | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/game.ts b/ReallifeGamemode.Client/core/rage-mp/game.ts index 62c9661a..dc4e1514 100644 --- a/ReallifeGamemode.Client/core/rage-mp/game.ts +++ b/ReallifeGamemode.Client/core/rage-mp/game.ts @@ -10,8 +10,8 @@ export default class RageGame implements IGame { events: IEvents = new RageEvents; ui: IUi = new RageUi; - wait(ms: number): void { - mp.game.waitAsync(ms); + async wait(ms: number): Promise { + await mp.game.waitAsync(ms); } disableDefaultEngineBehaviour(): void { diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 42a0d1ed..84d9f67c 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -1,5 +1,5 @@ interface IGame { - wait(ms: number); + wait(ms: number): Promise; events: IEvents; ui: IUi; diff --git a/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts b/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts index 2cd88c2e..351b723e 100644 --- a/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts +++ b/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts @@ -10,9 +10,9 @@ game.events.add('SERVER:Vehicle:UpdateData', (vehId, dataStr) => { setVehicleData(vehicle, data); }); -game.events.onPlayerEnterVehicle((vehicle, seat) => { +game.events.onPlayerEnterVehicle(async (vehicle, seat) => { while (!game.players.local.inVehicle) { - game.wait(0); + await game.wait(0); } if (vehicle) { @@ -22,11 +22,11 @@ game.events.onPlayerEnterVehicle((vehicle, seat) => { } }); -game.events.onPlayerExitVehicle(() => { +game.events.onPlayerExitVehicle(async () => { var veh = game.players.local.vehicle; while (game.players.local.inVehicle) { - game.wait(0); + await game.wait(0); } if (veh) { From 4679779414f33cb89a7f56505e3c50c42eb9b635 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:14:51 +0200 Subject: [PATCH 072/111] player Blips --- ReallifeGamemode.Client/Gui/blips.ts | 38 ++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index c465c548..b9f591ef 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -7,6 +7,43 @@ export default function playerBlips() { + + var playerBlipMap: Map; + + mp.events.add("render", async () => { + if (!playerBlipMap) playerBlipMap = new Map(); + + mp.players.forEachInStreamRange( + (player) => { + if (!playerBlipMap.has(player)) { + let pBlip = mp.blips.new(1, player.position); + + let color = player.getVariable("blipColor"); + pBlip.setColour(isNaN(color) ? 0 : color); + + mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); + mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, pBlip, true); + mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); + mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8); + playerBlipMap.set(player, pBlip); + } + let pBlip = playerBlipMap.get(player); + pBlip.setPosition(player.position.x, player.position.y, player.position.z); + pBlip.setRotation(player.heading); + }); + }); + + mp.events.add("entityStreamOut", (entity) => { + if (entity.type === "player") { + if (playerBlipMap.has(entity)) { + var pBlip = playerBlipMap.get(entity); + pBlip.destroy(); + playerBlipMap.delete(entity); + } + } + }); + + /* mp.events.add("entityStreamIn", async (entity) => { await mp.game.waitAsync(100); if (entity.type === "player") { @@ -22,6 +59,7 @@ export default function playerBlips() { } }); + */ mp.events.addDataHandler("blipColor", (entity, value) => { From a25cf16167d2de0ebd111138baee77ec7ce68416 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 01:18:27 +0200 Subject: [PATCH 073/111] Fix setSharedData --- .../Commands/AdminCommands.cs | 31 ++++++++++++++----- .../Commands/FactionCommands.cs | 14 ++++++--- ReallifeGamemode.Server/Events/Key.cs | 1 - .../Managers/InteractionManager.cs | 5 ++- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index ac533405..cd411e0e 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -309,24 +309,28 @@ namespace ReallifeGamemode.Server.Commands break; case 0: player.SetSharedData("blipColor", 0); + player.SetSharedData("nameTagColor", 0); break; case 8: player.SetSharedData("blipColor", 83); + player.SetSharedData("nameTagColor", 8); break; case 7: player.SetSharedData("blipColor", 52); + player.SetSharedData("nameTagColor", 7); break; case 4: player.SetSharedData("blipColor", 5); + player.SetSharedData("nameTagColor", 4); break; case 9: player.SetSharedData("blipColor", 25); + player.SetSharedData("nameTagColor", 9); break; } player.SetSharedData("nameTagColor", targetUser.FactionId); - if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); } } @@ -1495,28 +1499,30 @@ namespace ReallifeGamemode.Server.Commands target.SetSharedData("blipColor", 0); target.SetSharedData("nameTagColor", 0); break; - case 0: + target.SetSharedData("blipColor", 0); target.SetSharedData("nameTagColor", 0); break; - case 8: + target.SetSharedData("blipColor", 83); target.SetSharedData("nameTagColor", 8); break; case 7: + target.SetSharedData("blipColor", 52); target.SetSharedData("nameTagColor", 7); break; case 4: + target.SetSharedData("blipColor", 5); target.SetSharedData("nameTagColor", 4); break; case 9: + target.SetSharedData("blipColor", 25); target.SetSharedData("nameTagColor", 9); break; } target.TriggerEvent("jailTime", 0); - if (targetUser.FactionId != null) target.SetSharedData("nameTagColor", targetUser.FactionId); targetUser.Wanteds = 0; dbContext.SaveChanges(); } @@ -2457,25 +2463,29 @@ namespace ReallifeGamemode.Server.Commands case 0: target.SetSharedData("blipColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 8: target.SetSharedData("blipColor", 83); + target.SetSharedData("nameTagColor", 8); break; case 7: target.SetSharedData("blipColor", 52); + target.SetSharedData("nameTagColor", 7); break; case 4: target.SetSharedData("blipColor", 5); + target.SetSharedData("nameTagColor", 4); break; case 9: target.SetSharedData("blipColor", 25); - + target.SetSharedData("nameTagColor", 9); + break; } - if (u.FactionId != null) target.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } @@ -2524,23 +2534,30 @@ namespace ReallifeGamemode.Server.Commands target.SetSharedData("blipColor", 0); target.SetSharedData("nameTagColor", 0); break; + case 0: + target.SetSharedData("blipColor", 0); + target.SetSharedData("nameTagColor", 0); + break; case 8: target.SetSharedData("blipColor", 83); + target.SetSharedData("nameTagColor", 8); break; case 7: target.SetSharedData("blipColor", 52); + target.SetSharedData("nameTagColor", 7); break; case 4: target.SetSharedData("blipColor", 5); + target.SetSharedData("nameTagColor", 4); break; case 9: target.SetSharedData("blipColor", 25); + target.SetSharedData("nameTagColor", 9); break; } - if (u.FactionId != null) target.SetSharedData("nameTagColor", u.FactionId); dbContext.SaveChanges(); } } diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index a41601a1..b7e32058 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -285,7 +285,7 @@ namespace ReallifeGamemode.Server.Commands } using var dbContext = new DatabaseContext(); - var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player); + var nearPlayers = NAPI.Player.GetPlayersInRadiusOfPlayer(4, player); var deadPlayer = nearPlayers.Where(i => i.GetData("isDead") == true).FirstOrDefault(); if (player == deadPlayer) { @@ -486,31 +486,35 @@ namespace ReallifeGamemode.Server.Commands switch (targetUser.FactionId) { case null: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); + target.SetSharedData("blipColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 0: - player.SetSharedData("blipColor", 0); + target.SetSharedData("blipColor", 0); + target.SetSharedData("nameTagColor", 0); break; case 8: target.SetSharedData("blipColor", 83); + target.SetSharedData("nameTagColor", 8); break; case 7: target.SetSharedData("blipColor", 52); + target.SetSharedData("nameTagColor", 7); break; case 4: target.SetSharedData("blipColor", 5); + target.SetSharedData("nameTagColor", 4); break; case 9: target.SetSharedData("blipColor", 25); + target.SetSharedData("nameTagColor", 9); break; } target.TriggerEvent("jailTime", 0); - if (targetUser.FactionId != null) player.SetSharedData("nameTagColor", targetUser.FactionId); targetUser.Wanteds = 0; dbContext.SaveChanges(); } diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 1ae3c9c5..f3f1777d 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -595,7 +595,6 @@ namespace ReallifeGamemode.Server.Events return; } } - else { player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig."); return; diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 2ad64926..cc556b6f 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -78,20 +78,23 @@ namespace ReallifeGamemode.Server.Managers case 8: player.SetSharedData("blipColor", 83); + player.SetSharedData("nameTagColor", 8); break; case 7: player.SetSharedData("blipColor", 52); + player.SetSharedData("nameTagColor", 7); break; case 4: player.SetSharedData("blipColor", 5); + player.SetSharedData("nameTagColor", 4); break; case 9: player.SetSharedData("blipColor", 25); + player.SetSharedData("nameTagColor", 9); break; } - if (own.FactionId != null) player.SetSharedData("nameTagColor", own.FactionId); dbContext.SaveChanges(); } } From ed0b1a8f3984286c45ebe59a2769ea82b4c020d7 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:19:34 +0200 Subject: [PATCH 074/111] push --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index b9f591ef..41a62fbd 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -34,7 +34,7 @@ export default function playerBlips() { }); mp.events.add("entityStreamOut", (entity) => { - if (entity.type === "player") { + if (playerBlipMap && entity.type === "player") { if (playerBlipMap.has(entity)) { var pBlip = playerBlipMap.get(entity); pBlip.destroy(); From 458c817284ceba617cf805db136c483d02c93a30 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:24:14 +0200 Subject: [PATCH 075/111] xdd --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 41a62fbd..1827cb07 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -10,7 +10,7 @@ export default function playerBlips() { var playerBlipMap: Map; - mp.events.add("render", async () => { + mp.events.add("render", () => { if (!playerBlipMap) playerBlipMap = new Map(); mp.players.forEachInStreamRange( From 9a4cbb48cd9b868fffe1b6941474e7cd5a45cb78 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:31:47 +0200 Subject: [PATCH 076/111] Kreiselficker --- ReallifeGamemode.Client/Gui/blips.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 1827cb07..9d217b75 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -1,4 +1,6 @@ -const Natives = { +import { read } from "fs"; + +const Natives = { SET_BLIP_CATEGORY: RageEnums.Natives.Ui.SET_BLIP_CATEGORY, SHOW_HEADING_INDICATOR_ON_BLIP: RageEnums.Natives.Ui.SHOW_HEADING_INDICATOR_ON_BLIP, SET_BLIP_AS_SHORT_RANGE: RageEnums.Natives.Ui.SET_BLIP_AS_SHORT_RANGE, @@ -9,8 +11,10 @@ export default function playerBlips() { var playerBlipMap: Map; + var ready = false; - mp.events.add("render", () => { + setInterval(() => { + if (!ready) return; if (!playerBlipMap) playerBlipMap = new Map(); mp.players.forEachInStreamRange( @@ -31,6 +35,10 @@ export default function playerBlips() { pBlip.setPosition(player.position.x, player.position.y, player.position.z); pBlip.setRotation(player.heading); }); + }, 100); + + mp.events.add("playerReady", () => { + ready = true; }); mp.events.add("entityStreamOut", (entity) => { From 873f7808f51ef657b5362910f94fd42d42ce493d Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:37:44 +0200 Subject: [PATCH 077/111] Try Fix --- ReallifeGamemode.Client/Gui/blips.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 9d217b75..34c12e1e 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -17,7 +17,7 @@ export default function playerBlips() { if (!ready) return; if (!playerBlipMap) playerBlipMap = new Map(); - mp.players.forEachInStreamRange( + mp.players.forEachInDimension(mp.players.local.position, 400, mp.players.local.dimension, (player) => { if (!playerBlipMap.has(player)) { let pBlip = mp.blips.new(1, player.position); @@ -25,10 +25,7 @@ export default function playerBlips() { let color = player.getVariable("blipColor"); pBlip.setColour(isNaN(color) ? 0 : color); - mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); - mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, pBlip, true); - mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); - mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8); + playerBlipMap.set(player, pBlip); } let pBlip = playerBlipMap.get(player); From 51ed73b6869e4ad7db1e9be39dfcd734240d8c44 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:44:04 +0200 Subject: [PATCH 078/111] test --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 34c12e1e..519c65ec 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -17,7 +17,7 @@ export default function playerBlips() { if (!ready) return; if (!playerBlipMap) playerBlipMap = new Map(); - mp.players.forEachInDimension(mp.players.local.position, 400, mp.players.local.dimension, + mp.players.forEachInStreamRange( (player) => { if (!playerBlipMap.has(player)) { let pBlip = mp.blips.new(1, player.position); From 64482871051d65dd37683b04eb4050f25557798c Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:47:26 +0200 Subject: [PATCH 079/111] fix heading --- ReallifeGamemode.Client/Gui/blips.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 519c65ec..9cafced3 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -25,12 +25,15 @@ export default function playerBlips() { let color = player.getVariable("blipColor"); pBlip.setColour(isNaN(color) ? 0 : color); - + mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); + mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, pBlip, true); + mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); + mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8); playerBlipMap.set(player, pBlip); } let pBlip = playerBlipMap.get(player); pBlip.setPosition(player.position.x, player.position.y, player.position.z); - pBlip.setRotation(player.heading); + //pBlip.setRotation(player.heading); }); }, 100); From d31b2704128416691999b8c35e57c03c336f8e56 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:54:26 +0200 Subject: [PATCH 080/111] fix blips --- ReallifeGamemode.Client/Gui/blips.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 9cafced3..2bcbddb5 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -19,19 +19,21 @@ export default function playerBlips() { mp.players.forEachInStreamRange( (player) => { + if (mp.players.local == player) + return; + if (mp.players.local.dist(player.position) > 400) + return; if (!playerBlipMap.has(player)) { let pBlip = mp.blips.new(1, player.position); - let color = player.getVariable("blipColor"); - pBlip.setColour(isNaN(color) ? 0 : color); - mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); - mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, pBlip, true); mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8); playerBlipMap.set(player, pBlip); } let pBlip = playerBlipMap.get(player); + let color = player.getVariable("blipColor"); + pBlip.setColour(isNaN(color) ? 0 : color); pBlip.setPosition(player.position.x, player.position.y, player.position.z); //pBlip.setRotation(player.heading); }); From 01f92389c10e9d49f639eca1b988c95c52dff4cb Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 01:55:14 +0200 Subject: [PATCH 081/111] blip time --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 2bcbddb5..eaaa3df1 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -37,7 +37,7 @@ export default function playerBlips() { pBlip.setPosition(player.position.x, player.position.y, player.position.z); //pBlip.setRotation(player.heading); }); - }, 100); + }, 50); mp.events.add("playerReady", () => { ready = true; From 0b4bd85ea36a7f3063cca2a3c59221854f6cc6c1 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 02:01:10 +0200 Subject: [PATCH 082/111] try 2 --- ReallifeGamemode.Client/Gui/blips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index eaaa3df1..9288ea96 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -21,7 +21,7 @@ export default function playerBlips() { (player) => { if (mp.players.local == player) return; - if (mp.players.local.dist(player.position) > 400) + if (mp.players.local.position.subtract(player.position).length() > 400) return; if (!playerBlipMap.has(player)) { let pBlip = mp.blips.new(1, player.position); From c73f2e318ee52f7743dc318bccc07a2661e01b19 Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 02:05:26 +0200 Subject: [PATCH 083/111] fix range, dimension and drawdistance --- ReallifeGamemode.Client/Gui/blips.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 9288ea96..971ead03 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -21,10 +21,13 @@ export default function playerBlips() { (player) => { if (mp.players.local == player) return; - if (mp.players.local.position.subtract(player.position).length() > 400) - return; + if (!playerBlipMap.has(player)) { - let pBlip = mp.blips.new(1, player.position); + let pBlip = mp.blips.new(1, player.position, { + shortRange: true, + dimension: mp.players.local.dimension, + drawDistance: 300 + }); mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); From 47aa0b50ab43eafb8c51162b508052e82305fdae Mon Sep 17 00:00:00 2001 From: kookroach <62265045+kookroach@users.noreply.github.com> Date: Mon, 5 Apr 2021 02:11:34 +0200 Subject: [PATCH 084/111] some blip refinements --- ReallifeGamemode.Client/Gui/blips.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 971ead03..dd212fcb 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -1,5 +1,4 @@ -import { read } from "fs"; - + const Natives = { SET_BLIP_CATEGORY: RageEnums.Natives.Ui.SET_BLIP_CATEGORY, SHOW_HEADING_INDICATOR_ON_BLIP: RageEnums.Natives.Ui.SHOW_HEADING_INDICATOR_ON_BLIP, @@ -29,9 +28,8 @@ export default function playerBlips() { drawDistance: 300 }); - mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7); - mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true); - mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8); + pBlip.setCategory(7); + pBlip.setDisplay(8); playerBlipMap.set(player, pBlip); } let pBlip = playerBlipMap.get(player); From d214946ea98123453199485c6ab87c77e01be971 Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 02:18:58 +0200 Subject: [PATCH 085/111] Fix Colors / Blips --- ReallifeGamemode.Server/Events/Key.cs | 4 ++-- ReallifeGamemode.Server/Extensions/ClientExtension.cs | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index f3f1777d..d9ff4af9 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -290,7 +290,7 @@ namespace ReallifeGamemode.Server.Events //nameTagColor = new Color(28, 134, 238); //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 })); player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 38); + player.SetSharedData("blipColor", 26); break; //Medic @@ -305,7 +305,7 @@ namespace ReallifeGamemode.Server.Events case 3: //nameTagColor = new Color(173, 0, 118); player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 72); + player.SetSharedData("blipColor", 38); player.SetAccessories(2, 2, 0); break; } diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 97322445..765d3f05 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -131,6 +131,7 @@ namespace ReallifeGamemode.Server.Extensions dbUser.Wanteds = newWanteds; dbContext.SaveChanges(); } + user.Player.SetSharedData("nameTagColor", -1); user.Player.SetSharedData("blipColor", 64); ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : "")); ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds); From 5e4a821d6e071156849c1853259c89dc797f4eeb Mon Sep 17 00:00:00 2001 From: VegaZ Date: Mon, 5 Apr 2021 02:23:32 +0200 Subject: [PATCH 086/111] Fix Color --- ReallifeGamemode.Server/Events/Key.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index d9ff4af9..4891525d 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -290,7 +290,7 @@ namespace ReallifeGamemode.Server.Events //nameTagColor = new Color(28, 134, 238); //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 })); player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 26); + player.SetSharedData("blipColor", 38); break; //Medic @@ -305,7 +305,7 @@ namespace ReallifeGamemode.Server.Events case 3: //nameTagColor = new Color(173, 0, 118); player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 38); + player.SetSharedData("blipColor", 54); player.SetAccessories(2, 2, 0); break; } From 94b0ab73e82c7d63355b7d5e0dd50f10a658bbad Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 02:06:39 +0200 Subject: [PATCH 087/111] fix error in taxi updatefare --- ReallifeGamemode.Server/Job/TaxiDriverJob.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ReallifeGamemode.Server/Job/TaxiDriverJob.cs b/ReallifeGamemode.Server/Job/TaxiDriverJob.cs index 0b4f9b12..db034056 100644 --- a/ReallifeGamemode.Server/Job/TaxiDriverJob.cs +++ b/ReallifeGamemode.Server/Job/TaxiDriverJob.cs @@ -123,9 +123,15 @@ namespace ReallifeGamemode.Server.Job public static void UpdateFare() { + foreach (var player in GetPlayerInJob()) { User u = player.GetUser(); + if(u == null) + { + continue; + } + if (u.JobId != 1) return; if (!player.HasData("hasPassager")) { player.SetData("hasPassager", false); continue; } int playerId = player.GetUser().Id; From 8978c4d53326c6084e22ea5299d467d758344344 Mon Sep 17 00:00:00 2001 From: hydrant Date: Mon, 5 Apr 2021 02:25:47 +0200 Subject: [PATCH 088/111] chat test --- .../ReallifeGamemode.Client.csproj | 1 + .../chat/fonts/CenturyGothicRegular.ttf | Bin 0 -> 137568 bytes .../assets/chat/fonts/CodeProLC.otf | Bin 0 -> 66480 bytes .../assets/chat/index.html | 14 ++ .../assets/chat/jquery-1.11.3.min.js | 5 + .../assets/chat/js/main.js | 189 ++++++++++++++++++ .../assets/chat/style/checkbox.css | 1 + .../assets/chat/style/main.css | 68 +++++++ ReallifeGamemode.Client/index.ts | 6 + 9 files changed, 284 insertions(+) create mode 100644 ReallifeGamemode.Client/assets/chat/fonts/CenturyGothicRegular.ttf create mode 100644 ReallifeGamemode.Client/assets/chat/fonts/CodeProLC.otf create mode 100644 ReallifeGamemode.Client/assets/chat/index.html create mode 100644 ReallifeGamemode.Client/assets/chat/jquery-1.11.3.min.js create mode 100644 ReallifeGamemode.Client/assets/chat/js/main.js create mode 100644 ReallifeGamemode.Client/assets/chat/style/checkbox.css create mode 100644 ReallifeGamemode.Client/assets/chat/style/main.css diff --git a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj index 5126aeaf..a51b8284 100644 --- a/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj +++ b/ReallifeGamemode.Client/ReallifeGamemode.Client.csproj @@ -33,6 +33,7 @@ + diff --git a/ReallifeGamemode.Client/assets/chat/fonts/CenturyGothicRegular.ttf b/ReallifeGamemode.Client/assets/chat/fonts/CenturyGothicRegular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c60a324123eaaeab58c400c139bcabbc6d0d2a9f GIT binary patch literal 137568 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

dS4PFcBtg$b<;#1w(EaMhFstI$Qe2J6~q4 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 literal 0 HcmV?d00001 diff --git a/ReallifeGamemode.Client/assets/chat/fonts/CodeProLC.otf b/ReallifeGamemode.Client/assets/chat/fonts/CodeProLC.otf new file mode 100644 index 0000000000000000000000000000000000000000..13a08a4617f0224ac4e018d96871d83bb793063e GIT binary patch literal 66480 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 UH$U>?M + + + + + + +

+ + + + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/chat/jquery-1.11.3.min.js b/ReallifeGamemode.Client/assets/chat/jquery-1.11.3.min.js new file mode 100644 index 00000000..0f60b7bd --- /dev/null +++ b/ReallifeGamemode.Client/assets/chat/jquery-1.11.3.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("