diff --git a/README.md b/README.md index 101de0e..52736ce 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,13 @@ The UI code needs to be built using Webpack. Run `npx webpack` to do so, or `npx Run `npm run dev` to run the app. +### Logging and replaying telemetry + +Use environment variables to log or replay telemetry files. + +`STUART_WRITE_LOG=./telemetry.log npm run dev` to write telemetry data to a file +`STUART_READ_LOG=./telemetry.log npm run dev` to read telemetry data in from a file. (will not attach to iRacing) + ## Issues with Node Module Version? Run `.\node_modules\.bin\electron-rebuild.cmd` and it should fix it. \ No newline at end of file diff --git a/app/api-bridge.js b/app/api-bridge.js index 1ad865f..e6570d3 100644 --- a/app/api-bridge.js +++ b/app/api-bridge.js @@ -3,45 +3,45 @@ const { contextBridge, ipcRenderer } = require('electron'); // Expose protected methods that allow the renderer process to use // the ipcRenderer without exposing the entire object contextBridge.exposeInMainWorld( - "api", { - receive: (channel, func) => { - ipcRenderer.on(channel, (event, ...args) => func(...args)); - }, - replay: (carNumber, sessionNum, sessionTime) => { - ipcRenderer.send('replay', { carNumber, sessionNum, sessionTime }) - }, - focusCamera: (carNumber) => { - ipcRenderer.send('focus-camera', { carNumber }); - }, - jumpToTime: (sessionNum, sessionTime) => { - ipcRenderer.send('jump-to-time', { sessionNum, sessionTime }); - }, - acknowledgeIncident: (incidentId) => { - ipcRenderer.send('acknowledge-incident', { incidentId }); - }, - dismissIncident: (incidentId) => { - ipcRenderer.send('dismiss-incident', { incidentId }); - }, - unresolveIncident: (incidentId) => { - ipcRenderer.send('unresolve-incident', { incidentId }); - }, - connect: () => { - ipcRenderer.send('connect-window', {}); - }, - clearIncidents: () => { - ipcRenderer.send('clear-incidents', {}); - }, - pauseReplay: () => { - ipcRenderer.send('replay-pause', {}); - }, - playReplay: () => { - ipcRenderer.send('replay-play', {}); - }, - liveReplay: () => { - ipcRenderer.send('replay-live', {}); - } + "api", + { + // returns a function that can be used to "unsubscribe" from this event + receive: (channel, func) => { + function listener(event, ...args) { + func(...args); + } + ipcRenderer.on(channel, listener); -} + return () => { ipcRenderer.removeListener(listener);} + }, + replay: (carNumber, sessionNum, sessionTime) => { + ipcRenderer.send('replay', { carNumber, sessionNum, sessionTime }) + }, + focusCamera: (carNumber, cameraGroup) => { + ipcRenderer.send('focus-camera', { carNumber, cameraGroup }); + }, + jumpToTime: (sessionNum, sessionTime) => { + ipcRenderer.send('jump-to-time', { sessionNum, sessionTime }); + }, + pauseReplay: () => { + ipcRenderer.send('replay-pause', {}); + }, + playReplay: () => { + ipcRenderer.send('replay-play', {}); + }, + liveReplay: () => { + ipcRenderer.send('replay-live', {}); + }, + sendChatMessages: (msgs) => { + return ipcRenderer.invoke('send-chat-message', msgs); + }, + replaySpeed: (speed) => { + ipcRenderer.send('replay-speed', speed); + }, + replaySearch: (searchMode) => { + ipcRenderer.send('replay-search', searchMode); + } + } ); diff --git a/app/appState.ts b/app/appState.ts new file mode 100644 index 0000000..23756b7 --- /dev/null +++ b/app/appState.ts @@ -0,0 +1,255 @@ + +import { DriverCar } from '@common/DriverState'; +import _ from 'lodash'; +import iracing from 'node-irsdk-2021'; +import { HexColor, CarColors } from '../common/util' + +export type CarSessionFlag = "Servicible" | "Black" | "Repair" | "Disqualify" +export type TrackSurface ="OnTrack" | "OffTrack" | "NotInWorld" | "AproachingPits" | "InPitStall" ; // sic: "AproachingPits" is spelled wrong in the telemetry data +export type SessionFlag = "StartHidden" | "StartGo" | "StartReady" | "OneLapToGreen" | "Caution" | "CautionWaving"; +/** + * AppState is a more convenient view of the iRacing game state + * that combines information from the Session data feed and the + * Telemetry data feed. + * + * To make use of a property from iRacing, first add an appropriate + * definition for it to irsdk.d.ts and here. Then update "toAppState" + * in app/state/streams.ts to copy the values from the game state. + */ + +export function getTrackLength(sesh: iracing.SessionData): number { + const trackLengthStr = sesh.data.WeekendInfo.TrackLength; + const trackLengthRegex = new RegExp("^(\\d+(\\.\\d+)?) (\\w+)$"); + const match = trackLengthRegex.exec(trackLengthStr); + + if (match) { + const trackLength = +(match[1]); + const distanceUnit = match[3]; + + return trackLength * (distanceUnit == "km" ? 1000 : 1609.344) + } + + return 0; +} + +export type TimeStamp = { + session: number, + time: number, +} + +export function toDriverCar(car: CarState) : DriverCar { + return { + class: { + color: car.classColor, + name: car.className, + }, + color: car.carColors, + driverName: car.drivers[0].name, // TODO figure out how to get the current driver of the car + idx: car.idx, + number: car.number, + teamName: car.teamName, + } +} + +export type AppState = { + /** + * The current live time in sim. + */ + live: TimeStamp, + sessionFlags: SessionFlag[], + replay: { + carIdx: number, + speed: number, + time: TimeStamp, + cameraGroupNum: number, + cameraNum: number, + }, + weekend: { + /** A human-readable display name for the current track */ + trackName: string, + /** a machine-readable track ID */ + trackId: string, + /** the overall length of the track in meters */ + trackLength: number, + /** e.g., '0.9 mi' or '1.7 km' */ + trackDisplayLength: string, + }, + cameraInfo: { + cameraGroups: { + num: number, + name: string, + cameras: { + num: number, + name: string, + }[] + }[] + }, + cars: CarState[], + findCarByIdx: (_:number) => CarState | undefined, + findCarByNumber: (_:string) => CarState | undefined, + sessions: { + num: number, + name: string, + type: string, + }[], +} + +export type CarState = { + // session + + idx: number, + number: string, + /** + * Human-readable class name + */ + className: string, + /** + * Machine readable class ID + */ + classId: number, + classColor: HexColor, + carName: string, + carNameShort: string, + carColors: CarColors, + teamName: string, + drivers: { + customerId: number, + name: string, + shortName: string, + incidentCount: number, + }[], + teamIncidentCount: number, + + // telemetry + + lap: number, + trackPositionPct: number, + officialPosition: number, + officialClassPosition: number, + trackSurface: TrackSurface, + isAI: boolean, + isPaceCar: boolean, + paceRow: number, + paceLine: number, + flags: CarSessionFlag[] +} + +function fromInt(hexColor: number) : HexColor { + return "#" + hexColor.toString(16).padStart(6, '0'); +} + +function fromDesignString(designStr: string) : CarColors { + // TODO regex this string in the form "12,111111,222222,333333" + return { + primary: "#000000", + secondary: "#000000", + tertiary: "#000000", + } +} + +function createLookupFunction(values: V[], getKey:(_:V) => K): (_:K) => V | undefined { + const lookupTable: Map = new Map(); + values.forEach(value => { + lookupTable.set(getKey(value), value); + }); + return lookupTable.get.bind(lookupTable); +} + +/** + * Generates a new AppState based on the latest session and telemetry data + */ +export function toAppState(session: iracing.SessionData, telemetry: iracing.TelemetryData): AppState { + + // Iterate over drivers to start building up car array as new cars are discovered + let cars: Map = new Map(); + + for(let driver of session.data.DriverInfo.Drivers) { + const idx = driver.CarIdx; + + let car = cars.get(idx); + if(!car) { + car = { + carName: driver.CarScreenName, + carNameShort: driver.CarScreenNameShort, + classColor: fromInt(driver.CarClassColor), + classId: driver.CarClassID, + className: driver.CarClassShortName, + drivers: [], + idx: idx, + carColors: fromDesignString(driver.CarDesignStr), + isAI: driver.CarIsAI != 0, + isPaceCar: driver.CarIsPaceCar != 0, + number: driver.CarNumber, + teamName: driver.TeamName, + teamIncidentCount: driver.TeamIncidentCount, + + lap: telemetry.values.CarIdxLap[idx], + officialClassPosition: telemetry.values.CarIdxPosition[idx], + officialPosition: telemetry.values.CarIdxPosition[idx], + paceLine: telemetry.values.CarIdxPaceLine[idx], + paceRow: telemetry.values.CarIdxPaceRow[idx], + trackPositionPct: telemetry.values.CarIdxLapDistPct[idx], + trackSurface: telemetry.values.CarIdxTrackSurface[idx] as TrackSurface, + flags: telemetry.values.CarIdxSessionFlags[idx] + }; + cars.set(idx, car); + } + + car.drivers.push({ + customerId: driver.UserID, + incidentCount: driver.CurDriverIncidentCount, + name: driver.UserName, + shortName: driver.AbbrevName, + }); + } + + let sessions = session.data.SessionInfo.Sessions; + + return { + cars: [...cars.values()], + replay: { + carIdx: telemetry.values.CamCarIdx, + time: { + session: telemetry.values.ReplaySessionNum, + time: telemetry.values.ReplaySessionTime, + }, + speed: telemetry.values.ReplayPlaySpeed, + cameraGroupNum: telemetry.values.CamGroupNumber, + cameraNum: telemetry.values.CamCameraNumber, + }, + live: { + session: telemetry.values.SessionNum, + time: telemetry.values.SessionTime, + }, + weekend: { + trackDisplayLength: session.data.WeekendInfo.TrackLength, + trackLength: getTrackLength(session), + trackId: session.data.WeekendInfo.TrackConfigName, + trackName: session.data.WeekendInfo.TrackDisplayName, + }, + cameraInfo: { + cameraGroups: session.data.CameraInfo.Groups.map((group) => { + return { + name: group.GroupName, + num: group.GroupNum, + cameras: group.Cameras.map((cam) => { + return { + name: cam.CameraName, + num: cam.CameraNum, + }; + }) + }; + }), + }, + sessionFlags: telemetry.values.SessionFlags, + sessions: sessions.map(session => ({ + name: session.SessionName, + num: session.SessionNum, + type: session.SessionType, + })), + findCarByIdx: (idx: number) => cars.get(idx), + findCarByNumber: createLookupFunction([...cars.values()], (car) => car.number), + }; +} + + diff --git a/app/application.ts b/app/application.ts deleted file mode 100644 index d645479..0000000 --- a/app/application.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { IncidentDb } from './incidentdb'; -import { ReplayOutbox } from './replay_outbox'; -import { Outbox } from './state'; - -/** - * Application contains certain global variables and state that may be initialized and accessed out of order - */ -export default class Application { - - public readonly incidents: IncidentDb; - - private readonly outbox: ReplayOutbox; - - constructor() { - this.outbox = new ReplayOutbox(); - this.incidents = new IncidentDb(this.outbox); - } - - static instance: Application; - - public addOutbox(outbox: Outbox, replayEvents = true) { - this.outbox.addOutbox(outbox, replayEvents); - } - - public getOutbox(): Outbox { - return this.outbox; - } - - public static getInstance(): Application { - if (Application.instance) { - return Application.instance; - } else { - Application.instance = new Application(); - return Application.instance; - } - } -} - - diff --git a/app/incidentdb.ts b/app/incidentdb.ts deleted file mode 100644 index 18a5259..0000000 --- a/app/incidentdb.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { Outbox } from "./state"; -import { Incident, IncidentData, Resolution } from "../common/incident"; - -/** - * IncidentDb is an in-memory database of incidents, which keeps track of their resolutions and publishes changes when an incident is created or resolved. - * - * It publishes two kinds of messages to the provided outbox: - * - 'incident-created': when an incident is first {@linkplain IncidentDb.publish | created} - * - 'incident-resolved': when an incident is {@linkplain IncidentDb.resolve | resolved} - * - * Both messages use the {@link Incident} type as their data format. - */ -export class IncidentDb { - private idCounter: number = 1; - private incidents = new Map(); - private outbox: Outbox; - - public constructor(outbox: Outbox) { - this.outbox = outbox; - } - - /** - * Creates and publishes a new incident with the given data. - * - * @param data the descriptive contents of the new incident. - */ - public publish(data: IncidentData): Incident { - let incident: Incident = { - id: (this.idCounter++), - resolution: 'Unresolved', - data - }; - - this.incidents.set(incident.id, incident); - - this.outbox.send('incident-created', incident); - - return incident; - } - - /** - * Resolves an incident with the given ID and publishes the resolution. - * - * @param id the {@linkplain Incident.id | ID} of the incident to be resolved - * @param resolution the desired resolution for the incident - * @returns the new resolution of the incident, which may be different from the given resolution, if the incident was already resolved, or may be 'undefined' if no incident with the given ID exists. - */ - public resolve(id: number, resolution: Resolution): Resolution | undefined { - return this.changeResolution(id, resolution); - } - - private changeResolution(id: number, resolution: Resolution): Resolution | undefined { - let incident = this.incidents.get(id); - if (incident) { - incident.resolution = resolution; - this.incidents.set(incident.id, incident); - this.outbox.send('incident-resolved', incident); - console.log('IN: resolving incident ' + incident.id + " = " + resolution); - } - return incident?.resolution; - } - - public getIncidentData(id: number): IncidentData | undefined { - let inc = this.incidents.get(id); - if (inc) { - return { ...inc.data }; - } else { - return undefined; - } - } - - public getIncidentResolutions(includeDeleted = false): Map { - let resolutions = new Map(); - this.incidents.forEach((inc, id) => { - if (inc.resolution != "Deleted" || includeDeleted) { - resolutions.set(id, inc.resolution); - } - }); - return resolutions; - } -} \ No newline at end of file diff --git a/app/ipc-inbox.ts b/app/ipc-inbox.ts index 7b4f07f..b2f2d84 100644 --- a/app/ipc-inbox.ts +++ b/app/ipc-inbox.ts @@ -1,21 +1,11 @@ -import { ipcMain } from 'electron'; -import iracing from 'node-irsdk-2021'; -import { Resolution } from "../common/incident"; -import Application from "./application"; +import { BrowserWindow, ipcMain } from 'electron'; +import iracing, { SDKInstance } from 'node-irsdk-2021'; +import { focusIRacingWindow, typeMessage, sleep } from "./irobot"; type CarNumberParam = { carNumber: string }; type JumpToTimeParam = { sessionNum: number, sessionTime: number }; type ReplayParam = CarNumberParam & JumpToTimeParam; - -type IncidentResolvedParam = { - incidentId: number, - resolution: Resolution -}; - -ipcMain.on('connect-window', (ev, data: any) => { - console.log('connected to renderer'); - Application.getInstance().addOutbox(ev.sender); -}); +type SwitchCameraParam = CarNumberParam & { cameraGroup: number}; ipcMain.on('replay', (ev, data: ReplayParam) => { const sdk = iracing.getInstance(); @@ -23,9 +13,9 @@ ipcMain.on('replay', (ev, data: ReplayParam) => { sdk.camControls.switchToCar(data.carNumber) }); -ipcMain.on('focus-camera', (ev, data: CarNumberParam) => { +ipcMain.on('focus-camera', (ev, data: SwitchCameraParam) => { const sdk = iracing.getInstance(); - sdk.camControls.switchToCar(data.carNumber); + sdk.camControls.switchToCar(data.carNumber, data.cameraGroup); }); ipcMain.on('jump-to-time', (ev, data: JumpToTimeParam) => { @@ -33,26 +23,9 @@ ipcMain.on('jump-to-time', (ev, data: JumpToTimeParam) => { sdk.playbackControls.searchTs(data.sessionNum, data.sessionTime); }); -ipcMain.on('acknowledge-incident', (ev, data: IncidentResolvedParam) => { - console.log("INBOX: " + 'acknowledge-incident ' + data.incidentId); - Application.getInstance().incidents.resolve(data.incidentId, 'Acknowledged'); -}); - -ipcMain.on('dismiss-incident', (ev, data: IncidentResolvedParam) => { - console.log("INBOX: " + 'dismiss-incident ' + data.incidentId); - Application.getInstance().incidents.resolve(data.incidentId, 'Dismissed'); -}); - -ipcMain.on('unresolve-incident', (ev, data: IncidentResolvedParam) => { - console.log("INBOX: " + 'unresolve-incident ' + data.incidentId); - Application.getInstance().incidents.resolve(data.incidentId, "Unresolved"); -}); - -ipcMain.on('clear-incidents', (ev, data: any) => { - let incidentDb = Application.getInstance().incidents; - incidentDb.getIncidentResolutions().forEach((res, id) => { - incidentDb.resolve(id, "Deleted"); - }); +ipcMain.on('replay-search', (ev, data: iracing.RpySrchMode) => { + const sdk = iracing.getInstance(); + sdk.playbackControls.search(data) }); ipcMain.on('replay-pause', (ev, data: any) => { @@ -71,4 +44,41 @@ ipcMain.on('replay-live', (ev, data: any) => { console.log("INBOX: replay-live"); const sdk = iracing.getInstance(); sdk.playbackControls.search("ToEnd"); -}); \ No newline at end of file +}); + +ipcMain.handle('send-chat-message', async (ev, data: string[]) => { + // focus iracing window + const sdk = iracing.getInstance(); + + await focusIRacingWindow(); + await sleep(100); + + // send messages one by one + for (const msg of data) { + sdk.execChatCmd(1); + await typeMessage(msg, true); + console.log("CHAT:", msg); + await sleep(1); + } + + // re-focus stuart + BrowserWindow.fromWebContents(ev.sender)?.focus(); +}); + +ipcMain.on('replay-speed', (ev, speed: number) => { + // no slow motion for now; + speed = speed | 0; + if(speed > 16) speed = 16; + if(speed < -16) speed = -16; + + const sdk = iracing.getInstance(); + if(speed == 0) { + sdk.playbackControls.pause(); + } else if (speed == 1) { + sdk.playbackControls.play(); + } else if(speed > 1) { + sdk.playbackControls.fastForward(speed); + } else if(speed <= -1) { + sdk.playbackControls.rewind(speed * -1); + } +}); diff --git a/app/irobot.ts b/app/irobot.ts new file mode 100644 index 0000000..663afe0 --- /dev/null +++ b/app/irobot.ts @@ -0,0 +1,70 @@ +import ffi from "ffi-napi"; +import { Key, keyboard } from "@nut-tree/nut-js"; +import sendkeys from 'sendkeys'; + +const IRACING_WINDOW_TITLE = "iRacing.com Simulator"; +const IRACING_WINDOW_CLASS = "SimWinClass"; + +// hacky implementation copied from stackoverflow. probably not necessary to do all this, but it works +const user32 = new ffi.Library('user32', { + 'GetTopWindow': ['long', ['long']], + 'FindWindowA': ['long', ['string', 'string']], + 'SetActiveWindow': ['long', ['long']], + 'SetForegroundWindow': ['bool', ['long']], + 'BringWindowToTop': ['bool', ['long']], + 'ShowWindow': ['bool', ['long', 'int']], + 'SwitchToThisWindow': ['void', ['long', 'bool']], + 'GetForegroundWindow': ['long', []], + 'AttachThreadInput': ['bool', ['int', 'long', 'bool']], + 'GetWindowThreadProcessId': ['int', ['long', 'int']], + 'SetWindowPos': ['bool', ['long', 'long', 'int', 'int', 'int', 'int', 'uint']], + 'SetFocus': ['long', ['long']] +}); + +const kernel32 = new ffi.Library('Kernel32.dll', { + 'GetCurrentThreadId': ['int', []] +}); + +function focusWindow(windowClass: string | null, windowName: string) { + + let winToSetOnTop = user32.FindWindowA(windowClass, windowName) + let foregroundHWnd = user32.GetForegroundWindow() + var currentThreadId = kernel32.GetCurrentThreadId() + let windowThreadProcessId = user32.GetWindowThreadProcessId(foregroundHWnd, 0) + let showWindow = user32.ShowWindow(winToSetOnTop, 9) + //var setWindowPos1 = user32.SetWindowPos(winToSetOnTop, -1, 0, 0, 0, 0, 3) + //var setWindowPos2 = user32.SetWindowPos(winToSetOnTop, -2, 0, 0, 0, 0, 3) + let setForegroundWindow = user32.SetForegroundWindow(winToSetOnTop) + let attachThreadInput = user32.AttachThreadInput(windowThreadProcessId, currentThreadId, false) + let setFocus = user32.SetFocus(winToSetOnTop) + let setActiveWindow = user32.SetActiveWindow(winToSetOnTop) +} + +export async function focusIRacingWindow() : Promise { + focusWindow(IRACING_WINDOW_CLASS, IRACING_WINDOW_TITLE); +} + +async function typeMessageNutjs(msg: string, printLn = false) : Promise { + keyboard.config.autoDelayMs=1; + await keyboard.type(msg); + if(printLn) { + await keyboard.pressKey(Key.Return); + await sleep(30); + await keyboard.releaseKey(Key.Return); + } +} + +async function typeMessageSendkeys(msg: string, printLn = false) { + if(printLn) { + msg = msg + "\r"; + } + await sendkeys(msg); +} + +export function typeMessage(msg: string, printLn = false) : Promise { + return typeMessageSendkeys(msg, printLn); +} + +export function sleep(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); +} \ No newline at end of file diff --git a/app/irsdk.d.ts b/app/irsdk.d.ts index 771a1d3..453fc8f 100644 --- a/app/irsdk.d.ts +++ b/app/irsdk.d.ts @@ -1,5 +1,12 @@ declare module 'node-irsdk-2021' { - interface TelemetryData { + export type SessionFlag = "StartHidden" | "StartGo" | "StartReady" | "OneLapToGreen" | "Caution" | "CautionWaving"; + export type CarSessionFlag = "Servicible" | "Black" | "Repair" | "Disqualify"; + export type SessionState = "GetInCar" | "ParadeLaps" | "Racing" | "CoolDown" ; + export type SessionType = "Race" | "Qualifying" | "Practice" ; + export type SessionSubType = "Feature" | "Heat" | null; + export type TrackSurface = "OnTrack" | "OffTrack" | "NotInWorld" | "AproachingPits" | "InPitStall" ; // sic: "AproachingPits" is spelled wrong in the telemetry data + + export interface TelemetryData { timestamp: Date values: { SessionNum: number @@ -8,15 +15,34 @@ declare module 'node-irsdk-2021' { ReplaySessionTime: number ReplayPlaySpeed: number CamCarIdx: number + CamCameraNumber: number + CamGroupNumber: number CarIdxLap: number[] CarIdxLapDistPct: number[] CarIdxOnPitRoad: boolean[] - CarIdxTrackSurface: string + CarIdxPaceLine: number[] + CarIdxPaceRow: number[] + CarIdxPosition: number[] + CarIdxClassPosition: number[] + CarIdxSessionFlags: CarSessionFlag[][] + PaceMode: number + CarIdxTrackSurface: TrackSurface, + SessionFlags: SessionFlag[] } } - interface SessionDriver { + export interface SessionDriver { CarIdx: number + AbbrevName: string, + CarClassColor: number, + CarClassID: number, + CarClassShortName: string, + CarDesignStr: string, + CarScreenName: string, + CarScreenNameShort: string, + IRating: number, + UserId: number, + LicString: string, TeamName: string UserName: string CarNumber: string @@ -24,10 +50,17 @@ declare module 'node-irsdk-2021' { CarIsAI: number CarIsPaceCar: number UserID: number + CurDriverIncidentCount: number } - interface SessionData { - SessionType: string + export interface SessionData { + SessionType: SessionType, + SessionSubType: SessionSubType, + SessionName: string, + SessionNum: number, + SessionTime: string, + SessionLaps: number | "unlimited", + ResultsFastestLap: { CarIdx: number FastestLap: number @@ -35,7 +68,7 @@ declare module 'node-irsdk-2021' { }[] } - interface SessionData { + export interface SessionData { timestamp: Date data: { DriverInfo: { @@ -51,17 +84,32 @@ declare module 'node-irsdk-2021' { } SessionInfo: { Sessions: SessionData[] + }, + CameraInfo: { + Groups: { + GroupName: string, + GroupNum: number, + Cameras: { + CameraName: string, + CameraNum: number + }[] + }[] } } } - type RpySrchMode = "ToStart" | "ToEnd" | "PrevSession" | "NextSession" | "PrevLap" | "NextLap" | "PrevFrame" | "NextFrame" | "PrevIncident" | "NextIncident"; - + export type RpySrchMode = "ToStart" | "ToEnd" | "PrevSession" | "NextSession" | "PrevLap" | "NextLap" | "PrevFrame" | "NextFrame" | "PrevIncident" | "NextIncident"; + const ChatCommand = { + Macro: 0, + BeginChat: 1, + Reply: 2, + Cancel: 3, + } export class SDKInstance { on(event: string, handler: (data: any) => void) camControls: { - switchToCar(carNumber: string): void + switchToCar(carNumber: string, camGroupNum?: number, camNum?: number): void } playbackControls: { @@ -70,7 +118,11 @@ declare module 'node-irsdk-2021' { //searchFrame(frame: number, replayPositionMode: number): void play(): void pause(): void + fastForward(speed: number): void, + rewind(speed: number): void, } + + execChatCmd(command: number, arg?: number) } export function init({ sessionInfoUpdateInterval: number, telemetryUpdateInterval: number }): SDKInstance diff --git a/app/replay_outbox.ts b/app/replay_outbox.ts deleted file mode 100644 index fb849fe..0000000 --- a/app/replay_outbox.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Outbox } from "./state"; - -type Message = { - channel: string, - data: any -}; - -/** - * ReplayOutbox is an ❴@link Outbox} wrapper that saves the messages it sends and can replay those messages to new Outboxes. - */ -export class ReplayOutbox { - - private messages: Message[]; - private outboxes: Outbox[]; - - constructor(...outboxes: Outbox[]) { - this.messages = []; - this.outboxes = []; - - outboxes.forEach((outbox) => { - this.addOutbox(outbox, false); - }); - } - - public send(channel: string, data: T): void { - let message: Message = { - channel, - data - }; - - this.messages.push(message); - this.outboxes.forEach((outbox) => { - outbox.send(channel, data); - }); - } - - public addOutbox(outbox: Outbox, replay = true): void { - if (replay) { - this.messages.forEach((msg) => { - outbox.send(msg.channel, msg.data); - }); - } - - this.outboxes.push(outbox); - } - - public getMessages(): Message[] { - return [...this.messages]; - } -} diff --git a/app/sendkeys.d.ts b/app/sendkeys.d.ts new file mode 100644 index 0000000..d863a55 --- /dev/null +++ b/app/sendkeys.d.ts @@ -0,0 +1,3 @@ +declare module "sendkeys" { + export default function sendkeys(msg: string) : Promise; +} \ No newline at end of file diff --git a/app/start.ts b/app/start.ts index f648a65..9fa17f5 100644 --- a/app/start.ts +++ b/app/start.ts @@ -1,18 +1,20 @@ import { join } from 'path' import fs from 'fs'; -import { BrowserWindow } from 'electron' +import { app, BrowserWindow, ipcMain } from 'electron' import iracing from 'node-irsdk-2021'; -import Watcher, { Outbox } from './state'; -import { NotifyOfSessionChanged } from "./watchers/NotifyOfSessionChanged"; -import { IRacingIncidentCount } from "./watchers/NotifyOfIncident"; -import { OffTrackTimer } from './watchers/offtrack'; -import { MajorIncidentWatcher } from './watchers/fcy'; -import { Clock } from "./watchers/clock"; -import Application from './application'; +import { IRSDKObserver } from './state/streams'; +import incidentCount from './state/watchers/incident-count' +import clock from './state/views/clock'; +import offTrack from './state/watchers/offtrack'; +import pacing from './state/views/pacing'; +import drivers from './state/views/drivers'; +import camera from './state/views/camera'; + import './ipc-inbox'; +import { throttleTime } from 'rxjs'; function getMainFile(): string { const root = join(__dirname, '..'); @@ -28,6 +30,7 @@ export function start() { const win = new BrowserWindow({ width: 1200, height: 900, + minWidth: 960, webPreferences: { sandbox: true, preload: join(__dirname, 'api-bridge.js') @@ -42,37 +45,60 @@ export function start() { } function startSDK(win: BrowserWindow) { - const sdk = iracing.init({ - sessionInfoUpdateInterval: 100 /* ms */, - telemetryUpdateInterval: 50 - }); - - - let consoleOutbox: Outbox = { - send: (channel, data) => { - if(channel === 'clock-update') return; - console.log('O (' + channel + '): ' + JSON.stringify(data)); - } - } + let readFromFilePath = process.env["STUART_READ_LOG"]; + let writeToFilePath = process.env["STUART_WRITE_LOG"]; - Application.getInstance().addOutbox(consoleOutbox); + console.log("Arguments: ", process.argv); - const incidentDb = Application.getInstance().incidents; - const outbox = Application.getInstance().getOutbox(); + let observer: IRSDKObserver; + if (readFromFilePath) { + observer = IRSDKObserver.fromFile(readFromFilePath); + } else { + const sdk = iracing.init({ + sessionInfoUpdateInterval: 1000 /* ms */, + telemetryUpdateInterval: 250 + }); - sdk.on('Connected', () => console.log('connected to iRacing!')); + sdk.on('Connected', () => console.log('connected to iRacing!')); - const config = { - observers: [ - new IRacingIncidentCount(incidentDb), - new NotifyOfSessionChanged(outbox), - new MajorIncidentWatcher(outbox, incidentDb), - new Clock(outbox) - ] + observer = IRSDKObserver.fromIRSDK(sdk); } - const watcher = new Watcher(config); + let unsubscribe: () => void = () => {}; - sdk.on('Telemetry', watcher.onTelemetryUpdate.bind(watcher)); - sdk.on('SessionInfo', watcher.onSessionUpdate.bind(watcher)); + win.on("ready-to-show", () => { + unsubscribe(); + unsubscribe = subscribeWindow(win, observer); + }); +} + +function subscribeWindow(win: BrowserWindow, observer: IRSDKObserver): () => void { + // create and publish the incident feed + let incSub = observer.getEventFeed([ + incidentCount, + // lapCount, // for testing + ], [ + offTrack + ]).subscribe(incData => + win.webContents.send('incident-data', incData) + ); + + // create and publish the various state observer feeds + const clockSub = observer.createViewFeed(clock).subscribe(clockState => win.webContents.send('clock-update', clockState)); + const driverSub = observer.createViewFeed(drivers).subscribe(driverStates => win.webContents.send('drivers', driverStates)); + const pacingSub = observer.createViewFeed(pacing).subscribe(paceState => win.webContents.send('pace-state', paceState)); + const cameraSub = observer.createViewFeed(camera).subscribe(cameraState => win.webContents.send('camera', cameraState)); + + // create a telemetry feed for just the data + const telemSub = observer.getRawTelemetryFeed().pipe(throttleTime(2000)) + .subscribe(data => win.webContents.send("telemetry-json", data)); + + return () => { + incSub.unsubscribe(); + clockSub.unsubscribe(); + driverSub.unsubscribe(); + pacingSub.unsubscribe(); + cameraSub.unsubscribe(); + telemSub.unsubscribe(); + } } diff --git a/app/state.ts b/app/state.ts deleted file mode 100644 index 963cad6..0000000 --- a/app/state.ts +++ /dev/null @@ -1,179 +0,0 @@ -import _ from 'lodash'; -import { SessionData, TelemetryData, SessionDriver } from 'node-irsdk-2021'; - -export type Outbox = { send(channel: string, data: T): void } -export type Session = { type: SessionType } - -export interface Observer { - onUpdate(prevState: AppState, newState: AppState): void -} - -export type Driver = { - carIndex: number - name: string - userId: number - teamId: number - teamName: string - incidentCount: number - teamIncidentCount: number - isAi: boolean - isPaceCar: boolean -} - -export type CarState = { - index: number - number: string - teamName: string - driverName: string - incidentCount: number - currentLap: number - currentLapPct: number - onPitRoad: boolean - trackSurface: string -} - -export enum SessionType { - Race = 'Race', - Qualifying = 'Qualifying', - Practice = 'Practice', - Unknown = 'Unknown' -} - -export type AppState = { - sessionNum: number - sessionTime: number // seconds - replaySessionNum: number - replaySessionTime: number - camCarIdx: number - camPaused: boolean - sessions: Session[] - trackLength: number // meters - trackLengthDisplay: string // '0.9 mi' or '1.7 km' - cars: CarState[] - findCar(num: string): CarState | undefined - sessionType: SessionType -} - -export default class Watcher { - constructor(private config: { observers: Observer[] }) { } - - prevState: AppState = { - sessionNum: 0, - sessionTime: 0, - replaySessionNum: 0, - replaySessionTime: 0, - camCarIdx: 0, - camPaused: false, - sessions: [], - trackLength: 1000, - trackLengthDisplay: '1.0 km', - cars: [], - findCar: (_) => undefined, - sessionType: SessionType.Unknown - } - - setState(newState: AppState) { - this.config.observers.forEach(obs => obs.onUpdate(this.prevState, newState)); - this.prevState = { ...newState, findCar: lookup(newState.cars) }; - } - - onTelemetryUpdate({ values }: TelemetryData) { - const sessionNum = values.SessionNum, - sessionTime = values.SessionTime, - replaySessionNum = values.ReplaySessionNum, - replaySessionTime = values.ReplaySessionTime, - camCarIdx = values.CamCarIdx, - camPaused = values.ReplayPlaySpeed == 0; - - // use last tick's driver info - // we can wait to observe any new drivers until after sessionInfo updates - const cars = this.prevState.cars.map(d => { - const prevCar = this.prevState.findCar(d.number)! // never undefined here - - return { - ...prevCar, - currentLap: values.CarIdxLap[prevCar.index] ?? -1, - currentLapPct: values.CarIdxLapDistPct[prevCar.index] ?? -1, - onPitRoad: values.CarIdxOnPitRoad[prevCar.index] ?? false, - trackSurface: values.CarIdxTrackSurface[prevCar.index] ?? 'NotInWorld', - } - }) - - this.setState({ - ...this.prevState, - cars, - sessionNum, - sessionTime, - replaySessionNum, - replaySessionTime, - camCarIdx, - camPaused - }); - } - - onSessionUpdate(update: SessionData) { - const { DriverInfo, SessionInfo, WeekendInfo } = update.data; - - const cars = DriverInfo.Drivers.map(dInfo => toCar(this.prevState, dInfo)); - const sessions = SessionInfo.Sessions.map(toSession); - - const trackLengthDisplay = WeekendInfo.TrackLength; - const trackLength = this.prevState.trackLengthDisplay === trackLengthDisplay - ? this.prevState.trackLength - : getTrackLength(update); - - this.setState({ - ...this.prevState, - trackLength, - trackLengthDisplay, - cars, - sessions, - sessionType: sessions[this.prevState.sessionNum]?.type - }) - } -} - -function lookup(list: CarState[]): (key: string) => CarState | undefined { - const table = _.groupBy(list, 'number'); - return (key: string) => (table[key] ?? [])[0] -} - -function getTrackLength(update: SessionData): number { - const trackLengthStr = update.data.WeekendInfo.TrackLength; - const trackLengthRegex = new RegExp("^(\\d+(\\.\\d+)?) (\\w+)$"); - const match = trackLengthRegex.exec(trackLengthStr); - - if (match) { - const trackLength = +(match[1]); - const distanceUnit = match[3]; - - return trackLength * (distanceUnit == "km" ? 1000 : 1609.344) - } - - return 0; -} - -function toSession(session: SessionData): Session { - const type = { - 'Race': SessionType.Race, - 'Qualifying': SessionType.Qualifying, - 'Practice': SessionType.Practice - }[session.SessionType] ?? SessionType.Unknown - - return { type } -} - -const DEFAULT_CAR_FIELDS = { currentLap: -1, currentLapPct: -1, onPitRoad: false, trackSurface: 'NotInWorld' } - -function toCar(state: AppState, dInfo: SessionDriver) { - const prevCar = state.findCar(dInfo.CarNumber); - - return { - ...prevCar ?? DEFAULT_CAR_FIELDS, - index: dInfo.CarIdx, - number: dInfo.CarNumber, - teamName: dInfo.TeamName, - driverName: dInfo.UserName, - incidentCount: dInfo.TeamIncidentCount - } -} \ No newline at end of file diff --git a/app/state/streams.ts b/app/state/streams.ts new file mode 100644 index 0000000..4235108 --- /dev/null +++ b/app/state/streams.ts @@ -0,0 +1,183 @@ +/** + * State-rxjs is an RsJS based way to monitor session and telemetry data from iRacing (irsdk) + * + * It supports two types of ways to interpret the state, Watchers and Views. + */ + + +import iracing from 'node-irsdk-2021'; +import { combineLatest, distinctUntilChanged, merge, fromEvent, map, mergeMap, Observable, of, pairwise, pluck, ReplaySubject, scan, Subject } from 'rxjs'; +import { AppState, toAppState } from '../appState'; +import equal from 'deep-equal'; +import fs from 'fs'; +import readline from 'readline'; + +/** + * A Watcher is a function that compares two versions of the input state (before and after) and returns a + * list of Events that should be emitted based on what has changed. For example, a Watcher that is watching the AppState + * might look at the number of incident points each driver has and create an Incident event for each driver + * whose incident point count increased. + */ +export type Watcher = (oldInput: Input, newInput: Input) => Event[]; + +/** + * A StatefulWatcher is a Watcher that takes in two versions of the state as well as an instance of + * its own state, and returns a list of events to emit and a new state for itself. The new state will + * be passed to the stateful watcher the next time a main state change comes in. + */ +export type StatefulWatcher = (oldInput: Input, newInput: Input, state?: State) => [Event[], State?]; + +/** + * Converts a non-stateful Watcher into a stateful one. + */ +function toStateful(watcher: Watcher) :StatefulWatcher { + return (os, ns, s) => [watcher(os, ns), s]; +} + +/** + * A View is a function that observes the state and constructs a specific view of some relevant fields. + */ +export type View = (state: State) => V; + +type IRState = [iracing.TelemetryData, iracing.SessionData]; + +export class IRSDKObserver { + public static fromIRSDK(irsdk: iracing.SDKInstance) : IRSDKObserver { + let telemetrySource = new Observable(o => irsdk.on("Telemetry", (data: iracing.TelemetryData) => o.next(data))); + let sessionSource = new Observable(o => irsdk.on("SessionInfo", (data: iracing.SessionData) => o.next(data))); + + let combinedSource: Observable = combineLatest([telemetrySource, sessionSource]); + + return new IRSDKObserver(combinedSource); + } + + public static fromFile(filePath: string): IRSDKObserver { + console.log("Reading telemetry data from:", filePath); + + const rl = readline.createInterface({ + input: fs.createReadStream(filePath) + }); + + let lines = fromEvent(rl,"line").pipe(map(line => JSON.parse(line as string) as IRState)); + + rl.on("close", () => console.log("Done reading telemetry data.")); + + return new IRSDKObserver(lines, true); + } + + /** + * Logs all telemetry and session data to the given path, so that it may be re-played for testing purposes + * @param filePath + */ + public toFile(filePath: string, append = false) { + if(!append) { + fs.writeFileSync(filePath, ""); + } + + // TODO unsubscribe? + return this.state.subscribe({ + next: (irState) => { + fs.appendFileSync(filePath, JSON.stringify(irState) + "\r\n"); + } + }); + } + + // The original source observable of IRacing telemetry data. + private state: Observable; + + // An observable that emits all app state since the connection to iracing was established + private eventsAppState: Observable; + // An observable (probably a subject) that reports only the most recent state + private viewsAppState: Observable; + + private constructor(private states: Observable, replay = false) { + + // record the state of the app. If reading from a file, use a replay subject that records the state, because live events are not possible. + let irStateSubject: Subject; + if(replay) { + // unlimited replay buffer, useful for file reads + irStateSubject = new ReplaySubject(); + } else { + // + irStateSubject = new ReplaySubject(1); + } + states.subscribe(irStateSubject); + this.state = irStateSubject; + + // create a view of the overall states for event feeds + this.eventsAppState = this.state.pipe(map(([telem, sesh]) => toAppState(sesh, telem))); + + // create a subject for views that only records the latest state + let viewSubject = new ReplaySubject(1); + this.eventsAppState.subscribe(viewSubject); + this.viewsAppState = viewSubject; + } + + /** + * Creates a new event feed pipeline using the given watchers. + * + * Changes to the app state will be published to each watcher, and any events produced will be observed from the returned Observable. + * + * TODO: there's probably a better way to combine "watchers" and "stateful watchers" into a single parameter. + * @param watchers + * @param statefulWatchers + */ + public getEventFeed(watchers: Watcher[] = [], statefulWatchers: StatefulWatcher[] = []): Observable { + // 1) create a pairwise view of the appState + + // convert all watchers into stateful watchers (because it's easier) + const asStatefulWatchers = watchers.map(toStateful); + let allWatchers = [...asStatefulWatchers, ...statefulWatchers]; + + // create a pairwise view of the state to have before/after + let pairs = this.eventsAppState.pipe( + pairwise() + ); + + // convert all watchers to observables based on the pairwiser pipe + let allWatchersAsObservables = allWatchers.map((watcher) => { + // Use a "reducer" like mechanism here to give watchers state, where "watchers" are reducers + // Each watcher gets its current state and the new inputs, and returns a new state and some events + // FOr the purposes of "scan", the "accumulator" is going to be "state + events", although the events will be ignored by the "reducers" + + // Input is a pair of old state and new state + type ValType = [AppState, AppState]; + + // Accumulator is the list of events and the + type AccType = ReturnType; + let reducer = (acc: AccType, value: ValType, index: number) => { + const oldInput = value[0]; + const newInput = value[1]; + const oldState = acc[1]; + + return watcher(oldInput, newInput, oldState); + } + + let obserableSingleEvents = pairs.pipe( + // apply reducer function + scan(reducer, [[], undefined]), + // extract only the events and merge to a single stream + mergeMap((acc) => of(...acc[0])) + ) + + return obserableSingleEvents; + }); + + return merge(...allWatchersAsObservables); + } + + public getRawTelemetryFeed() : Observable { + return this.state; + } + + /** + * Creates an Observable that publishes an updated view of the state if the returned view ever changes. + * @param view + */ + public createViewFeed(view: View): Observable { + return this.viewsAppState.pipe( + map((v,i)=> view(v)), + distinctUntilChanged((v1, v2) => equal(v1, v2)) + ); + } +} \ No newline at end of file diff --git a/app/state/views/camera.ts b/app/state/views/camera.ts new file mode 100644 index 0000000..3fde775 --- /dev/null +++ b/app/state/views/camera.ts @@ -0,0 +1,23 @@ +import { CameraState } from "../../../common/CameraState"; +import { AppState, toDriverCar } from "../../appState"; + +export default function camera(state: AppState) : CameraState { + return { + current: { + carIdx: state.replay.carIdx, + cameraGroupNum: state.replay.cameraGroupNum, + cameraNum: state.replay.cameraNum, + speed: state.replay.speed, + isLive: (state.live.time - state.replay.time.time) < 1.5 + }, + cars: state.cars.map(toDriverCar), + cameraGroups: state.cameraInfo.cameraGroups, + sessions: state.sessions.map(sess => ({ + name: sess.name, + num: sess.num, + lapLimit: -1, + timeLimt: -1, + type: sess.type, + })) + } +} diff --git a/app/state/views/clock.ts b/app/state/views/clock.ts new file mode 100644 index 0000000..b0a498b --- /dev/null +++ b/app/state/views/clock.ts @@ -0,0 +1,30 @@ + +import { AppState } from "../../appState"; +import { View} from "../streams"; +import { ClockState } from "../../../common/ClockState"; + +/** + * Clock is a view of the AppState that is concerned with the current timing information for the live session and the + */ +const clock: View = (state) => { + const cCar = state.findCarByIdx(state.replay.carIdx); + + return { + live: { + num: state.live.session, + time: state.live.time, + }, + replay: { + num: state.replay.time.session, + time: state.replay.time.time, + }, + camSpeed: state.replay.speed, + camCar: { + index: cCar?.idx || -1, + number: cCar?.number || "---", + driverName: cCar?.teamName || "Unknown", + }, + } +} + +export default clock; \ No newline at end of file diff --git a/app/state/views/drivers.ts b/app/state/views/drivers.ts new file mode 100644 index 0000000..b6aeed4 --- /dev/null +++ b/app/state/views/drivers.ts @@ -0,0 +1,41 @@ +/** + * The "Drivers" view represents information about all the cars and drivers in the race, and includes information that updates infrequently, including: + * + * Cars: (essentially, "teams") + * - idx + * - number + * - class + * - class color + * - car model + * - team name + * - current driver ID (iracing customer ID) + * - team incident count + * - drivers + * - name + * - customer id + * - irating + * - license level and color + * - personal incident count + */ + +import { View } from "../streams"; +import { AppState, toDriverCar } from "../../appState"; +import { DriverState } from "../../../common/DriverState"; + +const getDriverState: View = (state) => { + return state.cars.filter(car => !car.isPaceCar) + .map(car => { + const ds: DriverState = { + car: toDriverCar(car), + classPosition: car.officialClassPosition, + flags: car.flags, + lap: car.lap, + position: car.officialPosition, + teamIncidentCount: car.teamIncidentCount, + } + + return ds; + }); +} + +export default getDriverState; \ No newline at end of file diff --git a/app/state/views/pacing.ts b/app/state/views/pacing.ts new file mode 100644 index 0000000..0fbecfa --- /dev/null +++ b/app/state/views/pacing.ts @@ -0,0 +1,56 @@ +/** + * the pacing view contains information about the current pace state including: + * - the current grid order + * - the cars currently in the pits + * - TODO the number of pace laps left + * - one lap to green + */ + +import { View } from "../streams"; +import { AppState, toDriverCar } from "../../appState"; +import { PaceState, PaceSpot, PaceCarInfo } from "../../../common/PaceState"; + +const getPaceState: View = (state) => { + + const grid: PaceSpot[] = []; + const pits: PaceCarInfo[] = []; + + for(const car of state.cars) { + if(car.isPaceCar) { continue; } + + const pCar: PaceCarInfo = { + ...toDriverCar(car), + officialPosition: car.officialPosition, + }; + + if(car.paceRow != -1) { + grid.push({ + car: pCar, + line: car.paceLine, + row: car.paceRow, + }); + } else { + pits.push(pCar); + } + } + + grid.sort((c1, c2) => { + if(c1.row == c2.row) { + return c1.line - c2.line; + } else { + return c1.row - c2.row; + } + }); + + pits.sort((c1, c2) => { + return c1.officialPosition - c2.officialPosition; + }); + + return { + grid, + pits, + oneToGo: state.sessionFlags.includes("OneLapToGreen"), + } +} + +export default getPaceState; \ No newline at end of file diff --git a/app/state/watchers/incident-count.ts b/app/state/watchers/incident-count.ts new file mode 100644 index 0000000..86aea0b --- /dev/null +++ b/app/state/watchers/incident-count.ts @@ -0,0 +1,48 @@ +import { Watcher } from "../streams"; +import { AppState, CarState } from "../../appState"; +import { Incident } from "../../../common/incident"; + +/** + * incidentCount creates an "Incident Count" incident whenever a drivers incident count increases. + */ +const incidentCount: Watcher = (oldState, newState) => { + // list of [prev, current] by car number + + let oldCarsByIdx: CarState[] = []; + oldState.cars.forEach(car => { + oldCarsByIdx[car.idx] = car; + }) + + const carStates = newState.cars.map(car => [oldCarsByIdx[car.idx], car]); + + return carStates + .filter(([prev, current]) => prev && (current.teamIncidentCount > prev.teamIncidentCount) && (current.teamIncidentCount > 0)) + .map(([prev, current]) => { + const inc: Incident = { + car: { + class: { + color: current.classColor, + name: current.className, + }, + color: current.carColors, + driverName: current.drivers[0].name, + idx: current.idx, + number: current.number, + teamName: current.teamName, + }, + lap: current.lap, + time: { + num: newState.live.session, + time: newState.live.time, + }, + trackPositionPct: current.trackPositionPct, + + type: "Incident Count", + description: current.teamIncidentCount + "x", + } + + return inc; + }); +} + +export default incidentCount; \ No newline at end of file diff --git a/app/state/watchers/lap-count.ts b/app/state/watchers/lap-count.ts new file mode 100644 index 0000000..96f085e --- /dev/null +++ b/app/state/watchers/lap-count.ts @@ -0,0 +1,31 @@ +import { Watcher } from "../streams"; +import { AppState, toDriverCar } from "../../appState"; +import { Incident } from "../../../common/incident"; + +/** + * creates an "incident" whenever a driver completes a lap. Useful for testing. + */ +const lapCount: Watcher = (oldState, newState) => { + // list of [prev, current] by car number + const carStates = newState.cars.map(car => [oldState.findCarByIdx(car.idx), car]); + + return carStates + .filter(([prev, current]) => prev && current!.lap > prev.lap) + .map(([prev, current]) => { + const inc: Incident = { + car: toDriverCar(current!), + lap: current!.lap, + time: { + num: newState.live.session, + time: newState.live.time, + }, + trackPositionPct: current!.trackPositionPct, + type: "Other", + description: "Lap " + current!.lap, + } + + return inc; + }); +} + +export default lapCount; \ No newline at end of file diff --git a/app/state/watchers/offtrack.ts b/app/state/watchers/offtrack.ts new file mode 100644 index 0000000..b2e4463 --- /dev/null +++ b/app/state/watchers/offtrack.ts @@ -0,0 +1,120 @@ +import { Incident } from "../../../common/incident"; +import { AppState, CarState, toDriverCar } from "../../appState"; +import { StatefulWatcher } from "../streams"; + +type CarTime = { + // the very first start time that the car was in the target state + firstStartTime: { + time: number, + trackPositionPct: number, + }, + // the timestamp that the car most recently entered the target state + startTime: number, + // the timestamp that the car most recently left the target state + stopTime?: number, +} + +// sparse array? +type CarTimesByIdx = CarTime[]; + +const offTrackTimer: StatefulWatcher = (oldState, newState, carTimesByIdx) => { + + // reset all timers when session changes + if(oldState.live.session !== newState.live.session) { + carTimesByIdx = []; + } + + // genericize it here eventually + const inTargetState = (car: CarState) => { + return car.trackSurface == "OffTrack"; + } + const minimumOffTrackTime = 2.0; + const cooldownTime = 10.0; + + const now = newState.live.time; + + let incidents: Incident[] = []; + // short for "cars by index" + let cbIDX = carTimesByIdx ? [...carTimesByIdx] : []; + + // only look at "newState" for now + for(let car of newState.cars) { + + let carTimer: CarTime | undefined = cbIDX[car.idx]; + const carInState = inTargetState(car); + + if(carInState) { + // if no timer has been started, car must have just entered the target state + if(!carTimer) { + // start the timer + carTimer = { + startTime: now, + firstStartTime: { + time: newState.live.time, + trackPositionPct: car.trackPositionPct, + }, + } + //console.log(`car ${car.number} is off track, starting timer`); + // if a timer has been started, then the timer is either running, or is in cooldown mode + } else { + // if the timer is running and the car is in the state, don't do anything + + // timer was previously stopped (i.e., is currently in cooldown indicated by the presence of a stopTime) + if(carTimer.stopTime !== undefined) { + // restart the timer + carTimer.startTime = now; + carTimer.stopTime = undefined; + //console.log(`car ${car.number} is off track again, restarting timer`); + } + } + } else { + // if the car is not currently in the state and we have a timer running + if(carTimer) { + // if the car just exited the target state, there will be no stop time recorded yet, so stop the timer + if(!carTimer.stopTime) { + // car just now exited the state + let duration = now - carTimer.startTime; + + if(duration < minimumOffTrackTime) { + // ignore this blip and delete the timer + carTimer = undefined; + //console.log(`car ${car.number} was off track for ${duration} seconds, ignoring...`); + } else { + // save the stop time + carTimer = {...carTimer, stopTime: now}; + //console.log(`car ${car.number} was off track for ${duration} seconds, entering cooldown...`); + } + } else { + // if the timer exists and the stop time exists, then we are in the "cool down" phase + + let durationInCooldownTime = carTimer.stopTime; + if(durationInCooldownTime > cooldownTime) { + // emit an event and delete the timer + incidents.push({ + car: toDriverCar(car), + lap: car.lap, + time: { + time: carTimer.firstStartTime.time, + num: newState.live.session, + }, + trackPositionPct: carTimer.firstStartTime.trackPositionPct, + type: "Off-Track", + }); + carTimer = undefined; + //console.log(`car ${car.number} was off track, reporting an incident.`); + } + } + } + } + + if(carTimer === undefined) { + delete cbIDX[car.idx]; + } else { + cbIDX[car.idx] = carTimer; + } + } + + return [incidents, cbIDX]; +} + +export default offTrackTimer; \ No newline at end of file diff --git a/app/watchers/NotifyOfIncident.ts b/app/watchers/NotifyOfIncident.ts deleted file mode 100644 index 133eaa0..0000000 --- a/app/watchers/NotifyOfIncident.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { IncidentDb } from '../incidentdb'; -import { Observer, AppState } from '../state'; - -/** - * IRacingIncidentCount publishes an Incident whenever a drivers incident count increases. - */ -export class IRacingIncidentCount implements Observer { - constructor(private incidentDb: IncidentDb) { } - - onUpdate(prevState: AppState, newState: AppState) { - const { sessionNum, sessionTime, cars } = newState; - - // list of [prev, current] by car number - const carStates = cars.map(car => [prevState.findCar(car.number), car]); - - carStates - .filter(([prev, current]) => prev && current!.incidentCount > prev.incidentCount) - .forEach(([_prev, current]) => { - const { index, number, teamName, driverName, incidentCount, currentLap, currentLapPct } = current!; - const car = { index, number, teamName, driverName, incidentCount, currentLap, currentLapPct }; - - this.incidentDb.publish({ car, sessionNum, sessionTime, type: "Incident Count" }); - }); - } -} diff --git a/app/watchers/NotifyOfSessionChanged.ts b/app/watchers/NotifyOfSessionChanged.ts deleted file mode 100644 index bcf0760..0000000 --- a/app/watchers/NotifyOfSessionChanged.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Observer, Outbox, AppState } from '../state'; - -export class NotifyOfSessionChanged implements Observer { - constructor(private outbox: Outbox) { } - - onUpdate(prevState: AppState, newState: AppState) { - if (prevState.sessionNum < newState.sessionNum) { - // TODO: we can look up the session types here so the UI can be smorter about practice, etc - this.outbox.send('session-changed', { - previous: prevState.sessionNum, - current: newState.sessionNum - }); - } - } -} diff --git a/app/watchers/cartimer.ts b/app/watchers/cartimer.ts deleted file mode 100644 index 9c02f63..0000000 --- a/app/watchers/cartimer.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { Observer, AppState, CarState } from '../state'; - -type CarTime = { - startTime: number, - cbTriggered: boolean, - cooldownTime?: number -} - -/** - * CarTimer is a base class for implementing state watchers that require - * timing the length of certain telemetry states. - * - * It operates over cars individually, requiring only that implementors - * implement [isCarInTargetState]. Various "onX" methods will be fired off - * when the car enters and exits that state, with timing information provided. - * - * In addition to timing the overall duration that a car spends in the target - * state, [CarTimer] can fire off an event once the car has been in that state - * for a specified amount of time. This can help deal with spurious event - * states, such as going off-track for a brief amount of time, or can be used - * to ensure that requirements are met, such as stopping in the pits for a - * minimum amount of time. - */ -export abstract class CarTimer implements Observer { - private timesByCarIdx: Map; - - // this could be a property? - private timeLimit: number; - - // TODO not implemented yet - private cooldownTime: number; - - constructor(timeLimit?: number, cooldown?: number) { - this.timeLimit = timeLimit || 0; - this.cooldownTime = cooldown || 0; - this.timesByCarIdx = new Map(); - } - - getTimeLimit(): number { - return this.timeLimit; - } - - /** - * A method that returns true when the car is in the target state to be - * timed. - * - * @param car the current state of the car - * @returns true if the car is in the desired state - */ - protected abstract isCarInTargetState(car: CarState): boolean; - - /** - * Called every time a telemetry update happens and the car is in the - * {@linkplain isCarInTargetState | target state}. - * - * @param car the current state of the car - * @param time the number of seconds the car has been in this state - * @param app the current overall state of the Application - */ - protected onStateTime(car: CarState, time: number, app: AppState): void {} - - /** - * Called when a car first enters the {@linkplain isCarInTargetState | target state}. - */ - protected onStateEntered(car: CarState, app: AppState): void {} - - /** - * Called when the amount of time the car has spent in the - * {@linkplain isCarInTargetState | target state} has exceeded this timer's - * {@linkplain getTimeLimit | time limit}. - * - * car: the current state of the car - * time: the number of seconds the car has been in this state - */ - protected onStateTimeExceeded(car: CarState, time: number, app: AppState): void {} - - /** - * Called when the car leaves the {@linkplain isCarInTargetState | target state}. - */ - protected onStateExited(car: CarState, time: number, timeExceeded: boolean, app: AppState): void {} - - onUpdate(oldState: AppState, newState: AppState) : void { - let sessionTime = newState.sessionTime; - - newState.cars.forEach((car) => { - let carIdx = car.index; - let started = this.timesByCarIdx.has(carIdx); - - let targetState = this.isCarInTargetState(car); - if(targetState) { - let startTime = 0; - if(!started) { - startTime = sessionTime; - let ct: CarTime = { - startTime: sessionTime, - cbTriggered: false - } - this.timesByCarIdx.set(carIdx, ct); - - this.onStateEntered(car, newState); - } else { - startTime = this.timesByCarIdx.get(carIdx)!.startTime; - } - - let duration = sessionTime - startTime; - this.onStateTime(car, duration, newState); - - if(duration >= this.timeLimit && !(this.timesByCarIdx.get(carIdx)!.cbTriggered)) { - this.onStateTimeExceeded(car, duration, newState); - let ct = this.timesByCarIdx.get(carIdx)!; - ct.cbTriggered = true; - this.timesByCarIdx.set(carIdx, ct); - } - } else { - if(started) { - let ct = this.timesByCarIdx.get(carIdx)!; - let duration = sessionTime - ct.startTime; - this.onStateExited(car, duration, ct.cbTriggered, newState); - this.timesByCarIdx.delete(carIdx); - } - } - }); - } -} \ No newline at end of file diff --git a/app/watchers/clock.ts b/app/watchers/clock.ts deleted file mode 100644 index e6306a6..0000000 --- a/app/watchers/clock.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { NumberLiteralType } from 'typescript'; -import { Observer, AppState, CarState, Outbox } from '../state'; -import { ReplayTime } from '../../common/index'; - - -/** - * Clock is a watcher that keeps track of the current race time and - * camera state and reports them to the UI. - */ -export class Clock implements Observer { - - private lastReportTime = 0; - - constructor(private outbox: Outbox, private reportIntervalMs = 500) { - if (this.reportIntervalMs < 0) { - this.reportIntervalMs = 0; - } - } - onUpdate(prevState: AppState, newState: AppState): void { - - let now = (new Date()).getTime(); - let interval = now - this.lastReportTime; - if (interval >= this.reportIntervalMs) { - this.lastReportTime = now; - - let cameraCar = newState.cars[newState.camCarIdx]; - - this.outbox.send("clock-update", { - liveSessionNum: newState.sessionNum, - liveSessionTime: newState.sessionTime, - camSessionNum: newState.replaySessionNum, - camSessionTime: newState.replaySessionTime, - camCarNumber: cameraCar?.number, - camDriverName: cameraCar?.driverName, - camPaused: newState.camPaused - }); - - } - - } - -} \ No newline at end of file diff --git a/app/watchers/fcy.ts b/app/watchers/fcy.ts deleted file mode 100644 index 25347b4..0000000 --- a/app/watchers/fcy.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { Observer, CarState, AppState, Outbox } from "../state"; -import { IncidentDb } from "../incidentdb"; - -/** - * MajorCrash describes a potentially hazardous track condition, where a full-course-yellow situation would be appropriate, including the time and place where the crash occurred. - */ -type MajorCrash = { - sessionTime: number, - sessionNum: number, - trackPositionPercent: number, -} - -type MajorIncident = { - car: CarState - sessionTime: number; - sessionNum: number; - - /** - * True if this incident triggered a FCY suggestion, or was close enough to a previous incident to be considered - */ - triggeredFCY: boolean; -} - -/** - * MajorIncidentWatcher is an Observer that tries to detect extremely dangerous situations that should be cause for throwing a full-course-yellow. - * - * It publishes a {@link MajorCrash} message to the provided outbox under the topic 'fcy' when a track incident becomes large enough to warrant intervention. Additionally, once - */ -export class MajorIncidentWatcher implements Observer { - - constructor(private outbox: Outbox, private incidentDb: IncidentDb) { } - - /** - * If true, will consider any time a car goes off track to be a "major incident" - */ - public testing: boolean = false; - - private carWasInvolvedInMajorIncident(oldCar: CarState, newCar: CarState): boolean { - if (this.testing) { - return oldCar.trackSurface != "OffTrack" && newCar.trackSurface == "OffTrack"; - } - - let incidentIncrement = newCar.incidentCount - oldCar.incidentCount; - return incidentIncrement >= this.minIncidentIncrement; - } - - onUpdate(prevState: AppState, newState: AppState): void { - let { sessionNum, sessionTime } = newState; - if (sessionNum != this.lastSessionNum) { - this.incidents = []; - } - - // for replays - if (sessionTime < this.lastSessionTime) { - // remove all incidents were recorded after the session time - this.incidents = this.incidents.filter((inc) => { - return inc.sessionNum == sessionNum && inc.sessionTime < sessionTime; - }); - } - this.lastSessionNum = sessionNum; - this.lastSessionTime = sessionTime; - - // look for major incidents (where incident points for a driver goes up by more than one) - newState.cars.forEach((car) => { - let oldCar = prevState.findCar(car.number); - if (oldCar) { - - let majorIncident = this.carWasInvolvedInMajorIncident(oldCar, car); - - if (majorIncident) { - // major incident detected. look for other recent incidents - - let recentMajorIncidents = this.incidents.filter((inc) => { - return inc.sessionNum == sessionNum && - inc.sessionTime >= (sessionTime - this.timeWindow); - }); - - // if any of the previously scanned incidents triggered a FCY, then save this one, but don't trigger another FCY - let majorCrashOngoing = recentMajorIncidents.some((inc) => { - return inc.triggeredFCY; - }); - - // if this incident pushes the number of recent incidents up over the limit, or if it's being tacked on to a previous major crash, a FCY should be active, if not already. - let triggeredFCY = (recentMajorIncidents.length >= (this.minCarsInvolved - 1)) || majorCrashOngoing; - - let incident: MajorIncident = { - sessionNum, - sessionTime, - car, - triggeredFCY - }; - - this.incidents.push(incident); - - // if this is the first time we're attempting to activate a FCY, send an incident. - if (!majorCrashOngoing && triggeredFCY) { - // start a new "major incident" - // add the original incident cars to the major incident (the new incident will be added later) - this.currentMajorIncidents = recentMajorIncidents; - - this.outbox.send('fcy', { - sessionNum, - sessionTime, - trackPositionPercent: car.currentLapPct - }); - } - - - if (triggeredFCY) { - // add this to the list of ongoing incidents - this.currentMajorIncidents.push(incident); - // extend the "reset" time for the current incident - this.currentMajorIncidentEndsAt = sessionTime + this.timeWindow; - } - } - } - }); - - // see if we can end the current "major incident" - if (this.currentMajorIncidentEndsAt && this.currentMajorIncidentEndsAt <= sessionTime) { - - // report incidents for everyone involved and end the current "major incident" - - this.currentMajorIncidents.forEach((inc) => { - this.incidentDb.publish({ - car: inc.car, - sessionNum: inc.sessionNum, - sessionTime: inc.sessionTime, - type: "Involved in Major Incident" - }); - }); - - this.currentMajorIncidents = []; - this.currentMajorIncidentEndsAt = null; - } - } - - /** - * The minimum number of cars that must be involved in a "major" incident to suggest a FCY - */ - public minCarsInvolved: number = 3; - - /** - * the time period (in seconds) that the major incidents must occur within to suggest a FCY - */ - public timeWindow: number = 5; - - /** - * the minimum incident increment amount that is considered a "major" incident. This should probably be left alone. - * - * From iRacing: - * - 0x = light car contact - * - 1x = off track - * - 2x = loss of control - * - 2x = contact with track object - * - 4x = major car contact (2x on ovals) - */ - public minIncidentIncrement: number = 2; - - // A list of all "major" incidents - private incidents: MajorIncident[] = []; - - // a list of all cars involved in the current big pileup, if there is one - private currentMajorIncidents: MajorIncident[] = []; - - // if a major incident is ongoing, this is the sessionTime at which it we will stop checking for new cars to add to it, and consider any other incidents to be part of a new "major incident" - private currentMajorIncidentEndsAt: number | null = null; - - private lastSessionNum: number = -1; - private lastSessionTime: number = -1; -} \ No newline at end of file diff --git a/app/watchers/offtrack.ts b/app/watchers/offtrack.ts deleted file mode 100644 index 678065b..0000000 --- a/app/watchers/offtrack.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { CarState, AppState, } from '../state'; -import { CarTimer } from './cartimer'; -import { IncidentDb } from '../incidentdb'; -import { insideTrackRange } from "../util"; - -/** - * OffTrackTimer is a {@link CarTimer} that publishes an incident if the car has been off track for more than a short period of time. - * - * The {@linkplain setTimeLimit | time limit} of this timer determines the length of time the car must be off track before it's considered an incident. - * - * Additionally, dangerous rejoins can be reported by setting {@link reportDangerousRejoins}. - */ -export class OffTrackTimer extends CarTimer { - - public reportOffTracks: boolean = true; - public reportUnsafeRejoins: boolean = true; - public reportTrackLimits = true; - - /** - * The distance (in meters) to search forward and backward for other cars - * when a car rejoins the track to flag it as a possibly dangerous rejoin. - * - * Must not be negative - */ - private dangerousRejoinDistance: number; - - constructor(private incidentDb: IncidentDb, dangerousRejoinDistance?: number, timeLimit?: number) { - super(timeLimit); - this.dangerousRejoinDistance = dangerousRejoinDistance || 10; - } - - isCarInTargetState(car: CarState): boolean { - return car.trackSurface == "OffTrack"; - } - - onStateTimeExceeded(car: CarState, time: number, app: AppState): void { - //console.log("OT: " + car.driverName + " has gone off track."); - const { sessionNum, sessionTime } = app; - if (this.reportOffTracks) { - // Report the incident from when they actually went off track, not when we declared it an off track - let otTime = Math.max(0, sessionTime - this.getTimeLimit()); - - this.incidentDb.publish({ car, sessionNum, sessionTime: otTime, type: 'Off-Track' }); - } - } - - onStateExited(car: CarState, time: number, timeExceeded: boolean, app: AppState): void { - - //console.log("DOT: " + timeExceeded); - // if car was reset or disappeared, no worries - if (car.trackSurface != "OnTrack") return; - - const { sessionNum, sessionTime } = app; - - // no need to check for rejoins if it was a small off-track - if (!timeExceeded && this.reportTrackLimits) { - let otTime = Math.max(0, sessionTime - this.getTimeLimit()); - this.incidentDb.publish({ - car, - sessionNum, - sessionTime: otTime, - type: 'Track Limits' - }); - }; - - // search forward for other cars - let searchDistancePct = this.dangerousRejoinDistance / app.trackLength; - let carIdx = car.index; - - let carsNearby = app.cars.filter((c) => { - return c.index != carIdx && - insideTrackRange(c.currentLapPct, - car.currentLapPct - searchDistancePct, - car.currentLapPct + searchDistancePct); - }, this); - - if (carsNearby.length > 0 && this.reportUnsafeRejoins) { - let carNames = carsNearby.map((car) => car.driverName); - let carList = carNames.join(", "); - - //console.log("OT: " + car.driverName + " rejoined the track within " + - // this.dangerousRejoinDistance + " meters of " + carList + "."); - - this.incidentDb.publish({ car, sessionNum, sessionTime, type: 'Unsafe Rejoin' }); - } - } - - - -} \ No newline at end of file diff --git a/black.log b/black.log new file mode 100644 index 0000000..b226ea1 --- /dev/null +++ b/black.log @@ -0,0 +1,2 @@ +[{"timestamp":"2022-03-20T01:31:44.444Z","values":{"SessionTime":3637.3333170596893,"SessionTick":42898,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":1,"SessionFlags":["StartHidden"],"SessionTimeRemain":4762.683349606978,"SessionLapsRemain":32767,"SessionLapsRemainEx":32767,"SessionTimeTotal":8400,"SessionLapsTotal":32767,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":50437,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":11260,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":114.73158264160156,"CpuUsageFG":0.5027441382408142,"GpuUsage":0.4280109107494354,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.11100035160779953,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":3190,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":5,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":12,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,21,15,10,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,20,14,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.8985718488693237,0.14534850418567657,0.9096726179122925,0.14650583267211914,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","OnTrack","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Concrete1Material","Asphalt3Material","Concrete1Material","Asphalt3Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[11,3190,3190,3190,3190,3190,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3190],"CarIdxF2Time":[0,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,104.93685150146484,14.439851760864258,106.68515014648438,14.492432594299316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,18,12,1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Servicible"],["Servicible","Repair"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":4,"CarIdxPaceLine":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.1332973837852478,0.41693150997161865,0.09591861814260483,-0.2187616527080536,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,8844.763671875,2941.385498046875,5744.11572265625,5783.76904296875,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,4,2,4,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":21,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":41.666656494140625,"TrackTempCrew":41.666656494140625,"AirTemp":25.47426986694336,"WeatherType":1,"Skies":1,"AirDensity":1.174586296081543,"AirPressure":29.853416442871094,"WindVel":3.600137710571289,"WindDir":1.8208897113800049,"RelativeHumidity":0.33367621898651123,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":2,"CamCameraNumber":1,"CamGroupNumber":33,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":8.972268104553223,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":38.97233200073242,"SteeringWheelUseLinear":true,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":3636.323274739585,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247],"SteeringWheelTorque":-0.00006948639929760247,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dcPitSpeedLimiterToggle":false,"dcTractionControlToggle":false,"dcHeadlightFlash":false,"dpRFTireChange":0,"dpLFTireChange":0,"dpRRTireChange":0,"dpLRTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcDashPage":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"dcTractionControl":0,"dcABS":0,"dcFuelMixture":0,"dcThrottleShape":0,"RFbrakeLinePress":0,"RFcoldPressure":165.38784790039062,"RFtempCL":44.265106201171875,"RFtempCM":44.265106201171875,"RFtempCR":44.265106201171875,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":165.38784790039062,"LFtempCL":44.265106201171875,"LFtempCM":44.265106201171875,"LFtempCR":44.265106201171875,"LFwearL":1,"LFwearM":1,"LFwearR":1,"WaterTemp":77,"WaterLevel":19.65999984741211,"FuelPress":6.130927432401734e-10,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":9,"Voltage":13.40000057220459,"ManifoldPress":1,"RRbrakeLinePress":0,"RRcoldPressure":165.38784790039062,"RRtempCL":44.266876220703125,"RRtempCM":44.266876220703125,"RRtempCR":44.266876220703125,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":165.38784790039062,"LRtempCL":44.266876220703125,"LRtempCM":44.266876220703125,"LRtempCR":44.266876220703125,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRshockDefl":0.05776512622833252,"RRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"RRshockVel":0,"RRshockVel_ST":[0,0,0,0,0,0],"LRshockDefl":0.05776512622833252,"LRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"LRshockVel":0,"LRshockVel_ST":[0,0,0,0,0,0],"RFshockDefl":0.02371823787689209,"RFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"RFshockVel":0,"RFshockVel_ST":[0,0,0,0,0,0],"LFshockDefl":0.02371823787689209,"LFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"LFshockVel":0,"LFshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T01:31:42.239Z","data":{"WeekendInfo":{"TrackName":"sebring international","TrackID":95,"TrackLength":"5.79 km","TrackLengthOfficial":"5.95 km","TrackDisplayName":"Sebring International Raceway","TrackDisplayShortName":"Sebring","TrackConfigName":"International","TrackCity":"Sebring","TrackCountry":"USA","TrackAltitude":"18.79 m","TrackLatitude":"27.450203 m","TrackLongitude":"-81.353694 m","TrackNorthOffset":"1.5656 rad","TrackNumTurns":17,"TrackPitSpeedLimit":"72.00 kph","TrackType":"road course","TrackDirection":"neutral","TrackWeatherType":"Generated / Dynamic Sky","TrackSkies":"Partly Cloudy","TrackSurfaceTemp":"39.72 C","TrackAirTemp":"25.47 C","TrackAirPressure":"29.85 Hg","TrackWindVel":"3.87 m/s","TrackWindDir":"1.83 rad","TrackRelativeHumidity":"33 %","TrackFogLevel":"0 %","TrackCleanup":0,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":173222688,"SubSessionID":44976062,"LeagueID":4778,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Road","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":1,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":2,"NumCarTypes":9,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":62,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":1,"Restarts":"double file lapped cars behind","WeatherType":"Generated / Dynamic Sky","Skies":"Partly Cloudy","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"1:00 pm","Date":"2022-03-19T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":1,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":1,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":"unlimited","SessionTime":"8400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Open Qualify","SessionTrackRubberState":"low usage","SessionName":"QUALIFY","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":2,"Lap":12,"Time":120.1111,"FastestLap":12,"FastestTime":120.1111,"LastTime":-1,"LapsLed":0,"LapsComplete":14,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":1,"Lap":18,"Time":122.5106,"FastestLap":18,"FastestTime":122.5106,"LastTime":-1,"LapsLed":0,"LapsComplete":20,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":3,"Lap":1,"Time":123.0682,"FastestLap":1,"FastestTime":123.0682,"LastTime":-1,"LapsLed":0,"LapsComplete":9,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":4,"Lap":4,"Time":123.1019,"FastestLap":4,"FastestTime":123.1019,"LastTime":-1,"LapsLed":0,"LapsComplete":7,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":2,"FastestLap":12,"FastestTime":120.1111}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0},{"SessionNum":1,"SessionLaps":"unlimited","SessionTime":"2400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"carry over","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":null,"ResultsFastestLap":[{"CarIdx":255,"FastestLap":0,"FastestTime":-1}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":2,"FastestLap":12,"FastestTime":120.1111},{"Position":1,"ClassPosition":1,"CarIdx":1,"FastestLap":18,"FastestTime":122.5106},{"Position":2,"ClassPosition":2,"CarIdx":3,"FastestLap":1,"FastestTime":123.0682},{"Position":3,"ClassPosition":3,"CarIdx":4,"FastestLap":4,"FastestTime":123.1019},{"Position":4,"ClassPosition":4,"CarIdx":5,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","Cameras":[{"CameraNum":1,"CameraName":"Scenic_01"},{"CameraNum":2,"CameraName":"Scenic_02"},{"CameraNum":3,"CameraName":"Scenic_03"},{"CameraNum":4,"CameraName":"Scenic_04"},{"CameraNum":5,"CameraName":"Scenic_05"},{"CameraNum":6,"CameraName":"Scenic_06"},{"CameraNum":7,"CameraName":"Scenic_07"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_01"},{"CameraNum":2,"CameraName":"CamTV1_02"},{"CameraNum":3,"CameraName":"CamTV1_03"},{"CameraNum":4,"CameraName":"CamTV1_15"},{"CameraNum":5,"CameraName":"CamTV1_04"},{"CameraNum":6,"CameraName":"CamTV1_05"},{"CameraNum":7,"CameraName":"CamTV1_06"},{"CameraNum":8,"CameraName":"CamTV1_07"},{"CameraNum":9,"CameraName":"CamTV1_08"},{"CameraNum":10,"CameraName":"CamTV1_09"},{"CameraNum":11,"CameraName":"CamTV1_10"},{"CameraNum":12,"CameraName":"CamTV1_11"},{"CameraNum":13,"CameraName":"CamTV1_13"},{"CameraNum":14,"CameraName":"CamTV1_17"},{"CameraNum":15,"CameraName":"CamTV1_14"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"},{"CameraNum":6,"CameraName":"CamTV2_17"},{"CameraNum":7,"CameraName":"CamTV2_05"},{"CameraNum":8,"CameraName":"CamTV2_06"},{"CameraNum":9,"CameraName":"CamTV2_07"},{"CameraNum":10,"CameraName":"CamTV2_08"},{"CameraNum":11,"CameraName":"CamTV2_09"},{"CameraNum":12,"CameraName":"CamTV2_10"},{"CameraNum":13,"CameraName":"CamTV2_11"},{"CameraNum":14,"CameraName":"CamTV2_13"},{"CameraNum":15,"CameraName":"CamTV2_14"},{"CameraNum":16,"CameraName":"CamTV2_15"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"},{"CameraNum":3,"CameraName":"CamTV3_02"},{"CameraNum":4,"CameraName":"CamTV3_03"},{"CameraNum":5,"CameraName":"CamTV3_04"},{"CameraNum":6,"CameraName":"CamTV3_05"},{"CameraNum":7,"CameraName":"CamTV3_06"},{"CameraNum":8,"CameraName":"CamTV3_07"},{"CameraNum":9,"CameraName":"CamTV3_08"},{"CameraNum":10,"CameraName":"CamTV3_09"},{"CameraNum":11,"CameraName":"CamTV3_10"},{"CameraNum":12,"CameraName":"CamTV3_12"},{"CameraNum":13,"CameraName":"CamTV3_13"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Frontstretch","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 7"}]},{"GroupNum":16,"GroupName":"Turn 1","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 3"}]},{"GroupNum":17,"GroupName":"Turn 3","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 8"}]},{"GroupNum":18,"GroupName":"Turn 5","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 9"}]},{"GroupNum":19,"GroupName":"Gurney Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 10"}]},{"GroupNum":20,"GroupName":"Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 4"}]},{"GroupNum":21,"GroupName":"Fangio","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 11"}]},{"GroupNum":22,"GroupName":"Cunningham Corner","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":23,"GroupName":"Tower Turn","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 12"}]},{"GroupNum":24,"GroupName":"Bishop Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 13"}]},{"GroupNum":25,"GroupName":"Gendebien Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 14"}]},{"GroupNum":26,"GroupName":"Le Mans Curve","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 6"}]},{"GroupNum":27,"GroupName":"Sunset Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 15"}]},{"GroupNum":28,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":29,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":30,"GroupName":"Blimp Static","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"CamBlimp1"}]},{"GroupNum":31,"GroupName":"Drone Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp2"}]},{"GroupNum":32,"GroupName":"Drone Sunset","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp3"}]},{"GroupNum":33,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":34,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":35,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":3,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":5,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":5,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":5,"DriverUserID":666793,"PaceCarIdx":0,"DriverHeadPosX":0.015,"DriverHeadPosY":0.324,"DriverHeadPosZ":0.53,"DriverCarIdleRPM":1100,"DriverCarRedLine":8500,"DriverCarEngCylinderCount":10,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":104,"DriverCarMaxFuelPct":0.98,"DriverCarGearNumForward":6,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":7300,"DriverCarSLShiftRPM":8050,"DriverCarSLLastRPM":8100,"DriverCarSLBlinkRPM":8150,"DriverCarVersion":"2022.03.11.01","DriverPitTrkPct":0.033653,"DriverCarEstLapTime":117.9502,"DriverSetupName":"Garage 61\\Lambo_21S4_Sebring_Enduro_PA_League.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"user","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcfr500s","CarClassID":11,"CarID":32,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"safety pcfr500s","CarScreenNameShort":"safety pcfr500s","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":0,"CarClassEstLapTime":139.1841,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"-none-","ClubID":0,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Fabio Castro","AbbrevName":"Castro, F","Initials":"FC","UserID":646933,"TeamID":0,"TeamName":"Fabio Castro","CarNumber":"66","CarNumberRaw":66,"CarPath":"porsche911rgt3","CarClassID":3190,"CarID":137,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3.R","CarScreenNameShort":"Porsche 911 GT3.R","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.2006,"IRating":1110,"LicLevel":20,"LicSubLevel":499,"LicString":"A 4.99","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ff0000,00ff00,0000ff","HelmetDesignStr":"3,de1d1d,9c2c94,000000","SuitDesignStr":"5,c41f1f,9c2c90,000000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Brazil","ClubID":45,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":7,"TeamIncidentCount":7},{"CarIdx":2,"UserName":"Jon-P (intercede007)","AbbrevName":"(intercede007), J","Initials":"J(","UserID":440513,"TeamID":0,"TeamName":"Jon-P (intercede007)","CarNumber":"64","CarNumberRaw":64,"CarPath":"bmwm4gt3","CarClassID":3190,"CarID":132,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"BMW M4 GT3","CarScreenNameShort":"BMW M4 GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":118.0483,"IRating":2005,"LicLevel":19,"LicSubLevel":358,"LicString":"A 3.58","LicColor":87003,"IsSpectator":0,"CarDesignStr":"5,0021a5,ff7701,ffffff,ff7701","HelmetDesignStr":"50,ffffff,0021a5,ff7701","SuitDesignStr":"21,ffffff,0021a5,ff7701","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"West","ClubID":32,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":3,"TeamIncidentCount":3},{"CarIdx":3,"UserName":"Andrew H.","AbbrevName":"H, A","Initials":"AH","UserID":515392,"TeamID":0,"TeamName":"Andrew H.","CarNumber":"27","CarNumberRaw":27,"CarPath":"audir8gt3","CarClassID":3190,"CarID":73,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Audi R8 LMS","CarScreenNameShort":"Audi R8 LMS","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.7573,"IRating":1026,"LicLevel":19,"LicSubLevel":332,"LicString":"A 3.32","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,31d8c7,d629cb","HelmetDesignStr":"64,ffffff,31d8c7,d629cb","SuitDesignStr":"19,ffffff,31d8c7,d629cb","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"California","ClubID":6,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":13,"TeamIncidentCount":13},{"CarIdx":4,"UserName":"Chris O. (Draxond)","AbbrevName":"(Draxond), C","Initials":"C(","UserID":475446,"TeamID":0,"TeamName":"Chris O. (Draxond)","CarNumber":"61","CarNumberRaw":61,"CarPath":"mercedesamggt3","CarClassID":3190,"CarID":72,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Mercedes AMG GT3","CarScreenNameShort":"Mercedes AMG GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.6642,"IRating":1263,"LicLevel":19,"LicSubLevel":393,"LicString":"A 3.93","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,000000,ff0000;00d1ff","HelmetDesignStr":"24,ffffff,000000,ff0000","SuitDesignStr":"9,ffffff,000000,ff0000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"New York","ClubID":14,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":5,"TeamIncidentCount":5},{"CarIdx":5,"UserName":"Zach M. (Bracket)","AbbrevName":"(Bracket), Z","Initials":"Z(","UserID":666793,"TeamID":0,"TeamName":"Zach M. (Bracket)","CarNumber":"49","CarNumberRaw":49,"CarPath":"lamborghinievogt3","CarClassID":3190,"CarID":133,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Lamborghini Huracan GT3 EVO","CarScreenNameShort":"Lamborghini GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.9502,"IRating":1277,"LicLevel":18,"LicSubLevel":234,"LicString":"A 2.34","LicColor":87003,"IsSpectator":0,"CarDesignStr":"0,fff500,000000,ffffff,838383","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Pennsylvania","ClubID":16,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.130902},{"SectorNum":2,"SectorStartPct":0.3069},{"SectorNum":3,"SectorStartPct":0.44224},{"SectorNum":4,"SectorStartPct":0.53158},{"SectorNum":5,"SectorStartPct":0.658844},{"SectorNum":6,"SectorStartPct":0.876665}]},"CarSetup":{"UpdateCount":2,"TiresAero":{"LeftFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"AeroBalanceCalc":{"FrontRhAtSpeed":"50 mm","RearRhAtSpeed":"73 mm","WingSetting":"4 degrees","FrontDownforce":"38.69%"}},"Chassis":{"Front":{"ArbBlades":"2-2","ArbOuterDiameter":"Medium","ToeIn":"-1.5 mm","FrontMasterCyl":"17.8 mm","RearMasterCyl":"17.8 mm","BrakePads":"Medium friction","CrossWeight":"50.0%"},"LeftFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"LeftRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"InCarDials":{"BrakePressureBias":"54.5%","TractionControlSetting":"4 (TC)","ThrottleShapeSetting":"1 (THR)","EngineMapSetting":"1 (MAP)","AbsSetting":"3 (ABS)","DisplayPage":"Magnus Qual","EnduranceLightPackage":"Not Fitted","LeftNightLedStrip":"Red","RightNightLedStrip":"Red"},"RightFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"RightRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"Rear":{"FuelLevel":"101.9 L","ArbBlades":"1-1","ArbOuterDiameter":"Disconnected","SixthGear":"FiA","DiffClutchPlates":6,"DiffPreload":"150 Nm","WingSetting":"4 degrees"}}}}}] +[{"timestamp":"2022-03-20T01:31:44.709Z","values":{"SessionTime":3637.5999837263594,"SessionTick":42914,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":1,"SessionFlags":["StartHidden"],"SessionTimeRemain":4762.4166829403075,"SessionLapsRemain":32767,"SessionLapsRemainEx":32767,"SessionTimeTotal":8400,"SessionLapsTotal":32767,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":50437,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":11276,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":115.542236328125,"CpuUsageFG":0.49861106276512146,"GpuUsage":0.42489704489707947,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.11200035363435745,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":3190,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":5,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":12,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,21,15,10,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,20,14,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.9010816216468811,0.14612257480621338,0.9115878939628601,0.14874495565891266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","OnTrack","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Concrete1Material","Asphalt3Material","Concrete1Material","Asphalt3Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[11,3190,3190,3190,3190,3190,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3190],"CarIdxF2Time":[0,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,105.17842864990234,14.518786430358887,106.92670440673828,14.734991073608398,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,18,12,1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Black","Servicible"],["Servicible","Repair"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":4,"CarIdxPaceLine":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.12844516336917877,0.3104356825351715,-0.054437145590782166,-0.030881790444254875,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,8442.046875,3028.01904296875,5647.3017578125,6276.7919921875,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,4,2,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":21,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":41.666656494140625,"TrackTempCrew":41.666656494140625,"AirTemp":25.474275588989258,"WeatherType":1,"Skies":1,"AirDensity":1.174586296081543,"AirPressure":29.853416442871094,"WindVel":3.596954822540283,"WindDir":1.8235554695129395,"RelativeHumidity":0.33367612957954407,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":2,"CamCameraNumber":1,"CamGroupNumber":33,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":8.972268104553223,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":38.97233200073242,"SteeringWheelUseLinear":true,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":3636.593294270835,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247],"SteeringWheelTorque":-0.00006948639929760247,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dcPitSpeedLimiterToggle":false,"dcTractionControlToggle":false,"dcHeadlightFlash":false,"dpRFTireChange":0,"dpLFTireChange":0,"dpRRTireChange":0,"dpLRTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcDashPage":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"dcTractionControl":0,"dcABS":0,"dcFuelMixture":0,"dcThrottleShape":0,"RFbrakeLinePress":0,"RFcoldPressure":165.38784790039062,"RFtempCL":44.265106201171875,"RFtempCM":44.265106201171875,"RFtempCR":44.265106201171875,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":165.38784790039062,"LFtempCL":44.265106201171875,"LFtempCM":44.265106201171875,"LFtempCR":44.265106201171875,"LFwearL":1,"LFwearM":1,"LFwearR":1,"WaterTemp":77,"WaterLevel":19.65999984741211,"FuelPress":6.130927432401734e-10,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":9,"Voltage":13.40000057220459,"ManifoldPress":1,"RRbrakeLinePress":0,"RRcoldPressure":165.38784790039062,"RRtempCL":44.266876220703125,"RRtempCM":44.266876220703125,"RRtempCR":44.266876220703125,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":165.38784790039062,"LRtempCL":44.266876220703125,"LRtempCM":44.266876220703125,"LRtempCR":44.266876220703125,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRshockDefl":0.05776512622833252,"RRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"RRshockVel":0,"RRshockVel_ST":[0,0,0,0,0,0],"LRshockDefl":0.05776512622833252,"LRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"LRshockVel":0,"LRshockVel_ST":[0,0,0,0,0,0],"RFshockDefl":0.02371823787689209,"RFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"RFshockVel":0,"RFshockVel_ST":[0,0,0,0,0,0],"LFshockDefl":0.02371823787689209,"LFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"LFshockVel":0,"LFshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T01:31:42.239Z","data":{"WeekendInfo":{"TrackName":"sebring international","TrackID":95,"TrackLength":"5.79 km","TrackLengthOfficial":"5.95 km","TrackDisplayName":"Sebring International Raceway","TrackDisplayShortName":"Sebring","TrackConfigName":"International","TrackCity":"Sebring","TrackCountry":"USA","TrackAltitude":"18.79 m","TrackLatitude":"27.450203 m","TrackLongitude":"-81.353694 m","TrackNorthOffset":"1.5656 rad","TrackNumTurns":17,"TrackPitSpeedLimit":"72.00 kph","TrackType":"road course","TrackDirection":"neutral","TrackWeatherType":"Generated / Dynamic Sky","TrackSkies":"Partly Cloudy","TrackSurfaceTemp":"39.72 C","TrackAirTemp":"25.47 C","TrackAirPressure":"29.85 Hg","TrackWindVel":"3.87 m/s","TrackWindDir":"1.83 rad","TrackRelativeHumidity":"33 %","TrackFogLevel":"0 %","TrackCleanup":0,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":173222688,"SubSessionID":44976062,"LeagueID":4778,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Road","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":1,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":2,"NumCarTypes":9,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":62,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":1,"Restarts":"double file lapped cars behind","WeatherType":"Generated / Dynamic Sky","Skies":"Partly Cloudy","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"1:00 pm","Date":"2022-03-19T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":1,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":1,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":"unlimited","SessionTime":"8400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Open Qualify","SessionTrackRubberState":"low usage","SessionName":"QUALIFY","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":2,"Lap":12,"Time":120.1111,"FastestLap":12,"FastestTime":120.1111,"LastTime":-1,"LapsLed":0,"LapsComplete":14,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":1,"Lap":18,"Time":122.5106,"FastestLap":18,"FastestTime":122.5106,"LastTime":-1,"LapsLed":0,"LapsComplete":20,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":3,"Lap":1,"Time":123.0682,"FastestLap":1,"FastestTime":123.0682,"LastTime":-1,"LapsLed":0,"LapsComplete":9,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":4,"Lap":4,"Time":123.1019,"FastestLap":4,"FastestTime":123.1019,"LastTime":-1,"LapsLed":0,"LapsComplete":7,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":2,"FastestLap":12,"FastestTime":120.1111}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0},{"SessionNum":1,"SessionLaps":"unlimited","SessionTime":"2400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"carry over","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":null,"ResultsFastestLap":[{"CarIdx":255,"FastestLap":0,"FastestTime":-1}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":2,"FastestLap":12,"FastestTime":120.1111},{"Position":1,"ClassPosition":1,"CarIdx":1,"FastestLap":18,"FastestTime":122.5106},{"Position":2,"ClassPosition":2,"CarIdx":3,"FastestLap":1,"FastestTime":123.0682},{"Position":3,"ClassPosition":3,"CarIdx":4,"FastestLap":4,"FastestTime":123.1019},{"Position":4,"ClassPosition":4,"CarIdx":5,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","Cameras":[{"CameraNum":1,"CameraName":"Scenic_01"},{"CameraNum":2,"CameraName":"Scenic_02"},{"CameraNum":3,"CameraName":"Scenic_03"},{"CameraNum":4,"CameraName":"Scenic_04"},{"CameraNum":5,"CameraName":"Scenic_05"},{"CameraNum":6,"CameraName":"Scenic_06"},{"CameraNum":7,"CameraName":"Scenic_07"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_01"},{"CameraNum":2,"CameraName":"CamTV1_02"},{"CameraNum":3,"CameraName":"CamTV1_03"},{"CameraNum":4,"CameraName":"CamTV1_15"},{"CameraNum":5,"CameraName":"CamTV1_04"},{"CameraNum":6,"CameraName":"CamTV1_05"},{"CameraNum":7,"CameraName":"CamTV1_06"},{"CameraNum":8,"CameraName":"CamTV1_07"},{"CameraNum":9,"CameraName":"CamTV1_08"},{"CameraNum":10,"CameraName":"CamTV1_09"},{"CameraNum":11,"CameraName":"CamTV1_10"},{"CameraNum":12,"CameraName":"CamTV1_11"},{"CameraNum":13,"CameraName":"CamTV1_13"},{"CameraNum":14,"CameraName":"CamTV1_17"},{"CameraNum":15,"CameraName":"CamTV1_14"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"},{"CameraNum":6,"CameraName":"CamTV2_17"},{"CameraNum":7,"CameraName":"CamTV2_05"},{"CameraNum":8,"CameraName":"CamTV2_06"},{"CameraNum":9,"CameraName":"CamTV2_07"},{"CameraNum":10,"CameraName":"CamTV2_08"},{"CameraNum":11,"CameraName":"CamTV2_09"},{"CameraNum":12,"CameraName":"CamTV2_10"},{"CameraNum":13,"CameraName":"CamTV2_11"},{"CameraNum":14,"CameraName":"CamTV2_13"},{"CameraNum":15,"CameraName":"CamTV2_14"},{"CameraNum":16,"CameraName":"CamTV2_15"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"},{"CameraNum":3,"CameraName":"CamTV3_02"},{"CameraNum":4,"CameraName":"CamTV3_03"},{"CameraNum":5,"CameraName":"CamTV3_04"},{"CameraNum":6,"CameraName":"CamTV3_05"},{"CameraNum":7,"CameraName":"CamTV3_06"},{"CameraNum":8,"CameraName":"CamTV3_07"},{"CameraNum":9,"CameraName":"CamTV3_08"},{"CameraNum":10,"CameraName":"CamTV3_09"},{"CameraNum":11,"CameraName":"CamTV3_10"},{"CameraNum":12,"CameraName":"CamTV3_12"},{"CameraNum":13,"CameraName":"CamTV3_13"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Frontstretch","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 7"}]},{"GroupNum":16,"GroupName":"Turn 1","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 3"}]},{"GroupNum":17,"GroupName":"Turn 3","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 8"}]},{"GroupNum":18,"GroupName":"Turn 5","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 9"}]},{"GroupNum":19,"GroupName":"Gurney Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 10"}]},{"GroupNum":20,"GroupName":"Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 4"}]},{"GroupNum":21,"GroupName":"Fangio","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 11"}]},{"GroupNum":22,"GroupName":"Cunningham Corner","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":23,"GroupName":"Tower Turn","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 12"}]},{"GroupNum":24,"GroupName":"Bishop Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 13"}]},{"GroupNum":25,"GroupName":"Gendebien Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 14"}]},{"GroupNum":26,"GroupName":"Le Mans Curve","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 6"}]},{"GroupNum":27,"GroupName":"Sunset Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 15"}]},{"GroupNum":28,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":29,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":30,"GroupName":"Blimp Static","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"CamBlimp1"}]},{"GroupNum":31,"GroupName":"Drone Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp2"}]},{"GroupNum":32,"GroupName":"Drone Sunset","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp3"}]},{"GroupNum":33,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":34,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":35,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":3,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":5,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":5,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":5,"DriverUserID":666793,"PaceCarIdx":0,"DriverHeadPosX":0.015,"DriverHeadPosY":0.324,"DriverHeadPosZ":0.53,"DriverCarIdleRPM":1100,"DriverCarRedLine":8500,"DriverCarEngCylinderCount":10,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":104,"DriverCarMaxFuelPct":0.98,"DriverCarGearNumForward":6,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":7300,"DriverCarSLShiftRPM":8050,"DriverCarSLLastRPM":8100,"DriverCarSLBlinkRPM":8150,"DriverCarVersion":"2022.03.11.01","DriverPitTrkPct":0.033653,"DriverCarEstLapTime":117.9502,"DriverSetupName":"Garage 61\\Lambo_21S4_Sebring_Enduro_PA_League.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"user","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcfr500s","CarClassID":11,"CarID":32,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"safety pcfr500s","CarScreenNameShort":"safety pcfr500s","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":0,"CarClassEstLapTime":139.1841,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"-none-","ClubID":0,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Fabio Castro","AbbrevName":"Castro, F","Initials":"FC","UserID":646933,"TeamID":0,"TeamName":"Fabio Castro","CarNumber":"66","CarNumberRaw":66,"CarPath":"porsche911rgt3","CarClassID":3190,"CarID":137,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3.R","CarScreenNameShort":"Porsche 911 GT3.R","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.2006,"IRating":1110,"LicLevel":20,"LicSubLevel":499,"LicString":"A 4.99","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ff0000,00ff00,0000ff","HelmetDesignStr":"3,de1d1d,9c2c94,000000","SuitDesignStr":"5,c41f1f,9c2c90,000000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Brazil","ClubID":45,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":7,"TeamIncidentCount":7},{"CarIdx":2,"UserName":"Jon-P (intercede007)","AbbrevName":"(intercede007), J","Initials":"J(","UserID":440513,"TeamID":0,"TeamName":"Jon-P (intercede007)","CarNumber":"64","CarNumberRaw":64,"CarPath":"bmwm4gt3","CarClassID":3190,"CarID":132,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"BMW M4 GT3","CarScreenNameShort":"BMW M4 GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":118.0483,"IRating":2005,"LicLevel":19,"LicSubLevel":358,"LicString":"A 3.58","LicColor":87003,"IsSpectator":0,"CarDesignStr":"5,0021a5,ff7701,ffffff,ff7701","HelmetDesignStr":"50,ffffff,0021a5,ff7701","SuitDesignStr":"21,ffffff,0021a5,ff7701","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"West","ClubID":32,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":3,"TeamIncidentCount":3},{"CarIdx":3,"UserName":"Andrew H.","AbbrevName":"H, A","Initials":"AH","UserID":515392,"TeamID":0,"TeamName":"Andrew H.","CarNumber":"27","CarNumberRaw":27,"CarPath":"audir8gt3","CarClassID":3190,"CarID":73,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Audi R8 LMS","CarScreenNameShort":"Audi R8 LMS","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.7573,"IRating":1026,"LicLevel":19,"LicSubLevel":332,"LicString":"A 3.32","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,31d8c7,d629cb","HelmetDesignStr":"64,ffffff,31d8c7,d629cb","SuitDesignStr":"19,ffffff,31d8c7,d629cb","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"California","ClubID":6,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":13,"TeamIncidentCount":13},{"CarIdx":4,"UserName":"Chris O. (Draxond)","AbbrevName":"(Draxond), C","Initials":"C(","UserID":475446,"TeamID":0,"TeamName":"Chris O. (Draxond)","CarNumber":"61","CarNumberRaw":61,"CarPath":"mercedesamggt3","CarClassID":3190,"CarID":72,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Mercedes AMG GT3","CarScreenNameShort":"Mercedes AMG GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.6642,"IRating":1263,"LicLevel":19,"LicSubLevel":393,"LicString":"A 3.93","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,000000,ff0000;00d1ff","HelmetDesignStr":"24,ffffff,000000,ff0000","SuitDesignStr":"9,ffffff,000000,ff0000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"New York","ClubID":14,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":5,"TeamIncidentCount":5},{"CarIdx":5,"UserName":"Zach M. (Bracket)","AbbrevName":"(Bracket), Z","Initials":"Z(","UserID":666793,"TeamID":0,"TeamName":"Zach M. (Bracket)","CarNumber":"49","CarNumberRaw":49,"CarPath":"lamborghinievogt3","CarClassID":3190,"CarID":133,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Lamborghini Huracan GT3 EVO","CarScreenNameShort":"Lamborghini GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.9502,"IRating":1277,"LicLevel":18,"LicSubLevel":234,"LicString":"A 2.34","LicColor":87003,"IsSpectator":0,"CarDesignStr":"0,fff500,000000,ffffff,838383","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Pennsylvania","ClubID":16,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.130902},{"SectorNum":2,"SectorStartPct":0.3069},{"SectorNum":3,"SectorStartPct":0.44224},{"SectorNum":4,"SectorStartPct":0.53158},{"SectorNum":5,"SectorStartPct":0.658844},{"SectorNum":6,"SectorStartPct":0.876665}]},"CarSetup":{"UpdateCount":2,"TiresAero":{"LeftFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"AeroBalanceCalc":{"FrontRhAtSpeed":"50 mm","RearRhAtSpeed":"73 mm","WingSetting":"4 degrees","FrontDownforce":"38.69%"}},"Chassis":{"Front":{"ArbBlades":"2-2","ArbOuterDiameter":"Medium","ToeIn":"-1.5 mm","FrontMasterCyl":"17.8 mm","RearMasterCyl":"17.8 mm","BrakePads":"Medium friction","CrossWeight":"50.0%"},"LeftFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"LeftRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"InCarDials":{"BrakePressureBias":"54.5%","TractionControlSetting":"4 (TC)","ThrottleShapeSetting":"1 (THR)","EngineMapSetting":"1 (MAP)","AbsSetting":"3 (ABS)","DisplayPage":"Magnus Qual","EnduranceLightPackage":"Not Fitted","LeftNightLedStrip":"Red","RightNightLedStrip":"Red"},"RightFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"RightRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"Rear":{"FuelLevel":"101.9 L","ArbBlades":"1-1","ArbOuterDiameter":"Disconnected","SixthGear":"FiA","DiffClutchPlates":6,"DiffPreload":"150 Nm","WingSetting":"4 degrees"}}}}}] diff --git a/common/CameraState.ts b/common/CameraState.ts new file mode 100644 index 0000000..2ab0dbe --- /dev/null +++ b/common/CameraState.ts @@ -0,0 +1,28 @@ +import { DriverCar } from "./DriverState" + +export type CameraState = { + current: { + carIdx: number, + cameraNum: number, + cameraGroupNum: number, + speed: number, + // true if the replay camera is close enough to the live session to be considered "live" + isLive: boolean, + } + cars: DriverCar[], + cameraGroups: { + num: number, + name: string, + cameras: { + num: number, + name: string, + }[] + }[] + sessions: { + num: number, + name: string, + type: string, + lapLimit: number, + timeLimt: number, + }[] +} \ No newline at end of file diff --git a/common/ClockState.ts b/common/ClockState.ts new file mode 100644 index 0000000..39e2ea2 --- /dev/null +++ b/common/ClockState.ts @@ -0,0 +1,31 @@ +export type SessionTime = { + // The session number of the overall event + num: number, + // The number of seconds since the session began + time: number, +} + +export type ClockState = { + /** + * The current time in the sim. Note that when watching a saved replay, live time == replay time. + */ + live: SessionTime; + /** + * The current time that the replay camera is observing + */ + replay: SessionTime; + /** + * The car currently being observed + */ + // NB: not using CarState here because we don't want this view to update on every lapPositionPct change. + // most views will probably need to do this. + camCar: { + index: number; + number: string; + driverName: string; + }; + /** + * The playback speed of the camera. 1 for normal speed, 0 for paused, fractional values for slow-mo, 2+ for fast forward, negative for rewind, etc. + */ + camSpeed: number; +}; diff --git a/common/DriverState.ts b/common/DriverState.ts new file mode 100644 index 0000000..5de460c --- /dev/null +++ b/common/DriverState.ts @@ -0,0 +1,27 @@ +import { CarColors, HexColor } from "./util"; + +export type CarSessionFlag = "Servicible" | "Black" | "Repair" | "Checkered" | "Disqualify"; + +/** + * Information about a driver and car that changes only rarely + */ +export type DriverCar = { + teamName: string; + driverName: string; + class: { + color: HexColor, + name: string, + }, + color: CarColors, + idx: number, + number: string, +} + +export type DriverState = { + teamIncidentCount: number, + car: DriverCar, + flags: CarSessionFlag[], + lap: number, + position: number, + classPosition: number, +}; \ No newline at end of file diff --git a/common/PaceState.ts b/common/PaceState.ts new file mode 100644 index 0000000..41c1eb9 --- /dev/null +++ b/common/PaceState.ts @@ -0,0 +1,29 @@ +/** + * Not actually information about the pace car. Information about a car that is specific to its pace position + */ +import { DriverCar } from "./DriverState"; + +export type PaceCarInfo = DriverCar & { + officialPosition: number; +}; + +export type PaceSpot = { + car: PaceCarInfo; + // which lane the car is in, 0 for the inside-most lane. + line: number; + // the row the car is in, 0 for the front row + row: number; +}; + +export type PaceState = { + // True if there is only one lap left to go before the race restarts. Pace order should not be edited when this is true + oneToGo: boolean; + /** + * The current order of the grid, sorted by "position", (alternating inside/outside lane, then by row) + */ + grid: PaceSpot[]; + /** + * Cars that are currently in the pits (or otherwise not on track), Ordered by official position. + */ + pits: PaceCarInfo[]; +}; diff --git a/common/incident.ts b/common/incident.ts index fd16f1e..c0dc4b9 100644 --- a/common/incident.ts +++ b/common/incident.ts @@ -1,11 +1,3 @@ -/** - * After being created, incidents will have a null resolution. They can be resolved with the following meanings: - * - Acknowledged: the incident has been reviewed and will be recorded against the driver - * - Dismissed: the incident was spurious, or otherwise will not go on the driver's record - * - Penalized: the incident was acknowledged and the driver was penalized for it - * - Deleted: the incident was cleared as part of a session change. It still exists in the database, but should not be shown in the UI - */ -export type Resolution = 'Unresolved' | 'Acknowledged' | 'Dismissed' | 'Penalized' | 'Deleted'; /** * The known possible incident types. See app/watchers for implementations @@ -17,28 +9,19 @@ export type Resolution = 'Unresolved' | 'Acknowledged' | 'Dismissed' | 'Penalize * - Other: unknown type, see 'description' for more details * - Failed Requirement: driver did not satisfy a requirement before a session change. see 'description' for details */ -export type IncidentCar = { - index: number - number: string - driverName: string - teamName: string - incidentCount: number - currentLap: number - currentLapPct: number -}; -export type IncidentClass = 'Track Limits' | 'Off-Track' | 'Unsafe Rejoin' | 'Involved in Major Incident' | 'Incident Count' | 'Other' | 'Failed Requirement'; -export type IncidentData = { - sessionTime: number - sessionNum: number - type: IncidentClass - description?: string - penalty?: 'd' | number - car: IncidentCar -}; + +import { DriverCar } from "./DriverState"; +import { SessionTime } from "./ClockState"; export type Incident = { - id: number, - resolution: Resolution, - data: IncidentData -}; + car: DriverCar, + lap: number, + trackPositionPct: number, + time: SessionTime, + type: IncidentClass, + description?: string, + penalty?: 'd' | number, +} + +export type IncidentClass = 'Track Limits' | 'Off-Track' | 'Unsafe Rejoin' | 'Involved in Major Incident' | 'Incident Count' | 'Other' | 'Failed Requirement'; diff --git a/common/index.ts b/common/index.ts deleted file mode 100644 index ad11be4..0000000 --- a/common/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type ReplayTime = { - liveSessionNum: number, - liveSessionTime: number, - camSessionNum: number, - camSessionTime: number, - camDriverName: string, - camCarNumber: string, - camPaused: boolean -} \ No newline at end of file diff --git a/common/util.ts b/common/util.ts new file mode 100644 index 0000000..5c45b35 --- /dev/null +++ b/common/util.ts @@ -0,0 +1,7 @@ +export type HexColor = string; + +export type CarColors = { + primary: HexColor, + secondary: HexColor, + tertiary: HexColor, +} \ No newline at end of file diff --git a/index.ts b/index.ts index 168404e..8726bf7 100644 --- a/index.ts +++ b/index.ts @@ -1,5 +1,19 @@ -import { app } from 'electron'; +import { app, session } from 'electron'; import { start } from './app/start'; -app.on('ready', start) -app.on('window-all-closed', () => app.quit()) +import installExtension, {REACT_DEVELOPER_TOOLS} from 'electron-devtools-installer'; + +app.whenReady().then(async () => { + await installExtension(REACT_DEVELOPER_TOOLS, { + forceDownload: true, + loadExtensionOptions: { + allowFileAccess:true + } + }) + .then((name) => console.log(`Added Extension: ${name}`)) + .catch((err) => console.log('An error occurred: ', err)); + + start(); +}); + +app.on('window-all-closed', () => app.quit()); \ No newline at end of file diff --git a/meatball.log b/meatball.log new file mode 100644 index 0000000..9a6d9ad --- /dev/null +++ b/meatball.log @@ -0,0 +1,2 @@ +[{"timestamp":"2022-03-20T01:31:30.462Z","values":{"SessionTime":3623.349983726178,"SessionTick":42059,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":1,"SessionFlags":["StartHidden"],"SessionTimeRemain":4776.6666829404885,"SessionLapsRemain":32767,"SessionLapsRemainEx":32767,"SessionTimeTotal":8400,"SessionLapsTotal":32767,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":50423,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":10421,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":117.1844253540039,"CpuUsageFG":0.49884262681007385,"GpuUsage":0.4101654291152954,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.10300036519765854,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":3190,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":5,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":12,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,21,15,10,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,20,14,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.754605233669281,0.06048807129263878,0.8191131949424744,0.012310795485973358,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","AproachingPits","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Asphalt2Material","Concrete1Material","Asphalt2Material","Concrete1Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[11,3190,3190,3190,3190,3190,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3190],"CarIdxF2Time":[0,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,91.4843521118164,5.482299327850342,98.55764770507812,1.1727583408355713,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,-1,-1,-1,123.83809661865234,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,18,12,1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Servicible"],["Servicible"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":4,"CarIdxPaceLine":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.35109251737594604,0.0753561481833458,-0.33927640318870544,0.052488215267658234,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,8410.861328125,6118.85888671875,6173.994140625,7003.24169921875,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,3,2,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":21,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":41.666656494140625,"TrackTempCrew":41.666656494140625,"AirTemp":25.474029541015625,"WeatherType":1,"Skies":1,"AirDensity":1.1745872497558594,"AirPressure":29.853416442871094,"WindVel":3.7446372509002686,"WindDir":1.87424898147583,"RelativeHumidity":0.33368125557899475,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":2,"CamCameraNumber":1,"CamGroupNumber":33,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":8.972268104553223,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":38.97233200073242,"SteeringWheelUseLinear":true,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":3622.346500651042,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247],"SteeringWheelTorque":-0.00006948639929760247,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dcPitSpeedLimiterToggle":false,"dcTractionControlToggle":false,"dcHeadlightFlash":false,"dpRFTireChange":0,"dpLFTireChange":0,"dpRRTireChange":0,"dpLRTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcDashPage":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"dcTractionControl":0,"dcABS":0,"dcFuelMixture":0,"dcThrottleShape":0,"RFbrakeLinePress":0,"RFcoldPressure":165.38784790039062,"RFtempCL":44.265106201171875,"RFtempCM":44.265106201171875,"RFtempCR":44.265106201171875,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":165.38784790039062,"LFtempCL":44.265106201171875,"LFtempCM":44.265106201171875,"LFtempCR":44.265106201171875,"LFwearL":1,"LFwearM":1,"LFwearR":1,"WaterTemp":77,"WaterLevel":19.65999984741211,"FuelPress":6.130927432401734e-10,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":9,"Voltage":13.40000057220459,"ManifoldPress":1,"RRbrakeLinePress":0,"RRcoldPressure":165.38784790039062,"RRtempCL":44.266876220703125,"RRtempCM":44.266876220703125,"RRtempCR":44.266876220703125,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":165.38784790039062,"LRtempCL":44.266876220703125,"LRtempCM":44.266876220703125,"LRtempCR":44.266876220703125,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRshockDefl":0.05776512622833252,"RRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"RRshockVel":0,"RRshockVel_ST":[0,0,0,0,0,0],"LRshockDefl":0.05776512622833252,"LRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"LRshockVel":0,"LRshockVel_ST":[0,0,0,0,0,0],"RFshockDefl":0.02371823787689209,"RFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"RFshockVel":0,"RFshockVel_ST":[0,0,0,0,0,0],"LFshockDefl":0.02371823787689209,"LFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"LFshockVel":0,"LFshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T01:31:20.948Z","data":{"WeekendInfo":{"TrackName":"sebring international","TrackID":95,"TrackLength":"5.79 km","TrackLengthOfficial":"5.95 km","TrackDisplayName":"Sebring International Raceway","TrackDisplayShortName":"Sebring","TrackConfigName":"International","TrackCity":"Sebring","TrackCountry":"USA","TrackAltitude":"18.79 m","TrackLatitude":"27.450203 m","TrackLongitude":"-81.353694 m","TrackNorthOffset":"1.5656 rad","TrackNumTurns":17,"TrackPitSpeedLimit":"72.00 kph","TrackType":"road course","TrackDirection":"neutral","TrackWeatherType":"Generated / Dynamic Sky","TrackSkies":"Partly Cloudy","TrackSurfaceTemp":"39.72 C","TrackAirTemp":"25.47 C","TrackAirPressure":"29.85 Hg","TrackWindVel":"3.87 m/s","TrackWindDir":"1.83 rad","TrackRelativeHumidity":"33 %","TrackFogLevel":"0 %","TrackCleanup":0,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":173222688,"SubSessionID":44976062,"LeagueID":4778,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Road","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":1,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":2,"NumCarTypes":9,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":62,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":1,"Restarts":"double file lapped cars behind","WeatherType":"Generated / Dynamic Sky","Skies":"Partly Cloudy","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"1:00 pm","Date":"2022-03-19T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":1,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":1,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":"unlimited","SessionTime":"8400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Open Qualify","SessionTrackRubberState":"low usage","SessionName":"QUALIFY","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":2,"Lap":12,"Time":120.1111,"FastestLap":12,"FastestTime":120.1111,"LastTime":-1,"LapsLed":0,"LapsComplete":14,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":1,"Lap":18,"Time":122.5106,"FastestLap":18,"FastestTime":122.5106,"LastTime":-1,"LapsLed":0,"LapsComplete":20,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":3,"Lap":1,"Time":123.0682,"FastestLap":1,"FastestTime":123.0682,"LastTime":-1,"LapsLed":0,"LapsComplete":9,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":4,"Lap":4,"Time":123.1019,"FastestLap":4,"FastestTime":123.1019,"LastTime":123.8381,"LapsLed":0,"LapsComplete":6,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":2,"FastestLap":12,"FastestTime":120.1111}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0},{"SessionNum":1,"SessionLaps":"unlimited","SessionTime":"2400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"carry over","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":null,"ResultsFastestLap":[{"CarIdx":255,"FastestLap":0,"FastestTime":-1}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":2,"FastestLap":12,"FastestTime":120.1111},{"Position":1,"ClassPosition":1,"CarIdx":1,"FastestLap":18,"FastestTime":122.5106},{"Position":2,"ClassPosition":2,"CarIdx":3,"FastestLap":1,"FastestTime":123.0682},{"Position":3,"ClassPosition":3,"CarIdx":4,"FastestLap":4,"FastestTime":123.1019},{"Position":4,"ClassPosition":4,"CarIdx":5,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","Cameras":[{"CameraNum":1,"CameraName":"Scenic_01"},{"CameraNum":2,"CameraName":"Scenic_02"},{"CameraNum":3,"CameraName":"Scenic_03"},{"CameraNum":4,"CameraName":"Scenic_04"},{"CameraNum":5,"CameraName":"Scenic_05"},{"CameraNum":6,"CameraName":"Scenic_06"},{"CameraNum":7,"CameraName":"Scenic_07"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_01"},{"CameraNum":2,"CameraName":"CamTV1_02"},{"CameraNum":3,"CameraName":"CamTV1_03"},{"CameraNum":4,"CameraName":"CamTV1_15"},{"CameraNum":5,"CameraName":"CamTV1_04"},{"CameraNum":6,"CameraName":"CamTV1_05"},{"CameraNum":7,"CameraName":"CamTV1_06"},{"CameraNum":8,"CameraName":"CamTV1_07"},{"CameraNum":9,"CameraName":"CamTV1_08"},{"CameraNum":10,"CameraName":"CamTV1_09"},{"CameraNum":11,"CameraName":"CamTV1_10"},{"CameraNum":12,"CameraName":"CamTV1_11"},{"CameraNum":13,"CameraName":"CamTV1_13"},{"CameraNum":14,"CameraName":"CamTV1_17"},{"CameraNum":15,"CameraName":"CamTV1_14"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"},{"CameraNum":6,"CameraName":"CamTV2_17"},{"CameraNum":7,"CameraName":"CamTV2_05"},{"CameraNum":8,"CameraName":"CamTV2_06"},{"CameraNum":9,"CameraName":"CamTV2_07"},{"CameraNum":10,"CameraName":"CamTV2_08"},{"CameraNum":11,"CameraName":"CamTV2_09"},{"CameraNum":12,"CameraName":"CamTV2_10"},{"CameraNum":13,"CameraName":"CamTV2_11"},{"CameraNum":14,"CameraName":"CamTV2_13"},{"CameraNum":15,"CameraName":"CamTV2_14"},{"CameraNum":16,"CameraName":"CamTV2_15"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"},{"CameraNum":3,"CameraName":"CamTV3_02"},{"CameraNum":4,"CameraName":"CamTV3_03"},{"CameraNum":5,"CameraName":"CamTV3_04"},{"CameraNum":6,"CameraName":"CamTV3_05"},{"CameraNum":7,"CameraName":"CamTV3_06"},{"CameraNum":8,"CameraName":"CamTV3_07"},{"CameraNum":9,"CameraName":"CamTV3_08"},{"CameraNum":10,"CameraName":"CamTV3_09"},{"CameraNum":11,"CameraName":"CamTV3_10"},{"CameraNum":12,"CameraName":"CamTV3_12"},{"CameraNum":13,"CameraName":"CamTV3_13"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Frontstretch","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 7"}]},{"GroupNum":16,"GroupName":"Turn 1","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 3"}]},{"GroupNum":17,"GroupName":"Turn 3","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 8"}]},{"GroupNum":18,"GroupName":"Turn 5","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 9"}]},{"GroupNum":19,"GroupName":"Gurney Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 10"}]},{"GroupNum":20,"GroupName":"Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 4"}]},{"GroupNum":21,"GroupName":"Fangio","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 11"}]},{"GroupNum":22,"GroupName":"Cunningham Corner","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":23,"GroupName":"Tower Turn","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 12"}]},{"GroupNum":24,"GroupName":"Bishop Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 13"}]},{"GroupNum":25,"GroupName":"Gendebien Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 14"}]},{"GroupNum":26,"GroupName":"Le Mans Curve","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 6"}]},{"GroupNum":27,"GroupName":"Sunset Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 15"}]},{"GroupNum":28,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":29,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":30,"GroupName":"Blimp Static","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"CamBlimp1"}]},{"GroupNum":31,"GroupName":"Drone Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp2"}]},{"GroupNum":32,"GroupName":"Drone Sunset","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp3"}]},{"GroupNum":33,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":34,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":35,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":3,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":5,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":5,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":5,"DriverUserID":666793,"PaceCarIdx":0,"DriverHeadPosX":0.015,"DriverHeadPosY":0.324,"DriverHeadPosZ":0.53,"DriverCarIdleRPM":1100,"DriverCarRedLine":8500,"DriverCarEngCylinderCount":10,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":104,"DriverCarMaxFuelPct":0.98,"DriverCarGearNumForward":6,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":7300,"DriverCarSLShiftRPM":8050,"DriverCarSLLastRPM":8100,"DriverCarSLBlinkRPM":8150,"DriverCarVersion":"2022.03.11.01","DriverPitTrkPct":0.033653,"DriverCarEstLapTime":117.9502,"DriverSetupName":"Garage 61\\Lambo_21S4_Sebring_Enduro_PA_League.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"user","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcfr500s","CarClassID":11,"CarID":32,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"safety pcfr500s","CarScreenNameShort":"safety pcfr500s","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":0,"CarClassEstLapTime":139.1841,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"-none-","ClubID":0,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Fabio Castro","AbbrevName":"Castro, F","Initials":"FC","UserID":646933,"TeamID":0,"TeamName":"Fabio Castro","CarNumber":"66","CarNumberRaw":66,"CarPath":"porsche911rgt3","CarClassID":3190,"CarID":137,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3.R","CarScreenNameShort":"Porsche 911 GT3.R","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.2006,"IRating":1110,"LicLevel":20,"LicSubLevel":499,"LicString":"A 4.99","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ff0000,00ff00,0000ff","HelmetDesignStr":"3,de1d1d,9c2c94,000000","SuitDesignStr":"5,c41f1f,9c2c90,000000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Brazil","ClubID":45,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":7,"TeamIncidentCount":7},{"CarIdx":2,"UserName":"Jon-P (intercede007)","AbbrevName":"(intercede007), J","Initials":"J(","UserID":440513,"TeamID":0,"TeamName":"Jon-P (intercede007)","CarNumber":"64","CarNumberRaw":64,"CarPath":"bmwm4gt3","CarClassID":3190,"CarID":132,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"BMW M4 GT3","CarScreenNameShort":"BMW M4 GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":118.0483,"IRating":2005,"LicLevel":19,"LicSubLevel":358,"LicString":"A 3.58","LicColor":87003,"IsSpectator":0,"CarDesignStr":"5,0021a5,ff7701,ffffff,ff7701","HelmetDesignStr":"50,ffffff,0021a5,ff7701","SuitDesignStr":"21,ffffff,0021a5,ff7701","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"West","ClubID":32,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":1,"TeamIncidentCount":1},{"CarIdx":3,"UserName":"Andrew H.","AbbrevName":"H, A","Initials":"AH","UserID":515392,"TeamID":0,"TeamName":"Andrew H.","CarNumber":"27","CarNumberRaw":27,"CarPath":"audir8gt3","CarClassID":3190,"CarID":73,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Audi R8 LMS","CarScreenNameShort":"Audi R8 LMS","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.7573,"IRating":1026,"LicLevel":19,"LicSubLevel":332,"LicString":"A 3.32","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,31d8c7,d629cb","HelmetDesignStr":"64,ffffff,31d8c7,d629cb","SuitDesignStr":"19,ffffff,31d8c7,d629cb","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"California","ClubID":6,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":13,"TeamIncidentCount":13},{"CarIdx":4,"UserName":"Chris O. (Draxond)","AbbrevName":"(Draxond), C","Initials":"C(","UserID":475446,"TeamID":0,"TeamName":"Chris O. (Draxond)","CarNumber":"61","CarNumberRaw":61,"CarPath":"mercedesamggt3","CarClassID":3190,"CarID":72,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Mercedes AMG GT3","CarScreenNameShort":"Mercedes AMG GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.6642,"IRating":1263,"LicLevel":19,"LicSubLevel":393,"LicString":"A 3.93","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,000000,ff0000;00d1ff","HelmetDesignStr":"24,ffffff,000000,ff0000","SuitDesignStr":"9,ffffff,000000,ff0000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"New York","ClubID":14,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":5,"TeamIncidentCount":5},{"CarIdx":5,"UserName":"Zach M. (Bracket)","AbbrevName":"(Bracket), Z","Initials":"Z(","UserID":666793,"TeamID":0,"TeamName":"Zach M. (Bracket)","CarNumber":"49","CarNumberRaw":49,"CarPath":"lamborghinievogt3","CarClassID":3190,"CarID":133,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Lamborghini Huracan GT3 EVO","CarScreenNameShort":"Lamborghini GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.9502,"IRating":1277,"LicLevel":18,"LicSubLevel":234,"LicString":"A 2.34","LicColor":87003,"IsSpectator":0,"CarDesignStr":"0,fff500,000000,ffffff,838383","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Pennsylvania","ClubID":16,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.130902},{"SectorNum":2,"SectorStartPct":0.3069},{"SectorNum":3,"SectorStartPct":0.44224},{"SectorNum":4,"SectorStartPct":0.53158},{"SectorNum":5,"SectorStartPct":0.658844},{"SectorNum":6,"SectorStartPct":0.876665}]},"CarSetup":{"UpdateCount":2,"TiresAero":{"LeftFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"AeroBalanceCalc":{"FrontRhAtSpeed":"50 mm","RearRhAtSpeed":"73 mm","WingSetting":"4 degrees","FrontDownforce":"38.69%"}},"Chassis":{"Front":{"ArbBlades":"2-2","ArbOuterDiameter":"Medium","ToeIn":"-1.5 mm","FrontMasterCyl":"17.8 mm","RearMasterCyl":"17.8 mm","BrakePads":"Medium friction","CrossWeight":"50.0%"},"LeftFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"LeftRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"InCarDials":{"BrakePressureBias":"54.5%","TractionControlSetting":"4 (TC)","ThrottleShapeSetting":"1 (THR)","EngineMapSetting":"1 (MAP)","AbsSetting":"3 (ABS)","DisplayPage":"Magnus Qual","EnduranceLightPackage":"Not Fitted","LeftNightLedStrip":"Red","RightNightLedStrip":"Red"},"RightFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"RightRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"Rear":{"FuelLevel":"101.9 L","ArbBlades":"1-1","ArbOuterDiameter":"Disconnected","SixthGear":"FiA","DiffClutchPlates":6,"DiffPreload":"150 Nm","WingSetting":"4 degrees"}}}}}] +[{"timestamp":"2022-03-20T01:31:30.712Z","values":{"SessionTime":3623.599983726181,"SessionTick":42074,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":1,"SessionFlags":["StartHidden"],"SessionTimeRemain":4776.416682940486,"SessionLapsRemain":32767,"SessionLapsRemainEx":32767,"SessionTimeTotal":8400,"SessionLapsTotal":32767,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":50423,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":10436,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":117.30294036865234,"CpuUsageFG":0.49950891733169556,"GpuUsage":0.41017618775367737,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.10200036317110062,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":3190,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":5,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":12,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,21,15,10,8,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,20,14,9,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.7565620541572571,0.06201384216547012,0.820404052734375,0.014946156181395054,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","AproachingPits","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Asphalt2Material","Concrete1Material","Asphalt2Material","Concrete1Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,2,1,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[11,3190,3190,3190,3190,3190,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3190],"CarIdxF2Time":[0,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,91.71894836425781,5.614285469055176,98.67740631103516,1.419285774230957,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,122.5105972290039,120.11109924316406,123.06819915771484,123.10189819335938,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,18,12,1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Servicible"],["Servicible","Repair"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":4,"CarIdxPaceLine":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.18765805661678314,0.06379489600658417,-0.44335484504699707,-0.043846189975738525,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,8586,6338.59521484375,6437.71728515625,7055.18994140625,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,3,2,2,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":21,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":41.666656494140625,"TrackTempCrew":41.666656494140625,"AirTemp":25.47403335571289,"WeatherType":1,"Skies":1,"AirDensity":1.1745872497558594,"AirPressure":29.853416442871094,"WindVel":3.749844789505005,"WindDir":1.870666742324829,"RelativeHumidity":0.3336811661720276,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":2,"CamCameraNumber":1,"CamGroupNumber":33,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":8.972268104553223,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":38.97233200073242,"SteeringWheelUseLinear":true,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":3622.593294270835,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247,-0.00006948639929760247],"SteeringWheelTorque":-0.00006948639929760247,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dcPitSpeedLimiterToggle":false,"dcTractionControlToggle":false,"dcHeadlightFlash":false,"dpRFTireChange":0,"dpLFTireChange":0,"dpRRTireChange":0,"dpLRTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcDashPage":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"dcTractionControl":0,"dcABS":0,"dcFuelMixture":0,"dcThrottleShape":0,"RFbrakeLinePress":0,"RFcoldPressure":165.38784790039062,"RFtempCL":44.265106201171875,"RFtempCM":44.265106201171875,"RFtempCR":44.265106201171875,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":165.38784790039062,"LFtempCL":44.265106201171875,"LFtempCM":44.265106201171875,"LFtempCR":44.265106201171875,"LFwearL":1,"LFwearM":1,"LFwearR":1,"WaterTemp":77,"WaterLevel":19.65999984741211,"FuelPress":6.130927432401734e-10,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":9,"Voltage":13.40000057220459,"ManifoldPress":1,"RRbrakeLinePress":0,"RRcoldPressure":165.38784790039062,"RRtempCL":44.266876220703125,"RRtempCM":44.266876220703125,"RRtempCR":44.266876220703125,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":165.38784790039062,"LRtempCL":44.266876220703125,"LRtempCM":44.266876220703125,"LRtempCR":44.266876220703125,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRshockDefl":0.05776512622833252,"RRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"RRshockVel":0,"RRshockVel_ST":[0,0,0,0,0,0],"LRshockDefl":0.05776512622833252,"LRshockDefl_ST":[0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252,0.05776512622833252],"LRshockVel":0,"LRshockVel_ST":[0,0,0,0,0,0],"RFshockDefl":0.02371823787689209,"RFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"RFshockVel":0,"RFshockVel_ST":[0,0,0,0,0,0],"LFshockDefl":0.02371823787689209,"LFshockDefl_ST":[0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209,0.02371823787689209],"LFshockVel":0,"LFshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T01:31:20.948Z","data":{"WeekendInfo":{"TrackName":"sebring international","TrackID":95,"TrackLength":"5.79 km","TrackLengthOfficial":"5.95 km","TrackDisplayName":"Sebring International Raceway","TrackDisplayShortName":"Sebring","TrackConfigName":"International","TrackCity":"Sebring","TrackCountry":"USA","TrackAltitude":"18.79 m","TrackLatitude":"27.450203 m","TrackLongitude":"-81.353694 m","TrackNorthOffset":"1.5656 rad","TrackNumTurns":17,"TrackPitSpeedLimit":"72.00 kph","TrackType":"road course","TrackDirection":"neutral","TrackWeatherType":"Generated / Dynamic Sky","TrackSkies":"Partly Cloudy","TrackSurfaceTemp":"39.72 C","TrackAirTemp":"25.47 C","TrackAirPressure":"29.85 Hg","TrackWindVel":"3.87 m/s","TrackWindDir":"1.83 rad","TrackRelativeHumidity":"33 %","TrackFogLevel":"0 %","TrackCleanup":0,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":173222688,"SubSessionID":44976062,"LeagueID":4778,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Road","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":1,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":2,"NumCarTypes":9,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":62,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":1,"Restarts":"double file lapped cars behind","WeatherType":"Generated / Dynamic Sky","Skies":"Partly Cloudy","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"1:00 pm","Date":"2022-03-19T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":1,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":1,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":"unlimited","SessionTime":"8400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Open Qualify","SessionTrackRubberState":"low usage","SessionName":"QUALIFY","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":2,"Lap":12,"Time":120.1111,"FastestLap":12,"FastestTime":120.1111,"LastTime":-1,"LapsLed":0,"LapsComplete":14,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":1,"Lap":18,"Time":122.5106,"FastestLap":18,"FastestTime":122.5106,"LastTime":-1,"LapsLed":0,"LapsComplete":20,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":3,"Lap":1,"Time":123.0682,"FastestLap":1,"FastestTime":123.0682,"LastTime":-1,"LapsLed":0,"LapsComplete":9,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":4,"Lap":4,"Time":123.1019,"FastestLap":4,"FastestTime":123.1019,"LastTime":123.8381,"LapsLed":0,"LapsComplete":6,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":2,"FastestLap":12,"FastestTime":120.1111}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0},{"SessionNum":1,"SessionLaps":"unlimited","SessionTime":"2400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"carry over","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":null,"ResultsFastestLap":[{"CarIdx":255,"FastestLap":0,"FastestTime":-1}],"ResultsAverageLapTime":-1,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":0,"ResultsLapsComplete":-1,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":2,"FastestLap":12,"FastestTime":120.1111},{"Position":1,"ClassPosition":1,"CarIdx":1,"FastestLap":18,"FastestTime":122.5106},{"Position":2,"ClassPosition":2,"CarIdx":3,"FastestLap":1,"FastestTime":123.0682},{"Position":3,"ClassPosition":3,"CarIdx":4,"FastestLap":4,"FastestTime":123.1019},{"Position":4,"ClassPosition":4,"CarIdx":5,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","Cameras":[{"CameraNum":1,"CameraName":"Scenic_01"},{"CameraNum":2,"CameraName":"Scenic_02"},{"CameraNum":3,"CameraName":"Scenic_03"},{"CameraNum":4,"CameraName":"Scenic_04"},{"CameraNum":5,"CameraName":"Scenic_05"},{"CameraNum":6,"CameraName":"Scenic_06"},{"CameraNum":7,"CameraName":"Scenic_07"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_01"},{"CameraNum":2,"CameraName":"CamTV1_02"},{"CameraNum":3,"CameraName":"CamTV1_03"},{"CameraNum":4,"CameraName":"CamTV1_15"},{"CameraNum":5,"CameraName":"CamTV1_04"},{"CameraNum":6,"CameraName":"CamTV1_05"},{"CameraNum":7,"CameraName":"CamTV1_06"},{"CameraNum":8,"CameraName":"CamTV1_07"},{"CameraNum":9,"CameraName":"CamTV1_08"},{"CameraNum":10,"CameraName":"CamTV1_09"},{"CameraNum":11,"CameraName":"CamTV1_10"},{"CameraNum":12,"CameraName":"CamTV1_11"},{"CameraNum":13,"CameraName":"CamTV1_13"},{"CameraNum":14,"CameraName":"CamTV1_17"},{"CameraNum":15,"CameraName":"CamTV1_14"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"},{"CameraNum":6,"CameraName":"CamTV2_17"},{"CameraNum":7,"CameraName":"CamTV2_05"},{"CameraNum":8,"CameraName":"CamTV2_06"},{"CameraNum":9,"CameraName":"CamTV2_07"},{"CameraNum":10,"CameraName":"CamTV2_08"},{"CameraNum":11,"CameraName":"CamTV2_09"},{"CameraNum":12,"CameraName":"CamTV2_10"},{"CameraNum":13,"CameraName":"CamTV2_11"},{"CameraNum":14,"CameraName":"CamTV2_13"},{"CameraNum":15,"CameraName":"CamTV2_14"},{"CameraNum":16,"CameraName":"CamTV2_15"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"},{"CameraNum":3,"CameraName":"CamTV3_02"},{"CameraNum":4,"CameraName":"CamTV3_03"},{"CameraNum":5,"CameraName":"CamTV3_04"},{"CameraNum":6,"CameraName":"CamTV3_05"},{"CameraNum":7,"CameraName":"CamTV3_06"},{"CameraNum":8,"CameraName":"CamTV3_07"},{"CameraNum":9,"CameraName":"CamTV3_08"},{"CameraNum":10,"CameraName":"CamTV3_09"},{"CameraNum":11,"CameraName":"CamTV3_10"},{"CameraNum":12,"CameraName":"CamTV3_12"},{"CameraNum":13,"CameraName":"CamTV3_13"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Frontstretch","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 7"}]},{"GroupNum":16,"GroupName":"Turn 1","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 3"}]},{"GroupNum":17,"GroupName":"Turn 3","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 8"}]},{"GroupNum":18,"GroupName":"Turn 5","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 9"}]},{"GroupNum":19,"GroupName":"Gurney Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 10"}]},{"GroupNum":20,"GroupName":"Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 4"}]},{"GroupNum":21,"GroupName":"Fangio","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 11"}]},{"GroupNum":22,"GroupName":"Cunningham Corner","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":23,"GroupName":"Tower Turn","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 12"}]},{"GroupNum":24,"GroupName":"Bishop Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 13"}]},{"GroupNum":25,"GroupName":"Gendebien Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 14"}]},{"GroupNum":26,"GroupName":"Le Mans Curve","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 6"}]},{"GroupNum":27,"GroupName":"Sunset Bend","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 15"}]},{"GroupNum":28,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":29,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":30,"GroupName":"Blimp Static","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"CamBlimp1"}]},{"GroupNum":31,"GroupName":"Drone Hairpin","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp2"}]},{"GroupNum":32,"GroupName":"Drone Sunset","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp3"}]},{"GroupNum":33,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":34,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":35,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":3,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":5,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":5,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":5,"DriverUserID":666793,"PaceCarIdx":0,"DriverHeadPosX":0.015,"DriverHeadPosY":0.324,"DriverHeadPosZ":0.53,"DriverCarIdleRPM":1100,"DriverCarRedLine":8500,"DriverCarEngCylinderCount":10,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":104,"DriverCarMaxFuelPct":0.98,"DriverCarGearNumForward":6,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":7300,"DriverCarSLShiftRPM":8050,"DriverCarSLLastRPM":8100,"DriverCarSLBlinkRPM":8150,"DriverCarVersion":"2022.03.11.01","DriverPitTrkPct":0.033653,"DriverCarEstLapTime":117.9502,"DriverSetupName":"Garage 61\\Lambo_21S4_Sebring_Enduro_PA_League.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"user","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcfr500s","CarClassID":11,"CarID":32,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"safety pcfr500s","CarScreenNameShort":"safety pcfr500s","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":0,"CarClassEstLapTime":139.1841,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"-none-","ClubID":0,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Fabio Castro","AbbrevName":"Castro, F","Initials":"FC","UserID":646933,"TeamID":0,"TeamName":"Fabio Castro","CarNumber":"66","CarNumberRaw":66,"CarPath":"porsche911rgt3","CarClassID":3190,"CarID":137,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3.R","CarScreenNameShort":"Porsche 911 GT3.R","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.2006,"IRating":1110,"LicLevel":20,"LicSubLevel":499,"LicString":"A 4.99","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ff0000,00ff00,0000ff","HelmetDesignStr":"3,de1d1d,9c2c94,000000","SuitDesignStr":"5,c41f1f,9c2c90,000000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Brazil","ClubID":45,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":7,"TeamIncidentCount":7},{"CarIdx":2,"UserName":"Jon-P (intercede007)","AbbrevName":"(intercede007), J","Initials":"J(","UserID":440513,"TeamID":0,"TeamName":"Jon-P (intercede007)","CarNumber":"64","CarNumberRaw":64,"CarPath":"bmwm4gt3","CarClassID":3190,"CarID":132,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"BMW M4 GT3","CarScreenNameShort":"BMW M4 GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":118.0483,"IRating":2005,"LicLevel":19,"LicSubLevel":358,"LicString":"A 3.58","LicColor":87003,"IsSpectator":0,"CarDesignStr":"5,0021a5,ff7701,ffffff,ff7701","HelmetDesignStr":"50,ffffff,0021a5,ff7701","SuitDesignStr":"21,ffffff,0021a5,ff7701","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"West","ClubID":32,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":1,"TeamIncidentCount":1},{"CarIdx":3,"UserName":"Andrew H.","AbbrevName":"H, A","Initials":"AH","UserID":515392,"TeamID":0,"TeamName":"Andrew H.","CarNumber":"27","CarNumberRaw":27,"CarPath":"audir8gt3","CarClassID":3190,"CarID":73,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Audi R8 LMS","CarScreenNameShort":"Audi R8 LMS","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.7573,"IRating":1026,"LicLevel":19,"LicSubLevel":332,"LicString":"A 3.32","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,31d8c7,d629cb","HelmetDesignStr":"64,ffffff,31d8c7,d629cb","SuitDesignStr":"19,ffffff,31d8c7,d629cb","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"California","ClubID":6,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":13,"TeamIncidentCount":13},{"CarIdx":4,"UserName":"Chris O. (Draxond)","AbbrevName":"(Draxond), C","Initials":"C(","UserID":475446,"TeamID":0,"TeamName":"Chris O. (Draxond)","CarNumber":"61","CarNumberRaw":61,"CarPath":"mercedesamggt3","CarClassID":3190,"CarID":72,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Mercedes AMG GT3","CarScreenNameShort":"Mercedes AMG GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.6642,"IRating":1263,"LicLevel":19,"LicSubLevel":393,"LicString":"A 3.93","LicColor":87003,"IsSpectator":0,"CarDesignStr":"1,ffffff,000000,ff0000;00d1ff","HelmetDesignStr":"24,ffffff,000000,ff0000","SuitDesignStr":"9,ffffff,000000,ff0000","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"New York","ClubID":14,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":5,"TeamIncidentCount":5},{"CarIdx":5,"UserName":"Zach M. (Bracket)","AbbrevName":"(Bracket), Z","Initials":"Z(","UserID":666793,"TeamID":0,"TeamName":"Zach M. (Bracket)","CarNumber":"49","CarNumberRaw":49,"CarPath":"lamborghinievogt3","CarClassID":3190,"CarID":133,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Lamborghini Huracan GT3 EVO","CarScreenNameShort":"Lamborghini GT3","CarClassShortName":"IMSA22","CarClassRelSpeed":52,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"0.980 %","CarClassWeightPenalty":"12.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":3395327,"CarClassEstLapTime":117.9502,"IRating":1277,"LicLevel":18,"LicSubLevel":234,"LicString":"A 2.34","LicColor":87003,"IsSpectator":0,"CarDesignStr":"0,fff500,000000,ffffff,838383","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffffff,777777,000000","CarSponsor_1":0,"CarSponsor_2":0,"ClubName":"Pennsylvania","ClubID":16,"DivisionName":"Division 1","DivisionID":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.130902},{"SectorNum":2,"SectorStartPct":0.3069},{"SectorNum":3,"SectorStartPct":0.44224},{"SectorNum":4,"SectorStartPct":0.53158},{"SectorNum":5,"SectorStartPct":0.658844},{"SectorNum":6,"SectorStartPct":0.876665}]},"CarSetup":{"UpdateCount":2,"TiresAero":{"LeftFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsOMI":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"RightRear":{"StartingPressure":"165 kPa","LastHotPressure":"165 kPa","LastTempsIMO":"44C, 44C, 44C","TreadRemaining":"100%, 100%, 100%"},"AeroBalanceCalc":{"FrontRhAtSpeed":"50 mm","RearRhAtSpeed":"73 mm","WingSetting":"4 degrees","FrontDownforce":"38.69%"}},"Chassis":{"Front":{"ArbBlades":"2-2","ArbOuterDiameter":"Medium","ToeIn":"-1.5 mm","FrontMasterCyl":"17.8 mm","RearMasterCyl":"17.8 mm","BrakePads":"Medium friction","CrossWeight":"50.0%"},"LeftFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"LeftRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"InCarDials":{"BrakePressureBias":"54.5%","TractionControlSetting":"4 (TC)","ThrottleShapeSetting":"1 (THR)","EngineMapSetting":"1 (MAP)","AbsSetting":"3 (ABS)","DisplayPage":"Magnus Qual","EnduranceLightPackage":"Not Fitted","LeftNightLedStrip":"Red","RightNightLedStrip":"Red"},"RightFront":{"CornerWeight":"3126 N","RideHeight":"52.6 mm","SpringPerchOffset":"32.5 mm","SpringSelected":190,"SpringRate":"190 N/mm","CompDamping":"-10 clicks","RbdDamping":"-6 clicks","Camber":"-4.0 deg","Caster":"+12.2 deg"},"RightRear":{"CornerWeight":"4033 N","RideHeight":"79.6 mm","SpringPerchOffset":"2.5 mm","SpringSelected":220,"SpringRate":"220 N/mm","CompDamping":"-2 clicks","RbdDamping":"0 clicks","Camber":"-3.5 deg","ToeIn":"+0.3 mm"},"Rear":{"FuelLevel":"101.9 L","ArbBlades":"1-1","ArbOuterDiameter":"Disconnected","SixthGear":"FiA","DiffClutchPlates":6,"DiffPreload":"150 Nm","WingSetting":"4 degrees"}}}}}] diff --git a/pacing.log b/pacing.log new file mode 100644 index 0000000..416aaa4 --- /dev/null +++ b/pacing.log @@ -0,0 +1,2 @@ +[{"timestamp":"2022-03-20T02:04:32.963Z","values":{"SessionTime":817.5666666679905,"SessionTick":69344,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":2,"SessionFlags":["CautionWaving","StartHidden"],"SessionTimeRemain":85960.04999999868,"SessionLapsRemain":7,"SessionLapsRemainEx":8,"SessionTimeTotal":86400,"SessionLapsTotal":30,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":44017,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":65796,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":138.93992614746094,"CpuUsageFG":0.3672731816768646,"GpuUsage":0.2804560661315918,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.19200044870376587,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":0,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":0,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":0,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,23,23,23,23,23,23,23,23,23,23,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,22,22,22,22,22,22,22,22,22,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.5211997628211975,0.5630180239677429,0.5852591395378113,0.5421997904777527,0.7342230081558228,0.6562954783439636,0.7208843231201172,0.6818631887435913,0.6282612085342407,0.7016904950141907,0.7579249739646912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,10,8,7,9,1,5,2,4,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,10,8,7,9,1,5,2,4,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[0,0,0,0,0,0,0,0,0,0,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0],"CarIdxF2Time":[0,6.839799880981445,6.2565999031066895,5.896200180053711,6.474599838256836,0,3.8545000553131104,0.5784000158309937,2.8745999336242676,5.159800052642822,1.520400047302246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,8.369359970092773,9.00141716003418,9.347650527954102,8.681283950805664,11.881589889526367,10.5355806350708,11.655621528625488,10.970139503479004,10.050436019897461,11.319228172302246,11.477829933166504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,21.110000610351562,20.75589942932129,20.617300033569336,20.895599365234375,19.89069938659668,20.13800048828125,19.84440040588379,20.36319923400879,19.809799194335938,20.137699127197266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,18.80620002746582,18.850200653076172,18.62700080871582,18.79789924621582,18.78809928894043,18.759599685668945,18.742000579833984,18.82360076904297,18.693500518798828,18.63089942932129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,9,12,10,9,5,5,6,7,16,18,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":2,"CarIdxPaceLine":[-1,0,1,0,1,0,1,0,1,0,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,1,1,2,2,3,3,4,4,5,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.2721485495567322,0.40286463499069214,0.4745647609233856,0.3745410740375519,0.5836500525474548,0.579948365688324,0.6466885805130005,0.6142850518226624,0.5339155793190002,0.6013477444648743,0.7416762709617615,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,4512.6435546875,4458.43359375,4508.1064453125,4499.91064453125,3149.115234375,3686.527587890625,3054.948486328125,3453.654296875,3922.942626953125,3290.80859375,3494.001708984375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,4,4,4,4,4,4,4,4,4,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":23,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":50,"TrackTempCrew":50,"AirTemp":25.63433265686035,"WeatherType":3,"Skies":0,"AirDensity":1.155827522277832,"AirPressure":29.474233627319336,"WindVel":0.8940800428390503,"WindDir":6.2831854820251465,"RelativeHumidity":0.5473562479019165,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":5,"CamCameraNumber":1,"CamGroupNumber":17,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":15.225735664367676,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":32.90322494506836,"SteeringWheelUseLinear":false,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":816.5599609374999,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627],"SteeringWheelTorque":-5.091545581817627,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dpRTireChange":0,"dpLTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"WaterTemp":77,"WaterLevel":8,"FuelPress":4.000845432727829e-9,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":8,"Voltage":12,"ManifoldPress":1,"RFbrakeLinePress":0,"RFcoldPressure":241.3165740966797,"RFtempCL":39.743194580078125,"RFtempCM":39.743194580078125,"RFtempCR":39.743194580078125,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":158.57945251464844,"LFtempCL":39.72991943359375,"LFtempCM":39.72991943359375,"LFtempCR":39.72991943359375,"LFwearL":1,"LFwearM":1,"LFwearR":1,"RRbrakeLinePress":0,"RRcoldPressure":241.3165740966797,"RRtempCL":39.729827880859375,"RRtempCM":39.729827880859375,"RRtempCR":39.729827880859375,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":158.57945251464844,"LRtempCL":39.743255615234375,"LRtempCM":39.743255615234375,"LRtempCR":39.743255615234375,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRSHshockDefl":0.08728772401809692,"RRSHshockDefl_ST":[0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692],"RRSHshockVel":0,"RRSHshockVel_ST":[0,0,0,0,0,0],"LRSHshockDefl":0.0872873067855835,"LRSHshockDefl_ST":[0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835],"LRSHshockVel":0,"LRSHshockVel_ST":[0,0,0,0,0,0],"RFSHshockDefl":0.10575225949287415,"RFSHshockDefl_ST":[0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415],"RFSHshockVel":0,"RFSHshockVel_ST":[0,0,0,0,0,0],"LFSHshockDefl":0.10816680639982224,"LFSHshockDefl_ST":[0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224],"LFSHshockVel":0,"LFSHshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T02:04:23.808Z","data":{"WeekendInfo":{"TrackName":"southboston","TrackID":14,"TrackLength":"0.59 km","TrackLengthOfficial":"0.64 km","TrackDisplayName":"South Boston Speedway","TrackDisplayShortName":"South Boston","TrackConfigName":null,"TrackCity":"South Boston","TrackCountry":"USA","TrackAltitude":"126.43 m","TrackLatitude":"36.709879 m","TrackLongitude":"-78.869115 m","TrackNorthOffset":"4.8900 rad","TrackNumTurns":4,"TrackPitSpeedLimit":"55.98 kph","TrackType":"short oval","TrackDirection":"left","TrackWeatherType":"Specified / Dynamic Sky","TrackSkies":"Clear","TrackSurfaceTemp":"40.56 C","TrackAirTemp":"25.56 C","TrackAirPressure":"29.47 Hg","TrackWindVel":"0.89 m/s","TrackWindDir":"6.28 rad","TrackRelativeHumidity":"55 %","TrackFogLevel":"0 %","TrackCleanup":1,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":0,"SubSessionID":0,"LeagueID":0,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Oval","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":0,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":1,"NumCarTypes":2,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":11,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":0,"Restarts":"double file lapped cars behind","WeatherType":"Specified / Dynamic Sky","Skies":"Clear","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"12:00 pm","Date":"2022-05-15T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":0,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":0,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":30,"SessionTime":"86400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"moderately low usage","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":5,"Lap":0,"Time":0,"FastestLap":5,"FastestTime":18.7881,"LastTime":19.8907,"LapsLed":8,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":7,"Lap":0,"Time":0.5784,"FastestLap":6,"FastestTime":18.742,"LastTime":19.8444,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":10,"Lap":0,"Time":1.5204,"FastestLap":18,"FastestTime":18.6309,"LastTime":20.1377,"LapsLed":14,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":8,"Lap":0,"Time":2.8746,"FastestLap":7,"FastestTime":18.8236,"LastTime":20.3632,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":5,"ClassPosition":4,"CarIdx":6,"Lap":0,"Time":3.8545,"FastestLap":5,"FastestTime":18.7596,"LastTime":20.138,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":6,"ClassPosition":5,"CarIdx":9,"Lap":0,"Time":5.1598,"FastestLap":16,"FastestTime":18.6935,"LastTime":19.8098,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":7,"ClassPosition":6,"CarIdx":3,"Lap":0,"Time":5.8962,"FastestLap":10,"FastestTime":18.627,"LastTime":20.6173,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":8,"ClassPosition":7,"CarIdx":2,"Lap":0,"Time":6.2566,"FastestLap":12,"FastestTime":18.8502,"LastTime":20.7559,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":9,"ClassPosition":8,"CarIdx":4,"Lap":0,"Time":6.4746,"FastestLap":9,"FastestTime":18.7979,"LastTime":20.8956,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":10,"ClassPosition":9,"CarIdx":1,"Lap":0,"Time":6.8398,"FastestLap":9,"FastestTime":18.8062,"LastTime":21.11,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":3,"FastestLap":10,"FastestTime":18.627}],"ResultsAverageLapTime":19.1598,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":1,"ResultsLapsComplete":22,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":0,"FastestLap":0,"FastestTime":-1},{"Position":1,"ClassPosition":1,"CarIdx":5,"FastestLap":0,"FastestTime":-1},{"Position":2,"ClassPosition":2,"CarIdx":10,"FastestLap":0,"FastestTime":-1},{"Position":3,"ClassPosition":3,"CarIdx":6,"FastestLap":0,"FastestTime":-1},{"Position":4,"ClassPosition":4,"CarIdx":8,"FastestLap":0,"FastestTime":-1},{"Position":5,"ClassPosition":5,"CarIdx":1,"FastestLap":0,"FastestTime":-1},{"Position":6,"ClassPosition":6,"CarIdx":7,"FastestLap":0,"FastestTime":-1},{"Position":7,"ClassPosition":7,"CarIdx":4,"FastestLap":0,"FastestTime":-1},{"Position":8,"ClassPosition":8,"CarIdx":2,"FastestLap":0,"FastestTime":-1},{"Position":9,"ClassPosition":9,"CarIdx":9,"FastestLap":0,"FastestTime":-1},{"Position":10,"ClassPosition":10,"CarIdx":3,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"Scenic_00"},{"CameraNum":2,"CameraName":"Scenic_01"},{"CameraNum":3,"CameraName":"Scenic_02"},{"CameraNum":4,"CameraName":"Scenic_03"},{"CameraNum":5,"CameraName":"Scenic_04"},{"CameraNum":6,"CameraName":"Scenic_05"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_00"},{"CameraNum":2,"CameraName":"CamTV1_01"},{"CameraNum":3,"CameraName":"CamTV1_02"},{"CameraNum":4,"CameraName":"CamTV1_03"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Pit Lane 2","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":16,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":17,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":18,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":19,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":20,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":2,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":0,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":0,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":0,"DriverUserID":666793,"PaceCarIdx":11,"DriverHeadPosX":-0.559,"DriverHeadPosY":0.376,"DriverHeadPosZ":0.62,"DriverCarIdleRPM":800,"DriverCarRedLine":7200,"DriverCarEngCylinderCount":8,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":83.239,"DriverCarMaxFuelPct":1,"DriverCarGearNumForward":4,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":5500,"DriverCarSLShiftRPM":6500,"DriverCarSLLastRPM":6500,"DriverCarSLBlinkRPM":7200,"DriverCarVersion":"2022.02.28.04","DriverPitTrkPct":0.136028,"DriverCarEstLapTime":15.9649,"DriverSetupName":"baseline.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"iracing","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Zach C Miller","AbbrevName":null,"Initials":null,"UserID":666793,"TeamID":0,"TeamName":"Zach C Miller","CarNumber":"49","CarNumberRaw":49,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":1,"LicLevel":1,"LicSubLevel":1,"LicString":"R 0.01","LicColor":"0xundefined","IsSpectator":0,"CarDesignStr":"15,fff500,000000,ffffff","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffdf00,ff6800,000000","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Lauren Russo","AbbrevName":null,"Initials":null,"UserID":9700,"TeamID":2,"TeamName":"Lauren Russo","CarNumber":"1","CarNumberRaw":1,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"13,ed1c24,cccccc,111111","HelmetDesignStr":"16,ed1c24,cccccc,111111","SuitDesignStr":"4,ed1c24,cccccc,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":72,"CarSponsor_2":51,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":2,"UserName":"John Hughes","AbbrevName":null,"Initials":null,"UserID":9701,"TeamID":3,"TeamName":"John Hughes","CarNumber":"2","CarNumberRaw":2,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"17,cccccc,ed1c24,111111","HelmetDesignStr":"46,cccccc,ed1c24,111111","SuitDesignStr":"26,cccccc,ed1c24,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":83,"CarSponsor_2":51,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":3,"UserName":"Ian Sudol","AbbrevName":null,"Initials":null,"UserID":9702,"TeamID":4,"TeamName":"Ian Sudol","CarNumber":"3","CarNumberRaw":3,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"19,111111,f06e34,ffffff","HelmetDesignStr":"65,111111,f06e34,ffffff","SuitDesignStr":"29,111111,f06e34,ffffff","CarNumberDesignStr":"0,0,,,","CarSponsor_1":56,"CarSponsor_2":62,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":4,"UserName":"Nate DeSelms","AbbrevName":null,"Initials":null,"UserID":9703,"TeamID":5,"TeamName":"Nate DeSelms","CarNumber":"55","CarNumberRaw":55,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"2,28536B,FFD838,21EDE5","HelmetDesignStr":"56,013990,ffffff,4bd3fd","SuitDesignStr":"23,013990,ffffff,4bd3fd","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":5,"UserName":"Nim Cross","AbbrevName":null,"Initials":null,"UserID":9704,"TeamID":6,"TeamName":"Nim Cross","CarNumber":"07","CarNumberRaw":2007,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"10,184252,111111,03bbbd","HelmetDesignStr":"29,184252,111111,03bbbd","SuitDesignStr":"29,184252,111111,03bbbd","CarNumberDesignStr":"0,0,,,","CarSponsor_1":49,"CarSponsor_2":72,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":6,"UserName":"Steve Reis","AbbrevName":null,"Initials":null,"UserID":9705,"TeamID":7,"TeamName":"Steve Reis","CarNumber":"6","CarNumberRaw":6,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"1,1f2892,7de54c,ffffff","HelmetDesignStr":"15,1f2892,7de54c,ffffff","SuitDesignStr":"20,1f2892,7de54c,ffffff","CarNumberDesignStr":"0,0,,,","CarSponsor_1":125,"CarSponsor_2":97,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":7,"UserName":"Jose Diaz Castillo","AbbrevName":null,"Initials":null,"UserID":9706,"TeamID":8,"TeamName":"Jose Diaz Castillo","CarNumber":"17","CarNumberRaw":17,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"7,284a94,111111,b82f37","HelmetDesignStr":"59,284a94,111111,b82f37","SuitDesignStr":"17,284a94,111111,b82f37","CarNumberDesignStr":"0,0,,,","CarSponsor_1":73,"CarSponsor_2":2,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":8,"UserName":"Kevin Combs","AbbrevName":null,"Initials":null,"UserID":9707,"TeamID":9,"TeamName":"Kevin Combs","CarNumber":"8","CarNumberRaw":8,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"18,f06e34,ffffff,111111","HelmetDesignStr":"11,f06e34,ffffff,111111","SuitDesignStr":"14,f06e34,ffffff,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":140,"CarSponsor_2":140,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":9,"UserName":"Nick Leep","AbbrevName":null,"Initials":null,"UserID":9708,"TeamID":10,"TeamName":"Nick Leep","CarNumber":"13","CarNumberRaw":13,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"2,000000,000000,4F1E9C,000000","HelmetDesignStr":"4,ffee47,0300c2,111111","SuitDesignStr":"30,ffee47,0300c2,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":10,"UserName":"Thomas Leyva","AbbrevName":null,"Initials":null,"UserID":9709,"TeamID":11,"TeamName":"Thomas Leyva","CarNumber":"10","CarNumberRaw":10,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"4,ffee47,111111,0300c2","HelmetDesignStr":"19,ffee47,111111,0300c2","SuitDesignStr":"11,ffee47,111111,0300c2","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":11,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcporsche911cup","CarClassID":11,"CarID":108,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3 Cup (991)","CarScreenNameShort":"Porsche 911 GT3 Cup","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":14.8874,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.5}]},"CarSetup":{"UpdateCount":2,"Tires":{"LeftFront":{"ColdPressure":"159 kPa","LastHotPressure":"159 kPa","LastTempsOMI":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"ColdPressure":"159 kPa","LastHotPressure":"159 kPa","LastTempsOMI":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"ColdPressure":"241 kPa","LastHotPressure":"241 kPa","LastTempsIMO":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%","Stagger":"32 mm"},"RightRear":{"ColdPressure":"241 kPa","LastHotPressure":"241 kPa","LastTempsIMO":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%","Stagger":"38 mm"}},"Chassis":{"Front":{"CrossWeight":"54.0%","ToeIn":"-2 mm","SteeringRatio":721,"SteeringOffset":"+0 deg","BrakeBalanceBar":"50.0%","SwayBarSize":"38 mm","LeftBarEndClearance":"0 mm","AttachLeftSide":0,"BarPreload":"0.0 Nm","SkirtClearance":"166 mm"},"LeftFront":{"CornerWeight":"3759 N","SkirtClearance":"160 mm","SpringPerch":"-197 mm","SpringRate":"193 N/mm","Camber":"+4.29 deg","Caster":"+5.56 deg"},"LeftRear":{"CornerWeight":"4059 N","SkirtClearance":"162 mm","LeafArchBlock":"-89 mm","LeafSpringRate":"44 N/mm"},"RightFront":{"CornerWeight":"3986 N","SkirtClearance":"186 mm","SpringPerch":"-194 mm","SpringRate":"350 N/mm","Camber":"-3.49 deg","Caster":"+8.03 deg"},"RightRear":{"CornerWeight":"3107 N","SkirtClearance":"188 mm","LeafArchBlock":"-38 mm","LeafSpringRate":"61 N/mm"},"Rear":{"FuelFillTo":"83.2 L","RearEndRatio":3.25}}}}}] +[{"timestamp":"2022-03-20T02:04:33.223Z","values":{"SessionTime":817.8333333346569,"SessionTick":69360,"SessionNum":0,"SessionState":"Racing","SessionUniqueID":2,"SessionFlags":["CautionWaving","StartHidden"],"SessionTimeRemain":85959.78333333202,"SessionLapsRemain":7,"SessionLapsRemainEx":8,"SessionTimeTotal":86400,"SessionLapsTotal":30,"SessionJokerLapsRemain":0,"SessionOnJokerLap":false,"SessionTimeOfDay":44017,"RadioTransmitCarIdx":-1,"RadioTransmitRadioIdx":0,"RadioTransmitFrequencyIdx":0,"DisplayUnits":0,"DriverMarker":false,"PushToPass":false,"ManualBoost":false,"ManualNoBoost":false,"IsOnTrack":false,"IsReplayPlaying":true,"ReplayFrameNum":65812,"ReplayFrameNumEnd":1,"IsDiskLoggingEnabled":true,"IsDiskLoggingActive":false,"FrameRate":138.56112670898438,"CpuUsageFG":0.37485066056251526,"GpuUsage":0.27660244703292847,"ChanAvgLatency":0,"ChanLatency":0,"ChanQuality":0,"ChanPartnerQuality":0,"CpuUsageBG":0.19500043988227844,"ChanClockSkew":0,"MemPageFaultSec":0,"PlayerCarPosition":0,"PlayerCarClassPosition":0,"PlayerCarClass":0,"PlayerTrackSurface":"NotInWorld","PlayerTrackSurfaceMaterial":"SurfaceNotInWorld","PlayerCarIdx":0,"PlayerCarTeamIncidentCount":0,"PlayerCarMyIncidentCount":0,"PlayerCarDriverIncidentCount":0,"PlayerCarWeightPenalty":0,"PlayerCarPowerAdjust":0,"PlayerCarDryTireSetLimit":0,"PlayerCarTowTime":0,"PlayerCarInPitStall":false,"PlayerCarPitSvStatus":"PitSvNone","PlayerTireCompound":0,"PlayerFastRepairsUsed":0,"CarIdxLap":[-1,23,23,23,23,23,23,23,23,23,23,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapCompleted":[-1,22,22,22,22,22,22,22,22,22,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxLapDistPct":[-1,0.5327844619750977,0.5744308233261108,0.5963537693023682,0.5536904335021973,0.7419768571853638,0.6653652787208557,0.728769838809967,0.690272331237793,0.638166069984436,0.7097001075744629,0.7656349539756775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTrackSurface":["NotInWorld","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","OnTrack","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld","NotInWorld"],"CarIdxTrackSurfaceMaterial":["SurfaceNotInWorld","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","Asphalt1Material","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld","SurfaceNotInWorld"],"CarIdxOnPitRoad":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxPosition":[0,10,8,7,9,1,5,2,4,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClassPosition":[0,10,8,7,9,1,5,2,4,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxClass":[0,0,0,0,0,0,0,0,0,0,0,11,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0],"CarIdxF2Time":[0,6.839799880981445,6.2565999031066895,5.896200180053711,6.474599838256836,0,3.8545000553131104,0.5784000158309937,2.8745999336242676,5.159800052642822,1.520400047302246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxEstTime":[0,8.539308547973633,9.177324295043945,9.525574684143066,8.857656478881836,12.011750221252441,10.690637588500977,11.78980541229248,11.116835594177246,10.221366882324219,11.46096134185791,11.598342895507812,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxLastLapTime":[-1,21.110000610351562,20.75589942932129,20.617300033569336,20.895599365234375,19.89069938659668,20.13800048828125,19.84440040588379,20.36319923400879,19.809799194335938,20.137699127197266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapTime":[-1,18.80620002746582,18.850200653076172,18.62700080871582,18.79789924621582,18.78809928894043,18.759599685668945,18.742000579833984,18.82360076904297,18.693500518798828,18.63089942932129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxBestLapNum":[-1,9,12,10,9,5,5,6,7,16,18,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxTireCompound":[-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompound":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxQualTireCompoundLocked":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxFastRepairsUsed":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxSessionFlags":[[],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],["Servicible"],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],"PaceMode":2,"CarIdxPaceLine":[-1,0,1,0,1,0,1,0,1,0,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceRow":[-1,1,1,2,2,3,3,4,4,5,5,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxPaceFlags":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"OnPitRoad":false,"CarIdxSteer":[0,0.3715711534023285,0.47328412532806396,0.530987024307251,0.39546436071395874,0.5927219390869141,0.5788227319717407,0.581382691860199,0.6113463640213013,0.527137279510498,0.5823967456817627,0.7410739660263062,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"CarIdxRPM":[-1,4417.23974609375,4388.15234375,4428.3759765625,4431.66015625,3136.302734375,3639.5078125,3022.79541015625,3420.75927734375,3868.4658203125,3269.15234375,3488.870849609375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"CarIdxGear":[-1,4,4,4,4,4,4,4,4,4,4,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"SteeringWheelAngle":0,"Throttle":0,"Brake":1,"Clutch":0,"Gear":0,"RPM":300,"Lap":0,"LapCompleted":0,"LapDist":0,"LapDistPct":0,"RaceLaps":23,"LapBestLap":0,"LapBestLapTime":0,"LapLastLapTime":0,"LapCurrentLapTime":0,"LapLasNLapSeq":0,"LapLastNLapTime":0,"LapBestNLapLap":0,"LapBestNLapTime":0,"LapDeltaToBestLap":0,"LapDeltaToBestLap_DD":0,"LapDeltaToBestLap_OK":false,"LapDeltaToOptimalLap":0,"LapDeltaToOptimalLap_DD":0,"LapDeltaToOptimalLap_OK":false,"LapDeltaToSessionBestLap":0,"LapDeltaToSessionBestLap_DD":0,"LapDeltaToSessionBestLap_OK":false,"LapDeltaToSessionOptimalLap":0,"LapDeltaToSessionOptimalLap_DD":0,"LapDeltaToSessionOptimalLap_OK":false,"LapDeltaToSessionLastlLap":0,"LapDeltaToSessionLastlLap_DD":0,"LapDeltaToSessionLastlLap_OK":false,"Speed":0,"Yaw":0,"YawNorth":0,"Pitch":0,"Roll":0,"EnterExitReset":0,"TrackTemp":50,"TrackTempCrew":50,"AirTemp":25.63435935974121,"WeatherType":3,"Skies":0,"AirDensity":1.1558274030685425,"AirPressure":29.474233627319336,"WindVel":0.8940800428390503,"WindDir":6.2831854820251465,"RelativeHumidity":0.5473553538322449,"FogLevel":0,"DCLapStatus":2,"DCDriversSoFar":1,"OkToReloadTextures":true,"LoadNumTextures":false,"CarLeftRight":["LROff"],"PitsOpen":true,"VidCapEnabled":true,"VidCapActive":false,"PitRepairLeft":0,"PitOptRepairLeft":0,"PitstopActive":false,"FastRepairUsed":0,"FastRepairAvailable":0,"LFTiresUsed":0,"RFTiresUsed":0,"LRTiresUsed":0,"RRTiresUsed":0,"LeftTireSetsUsed":0,"RightTireSetsUsed":0,"FrontTireSetsUsed":0,"RearTireSetsUsed":0,"TireSetsUsed":0,"LFTiresAvailable":0,"RFTiresAvailable":0,"LRTiresAvailable":0,"RRTiresAvailable":0,"LeftTireSetsAvailable":0,"RightTireSetsAvailable":0,"FrontTireSetsAvailable":0,"RearTireSetsAvailable":0,"TireSetsAvailable":0,"CamCarIdx":5,"CamCameraNumber":1,"CamGroupNumber":17,"CamCameraState":["IsSessionScreen"],"IsOnTrackCar":false,"IsInGarage":false,"SteeringWheelPctTorque":0,"SteeringWheelPctTorqueSign":0,"SteeringWheelPctTorqueSignStops":0,"SteeringWheelPctDamper":0,"SteeringWheelAngleMax":15.225735664367676,"SteeringWheelLimiter":0,"ShiftIndicatorPct":0,"ShiftPowerPct":0,"ShiftGrindRPM":0,"ThrottleRaw":0,"BrakeRaw":0,"HandbrakeRaw":0,"SteeringWheelPeakForceNm":-1,"SteeringWheelMaxForceNm":32.90322494506836,"SteeringWheelUseLinear":false,"BrakeABSactive":false,"EngineWarnings":[],"FuelLevel":0,"FuelLevelPct":0,"PitSvFlags":[],"PitSvLFP":0,"PitSvRFP":0,"PitSvLRP":0,"PitSvRRP":0,"PitSvFuel":0,"PitSvTireCompound":0,"CarIdxP2P_Status":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"CarIdxP2P_Count":[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],"ReplayPlaySpeed":1,"ReplayPlaySlowMotion":false,"ReplaySessionTime":816.8299804687499,"ReplaySessionNum":0,"TireLF_RumblePitch":0,"TireRF_RumblePitch":0,"TireLR_RumblePitch":0,"TireRR_RumblePitch":0,"SteeringWheelTorque_ST":[-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627,-5.091545581817627],"SteeringWheelTorque":-5.091545581817627,"VelocityZ_ST":[0,0,0,0,0,0],"VelocityY_ST":[0,0,0,0,0,0],"VelocityX_ST":[0,0,0,0,0,0],"VelocityZ":0,"VelocityY":0,"VelocityX":0,"YawRate_ST":[0,0,0,0,0,0],"PitchRate_ST":[0,0,0,0,0,0],"RollRate_ST":[0,0,0,0,0,0],"YawRate":0,"PitchRate":0,"RollRate":0,"VertAccel_ST":[0,0,0,0,0,0],"LatAccel_ST":[0,0,0,0,0,0],"LongAccel_ST":[0,0,0,0,0,0],"VertAccel":0,"LatAccel":0,"LongAccel":0,"dcStarter":false,"dpRTireChange":0,"dpLTireChange":0,"dpFuelFill":0,"dpWindshieldTearoff":0,"dpFuelAddKg":0,"dpFastRepair":0,"dcBrakeBias":0,"dpLFTireColdPress":0,"dpRFTireColdPress":0,"dpLRTireColdPress":0,"dpRRTireColdPress":0,"WaterTemp":77,"WaterLevel":8,"FuelPress":4.000845432727829e-9,"FuelUsePerHour":0,"OilTemp":77,"OilPress":0,"OilLevel":8,"Voltage":12,"ManifoldPress":1,"RFbrakeLinePress":0,"RFcoldPressure":241.3165740966797,"RFtempCL":39.743194580078125,"RFtempCM":39.743194580078125,"RFtempCR":39.743194580078125,"RFwearL":1,"RFwearM":1,"RFwearR":1,"LFbrakeLinePress":0,"LFcoldPressure":158.57945251464844,"LFtempCL":39.72991943359375,"LFtempCM":39.72991943359375,"LFtempCR":39.72991943359375,"LFwearL":1,"LFwearM":1,"LFwearR":1,"RRbrakeLinePress":0,"RRcoldPressure":241.3165740966797,"RRtempCL":39.729827880859375,"RRtempCM":39.729827880859375,"RRtempCR":39.729827880859375,"RRwearL":1,"RRwearM":1,"RRwearR":1,"LRbrakeLinePress":0,"LRcoldPressure":158.57945251464844,"LRtempCL":39.743255615234375,"LRtempCM":39.743255615234375,"LRtempCR":39.743255615234375,"LRwearL":1,"LRwearM":1,"LRwearR":1,"RRSHshockDefl":0.08728772401809692,"RRSHshockDefl_ST":[0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692,0.08728772401809692],"RRSHshockVel":0,"RRSHshockVel_ST":[0,0,0,0,0,0],"LRSHshockDefl":0.0872873067855835,"LRSHshockDefl_ST":[0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835,0.0872873067855835],"LRSHshockVel":0,"LRSHshockVel_ST":[0,0,0,0,0,0],"RFSHshockDefl":0.10575225949287415,"RFSHshockDefl_ST":[0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415,0.10575225949287415],"RFSHshockVel":0,"RFSHshockVel_ST":[0,0,0,0,0,0],"LFSHshockDefl":0.10816680639982224,"LFSHshockDefl_ST":[0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224,0.10816680639982224],"LFSHshockVel":0,"LFSHshockVel_ST":[0,0,0,0,0,0]}},{"timestamp":"2022-03-20T02:04:23.808Z","data":{"WeekendInfo":{"TrackName":"southboston","TrackID":14,"TrackLength":"0.59 km","TrackLengthOfficial":"0.64 km","TrackDisplayName":"South Boston Speedway","TrackDisplayShortName":"South Boston","TrackConfigName":null,"TrackCity":"South Boston","TrackCountry":"USA","TrackAltitude":"126.43 m","TrackLatitude":"36.709879 m","TrackLongitude":"-78.869115 m","TrackNorthOffset":"4.8900 rad","TrackNumTurns":4,"TrackPitSpeedLimit":"55.98 kph","TrackType":"short oval","TrackDirection":"left","TrackWeatherType":"Specified / Dynamic Sky","TrackSkies":"Clear","TrackSurfaceTemp":"40.56 C","TrackAirTemp":"25.56 C","TrackAirPressure":"29.47 Hg","TrackWindVel":"0.89 m/s","TrackWindDir":"6.28 rad","TrackRelativeHumidity":"55 %","TrackFogLevel":"0 %","TrackCleanup":1,"TrackDynamicTrack":1,"TrackVersion":"2022.02.23.01","SeriesID":0,"SeasonID":0,"SessionID":0,"SubSessionID":0,"LeagueID":0,"Official":0,"RaceWeek":0,"EventType":"Race","Category":"Oval","SimMode":"full","TeamRacing":0,"MinDrivers":0,"MaxDrivers":0,"DCRuleSet":"None","QualifierMustStartRace":0,"NumCarClasses":1,"NumCarTypes":2,"HeatRacing":0,"BuildType":"Release","BuildTarget":"Members","BuildVersion":"2022.03.15.01","WeekendOptions":{"NumStarters":11,"StartingGrid":"single file","QualifyScoring":"best lap","CourseCautions":"local","StandingStart":0,"ShortParadeLap":0,"Restarts":"double file lapped cars behind","WeatherType":"Specified / Dynamic Sky","Skies":"Clear","WindDirection":"N","WindSpeed":"3.22 km/h","WeatherTemp":"25.56 C","RelativeHumidity":"55 %","FogLevel":"0 %","TimeOfDay":"12:00 pm","Date":"2022-05-15T00:00:00.000Z","EarthRotationSpeedupFactor":1,"Unofficial":0,"CommercialMode":"consumer","NightMode":"variable","IsFixedSetup":0,"StrictLapsChecking":"default","HasOpenRegistration":0,"HardcoreLevel":1,"NumJokerLaps":0,"IncidentLimit":"unlimited","FastRepairsLimit":"unlimited","GreenWhiteCheckeredLimit":0},"TelemetryOptions":{"TelemetryDiskFile":""}},"SessionInfo":{"Sessions":[{"SessionNum":0,"SessionLaps":30,"SessionTime":"86400.0000 sec","SessionNumLapsToAvg":0,"SessionType":"Race","SessionTrackRubberState":"moderately low usage","SessionName":"RACE","SessionSubType":null,"SessionSkipped":0,"SessionRunGroupsUsed":0,"SessionEnforceTireCompoundChange":0,"ResultsPositions":[{"Position":1,"ClassPosition":0,"CarIdx":5,"Lap":0,"Time":0,"FastestLap":5,"FastestTime":18.7881,"LastTime":19.8907,"LapsLed":8,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":2,"ClassPosition":1,"CarIdx":7,"Lap":0,"Time":0.5784,"FastestLap":6,"FastestTime":18.742,"LastTime":19.8444,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":3,"ClassPosition":2,"CarIdx":10,"Lap":0,"Time":1.5204,"FastestLap":18,"FastestTime":18.6309,"LastTime":20.1377,"LapsLed":14,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":4,"ClassPosition":3,"CarIdx":8,"Lap":0,"Time":2.8746,"FastestLap":7,"FastestTime":18.8236,"LastTime":20.3632,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":5,"ClassPosition":4,"CarIdx":6,"Lap":0,"Time":3.8545,"FastestLap":5,"FastestTime":18.7596,"LastTime":20.138,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":6,"ClassPosition":5,"CarIdx":9,"Lap":0,"Time":5.1598,"FastestLap":16,"FastestTime":18.6935,"LastTime":19.8098,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":7,"ClassPosition":6,"CarIdx":3,"Lap":0,"Time":5.8962,"FastestLap":10,"FastestTime":18.627,"LastTime":20.6173,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":8,"ClassPosition":7,"CarIdx":2,"Lap":0,"Time":6.2566,"FastestLap":12,"FastestTime":18.8502,"LastTime":20.7559,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":9,"ClassPosition":8,"CarIdx":4,"Lap":0,"Time":6.4746,"FastestLap":9,"FastestTime":18.7979,"LastTime":20.8956,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"},{"Position":10,"ClassPosition":9,"CarIdx":1,"Lap":0,"Time":6.8398,"FastestLap":9,"FastestTime":18.8062,"LastTime":21.11,"LapsLed":0,"LapsComplete":22,"JokerLapsComplete":0,"LapsDriven":0,"Incidents":0,"ReasonOutId":0,"ReasonOutStr":"Running"}],"ResultsFastestLap":[{"CarIdx":3,"FastestLap":10,"FastestTime":18.627}],"ResultsAverageLapTime":19.1598,"ResultsNumCautionFlags":0,"ResultsNumCautionLaps":0,"ResultsNumLeadChanges":1,"ResultsLapsComplete":22,"ResultsOfficial":0}]},"QualifyResultsInfo":{"Results":[{"Position":0,"ClassPosition":0,"CarIdx":0,"FastestLap":0,"FastestTime":-1},{"Position":1,"ClassPosition":1,"CarIdx":5,"FastestLap":0,"FastestTime":-1},{"Position":2,"ClassPosition":2,"CarIdx":10,"FastestLap":0,"FastestTime":-1},{"Position":3,"ClassPosition":3,"CarIdx":6,"FastestLap":0,"FastestTime":-1},{"Position":4,"ClassPosition":4,"CarIdx":8,"FastestLap":0,"FastestTime":-1},{"Position":5,"ClassPosition":5,"CarIdx":1,"FastestLap":0,"FastestTime":-1},{"Position":6,"ClassPosition":6,"CarIdx":7,"FastestLap":0,"FastestTime":-1},{"Position":7,"ClassPosition":7,"CarIdx":4,"FastestLap":0,"FastestTime":-1},{"Position":8,"ClassPosition":8,"CarIdx":2,"FastestLap":0,"FastestTime":-1},{"Position":9,"ClassPosition":9,"CarIdx":9,"FastestLap":0,"FastestTime":-1},{"Position":10,"ClassPosition":10,"CarIdx":3,"FastestLap":0,"FastestTime":-1}]},"CameraInfo":{"Groups":[{"GroupNum":1,"GroupName":"Nose","Cameras":[{"CameraNum":1,"CameraName":"CamNose"}]},{"GroupNum":2,"GroupName":"Gearbox","Cameras":[{"CameraNum":1,"CameraName":"CamGearbox"}]},{"GroupNum":3,"GroupName":"Roll Bar","Cameras":[{"CameraNum":1,"CameraName":"CamRoll Bar"}]},{"GroupNum":4,"GroupName":"LF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLF Susp"}]},{"GroupNum":5,"GroupName":"LR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamLR Susp"}]},{"GroupNum":6,"GroupName":"Gyro","Cameras":[{"CameraNum":1,"CameraName":"CamGyro"}]},{"GroupNum":7,"GroupName":"RF Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRF Susp"}]},{"GroupNum":8,"GroupName":"RR Susp","Cameras":[{"CameraNum":1,"CameraName":"CamRR Susp"}]},{"GroupNum":9,"GroupName":"Cockpit","Cameras":[{"CameraNum":1,"CameraName":"CamCockpit"}]},{"GroupNum":10,"GroupName":"Scenic","IsScenic":true,"Cameras":[{"CameraNum":1,"CameraName":"Scenic_00"},{"CameraNum":2,"CameraName":"Scenic_01"},{"CameraNum":3,"CameraName":"Scenic_02"},{"CameraNum":4,"CameraName":"Scenic_03"},{"CameraNum":5,"CameraName":"Scenic_04"},{"CameraNum":6,"CameraName":"Scenic_05"}]},{"GroupNum":11,"GroupName":"TV1","Cameras":[{"CameraNum":1,"CameraName":"CamTV1_00"},{"CameraNum":2,"CameraName":"CamTV1_01"},{"CameraNum":3,"CameraName":"CamTV1_02"},{"CameraNum":4,"CameraName":"CamTV1_03"}]},{"GroupNum":12,"GroupName":"TV2","Cameras":[{"CameraNum":1,"CameraName":"CamTV2_00"},{"CameraNum":2,"CameraName":"CamTV2_01"},{"CameraNum":3,"CameraName":"CamTV2_02"},{"CameraNum":4,"CameraName":"CamTV2_03"},{"CameraNum":5,"CameraName":"CamTV2_04"}]},{"GroupNum":13,"GroupName":"TV3","Cameras":[{"CameraNum":1,"CameraName":"CamTV3_00"},{"CameraNum":2,"CameraName":"CamTV3_01"}]},{"GroupNum":14,"GroupName":"Pit Lane","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane"}]},{"GroupNum":15,"GroupName":"Pit Lane 2","Cameras":[{"CameraNum":1,"CameraName":"CamPit Lane 2"}]},{"GroupNum":16,"GroupName":"Chopper","Cameras":[{"CameraNum":1,"CameraName":"CamChopper"}]},{"GroupNum":17,"GroupName":"Blimp","Cameras":[{"CameraNum":1,"CameraName":"CamBlimp"}]},{"GroupNum":18,"GroupName":"Chase","Cameras":[{"CameraNum":1,"CameraName":"CamChase"}]},{"GroupNum":19,"GroupName":"Far Chase","Cameras":[{"CameraNum":1,"CameraName":"CamFar Chase"}]},{"GroupNum":20,"GroupName":"Rear Chase","Cameras":[{"CameraNum":1,"CameraName":"CamRear Chase"}]}]},"RadioInfo":{"SelectedRadioNum":0,"Radios":[{"RadioNum":0,"HopCount":2,"NumFrequencies":7,"TunedToFrequencyNum":0,"ScanningIsOn":1,"Frequencies":[{"FrequencyNum":0,"FrequencyName":"@ALLTEAMS","Priority":12,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":1,"FrequencyName":"@DRIVERS","Priority":15,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":2,"FrequencyName":"@TEAM","Priority":60,"CarIdx":0,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":3,"FrequencyName":"@CLUB","Priority":20,"CarIdx":-1,"EntryIdx":-1,"ClubID":16,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":1,"IsDeletable":0},{"FrequencyNum":4,"FrequencyName":"@ADMIN","Priority":90,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":5,"FrequencyName":"@RACECONTROL","Priority":80,"CarIdx":-1,"EntryIdx":-1,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0},{"FrequencyNum":6,"FrequencyName":"@PRIVATE","Priority":70,"CarIdx":-1,"EntryIdx":0,"ClubID":0,"CanScan":1,"CanSquawk":1,"Muted":0,"IsMutable":0,"IsDeletable":0}]}]},"DriverInfo":{"DriverCarIdx":0,"DriverUserID":666793,"PaceCarIdx":11,"DriverHeadPosX":-0.559,"DriverHeadPosY":0.376,"DriverHeadPosZ":0.62,"DriverCarIdleRPM":800,"DriverCarRedLine":7200,"DriverCarEngCylinderCount":8,"DriverCarFuelKgPerLtr":0.75,"DriverCarFuelMaxLtr":83.239,"DriverCarMaxFuelPct":1,"DriverCarGearNumForward":4,"DriverCarGearNeutral":1,"DriverCarGearReverse":1,"DriverCarSLFirstRPM":5500,"DriverCarSLShiftRPM":6500,"DriverCarSLLastRPM":6500,"DriverCarSLBlinkRPM":7200,"DriverCarVersion":"2022.02.28.04","DriverPitTrkPct":0.136028,"DriverCarEstLapTime":15.9649,"DriverSetupName":"baseline.sto","DriverSetupIsModified":0,"DriverSetupLoadTypeName":"iracing","DriverSetupPassedTech":1,"DriverIncidentCount":0,"Drivers":[{"CarIdx":0,"UserName":"Zach C Miller","AbbrevName":null,"Initials":null,"UserID":666793,"TeamID":0,"TeamName":"Zach C Miller","CarNumber":"49","CarNumberRaw":49,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":0,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":1,"LicLevel":1,"LicSubLevel":1,"LicString":"R 0.01","LicColor":"0xundefined","IsSpectator":0,"CarDesignStr":"15,fff500,000000,ffffff","HelmetDesignStr":"30,000000,faff00,faff00","SuitDesignStr":"12,fff500,000000,727272","CarNumberDesignStr":"0,0,ffdf00,ff6800,000000","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":1,"UserName":"Lauren Russo","AbbrevName":null,"Initials":null,"UserID":9700,"TeamID":2,"TeamName":"Lauren Russo","CarNumber":"1","CarNumberRaw":1,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"13,ed1c24,cccccc,111111","HelmetDesignStr":"16,ed1c24,cccccc,111111","SuitDesignStr":"4,ed1c24,cccccc,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":72,"CarSponsor_2":51,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":2,"UserName":"John Hughes","AbbrevName":null,"Initials":null,"UserID":9701,"TeamID":3,"TeamName":"John Hughes","CarNumber":"2","CarNumberRaw":2,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"17,cccccc,ed1c24,111111","HelmetDesignStr":"46,cccccc,ed1c24,111111","SuitDesignStr":"26,cccccc,ed1c24,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":83,"CarSponsor_2":51,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":3,"UserName":"Ian Sudol","AbbrevName":null,"Initials":null,"UserID":9702,"TeamID":4,"TeamName":"Ian Sudol","CarNumber":"3","CarNumberRaw":3,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"19,111111,f06e34,ffffff","HelmetDesignStr":"65,111111,f06e34,ffffff","SuitDesignStr":"29,111111,f06e34,ffffff","CarNumberDesignStr":"0,0,,,","CarSponsor_1":56,"CarSponsor_2":62,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":4,"UserName":"Nate DeSelms","AbbrevName":null,"Initials":null,"UserID":9703,"TeamID":5,"TeamName":"Nate DeSelms","CarNumber":"55","CarNumberRaw":55,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"2,28536B,FFD838,21EDE5","HelmetDesignStr":"56,013990,ffffff,4bd3fd","SuitDesignStr":"23,013990,ffffff,4bd3fd","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":5,"UserName":"Nim Cross","AbbrevName":null,"Initials":null,"UserID":9704,"TeamID":6,"TeamName":"Nim Cross","CarNumber":"07","CarNumberRaw":2007,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"10,184252,111111,03bbbd","HelmetDesignStr":"29,184252,111111,03bbbd","SuitDesignStr":"29,184252,111111,03bbbd","CarNumberDesignStr":"0,0,,,","CarSponsor_1":49,"CarSponsor_2":72,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":6,"UserName":"Steve Reis","AbbrevName":null,"Initials":null,"UserID":9705,"TeamID":7,"TeamName":"Steve Reis","CarNumber":"6","CarNumberRaw":6,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"1,1f2892,7de54c,ffffff","HelmetDesignStr":"15,1f2892,7de54c,ffffff","SuitDesignStr":"20,1f2892,7de54c,ffffff","CarNumberDesignStr":"0,0,,,","CarSponsor_1":125,"CarSponsor_2":97,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":7,"UserName":"Jose Diaz Castillo","AbbrevName":null,"Initials":null,"UserID":9706,"TeamID":8,"TeamName":"Jose Diaz Castillo","CarNumber":"17","CarNumberRaw":17,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"7,284a94,111111,b82f37","HelmetDesignStr":"59,284a94,111111,b82f37","SuitDesignStr":"17,284a94,111111,b82f37","CarNumberDesignStr":"0,0,,,","CarSponsor_1":73,"CarSponsor_2":2,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":8,"UserName":"Kevin Combs","AbbrevName":null,"Initials":null,"UserID":9707,"TeamID":9,"TeamName":"Kevin Combs","CarNumber":"8","CarNumberRaw":8,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"18,f06e34,ffffff,111111","HelmetDesignStr":"11,f06e34,ffffff,111111","SuitDesignStr":"14,f06e34,ffffff,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":140,"CarSponsor_2":140,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":9,"UserName":"Nick Leep","AbbrevName":null,"Initials":null,"UserID":9708,"TeamID":10,"TeamName":"Nick Leep","CarNumber":"13","CarNumberRaw":13,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"2,000000,000000,4F1E9C,000000","HelmetDesignStr":"4,ffee47,0300c2,111111","SuitDesignStr":"30,ffee47,0300c2,111111","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":10,"UserName":"Thomas Leyva","AbbrevName":null,"Initials":null,"UserID":9709,"TeamID":11,"TeamName":"Thomas Leyva","CarNumber":"10","CarNumberRaw":10,"CarPath":"streetstock","CarClassID":0,"CarID":36,"CarIsPaceCar":0,"CarIsAI":1,"CarScreenName":"Street Stock","CarScreenNameShort":"Street Stock","CarClassShortName":null,"CarClassRelSpeed":100,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":15.9649,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":8913056,"IsSpectator":0,"CarDesignStr":"4,ffee47,111111,0300c2","HelmetDesignStr":"19,ffee47,111111,0300c2","SuitDesignStr":"11,ffee47,111111,0300c2","CarNumberDesignStr":"0,0,,,","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0},{"CarIdx":11,"UserName":"Pace Car","AbbrevName":null,"Initials":null,"UserID":-1,"TeamID":0,"TeamName":"Pace Car","CarNumber":"0","CarNumberRaw":0,"CarPath":"safety pcporsche911cup","CarClassID":11,"CarID":108,"CarIsPaceCar":1,"CarIsAI":0,"CarScreenName":"Porsche 911 GT3 Cup (991)","CarScreenNameShort":"Porsche 911 GT3 Cup","CarClassShortName":null,"CarClassRelSpeed":0,"CarClassLicenseLevel":0,"CarClassMaxFuelPct":"1.000 %","CarClassWeightPenalty":"0.000 kg","CarClassPowerAdjust":"0.000 %","CarClassDryTireSetLimit":"0 %","CarClassColor":16777215,"CarClassEstLapTime":14.8874,"IRating":0,"LicLevel":1,"LicSubLevel":0,"LicString":"R 0.00","LicColor":16777215,"IsSpectator":0,"CarDesignStr":"0,ffffff,ffffff,ffffff","HelmetDesignStr":"0,ffffff,ffffff,ffffff","SuitDesignStr":"0,ffffff,ffffff,ffffff","CarNumberDesignStr":"0,0,ffffff,ffffff,ffffff","CarSponsor_1":0,"CarSponsor_2":0,"CurDriverIncidentCount":0,"TeamIncidentCount":0}]},"SplitTimeInfo":{"Sectors":[{"SectorNum":0,"SectorStartPct":0},{"SectorNum":1,"SectorStartPct":0.5}]},"CarSetup":{"UpdateCount":2,"Tires":{"LeftFront":{"ColdPressure":"159 kPa","LastHotPressure":"159 kPa","LastTempsOMI":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%"},"LeftRear":{"ColdPressure":"159 kPa","LastHotPressure":"159 kPa","LastTempsOMI":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%"},"RightFront":{"ColdPressure":"241 kPa","LastHotPressure":"241 kPa","LastTempsIMO":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%","Stagger":"32 mm"},"RightRear":{"ColdPressure":"241 kPa","LastHotPressure":"241 kPa","LastTempsIMO":"40C, 40C, 40C","TreadRemaining":"100%, 100%, 100%","Stagger":"38 mm"}},"Chassis":{"Front":{"CrossWeight":"54.0%","ToeIn":"-2 mm","SteeringRatio":721,"SteeringOffset":"+0 deg","BrakeBalanceBar":"50.0%","SwayBarSize":"38 mm","LeftBarEndClearance":"0 mm","AttachLeftSide":0,"BarPreload":"0.0 Nm","SkirtClearance":"166 mm"},"LeftFront":{"CornerWeight":"3759 N","SkirtClearance":"160 mm","SpringPerch":"-197 mm","SpringRate":"193 N/mm","Camber":"+4.29 deg","Caster":"+5.56 deg"},"LeftRear":{"CornerWeight":"4059 N","SkirtClearance":"162 mm","LeafArchBlock":"-89 mm","LeafSpringRate":"44 N/mm"},"RightFront":{"CornerWeight":"3986 N","SkirtClearance":"186 mm","SpringPerch":"-194 mm","SpringRate":"350 N/mm","Camber":"-3.49 deg","Caster":"+8.03 deg"},"RightRear":{"CornerWeight":"3107 N","SkirtClearance":"188 mm","LeafArchBlock":"-38 mm","LeafSpringRate":"61 N/mm"},"Rear":{"FuelFillTo":"83.2 L","RearEndRatio":3.25}}}}}] diff --git a/package-lock.json b/package-lock.json index d1b9d1f..e9eb38c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,30 @@ { - "name": "Stuart", + "name": "IRSDK-Electron", "lockfileVersion": 2, "requires": true, "packages": { "": { "dependencies": { + "@nut-tree/nut-js": "^2.0.1", + "@types/jsonpath": "^0.2.0", + "deep-equal": "^2.0.5", + "electron-devtools-installer": "^3.2.0", + "ffi-napi": "^4.0.3", + "jsonpath": "^1.1.1", + "lodash": "^4.17.21", + "node-irsdk-2021": "^0.0.1", + "react-json-view": "^1.21.3", + "react-transition-group": "^4.4.2", + "rxjs": "^7.5.5", + "sendkeys": "^1.1.1" + }, + "devDependencies": { "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@mui/icons-material": "^5.2.1", "@mui/material": "^5.2.3", - "lodash": "^4.17.21", - "node-irsdk-2021": "^0.0.1" - }, - "devDependencies": { + "@types/deep-equal": "^1.0.1", + "@types/ffi-napi": "^4.0.5", "@types/lodash": "^4.14.177", "@types/react": "^17.0.35", "@types/react-dom": "^17.0.11", @@ -33,47 +45,64 @@ "webpack-cli": "^4.9.1" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, "dependencies": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, "peer": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.1", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -83,62 +112,31 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, "peer": true, "dependencies": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -148,182 +146,154 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, "peer": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "peer": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "peer": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - }, + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "peer": true, "dependencies": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, "peer": true, "dependencies": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -331,74 +301,11 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/@babel/highlight/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=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "dev": true, "peer": true, "bin": { "parser": "bin/babel-parser.js" @@ -408,11 +315,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -422,9 +330,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -433,32 +341,35 @@ } }, "node_modules/@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "peer": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "dev": true, "peer": true, "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -467,11 +378,12 @@ } }, "node_modules/@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -500,18 +412,18 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", - "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/@electron/get": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.13.1.tgz", - "integrity": "sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -530,10 +442,79 @@ "global-tunnel-ng": "^2.7.1" } }, + "node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/@emotion/babel-plugin": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.1.tgz", - "integrity": "sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ==", + "version": "11.9.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz", + "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==", + "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.12.13", "@babel/plugin-syntax-jsx": "^7.12.13", @@ -552,18 +533,11 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@emotion/cache": { "version": "11.7.1", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "dev": true, "dependencies": { "@emotion/memoize": "^0.7.4", "@emotion/sheet": "^1.1.0", @@ -575,12 +549,14 @@ "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true }, "node_modules/@emotion/is-prop-valid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", - "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", + "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "dev": true, "dependencies": { "@emotion/memoize": "^0.7.4" } @@ -588,18 +564,20 @@ "node_modules/@emotion/memoize": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==", + "dev": true }, "node_modules/@emotion/react": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.7.1.tgz", - "integrity": "sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", + "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.7.1", "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", + "@emotion/serialize": "^1.0.3", + "@emotion/utils": "^1.1.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" }, @@ -617,9 +595,10 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", + "dev": true, "dependencies": { "@emotion/hash": "^0.8.0", "@emotion/memoize": "^0.7.4", @@ -631,18 +610,20 @@ "node_modules/@emotion/sheet": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==", + "dev": true }, "node_modules/@emotion/styled": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.6.0.tgz", - "integrity": "sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz", + "integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.3.0", - "@emotion/is-prop-valid": "^1.1.1", + "@emotion/babel-plugin": "^11.7.1", + "@emotion/is-prop-valid": "^1.1.2", "@emotion/serialize": "^1.0.2", - "@emotion/utils": "^1.0.0" + "@emotion/utils": "^1.1.0" }, "peerDependencies": { "@babel/core": "^7.0.0", @@ -661,83 +642,529 @@ "node_modules/@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true }, "node_modules/@emotion/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", + "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==", + "dev": true }, "node_modules/@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true }, "node_modules/@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "dev": true }, - "node_modules/@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], + "node_modules/@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", "dependencies": { - "cross-spawn": "^7.0.1" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" }, - "engines": { - "node": ">= 12.13.0" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" } }, - "node_modules/@mui/base": { - "version": "5.0.0-alpha.59", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.59.tgz", - "integrity": "sha512-rPgN2FW0FAjQ9+LQ+XBsq3DFcuiiMFhf8uoLJAWnnzft27IJvJqbrhfpCZ68G6l+umJLbbl5RIIbpt8ALZDDNQ==", + "node_modules/@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", "dependencies": { - "@babel/runtime": "^7.16.3", - "@emotion/is-prop-valid": "^1.1.1", - "@mui/utils": "^5.2.3", - "@popperjs/core": "^2.4.4", - "clsx": "^1.1.1", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" }, - "engines": { - "node": ">=12.0.0" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui" + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz", + "integrity": "sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" } }, "node_modules/@mui/icons-material": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.1.tgz", - "integrity": "sha512-AFOn0bbaGd1dw8oYE40dv3I+QnfS5xP5HSUiUGsvb1ntP0cM1kW4VqQp7BtL7DbOpEsw1ZTbw67tDqSCH7utNg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", + "integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.2" }, "engines": { "node": ">=12.0.0" @@ -748,8 +1175,8 @@ }, "peerDependencies": { "@mui/material": "^5.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^17.0.2" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -758,18 +1185,19 @@ } }, "node_modules/@mui/material": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.3.tgz", - "integrity": "sha512-qhHAVpkQh77xiic38TIDMrKGafRRy9WT16uvexvE2UdyI259YP4HvFamYz3prSNnZi5UozwKpH/QGnv6+JT7/g==", - "dependencies": { - "@babel/runtime": "^7.16.3", - "@mui/base": "5.0.0-alpha.59", - "@mui/system": "^5.2.3", - "@mui/types": "^7.1.0", - "@mui/utils": "^5.2.3", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.4.tgz", + "integrity": "sha512-7TD+u/SExZK2a55w6reX56oPk37gKr/M/XGt156X+m0d9LhzOsW864nkErIX/H8oSkX/6kCimxu1FDsO+gjiVw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.17.2", + "@mui/base": "5.0.0-alpha.79", + "@mui/system": "^5.6.4", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", "@types/react-transition-group": "^4.4.4", "clsx": "^1.1.1", - "csstype": "^3.0.10", + "csstype": "^3.0.11", "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.7.2", "react-is": "^17.0.2", @@ -785,9 +1213,9 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -801,14 +1229,20 @@ } } }, - "node_modules/@mui/private-theming": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.2.3.tgz", - "integrity": "sha512-Lc1Cmu8lSsYZiXADi9PBb17Ho82ZbseHQujUFAcp6bCJ5x/d+87JYCIpCBMagPu/isRlFCwbziuXPmz7WOzJPQ==", + "node_modules/@mui/material/node_modules/@mui/base": { + "version": "5.0.0-alpha.79", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz", + "integrity": "sha512-/lZLF027BkiEjM8MIYoeS/FEhTKf+41ePU9SOijMGrCin1Y0Igucw+IHa1fF8HXD7wDbFKqHuso3J1jMG8wyNw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3", - "@mui/utils": "^5.2.3", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.17.2", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", + "@popperjs/core": "^2.11.5", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" }, "engines": { "node": ">=12.0.0" @@ -818,8 +1252,9 @@ "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^17.0.2" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -827,13 +1262,19 @@ } } }, - "node_modules/@mui/styled-engine": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.2.0.tgz", - "integrity": "sha512-NZ4pWYQcM5wreUfiXRd7IMFRF+Nq1vMzsIdXtXNjgctJTKHunrofasoBqv+cqevO+hqT75ezSbNHyaXzOXp6Mg==", + "node_modules/@mui/material/node_modules/@mui/system": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.4.tgz", + "integrity": "sha512-7rsWED1wMFMePySJobsBerFZNu7ga580QSi3Zd6sJR8nVj12qD3yIdfvxA70/PxJ/805KbIT0GX7edKI+hpyhA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3", - "@emotion/cache": "^11.6.0", + "@babel/runtime": "^7.17.2", + "@mui/private-theming": "^5.6.2", + "@mui/styled-engine": "^5.6.1", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", + "clsx": "^1.1.1", + "csstype": "^3.0.11", "prop-types": "^15.7.2" }, "engines": { @@ -841,12 +1282,13 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@emotion/react": "^11.4.1", + "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "react": "^17.0.2" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@emotion/react": { @@ -854,21 +1296,20 @@ }, "@emotion/styled": { "optional": true + }, + "@types/react": { + "optional": true } } }, - "node_modules/@mui/system": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.3.tgz", - "integrity": "sha512-YvkjmqgOruZgr+IkueRns99gl3MmnNs8BhnlZosYMLzKz/1lY0JqVBFqUh4sGVbD0UEKFwdk8H31itG5OIPChA==", + "node_modules/@mui/material/node_modules/@mui/system/node_modules/@mui/private-theming": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz", + "integrity": "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3", - "@mui/private-theming": "^5.2.3", - "@mui/styled-engine": "^5.2.0", - "@mui/types": "^7.1.0", - "@mui/utils": "^5.2.3", - "clsx": "^1.1.1", - "csstype": "^3.0.10", + "@babel/runtime": "^7.17.2", + "@mui/utils": "^5.6.1", "prop-types": "^15.7.2" }, "engines": { @@ -879,27 +1320,51 @@ "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^17.0.2" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, "@types/react": { "optional": true } } }, - "node_modules/@mui/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.0.tgz", - "integrity": "sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ==", + "node_modules/@mui/material/node_modules/@mui/system/node_modules/@mui/styled-engine": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz", + "integrity": "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.17.2", + "@emotion/cache": "^11.7.1", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/@mui/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz", + "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==", + "dev": true, "peerDependencies": { "@types/react": "*" }, @@ -909,12 +1374,13 @@ } } }, - "node_modules/@mui/utils": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.2.3.tgz", - "integrity": "sha512-sQujlajIS0zQKcGIS6tZR0L1R+ib26B6UtuEn+cZqwKHsPo3feuS+SkdscYBdcCdMbrZs4gj8WIJHl2z6tbSzQ==", + "node_modules/@mui/material/node_modules/@mui/utils": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz", + "integrity": "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3", + "@babel/runtime": "^7.17.2", "@types/prop-types": "^15.7.4", "@types/react-is": "^16.7.1 || ^17.0.0", "prop-types": "^15.7.2", @@ -928,7 +1394,7 @@ "url": "https://opencollective.com/mui" }, "peerDependencies": { - "react": "^17.0.2" + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -967,9 +1433,9 @@ } }, "node_modules/@npmcli/fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", - "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "dependencies": { "@gar/promisify": "^1.0.1", @@ -977,9 +1443,9 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -1016,10 +1482,110 @@ "node": ">=10" } }, + "node_modules/@nut-tree/libnut": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.1.6.tgz", + "integrity": "sha512-oJvgKJLWXOGM/9Fb5FLoddKaEixI4U0UlKUmDwatu8iryKVu7OrHPi7FtdJiE+hcRQgj9lVUe6ycGwix39onPA==", + "dependencies": { + "@nut-tree/libnut-darwin": "2.1.6", + "@nut-tree/libnut-linux": "2.1.6", + "@nut-tree/libnut-win32": "2.1.6" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-darwin": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.1.6.tgz", + "integrity": "sha512-RUo/Hjj4MN7yfikmnoCFVmfkJK+A3lCQzS80Srk40mB8XJk881m+NDgvnJSLSoRqIrN0YGRX9YQgEHlivQagLg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-linux": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.1.6.tgz", + "integrity": "sha512-RDOQ1+HfFq7mRw9UdVjPp223Rcv3BLvjOMJCbZh5afEmLYVR7NeWqghOOdQqAjcNj7aEqPupd4PkK1fid9AI8A==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/libnut-win32": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.1.6.tgz", + "integrity": "sha512-xTD08p/g0JPHo7roy5k1XkwuKQlUr+VjsEffMR5QKKGSD49QLAR2Dd0plOVZNrDdulxVEBiNnQdtBrr1vBTqbg==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + }, + "engines": { + "node": ">=10.15.3" + } + }, + "node_modules/@nut-tree/nut-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.0.1.tgz", + "integrity": "sha512-nd/yOgxxLRXFG1HJfhvB/xlqMHfGUSwT32Y6X33daZilK/ahQTcGgw2HJfpYUCVP5zcqCJpP0NQFf9TZDdcs0Q==", + "cpu": [ + "x64", + "arm64" + ], + "os": [ + "linux", + "darwin", + "win32" + ], + "dependencies": { + "@nut-tree/libnut": "2.1.6", + "clipboardy": "2.3.0", + "jimp": "0.16.1", + "node-abort-controller": "2.0.0" + } + }, "node_modules/@popperjs/core": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", - "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1091,10 +1657,16 @@ "@types/responselike": "*" } }, + "node_modules/@types/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==", + "dev": true + }, "node_modules/@types/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", "dev": true, "dependencies": { "@types/estree": "*", @@ -1102,9 +1674,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -1112,11 +1684,22 @@ } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "node_modules/@types/ffi-napi": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/ffi-napi/-/ffi-napi-4.0.5.tgz", + "integrity": "sha512-WDPpCcHaPhHmP1FIw3ds/+OLt8bYQ/h3SO7o+8kH771PL21kHVzTwii7+WyMBXMQrBsR6xVU2y7w+h+9ggpaQw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/ref-napi": "*", + "@types/ref-struct-di": "*" + } + }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -1134,10 +1717,16 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "node_modules/@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "node_modules/@types/json5": { @@ -1146,19 +1735,24 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "node_modules/@types/jsonpath": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@types/jsonpath/-/jsonpath-0.2.0.tgz", + "integrity": "sha512-v7qlPA0VpKUlEdhghbDqRoKMxFB3h3Ch688TApBJ6v+XLDdvWCGLJIYiPKGZnS6MAOie+IorCfNYVHOPIHSWwQ==" + }, "node_modules/@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/lodash": { - "version": "4.14.177", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", - "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==", + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", "dev": true }, "node_modules/@types/minimatch": { @@ -1169,25 +1763,28 @@ "optional": true }, "node_modules/@types/node": { - "version": "14.17.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz", - "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==", + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "node_modules/@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, "node_modules/@types/react": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz", - "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==", + "version": "17.0.44", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz", + "integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==", + "dev": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1195,18 +1792,19 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", + "version": "17.0.16", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.16.tgz", + "integrity": "sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ==", "dev": true, "dependencies": { - "@types/react": "*" + "@types/react": "^17" } }, "node_modules/@types/react-is": { "version": "17.0.3", "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "dev": true, "dependencies": { "@types/react": "*" } @@ -1215,10 +1813,29 @@ "version": "4.4.4", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "dev": true, "dependencies": { "@types/react": "*" } }, + "node_modules/@types/ref-napi": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/ref-napi/-/ref-napi-3.0.4.tgz", + "integrity": "sha512-ng8SCmdZbz1GHaW3qgGoX9IaHoIvgMqgBHLe3sv18NbAkHVgnjRW8fJq51VTUm4lnJyLu60q9/002o7qjOg13g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ref-struct-di": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/ref-struct-di/-/ref-struct-di-1.1.6.tgz", + "integrity": "sha512-+Sa2H3ynDYo2ungR3d5kmNetlkAYNqQVjJvs1k7i6zvo7Zu/qb+OsrXU54RuiOYJCwY9piN+hOd4YRRaiEOqgw==", + "dev": true, + "dependencies": { + "@types/ref-napi": "*" + } + }, "node_modules/@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -1231,12 +1848,13 @@ "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, "optional": true, "dependencies": { @@ -1390,9 +2008,9 @@ } }, "node_modules/@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "peerDependencies": { "webpack": "4.x.x || 5.x.x", @@ -1400,9 +2018,9 @@ } }, "node_modules/@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "dependencies": { "envinfo": "^7.7.3" @@ -1412,9 +2030,9 @@ } }, "node_modules/@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "peerDependencies": { "webpack-cli": "4.x.x" @@ -1444,9 +2062,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1486,9 +2104,9 @@ } }, "node_modules/agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -1516,7 +2134,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1546,9 +2163,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -1576,41 +2193,69 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" + }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^2.0.0 || ^1.1.13" } }, "node_modules/arg": { @@ -1627,11 +2272,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, "node_modules/array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", @@ -1644,6 +2284,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, "node_modules/asar": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", @@ -1665,15 +2310,27 @@ "@types/glob": "^7.1.1" } }, - "node_modules/asar/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "engines": { - "node": ">= 6" + "node": ">=0.8" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -1692,10 +2349,35 @@ "node": ">=0.8" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, "node_modules/babel-plugin-macros": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", @@ -1705,8 +2387,12 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" }, "node_modules/base64-js": { "version": "1.5.1", @@ -1727,6 +2413,42 @@ } ] }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "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==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -1756,10 +2478,15 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + }, "node_modules/boolean": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.4.tgz", - "integrity": "sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "dev": true, "optional": true }, @@ -1767,7 +2494,6 @@ "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" @@ -1786,14 +2512,25 @@ } }, "node_modules/browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], "dependencies": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" }, "bin": { @@ -1801,10 +2538,6 @@ }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" } }, "node_modules/buffer": { @@ -1855,6 +2588,15 @@ "node": "*" } }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -1867,6 +2609,27 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -1908,6 +2671,23 @@ "node": ">=10" } }, + "node_modules/cacache/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -1959,37 +2739,88 @@ "node": ">=8" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "version": "1.0.30001338", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz", + "integrity": "sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" } }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" + } + }, + "node_modules/chalk/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/chownr": { @@ -2049,59 +2880,46 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, "engines": { "node": ">=8" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/clone": { @@ -2140,10 +2958,47 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "dev": true, "engines": { "node": ">=6" } }, + "node_modules/cmake-js": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", + "dependencies": { + "debug": "^4", + "fs-extra": "^5.0.0", + "is-iojs": "^1.0.1", + "lodash": "^4", + "memory-stream": "0", + "npmlog": "^1.2.0", + "rc": "^1.2.7", + "request": "^2.54.0", + "semver": "^5.0.3", + "splitargs": "0", + "tar": "^4", + "unzipper": "^0.8.13", + "url-join": "0", + "which": "^1.0.9", + "yargs": "^3.6.0" + }, + "bin": { + "cmake-js": "bin/cmake-js" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cmake-js/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -2153,23 +3008,29 @@ } }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", @@ -2177,19 +3038,33 @@ "dev": true }, "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true, "engines": { "node": ">=0.1.90" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "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 + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } }, "node_modules/compare-version": { "version": "0.1.2", @@ -2200,11 +3075,29 @@ "node": ">=0.10.0" } }, + "node_modules/compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "dependencies": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/compress-brotli/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "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 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/concat-stream": { "version": "1.6.2", @@ -2241,14 +3134,15 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } }, "node_modules/copy-webpack-plugin": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.0.0.tgz", - "integrity": "sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", "dev": true, "dependencies": { "fast-glob": "^3.2.7", @@ -2269,59 +3163,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -2331,6 +3172,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -2342,38 +3184,21 @@ "node": ">=8" } }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cosmiconfig/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/cross-spawn": { + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", @@ -2411,41 +3236,49 @@ "node": ">= 10" } }, - "node_modules/cross-spawn-windows-exe/node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "node_modules/cross-spawn-windows-exe/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], "dependencies": { - "cross-spawn": "^7.0.1" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">= 10" + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", - "postcss": "^8.2.15", + "postcss": "^8.4.7", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", + "postcss-value-parser": "^4.2.0", "semver": "^7.3.5" }, "engines": { @@ -2460,9 +3293,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2487,14 +3320,25 @@ } }, "node_modules/csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -2507,6 +3351,14 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -2519,6 +3371,31 @@ "node": ">=4" } }, + "node_modules/deep-equal": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "dependencies": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -2527,6 +3404,11 @@ "node": ">=4.0.0" } }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "node_modules/defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -2543,16 +3425,26 @@ "dev": true }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "optional": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dependencies": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" } }, "node_modules/delegates": { @@ -2596,6 +3488,45 @@ "node": ">=0.3.1" } }, + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/dir-compare/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/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -2608,15 +3539,6 @@ "node": ">=8" } }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -2626,16 +3548,38 @@ "csstype": "^3.0.2" } }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, "node_modules/duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/electron": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.1.tgz", - "integrity": "sha512-6TSDBcoKGgmKL/+W+LyaXidRVeRl1V4I81ZOWcqsVksdTMfM4AlxTgfaoYdK/nUhqBrUtuPDcqOyJE6Bc4qMpw==", + "version": "16.2.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.5.tgz", + "integrity": "sha512-kjfcnanb8IPE/EWcmmcGuhl+I8vIKZiJYlu3clOctiwh02Nl3HGzIplbyTtBAbIC8gg3MXa+kZl9kQMk5N0WgQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -2650,10 +3594,35 @@ "node": ">= 8.6" } }, + "node_modules/electron-devtools-installer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz", + "integrity": "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==", + "dependencies": { + "rimraf": "^3.0.2", + "semver": "^7.2.1", + "tslib": "^2.1.0", + "unzip-crx-3": "^0.2.0" + } + }, + "node_modules/electron-devtools-installer/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/electron-notarize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.1.1.tgz", - "integrity": "sha512-kufsnqh86CTX89AYNG3NCPoboqnku/+32RxeJ2+7A4Rbm4bbOx0Nc7XTy3/gAlBfpj9xPAxHfhZLOHgfi6cJVw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.2.1.tgz", + "integrity": "sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -2736,12 +3705,13 @@ "dev": true }, "node_modules/electron-packager": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.4.0.tgz", - "integrity": "sha512-JrrLcBP15KGrPj0cZ/ALKGmaQ4gJkn3mocf0E3bRKdR3kxKWYcDRpCvdhksYDXw/r3I6tMEcZ7XzyApWFXdVpw==", + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.5.1.tgz", + "integrity": "sha512-9/fqF64GACZsLYLuFJ8vCqItMXbvsD0NMDLNfFmAv9mSqkqKWSZb5V3VE9CxT6CeXwZ6wN3YowEQuqBNyShEVg==", "dev": true, "dependencies": { "@electron/get": "^1.6.0", + "@electron/universal": "^1.2.1", "asar": "^3.1.0", "cross-spawn-windows-exe": "^1.2.0", "debug": "^4.0.1", @@ -2833,9 +3803,9 @@ } }, "node_modules/electron-packager/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2857,18 +3827,18 @@ } }, "node_modules/electron-rebuild": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.5.tgz", - "integrity": "sha512-U9dKi10V9w/BdIVB8a8dTKYLK3Q1d2WZ+Yo5qfM3XX/O4jI7KpnwgvWgGoVv0jTWPC2NlebF00ffWS/8NfUAtA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.7.tgz", + "integrity": "sha512-WvaW1EgRinDQ61khHFZfx30rkPQG5ItaOT0wrI7iJv9A3SbghriQGfZQfHZs25fWLBe6/vkv05LOqg6aDw6Wzw==", "dev": true, "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", - "colors": "^1.3.3", + "chalk": "^4.0.0", "debug": "^4.1.1", "detect-libc": "^1.0.3", "fs-extra": "^10.0.0", "got": "^11.7.0", - "lzma-native": "^8.0.1", + "lzma-native": "^8.0.5", "node-abi": "^3.0.0", "node-api-version": "^0.1.4", "node-gyp": "^8.4.0", @@ -2884,10 +3854,32 @@ "node": ">=12.13.0" } }, + "node_modules/electron-rebuild/node_modules/@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/electron-rebuild/node_modules/@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, "engines": { "node": ">=10" @@ -2908,6 +3900,21 @@ "node": ">=10" } }, + "node_modules/electron-rebuild/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/electron-rebuild/node_modules/cacheable-request": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", @@ -2926,6 +3933,51 @@ "node": ">=8" } }, + "node_modules/electron-rebuild/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/electron-rebuild/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/electron-rebuild/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/electron-rebuild/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/electron-rebuild/node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -2951,9 +4003,9 @@ } }, "node_modules/electron-rebuild/node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -3004,6 +4056,24 @@ "url": "https://github.com/sindresorhus/got?sponsor=1" } }, + "node_modules/electron-rebuild/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/electron-rebuild/node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -3023,11 +4093,12 @@ } }, "node_modules/electron-rebuild/node_modules/keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.2.tgz", + "integrity": "sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ==", "dev": true, "dependencies": { + "compress-brotli": "^1.3.6", "json-buffer": "3.0.1" } }, @@ -3052,6 +4123,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/electron-rebuild/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/electron-rebuild/node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -3083,9 +4166,9 @@ } }, "node_modules/electron-rebuild/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -3097,22 +4180,125 @@ "node": ">=10" } }, - "node_modules/electron-rebuild/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/electron-rebuild/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8" } }, - "node_modules/electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", + "node_modules/electron-rebuild/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/electron-rebuild/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-rebuild/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/electron-rebuild/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-rebuild/node_modules/yargs": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-rebuild/node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.136", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.136.tgz", + "integrity": "sha512-GnITX8rHnUrIVnTxU9UlsTnSemHUA2iF+6QrRqxFbp/mf0vfuSc/goEyyQhUX3TUUCE3mv/4BNuXOtaJ4ur0eA==", + "dev": true + }, + "node_modules/electron/node_modules/@types/node": { + "version": "14.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.16.tgz", + "integrity": "sha512-X3bUMdK/VmvrWdoTkz+VCn6nwKwrKCFTHtqwBIaQJNx4RUIBBUFXM00bqPz/DsDd+Icjmzm6/tyYZzeGVqb6/Q==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true @@ -3131,7 +4317,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "optional": true, "dependencies": { "iconv-lite": "^0.6.2" @@ -3146,9 +4331,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -3189,16 +4374,87 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/es-abstract": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", + "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.1", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -3210,6 +4466,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, "engines": { "node": ">=6" } @@ -3218,6 +4475,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "engines": { "node": ">=10" }, @@ -3225,6 +4483,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/escodegen/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==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -3239,15 +4539,15 @@ } }, "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, "node_modules/esrecurse": { @@ -3275,11 +4575,18 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -3290,40 +4597,77 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "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": ">=10" + "node": ">=6" + } + }, + "node_modules/execa/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==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": ">=4.8" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "engines": { - "node": ">=10" + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/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=", + "dependencies": { + "shebang-regex": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/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=", + "engines": { + "node": ">=0.10.0" } }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -3332,6 +4676,11 @@ "node": ">=6" } }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "node_modules/extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -3362,16 +4711,23 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -3381,7 +4737,7 @@ "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-glob/node_modules/glob-parent": { @@ -3399,8 +4755,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fastest-levenshtein": { "version": "1.0.12", @@ -3417,6 +4777,33 @@ "reusify": "^1.0.4" } }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -3426,6 +4813,36 @@ "pend": "~1.2.0" } }, + "node_modules/ffi-napi": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ffi-napi/-/ffi-napi-4.0.3.tgz", + "integrity": "sha512-PMdLCIvDY9mS32RxZ0XGb95sonPRal8aqRhLbeEtWKZTe2A87qRFG9HjOhvG8EX2UmQw5XNRMIOT+1MYlWmdeg==", + "hasInstallScript": true, + "dependencies": { + "debug": "^4.1.1", + "get-uv-event-loop-napi-h": "^1.0.5", + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.1", + "ref-napi": "^2.0.1 || ^3.0.2", + "ref-struct-di": "^1.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "engines": { + "node": ">=6" + } + }, + "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==" + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -3467,19 +4884,19 @@ "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/flora-colossus": { @@ -3509,23 +4926,57 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/fs-constants": { + "node_modules/flux": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz", + "integrity": "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dependencies": { - "graceful-fs": "^4.2.0", + "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" } }, "node_modules/fs-minipass": { @@ -3543,14 +4994,63 @@ "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 + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/galactus": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz", @@ -3583,24 +5083,22 @@ } }, "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", + "ansi": "^0.3.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" + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "peer": true, "engines": { "node": ">=6.9.0" @@ -3615,6 +5113,19 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-package-info": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", @@ -3649,7 +5160,6 @@ "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" }, @@ -3657,6 +5167,51 @@ "node": ">=6" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-from-current-process-h": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz", + "integrity": "sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==" + }, + "node_modules/get-uv-event-loop-napi-h": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.6.tgz", + "integrity": "sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg==", + "dependencies": { + "get-symbol-from-current-process-h": "^1.0.1" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -3666,7 +5221,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3700,6 +5254,15 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "node_modules/global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", @@ -3719,9 +5282,9 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "dependencies": { @@ -3754,6 +5317,7 @@ "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, "peer": true, "engines": { "node": ">=4" @@ -3776,15 +5340,15 @@ } }, "node_modules/globby": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", - "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, "dependencies": { "array-union": "^3.0.1", "dir-glob": "^3.0.1", "fast-glob": "^3.2.7", - "ignore": "^5.1.8", + "ignore": "^5.1.9", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -3818,11 +5382,37 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -3834,13 +5424,57 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-unicode": { @@ -3852,6 +5486,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, "dependencies": { "react-is": "^16.7.0" } @@ -3859,7 +5494,8 @@ "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "node_modules/hosted-git-info": { "version": "2.8.9", @@ -3887,6 +5523,20 @@ "node": ">= 6" } }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -3901,9 +5551,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { "agent-base": "6", @@ -3935,7 +5585,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -3976,18 +5625,37 @@ ] }, "node_modules/ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { "node": ">= 4" } }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3999,18 +5667,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { "pkg-dir": "^4.2.0", @@ -4021,6 +5681,9 @@ }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -4051,7 +5714,6 @@ "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" @@ -4067,6 +5729,19 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", @@ -4076,21 +5751,83 @@ "node": ">= 0.10" } }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -4098,11 +5835,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, "bin": { "is-docker": "cli.js" }, @@ -4133,6 +5883,11 @@ "node": ">=0.10.0" } }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -4154,12 +5909,36 @@ "node": ">=8" } }, + "node_modules/is-iojs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=" + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -4169,6 +5948,20 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4181,18 +5974,99 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "engines": { - "node": ">=8" + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -4205,11 +6079,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, "dependencies": { "is-docker": "^2.0.0" }, @@ -4218,9 +6122,9 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isbinaryfile": { "version": "3.0.3", @@ -4237,8 +6141,7 @@ "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 + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/isobject": { "version": "3.0.1", @@ -4249,10 +6152,15 @@ "node": ">=0.10.0" } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "node_modules/jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "dependencies": { "@types/node": "*", @@ -4263,6 +6171,15 @@ "node": ">= 10.13.0" } }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -4278,6 +6195,23 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4295,10 +6229,28 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "peer": true, "bin": { "jsesc": "bin/jsesc" @@ -4322,42 +6274,80 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, + "peer": true, "bin": { "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "dependencies": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jszip": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -4385,10 +6375,70 @@ "node": ">=0.10.0" } }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + }, + "node_modules/load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "engines": { + "node": ">=0.4.0" + } }, "node_modules/load-json-file": { "version": "2.0.0", @@ -4405,6 +6455,18 @@ "node": ">=4" } }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/load-json-file/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -4415,24 +6477,25 @@ } }, "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { "node": ">=6.11.5" } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/lodash": { @@ -4440,12 +6503,43 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, + "node_modules/lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "node_modules/lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=" + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" + }, + "node_modules/lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -4462,31 +6556,100 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "color-convert": "^2.0.1" }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -4495,9 +6658,9 @@ } }, "node_modules/lzma-native": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.1.tgz", - "integrity": "sha512-Ryr9X3yDVZhRYOxR8QhUBCNe6GdEfy9BvFDIFtUvEkocvSvnrYt9lRm6FR1z0eQn0QSMenrgrDIJRMgUf9zsKQ==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.6.tgz", + "integrity": "sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -4512,6 +6675,12 @@ "node": ">=10.0.0" } }, + "node_modules/lzma-native/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, "node_modules/lzma-native/node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -4572,6 +6741,35 @@ "node": ">=10" } }, + "node_modules/memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", + "dependencies": { + "readable-stream": "~1.0.26-2" + } + }, + "node_modules/memory-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "node_modules/memory-stream/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/memory-stream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4588,34 +6786,43 @@ } }, "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true, + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -4639,11 +6846,18 @@ "node": ">=4" } }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, "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, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4652,14 +6866,14 @@ } }, "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "node_modules/minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -4747,12 +6961,11 @@ } }, "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, + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" @@ -4774,9 +6987,9 @@ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "node_modules/nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -4791,9 +7004,9 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { "node": ">= 0.6" @@ -4805,10 +7018,15 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "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==" + }, "node_modules/node-abi": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.5.0.tgz", - "integrity": "sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.15.0.tgz", + "integrity": "sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -4818,9 +7036,9 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4832,11 +7050,15 @@ "node": ">=10" } }, + "node_modules/node-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" + }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" }, "node_modules/node-api-version": { "version": "0.1.4", @@ -4848,9 +7070,9 @@ } }, "node_modules/node-api-version/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4862,10 +7084,29 @@ "node": ">=10" } }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-gyp": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.0.tgz", - "integrity": "sha512-Bi/oCm5bH6F+FmzfUxJpPaxMEyIhszULGR3TprmTeku8/dMFcdTcypk120NeZqEt54r1BrgEKtm2jJiuIKE28Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "dev": true, "dependencies": { "env-paths": "^2.2.0", @@ -4873,7 +7114,7 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^9.1.0", "nopt": "^5.0.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.2", @@ -4887,20 +7128,101 @@ } }, "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4912,6 +7234,52 @@ "node": ">=10" } }, + "node_modules/node-gyp/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/node-irsdk-2021": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/node-irsdk-2021/-/node-irsdk-2021-0.0.1.tgz", @@ -4927,9 +7295,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true }, "node_modules/noop-logger": { "version": "0.1.1", @@ -5005,26 +7374,32 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" } }, "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "ansi": "~0.3.0", + "are-we-there-yet": "~1.0.0", + "gauge": "~1.2.0" } }, "node_modules/number-is-nan": { @@ -5035,6 +7410,14 @@ "node": ">=0.10.0" } }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -5043,16 +7426,59 @@ "node": ">=0.10.0" } }, - "node_modules/object-keys": { + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true, "engines": { "node": ">= 0.4" } }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5076,6 +7502,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -5099,27 +7541,87 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, + "node_modules/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -5129,31 +7631,36 @@ "node": ">=6" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/p-map": { @@ -5172,18 +7679,24 @@ } }, "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==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true, "engines": { - "node": ">=6" + "node": ">=4" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -5203,32 +7716,61 @@ "node": ">=0.10.0" } }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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": ">=8" + "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" } @@ -5245,27 +7787,16 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/pend": { @@ -5274,15 +7805,26 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { "node": ">=8.6" @@ -5301,6 +7843,17 @@ "node": ">=4" } }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -5313,61 +7866,145 @@ "node": ">=8" } }, - "node_modules/plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "base64-js": "^1.5.1", - "xmlbuilder": "^9.0.7" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "nanoid": "^3.1.30", - "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "p-locate": "^4.1.0" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=6" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=8" + } + }, + "node_modules/pkg-dir/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/pkg-dir/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/plist": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", + "dev": true, + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.3", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" }, "peerDependencies": { "postcss": "^8.1.0" @@ -5404,9 +8041,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -5417,9 +8054,9 @@ } }, "node_modules/postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "node_modules/prebuild-install": { @@ -5450,6 +8087,43 @@ "node": ">=6" } }, + "node_modules/prebuild-install/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prebuild-install/node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/prebuild-install/node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/prebuild-install/node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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/prebuild-install/node_modules/node-abi": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", @@ -5458,6 +8132,17 @@ "semver": "^5.4.1" } }, + "node_modules/prebuild-install/node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "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/prebuild-install/node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -5466,6 +8151,25 @@ "semver": "bin/semver" } }, + "node_modules/prebuild-install/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -5475,6 +8179,14 @@ "node": ">=4" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "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", @@ -5489,6 +8201,14 @@ "node": ">=0.4.0" } }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -5509,13 +8229,13 @@ } }, "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "node_modules/prop-types/node_modules/react-is": { @@ -5530,6 +8250,11 @@ "dev": true, "optional": true }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5543,11 +8268,23 @@ "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/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5627,11 +8364,21 @@ "node": ">=0.10.0" } }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, "node_modules/react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -5644,7 +8391,44 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } }, "node_modules/react-transition-group": { "version": "4.4.2", @@ -5688,71 +8472,25 @@ "node": ">=4" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { + "node_modules/read-pkg/node_modules/path-type": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "pify": "^2.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/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=", + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/readable-stream": { @@ -5769,6 +8507,11 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", @@ -5781,20 +8524,98 @@ "node": ">= 0.10" } }, + "node_modules/ref-napi": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ref-napi/-/ref-napi-3.0.3.tgz", + "integrity": "sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA==", + "hasInstallScript": true, + "dependencies": { + "debug": "^4.1.1", + "get-symbol-from-current-process-h": "^1.0.2", + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.1" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/ref-struct-di": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ref-struct-di/-/ref-struct-di-1.1.1.tgz", + "integrity": "sha512-2Xyn/0Qgz89VT+++WP0sTosdm9oeowLP23wRJYhG4BFdMUrLj3jhwHZNEytYNYgtPKLNTP3KJX4HEgBvM1/Y2g==", + "dependencies": { + "debug": "^3.1.0" + } + }, + "node_modules/ref-struct-di/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, - "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, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, "engines": { - "node": ">=0.10.0" - } - }, + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "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-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -5805,12 +8626,17 @@ } }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5834,7 +8660,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -5843,6 +8669,15 @@ "node": ">=8" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -5888,7 +8723,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -5917,6 +8751,13 @@ "node": ">=8.0" } }, + "node_modules/roarr/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5940,6 +8781,14 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -5948,9 +8797,12 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "node_modules/scheduler": { "version": "0.20.2", @@ -5962,27 +8814,63 @@ } }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -5994,6 +8882,11 @@ "dev": true, "optional": true }, + "node_modules/sendkeys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sendkeys/-/sendkeys-1.1.1.tgz", + "integrity": "sha512-gULQPxLKyfNRb83XWXAA0eJu8J+uwY6my1oI1+efN8rH6AUX6KgayweI+yn2qX1fL4iBibS59L1SO2qXukTPnA==" + }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -6024,6 +8917,19 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "node_modules/set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "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=" + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -6057,10 +8963,23 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", @@ -6082,9 +9001,9 @@ ] }, "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -6136,13 +9055,13 @@ } }, "node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "dependencies": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -6150,32 +9069,32 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", - "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dev": true, "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" } }, "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==", + "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-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6191,6 +9110,15 @@ "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/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -6223,12 +9151,39 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "node_modules/splitargs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs=" + }, "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/ssri": { "version": "8.0.1", @@ -6242,6 +9197,14 @@ "node": ">= 8" } }, + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "dependencies": { + "escodegen": "^1.8.1" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -6263,7 +9226,15 @@ "node": ">=0.10.0" } }, - "node_modules/strip-ansi": { + "node_modules/string-width/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", @@ -6274,6 +9245,44 @@ "node": ">=0.10.0" } }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -6283,6 +9292,14 @@ "node": ">=4" } }, + "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=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -6340,7 +9357,8 @@ "node_modules/stylis": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==", + "dev": true }, "node_modules/sumchecker": { "version": "3.0.1", @@ -6355,15 +9373,27 @@ } }, "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "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": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/tapable": { @@ -6376,20 +9406,20 @@ } }, "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "engines": { - "node": ">= 10" + "node": ">=4.5" } }, "node_modules/tar-fs": { @@ -6436,53 +9466,88 @@ "node": ">= 6" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "node_modules/tar/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" } }, - "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "dev": true, + "node_modules/tar/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", - "dev": true, + "node_modules/tar/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dependencies": { - "jest-worker": "^27.0.6", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", + "minipass": "^2.9.0" + } + }, + "node_modules/tar/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/tar/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/terser": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.8.0-beta.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", "terser": "^5.7.2" }, "engines": { @@ -6507,19 +9572,95 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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/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/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, "engines": { "node": ">= 8" } }, + "node_modules/terser/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/terser/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/terser/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "node_modules/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } + }, "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" } @@ -6545,6 +9686,31 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", + "engines": { + "node": "*" + } + }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -6567,9 +9733,9 @@ } }, "node_modules/ts-loader": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", - "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -6585,10 +9751,68 @@ "webpack": "^5.0.0" } }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-loader/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6600,10 +9824,22 @@ "node": ">=10" } }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "0.7.0", @@ -6617,11 +9853,13 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" @@ -6642,14 +9880,14 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, @@ -6664,6 +9902,93 @@ "tsconfig-paths": "^3.9.0" } }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths/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/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -6685,6 +10010,22 @@ "node": "*" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", @@ -6705,9 +10046,9 @@ "dev": true }, "node_modules/typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -6717,11 +10058,48 @@ "node": ">=4.2.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, + "node_modules/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, + "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" } @@ -6739,20 +10117,83 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, "engines": { "node": ">= 4.0.0" } }, + "node_modules/unzip-crx-3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz", + "integrity": "sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==", + "dependencies": { + "jszip": "^3.1.0", + "mkdirp": "^0.5.1", + "yaku": "^0.16.6" + } + }, + "node_modules/unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "node_modules/unzipper/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/unzipper/node_modules/process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "dependencies": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" + }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -6765,11 +10206,71 @@ "node": ">=4" } }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest/node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "dependencies": { + "pako": "^1.0.5" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -6780,10 +10281,28 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/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=" + }, "node_modules/watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -6802,14 +10321,19 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, "node_modules/webpack": { - "version": "5.64.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.2.tgz", - "integrity": "sha512-4KGc0+Ozi0aS3EaLNRvEppfZUer+CaORKqL6OBjDLZOPf9YfN8leagFzwe6/PoBdHFxc/utKArl8LMC0Ivtmdg==", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -6817,12 +10341,12 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -6830,8 +10354,8 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.2" + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -6850,15 +10374,15 @@ } }, "node_modules/webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -6901,6 +10425,65 @@ "node": ">= 10" } }, + "node_modules/webpack-cli/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/webpack-cli/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -6915,33 +10498,107 @@ } }, "node_modules/webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { "node": ">=10.13.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/node-which" + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/wide-align": { "version": "1.1.5", @@ -6957,65 +10614,54 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "node_modules/window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "bin": { + "window-size": "cli.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 0.10.0" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, + "node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/wrappy": { @@ -7023,6 +10669,42 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", @@ -7032,45 +10714,50 @@ "node": ">=4.0" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "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==", "engines": { - "node": ">=10" + "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/yaku": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz", + "integrity": "sha1-HRlceKqbW/hHnIlblQT9TwhHmE4=" + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { "node": ">= 6" } }, "node_modules/yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dependencies": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } }, "node_modules/yargs-parser": { @@ -7082,50 +10769,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -7147,336 +10790,263 @@ } }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@babel/code-frame": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", - "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, "requires": { - "@babel/highlight": "^7.16.0" + "@babel/highlight": "^7.16.7" } }, "@babel/compat-data": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", - "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, "peer": true }, "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", + "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "dev": true, "peer": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.10", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.10", + "@babel/types": "^7.17.10", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "peer": true - } + "json5": "^2.2.1", + "semver": "^6.3.0" } }, "@babel/generator": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz", - "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", + "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "peer": true - } + "@babel/types": "^7.17.10", + "@jridgewell/gen-mapping": "^0.1.0", + "jsesc": "^2.5.1" } }, "@babel/helper-compilation-targets": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", - "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "dev": true, "peer": true, "requires": { - "@babel/compat-data": "^7.16.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", "semver": "^6.3.0" } }, - "@babel/helper-function-name": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", - "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, "peer": true, "requires": { - "@babel/helper-get-function-arity": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, - "@babel/helper-get-function-arity": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", - "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", - "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", - "peer": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz", - "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-imports": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", - "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-module-transforms": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz", - "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==", - "peer": true, - "requires": { - "@babel/helper-module-imports": "^7.16.0", - "@babel/helper-replace-supers": "^7.16.0", - "@babel/helper-simple-access": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/helper-validator-identifier": "^7.15.7", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", - "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" - }, - "@babel/helper-replace-supers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz", - "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==", - "peer": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.16.0", - "@babel/helper-optimise-call-expression": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0" - } + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true }, "@babel/helper-simple-access": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", - "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.17.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", - "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, "peer": true, "requires": { - "@babel/types": "^7.16.0" + "@babel/types": "^7.16.7" } }, "@babel/helper-validator-identifier": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true }, "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, "peer": true }, "@babel/helpers": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz", - "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, "peer": true, "requires": { - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.3", - "@babel/types": "^7.16.0" + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", - "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "chalk": "^2.0.0", "js-tokens": "^4.0.0" - }, - "dependencies": { - "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==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "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=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } } }, "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", + "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "dev": true, "peer": true }, "@babel/plugin-syntax-jsx": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz", - "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.16.7" } }, "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", - "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, "peer": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/types": "^7.16.0" + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" } }, "@babel/traverse": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz", - "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", + "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "dev": true, "peer": true, "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-function-name": "^7.16.0", - "@babel/helper-hoist-variables": "^7.16.0", - "@babel/helper-split-export-declaration": "^7.16.0", - "@babel/parser": "^7.16.3", - "@babel/types": "^7.16.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.10", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.10", + "@babel/types": "^7.17.10", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", - "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", + "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/helper-validator-identifier": "^7.16.7", "to-fast-properties": "^2.0.0" } }, @@ -7486,259 +11056,699 @@ "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "dev": true }, - "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", - "dev": true, + "@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@electron/get": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz", + "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^3.0.0", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "@electron/universal": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.2.1.tgz", + "integrity": "sha512-7323HyMh7KBAl/nPDppdLsC87G6RwRU02dy5FPeGB1eS7rUePh55+WNWiDPLhFQqqVPHzh77M69uhmoT8XnwMQ==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.1.0", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1", + "minimatch": "^3.0.4", + "plist": "^3.0.4" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@emotion/babel-plugin": { + "version": "11.9.2", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.9.2.tgz", + "integrity": "sha512-Pr/7HGH6H6yKgnVFNEj2MVlreu3ADqftqjqwUvDy/OJzKFgxKeTQ+eeUf20FOTuHVkDON2iNa25rAXVYtWJCjw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/runtime": "^7.13.10", + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.5", + "@emotion/serialize": "^1.0.2", + "babel-plugin-macros": "^2.6.1", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.0.13" + } + }, + "@emotion/cache": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", + "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "dev": true, + "requires": { + "@emotion/memoize": "^0.7.4", + "@emotion/sheet": "^1.1.0", + "@emotion/utils": "^1.0.0", + "@emotion/weak-memoize": "^0.2.5", + "stylis": "4.0.13" + } + }, + "@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true + }, + "@emotion/is-prop-valid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz", + "integrity": "sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ==", + "dev": true, + "requires": { + "@emotion/memoize": "^0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", + "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==", + "dev": true + }, + "@emotion/react": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", + "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.7.1", + "@emotion/cache": "^11.7.1", + "@emotion/serialize": "^1.0.3", + "@emotion/utils": "^1.1.0", + "@emotion/weak-memoize": "^0.2.5", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-2mSSvgLfyV3q+iVh3YWgNlUc2a9ZlDU7DjuP5MjK3AXRR0dYigCrP99aeFtaB2L/hjfEZdSThn5dsZ0ufqbvsA==", + "dev": true, + "requires": { + "@emotion/hash": "^0.8.0", + "@emotion/memoize": "^0.7.4", + "@emotion/unitless": "^0.7.5", + "@emotion/utils": "^1.0.0", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", + "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==", + "dev": true + }, + "@emotion/styled": { + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz", + "integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.13.10", + "@emotion/babel-plugin": "^11.7.1", + "@emotion/is-prop-valid": "^1.1.2", + "@emotion/serialize": "^1.0.2", + "@emotion/utils": "^1.1.0" + } + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true + }, + "@emotion/utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.1.0.tgz", + "integrity": "sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ==", + "dev": true + }, + "@emotion/weak-memoize": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@jimp/bmp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.1.tgz", + "integrity": "sha512-iwyNYQeBawrdg/f24x3pQ5rEx+/GwjZcCXd3Kgc+ZUd+Ivia7sIqBsOnDaMZdKCBPlfW364ekexnlOqyVa0NWg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "bmp-js": "^0.1.0" + } + }, + "@jimp/core": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.1.tgz", + "integrity": "sha512-la7kQia31V6kQ4q1kI/uLimu8FXx7imWVajDGtwUG8fzePLWDFJyZl0fdIXVCL1JW2nBcRHidUot6jvlRDi2+g==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.1.tgz", + "integrity": "sha512-DNUAHNSiUI/j9hmbatD6WN/EBIyeq4AO0frl5ETtt51VN1SvE4t4v83ZA/V6ikxEf3hxLju4tQ5Pc3zmZkN/3A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.1" + } + }, + "@jimp/gif": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.1.tgz", + "integrity": "sha512-r/1+GzIW1D5zrP4tNrfW+3y4vqD935WBXSc8X/wm23QTY9aJO9Lw6PEdzpYCEY+SOklIFKaJYUAq/Nvgm/9ryw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.1.tgz", + "integrity": "sha512-8352zrdlCCLFdZ/J+JjBslDvml+fS3Z8gttdml0We759PnnZGqrnPRhkOEOJbNUlE+dD4ckLeIe6NPxlS/7U+w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "jpeg-js": "0.4.2" + } + }, + "@jimp/plugin-blit": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.1.tgz", + "integrity": "sha512-fKFNARm32RoLSokJ8WZXHHH2CGzz6ire2n1Jh6u+XQLhk9TweT1DcLHIXwQMh8oR12KgjbgsMGvrMVlVknmOAg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-blur": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.1.tgz", + "integrity": "sha512-1WhuLGGj9MypFKRcPvmW45ht7nXkOKu+lg3n2VBzIB7r4kKNVchuI59bXaCYQumOLEqVK7JdB4glaDAbCQCLyw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-circle": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.1.tgz", + "integrity": "sha512-JK7yi1CIU7/XL8hdahjcbGA3V7c+F+Iw+mhMQhLEi7Q0tCnZ69YJBTamMiNg3fWPVfMuvWJJKOBRVpwNTuaZRg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-color": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.1.tgz", + "integrity": "sha512-9yQttBAO5SEFj7S6nJK54f+1BnuBG4c28q+iyzm1JjtnehjqMg6Ljw4gCSDCvoCQ3jBSYHN66pmwTV74SU1B7A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.1.tgz", + "integrity": "sha512-44F3dUIjBDHN+Ym/vEfg+jtjMjAqd2uw9nssN67/n4FdpuZUVs7E7wadKY1RRNuJO+WgcD5aDQcsvurXMETQTg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-cover": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.1.tgz", + "integrity": "sha512-YztWCIldBAVo0zxcQXR+a/uk3/TtYnpKU2CanOPJ7baIuDlWPsG+YE4xTsswZZc12H9Kl7CiziEbDtvF9kwA/Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-crop": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.1.tgz", + "integrity": "sha512-UQdva9oQzCVadkyo3T5Tv2CUZbf0klm2cD4cWMlASuTOYgaGaFHhT9st+kmfvXjKL8q3STkBu/zUPV6PbuV3ew==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-displace": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.1.tgz", + "integrity": "sha512-iVAWuz2+G6Heu8gVZksUz+4hQYpR4R0R/RtBzpWEl8ItBe7O6QjORAkhxzg+WdYLL2A/Yd4ekTpvK0/qW8hTVw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-dither": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.1.tgz", + "integrity": "sha512-tADKVd+HDC9EhJRUDwMvzBXPz4GLoU6s5P7xkVq46tskExYSptgj5713J5Thj3NMgH9Rsqu22jNg1H/7tr3V9Q==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-fisheye": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.1.tgz", + "integrity": "sha512-BWHnc5hVobviTyIRHhIy9VxI1ACf4CeSuCfURB6JZm87YuyvgQh5aX5UDKtOz/3haMHXBLP61ZBxlNpMD8CG4A==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-flip": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.1.tgz", + "integrity": "sha512-KdxTf0zErfZ8DyHkImDTnQBuHby+a5YFdoKI/G3GpBl3qxLBvC+PWkS2F/iN3H7wszP7/TKxTEvWL927pypT0w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.1.tgz", + "integrity": "sha512-u9n4wjskh3N1mSqketbL6tVcLU2S5TEaFPR40K6TDv4phPLZALi1Of7reUmYpVm8mBDHt1I6kGhuCJiWvzfGyg==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-invert": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.1.tgz", + "integrity": "sha512-2DKuyVXANH8WDpW9NG+PYFbehzJfweZszFYyxcaewaPLN0GxvxVLOGOPP1NuUTcHkOdMFbE0nHDuB7f+sYF/2w==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } + }, + "@jimp/plugin-mask": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.1.tgz", + "integrity": "sha512-snfiqHlVuj4bSFS0v96vo2PpqCDMe4JB+O++sMo5jF5mvGcGL6AIeLo8cYqPNpdO6BZpBJ8MY5El0Veckhr39Q==", "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@discoveryjs/json-ext": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", - "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", - "dev": true + "@jimp/plugin-normalize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.1.tgz", + "integrity": "sha512-dOQfIOvGLKDKXPU8xXWzaUeB0nvkosHw6Xg1WhS1Z5Q0PazByhaxOQkSKgUryNN/H+X7UdbDvlyh/yHf3ITRaw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@electron/get": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.13.1.tgz", - "integrity": "sha512-U5vkXDZ9DwXtkPqlB45tfYnnYBN8PePp1z/XDCupnSpdrxT8/ThCv9WCwPLf9oqiSGZTkH6dx2jDUPuoXpjkcA==", - "dev": true, + "@jimp/plugin-print": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.1.tgz", + "integrity": "sha512-ceWgYN40jbN4cWRxixym+csyVymvrryuKBQ+zoIvN5iE6OyS+2d7Mn4zlNgumSczb9GGyZZESIgVcBDA1ezq0Q==", "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "global-agent": "^3.0.0", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "load-bmfont": "^1.4.0" } }, - "@emotion/babel-plugin": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.7.1.tgz", - "integrity": "sha512-K3/6Y+J/sIAjplf3uIteWLhPuOyuMNnE+iyYnTF/m294vc6IL90kTHp7y8ldZYbpKlP17rpOWDKM9DvTcrOmNQ==", + "@jimp/plugin-resize": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.1.tgz", + "integrity": "sha512-u4JBLdRI7dargC04p2Ha24kofQBk3vhaf0q8FwSYgnCRwxfvh2RxvhJZk9H7Q91JZp6wgjz/SjvEAYjGCEgAwQ==", "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/runtime": "^7.13.10", - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.5", - "@emotion/serialize": "^1.0.2", - "babel-plugin-macros": "^2.6.1", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.0.13" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - } + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@emotion/cache": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.7.1.tgz", - "integrity": "sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A==", + "@jimp/plugin-rotate": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.1.tgz", + "integrity": "sha512-ZUU415gDQ0VjYutmVgAYYxC9Og9ixu2jAGMCU54mSMfuIlmohYfwARQmI7h4QB84M76c9hVLdONWjuo+rip/zg==", "requires": { - "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "stylis": "4.0.13" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "@jimp/plugin-scale": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.1.tgz", + "integrity": "sha512-jM2QlgThIDIc4rcyughD5O7sOYezxdafg/2Xtd1csfK3z6fba3asxDwthqPZAgitrLgiKBDp6XfzC07Y/CefUw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@emotion/is-prop-valid": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.1.1.tgz", - "integrity": "sha512-bW1Tos67CZkOURLc0OalnfxtSXQJMrAMV0jZTVGJUPSOd4qgjF3+tTD5CwJM13PHA8cltGW1WGbbvV9NpvUZPw==", + "@jimp/plugin-shadow": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.1.tgz", + "integrity": "sha512-MeD2Is17oKzXLnsphAa1sDstTu6nxscugxAEk3ji0GV1FohCvpHBcec0nAq6/czg4WzqfDts+fcPfC79qWmqrA==", "requires": { - "@emotion/memoize": "^0.7.4" + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" } }, - "@emotion/memoize": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", - "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" + "@jimp/plugin-threshold": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.1.tgz", + "integrity": "sha512-iGW8U/wiCSR0+6syrPioVGoSzQFt4Z91SsCRbgNKTAk7D+XQv6OI78jvvYg4o0c2FOlwGhqz147HZV5utoSLxA==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1" + } }, - "@emotion/react": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.7.1.tgz", - "integrity": "sha512-DV2Xe3yhkF1yT4uAUoJcYL1AmrnO5SVsdfvu+fBuS7IbByDeTVx9+wFmvx9Idzv7/78+9Mgx2Hcmr7Fex3tIyw==", + "@jimp/plugins": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.1.tgz", + "integrity": "sha512-c+lCqa25b+4q6mJZSetlxhMoYuiltyS+ValLzdwK/47+aYsq+kcJNl+TuxIEKf59yr9+5rkbpsPkZHLF/V7FFA==", "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.7.1", - "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.1.0", - "@emotion/utils": "^1.0.0", - "@emotion/weak-memoize": "^0.2.5", - "hoist-non-react-statics": "^3.3.1" + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.1", + "@jimp/plugin-blur": "^0.16.1", + "@jimp/plugin-circle": "^0.16.1", + "@jimp/plugin-color": "^0.16.1", + "@jimp/plugin-contain": "^0.16.1", + "@jimp/plugin-cover": "^0.16.1", + "@jimp/plugin-crop": "^0.16.1", + "@jimp/plugin-displace": "^0.16.1", + "@jimp/plugin-dither": "^0.16.1", + "@jimp/plugin-fisheye": "^0.16.1", + "@jimp/plugin-flip": "^0.16.1", + "@jimp/plugin-gaussian": "^0.16.1", + "@jimp/plugin-invert": "^0.16.1", + "@jimp/plugin-mask": "^0.16.1", + "@jimp/plugin-normalize": "^0.16.1", + "@jimp/plugin-print": "^0.16.1", + "@jimp/plugin-resize": "^0.16.1", + "@jimp/plugin-rotate": "^0.16.1", + "@jimp/plugin-scale": "^0.16.1", + "@jimp/plugin-shadow": "^0.16.1", + "@jimp/plugin-threshold": "^0.16.1", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.1.tgz", + "integrity": "sha512-iyWoCxEBTW0OUWWn6SveD4LePW89kO7ZOy5sCfYeDM/oTPLpR8iMIGvZpZUz1b8kvzFr27vPst4E5rJhGjwsdw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.1", + "pngjs": "^3.3.3" } }, - "@emotion/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A==", + "@jimp/tiff": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.1.tgz", + "integrity": "sha512-3K3+xpJS79RmSkAvFMgqY5dhSB+/sxhwTFA9f4AVHUK0oKW+u6r52Z1L0tMXHnpbAdR9EJ+xaAl2D4x19XShkQ==", "requires": { - "@emotion/hash": "^0.8.0", - "@emotion/memoize": "^0.7.4", - "@emotion/unitless": "^0.7.5", - "@emotion/utils": "^1.0.0", - "csstype": "^3.0.2" + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" } }, - "@emotion/sheet": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.1.0.tgz", - "integrity": "sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g==" + "@jimp/types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.1.tgz", + "integrity": "sha512-g1w/+NfWqiVW4CaXSJyD28JQqZtm2eyKMWPhBBDCJN9nLCN12/Az0WFF3JUAktzdsEC2KRN2AqB1a2oMZBNgSQ==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.1", + "@jimp/gif": "^0.16.1", + "@jimp/jpeg": "^0.16.1", + "@jimp/png": "^0.16.1", + "@jimp/tiff": "^0.16.1", + "timm": "^1.6.1" + } }, - "@emotion/styled": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.6.0.tgz", - "integrity": "sha512-mxVtVyIOTmCAkFbwIp+nCjTXJNgcz4VWkOYQro87jE2QBTydnkiYusMrRGFtzuruiGK4dDaNORk4gH049iiQuw==", + "@jimp/utils": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.1.tgz", + "integrity": "sha512-8fULQjB0x4LzUSiSYG6ZtQl355sZjxbv8r9PPAuYHzS9sGiSHJQavNqK/nKnpDsVkU88/vRGcE7t3nMU0dEnVw==", "requires": { - "@babel/runtime": "^7.13.10", - "@emotion/babel-plugin": "^11.3.0", - "@emotion/is-prop-valid": "^1.1.1", - "@emotion/serialize": "^1.0.2", - "@emotion/utils": "^1.0.0" + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" } }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } }, - "@emotion/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "dev": true, + "peer": true }, - "@emotion/weak-memoize": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "dev": true, + "peer": true }, - "@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", - "dev": true + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==", + "dev": true, + "peer": true }, - "@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "@jridgewell/trace-mapping": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz", + "integrity": "sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q==", "dev": true, + "peer": true, "requires": { - "cross-spawn": "^7.0.1" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "@mui/base": { - "version": "5.0.0-alpha.59", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.59.tgz", - "integrity": "sha512-rPgN2FW0FAjQ9+LQ+XBsq3DFcuiiMFhf8uoLJAWnnzft27IJvJqbrhfpCZ68G6l+umJLbbl5RIIbpt8ALZDDNQ==", + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, "requires": { - "@babel/runtime": "^7.16.3", - "@emotion/is-prop-valid": "^1.1.1", - "@mui/utils": "^5.2.3", - "@popperjs/core": "^2.4.4", - "clsx": "^1.1.1", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + "cross-spawn": "^7.0.1" } }, "@mui/icons-material": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.2.1.tgz", - "integrity": "sha512-AFOn0bbaGd1dw8oYE40dv3I+QnfS5xP5HSUiUGsvb1ntP0cM1kW4VqQp7BtL7DbOpEsw1ZTbw67tDqSCH7utNg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.6.2.tgz", + "integrity": "sha512-9QdI7axKuBAyaGz4mtdi7Uy1j73/thqFmEuxpJHxNC7O8ADEK1Da3t2veK2tgmsXsUlAHcAG63gg+GvWWeQNqQ==", + "dev": true, "requires": { - "@babel/runtime": "^7.16.3" + "@babel/runtime": "^7.17.2" } }, "@mui/material": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.2.3.tgz", - "integrity": "sha512-qhHAVpkQh77xiic38TIDMrKGafRRy9WT16uvexvE2UdyI259YP4HvFamYz3prSNnZi5UozwKpH/QGnv6+JT7/g==", - "requires": { - "@babel/runtime": "^7.16.3", - "@mui/base": "5.0.0-alpha.59", - "@mui/system": "^5.2.3", - "@mui/types": "^7.1.0", - "@mui/utils": "^5.2.3", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.4.tgz", + "integrity": "sha512-7TD+u/SExZK2a55w6reX56oPk37gKr/M/XGt156X+m0d9LhzOsW864nkErIX/H8oSkX/6kCimxu1FDsO+gjiVw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@mui/base": "5.0.0-alpha.79", + "@mui/system": "^5.6.4", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", "@types/react-transition-group": "^4.4.4", "clsx": "^1.1.1", - "csstype": "^3.0.10", + "csstype": "^3.0.11", "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.7.2", "react-is": "^17.0.2", "react-transition-group": "^4.4.2" - } - }, - "@mui/private-theming": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.2.3.tgz", - "integrity": "sha512-Lc1Cmu8lSsYZiXADi9PBb17Ho82ZbseHQujUFAcp6bCJ5x/d+87JYCIpCBMagPu/isRlFCwbziuXPmz7WOzJPQ==", - "requires": { - "@babel/runtime": "^7.16.3", - "@mui/utils": "^5.2.3", - "prop-types": "^15.7.2" - } - }, - "@mui/styled-engine": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.2.0.tgz", - "integrity": "sha512-NZ4pWYQcM5wreUfiXRd7IMFRF+Nq1vMzsIdXtXNjgctJTKHunrofasoBqv+cqevO+hqT75ezSbNHyaXzOXp6Mg==", - "requires": { - "@babel/runtime": "^7.16.3", - "@emotion/cache": "^11.6.0", - "prop-types": "^15.7.2" - } - }, - "@mui/system": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.2.3.tgz", - "integrity": "sha512-YvkjmqgOruZgr+IkueRns99gl3MmnNs8BhnlZosYMLzKz/1lY0JqVBFqUh4sGVbD0UEKFwdk8H31itG5OIPChA==", - "requires": { - "@babel/runtime": "^7.16.3", - "@mui/private-theming": "^5.2.3", - "@mui/styled-engine": "^5.2.0", - "@mui/types": "^7.1.0", - "@mui/utils": "^5.2.3", - "clsx": "^1.1.1", - "csstype": "^3.0.10", - "prop-types": "^15.7.2" - } - }, - "@mui/types": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.0.tgz", - "integrity": "sha512-Hh7ALdq/GjfIwLvqH3XftuY3bcKhupktTm+S6qRIDGOtPtRuq2L21VWzOK4p7kblirK0XgGVH5BLwa6u8z/6QQ==", - "requires": {} - }, - "@mui/utils": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.2.3.tgz", - "integrity": "sha512-sQujlajIS0zQKcGIS6tZR0L1R+ib26B6UtuEn+cZqwKHsPo3feuS+SkdscYBdcCdMbrZs4gj8WIJHl2z6tbSzQ==", - "requires": { - "@babel/runtime": "^7.16.3", - "@types/prop-types": "^15.7.4", - "@types/react-is": "^16.7.1 || ^17.0.0", - "prop-types": "^15.7.2", - "react-is": "^17.0.2" + }, + "dependencies": { + "@mui/base": { + "version": "5.0.0-alpha.79", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.79.tgz", + "integrity": "sha512-/lZLF027BkiEjM8MIYoeS/FEhTKf+41ePU9SOijMGrCin1Y0Igucw+IHa1fF8HXD7wDbFKqHuso3J1jMG8wyNw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", + "@popperjs/core": "^2.11.5", + "clsx": "^1.1.1", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + } + }, + "@mui/system": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.4.tgz", + "integrity": "sha512-7rsWED1wMFMePySJobsBerFZNu7ga580QSi3Zd6sJR8nVj12qD3yIdfvxA70/PxJ/805KbIT0GX7edKI+hpyhA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@mui/private-theming": "^5.6.2", + "@mui/styled-engine": "^5.6.1", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.6.1", + "clsx": "^1.1.1", + "csstype": "^3.0.11", + "prop-types": "^15.7.2" + }, + "dependencies": { + "@mui/private-theming": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.6.2.tgz", + "integrity": "sha512-IbrSfFXfiZdyhRMC2bgGTFtb16RBQ5mccmjeh3MtAERWuepiCK7gkW5D9WhEsfTu6iez+TEjeUKSgmMHlsM2mg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@mui/utils": "^5.6.1", + "prop-types": "^15.7.2" + } + }, + "@mui/styled-engine": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.6.1.tgz", + "integrity": "sha512-jEhH6TBY8jc9S8yVncXmoTYTbATjEu44RMFXj6sIYfKr5NArVwTwRo3JexLL0t3BOAiYM4xsFLgfKEIvB9SAeQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@emotion/cache": "^11.7.1", + "prop-types": "^15.7.2" + } + } + } + }, + "@mui/types": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.1.3.tgz", + "integrity": "sha512-DDF0UhMBo4Uezlk+6QxrlDbchF79XG6Zs0zIewlR4c0Dt6GKVFfUtzPtHCH1tTbcSlq/L2bGEdiaoHBJ9Y1gSA==", + "dev": true, + "requires": {} + }, + "@mui/utils": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.6.1.tgz", + "integrity": "sha512-CPrzrkiBusCZBLWu0Sg5MJvR3fKJyK3gKecLVX012LULyqg2U64Oz04BKhfkbtBrPBbSQxM+DWW9B1c9hmV9nQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.17.2", + "@types/prop-types": "^15.7.4", + "@types/react-is": "^16.7.1 || ^17.0.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" + } + } } }, "@nodelib/fs.scandir": { @@ -7768,9 +11778,9 @@ } }, "@npmcli/fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.0.0.tgz", - "integrity": "sha512-8ltnOpRR/oJbOp8vaGUnipOi3bqkcW+sLHFlyXIr08OGHmVJLB1Hn7QtGXbYcpVtH1gAYZTlmDXtE4YV0+AMMQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, "requires": { "@gar/promisify": "^1.0.1", @@ -7778,9 +11788,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -7806,10 +11816,62 @@ } } }, + "@nut-tree/libnut": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.1.6.tgz", + "integrity": "sha512-oJvgKJLWXOGM/9Fb5FLoddKaEixI4U0UlKUmDwatu8iryKVu7OrHPi7FtdJiE+hcRQgj9lVUe6ycGwix39onPA==", + "requires": { + "@nut-tree/libnut-darwin": "2.1.6", + "@nut-tree/libnut-linux": "2.1.6", + "@nut-tree/libnut-win32": "2.1.6" + } + }, + "@nut-tree/libnut-darwin": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.1.6.tgz", + "integrity": "sha512-RUo/Hjj4MN7yfikmnoCFVmfkJK+A3lCQzS80Srk40mB8XJk881m+NDgvnJSLSoRqIrN0YGRX9YQgEHlivQagLg==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + } + }, + "@nut-tree/libnut-linux": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.1.6.tgz", + "integrity": "sha512-RDOQ1+HfFq7mRw9UdVjPp223Rcv3BLvjOMJCbZh5afEmLYVR7NeWqghOOdQqAjcNj7aEqPupd4PkK1fid9AI8A==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + } + }, + "@nut-tree/libnut-win32": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.1.6.tgz", + "integrity": "sha512-xTD08p/g0JPHo7roy5k1XkwuKQlUr+VjsEffMR5QKKGSD49QLAR2Dd0plOVZNrDdulxVEBiNnQdtBrr1vBTqbg==", + "requires": { + "bindings": "1.5.0", + "cmake-js": "6.1.0", + "node-addon-api": "3.0.0" + } + }, + "@nut-tree/nut-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-2.0.1.tgz", + "integrity": "sha512-nd/yOgxxLRXFG1HJfhvB/xlqMHfGUSwT32Y6X33daZilK/ahQTcGgw2HJfpYUCVP5zcqCJpP0NQFf9TZDdcs0Q==", + "requires": { + "@nut-tree/libnut": "2.1.6", + "clipboardy": "2.3.0", + "jimp": "0.16.1", + "node-abort-controller": "2.0.0" + } + }, "@popperjs/core": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", - "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==" + "version": "2.11.5", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", + "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "dev": true }, "@sindresorhus/is": { "version": "0.14.0", @@ -7868,10 +11930,16 @@ "@types/responselike": "*" } }, + "@types/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-mMUu4nWHLBlHtxXY17Fg6+ucS/MnndyOWyOe7MmwkoMYxvfQU2ajtRaEvqSUv+aVkMqH/C0NCI8UoVfRNQ10yg==", + "dev": true + }, "@types/eslint": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.2.0.tgz", - "integrity": "sha512-74hbvsnc+7TEDa1z5YLSe4/q8hGYB3USNvCuzHUJrjPV6hXaq8IXcngCrHkuvFt0+8rFz7xYXrHgNayIX0UZvQ==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", "dev": true, "requires": { "@types/estree": "*", @@ -7879,9 +11947,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, "requires": { "@types/eslint": "*", @@ -7889,11 +11957,22 @@ } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", "dev": true }, + "@types/ffi-napi": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/ffi-napi/-/ffi-napi-4.0.5.tgz", + "integrity": "sha512-WDPpCcHaPhHmP1FIw3ds/+OLt8bYQ/h3SO7o+8kH771PL21kHVzTwii7+WyMBXMQrBsR6xVU2y7w+h+9ggpaQw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/ref-napi": "*", + "@types/ref-struct-di": "*" + } + }, "@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -7911,10 +11990,16 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "@types/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==", + "dev": true + }, "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", "dev": true }, "@types/json5": { @@ -7923,19 +12008,24 @@ "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, + "@types/jsonpath": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@types/jsonpath/-/jsonpath-0.2.0.tgz", + "integrity": "sha512-v7qlPA0VpKUlEdhghbDqRoKMxFB3h3Ch688TApBJ6v+XLDdvWCGLJIYiPKGZnS6MAOie+IorCfNYVHOPIHSWwQ==" + }, "@types/keyv": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz", - "integrity": "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", "dev": true, "requires": { "@types/node": "*" } }, "@types/lodash": { - "version": "4.14.177", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz", - "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==", + "version": "4.14.182", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", "dev": true }, "@types/minimatch": { @@ -7946,25 +12036,28 @@ "optional": true }, "@types/node": { - "version": "14.17.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz", - "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==", + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.31.tgz", + "integrity": "sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==", "dev": true }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "@types/prop-types": { - "version": "15.7.4", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true }, "@types/react": { - "version": "17.0.36", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.36.tgz", - "integrity": "sha512-CUFUp01OdfbpN/76v4koqgcpcRGT3sYOq3U3N6q0ZVGcyeP40NUdVU+EWe3hs34RNaTefiYyBzOpxBBidCc5zw==", + "version": "17.0.44", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz", + "integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==", + "dev": true, "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -7972,18 +12065,19 @@ } }, "@types/react-dom": { - "version": "17.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz", - "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==", + "version": "17.0.16", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.16.tgz", + "integrity": "sha512-DWcXf8EbMrO/gWnQU7Z88Ws/p16qxGpPyjTKTpmBSFKeE+HveVubqGO1CVK7FrwlWD5MuOcvh8gtd0/XO38NdQ==", "dev": true, "requires": { - "@types/react": "*" + "@types/react": "^17" } }, "@types/react-is": { "version": "17.0.3", "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "dev": true, "requires": { "@types/react": "*" } @@ -7992,10 +12086,29 @@ "version": "4.4.4", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", + "dev": true, "requires": { "@types/react": "*" } }, + "@types/ref-napi": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/ref-napi/-/ref-napi-3.0.4.tgz", + "integrity": "sha512-ng8SCmdZbz1GHaW3qgGoX9IaHoIvgMqgBHLe3sv18NbAkHVgnjRW8fJq51VTUm4lnJyLu60q9/002o7qjOg13g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/ref-struct-di": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/ref-struct-di/-/ref-struct-di-1.1.6.tgz", + "integrity": "sha512-+Sa2H3ynDYo2ungR3d5kmNetlkAYNqQVjJvs1k7i6zvo7Zu/qb+OsrXU54RuiOYJCwY9piN+hOd4YRRaiEOqgw==", + "dev": true, + "requires": { + "@types/ref-napi": "*" + } + }, "@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -8008,12 +12121,13 @@ "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", + "dev": true }, "@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", "dev": true, "optional": true, "requires": { @@ -8167,25 +12281,25 @@ } }, "@webpack-cli/configtest": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", - "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, "requires": {} }, "@webpack-cli/info": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", - "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", "dev": true, "requires": { "envinfo": "^7.7.3" } }, "@webpack-cli/serve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", - "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, "requires": {} }, @@ -8208,9 +12322,9 @@ "dev": true }, "acorn": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", - "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "acorn-import-assertions": { @@ -8236,9 +12350,9 @@ } }, "agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -8260,7 +12374,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8278,9 +12391,9 @@ }, "dependencies": { "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -8304,32 +12417,49 @@ "dev": true, "requires": {} }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=" + }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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, "requires": { - "color-convert": "^2.0.1" + "color-convert": "^1.9.0" } }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" }, "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.6.tgz", + "integrity": "sha1-otKMkxAqpsyWJFomy5VN4G7FPww=", "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^2.0.0 || ^1.1.13" } }, "arg": { @@ -8344,13 +12474,6 @@ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { "sprintf-js": "~1.0.2" - }, - "dependencies": { - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - } } }, "array-union": { @@ -8359,6 +12482,11 @@ "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, "asar": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", @@ -8370,16 +12498,26 @@ "commander": "^5.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true - } } }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -8392,10 +12530,26 @@ "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", "dev": true }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, "babel-plugin-macros": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, "requires": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", @@ -8405,14 +12559,48 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=" }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -8441,10 +12629,15 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" + }, "boolean": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.4.tgz", - "integrity": "sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", "dev": true, "optional": true }, @@ -8452,7 +12645,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8468,14 +12660,15 @@ } }, "browserslist": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz", - "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==", + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", + "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "dev": true, "requires": { - "caniuse-lite": "^1.0.30001280", - "electron-to-chromium": "^1.3.896", + "caniuse-lite": "^1.0.30001332", + "electron-to-chromium": "^1.4.118", "escalade": "^3.1.1", - "node-releases": "^2.0.1", + "node-releases": "^2.0.3", "picocolors": "^1.0.0" } }, @@ -8510,6 +12703,12 @@ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -8522,6 +12721,21 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" + }, "cacache": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", @@ -8553,6 +12767,20 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } } } }, @@ -8594,24 +12822,62 @@ } } }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" }, "caniuse-lite": { - "version": "1.0.30001282", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001282.tgz", - "integrity": "sha512-YhF/hG6nqBEllymSIjLtR2iWDDnChvhnVJqp+vloyt2tEHFG1yBR+ac2B/rOw0qOK0m0lEXU2dv4E/sMk5P9Kg==" + "version": "1.0.30001338", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz", + "integrity": "sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "requires": { + "traverse": ">=0.3.0 <0.4" + } }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "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 + } } }, "chownr": { @@ -8653,47 +12919,37 @@ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + } + }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^2.0.0" } } } @@ -8727,7 +12983,37 @@ "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "dev": true + }, + "cmake-js": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-6.1.0.tgz", + "integrity": "sha512-utmukLQftpgrCpGRCaHnkv4K27HZNNFqmBl4vnvccy0xp4c1erxjFU/Lq4wn5ngAhFZmpwBPQfoKWKThjSBiwg==", + "requires": { + "debug": "^4", + "fs-extra": "^5.0.0", + "is-iojs": "^1.0.1", + "lodash": "^4", + "memory-stream": "0", + "npmlog": "^1.2.0", + "rc": "^1.2.7", + "request": "^2.54.0", + "semver": "^5.0.3", + "splitargs": "0", + "tar": "^4", + "unzipper": "^0.8.13", + "url-join": "0", + "which": "^1.0.9", + "yargs": "^3.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } }, "code-point-at": { "version": "1.1.0", @@ -8735,18 +13021,24 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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, "requires": { - "color-name": "~1.1.4" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, "colorette": { @@ -8756,15 +13048,23 @@ "dev": true }, "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "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==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "compare-version": { @@ -8773,11 +13073,28 @@ "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", "dev": true }, + "compress-brotli": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/compress-brotli/-/compress-brotli-1.3.8.tgz", + "integrity": "sha512-lVcQsjhxhIXsuupfy9fmZUFtAIdBmXA7EGY6GBdgZ++qkM9zG4YFT8iU7FoBxzryNDMOpD1HIFHUSX4D87oqhQ==", + "dev": true, + "requires": { + "@types/json-buffer": "~3.0.0", + "json-buffer": "~3.0.1" + }, + "dependencies": { + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + } + } + }, "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 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -8794,80 +13111,40 @@ "config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dev": true, - "optional": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-webpack-plugin": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.0.0.tgz", - "integrity": "sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg==", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "requires": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" } }, "core-util-is": { @@ -8879,30 +13156,13 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.7.2" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - } } }, "create-require": { @@ -8911,6 +13171,14 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "requires": { + "node-fetch": "2.6.7" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -8920,6 +13188,17 @@ "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "cross-spawn-windows-exe": { @@ -8933,37 +13212,37 @@ "which": "^2.0.2" }, "dependencies": { - "@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "cross-spawn": "^7.0.1" + "isexe": "^2.0.0" } } } }, "css-loader": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", - "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", "dev": true, "requires": { "icss-utils": "^5.1.0", - "postcss": "^8.2.15", + "postcss": "^8.4.7", "postcss-modules-extract-imports": "^3.0.0", "postcss-modules-local-by-default": "^4.0.0", "postcss-modules-scope": "^3.0.0", "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", + "postcss-value-parser": "^4.2.0", "semver": "^7.3.5" }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -8978,18 +13257,31 @@ "dev": true }, "csstype": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz", + "integrity": "sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -8999,11 +13291,38 @@ "mimic-response": "^1.0.0" } }, + "deep-equal": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", + "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", + "requires": { + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" + } + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -9020,15 +13339,19 @@ "dev": true }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "optional": true, + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -9058,6 +13381,38 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -9065,14 +13420,6 @@ "dev": true, "requires": { "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } } }, "dom-helpers": { @@ -9084,27 +13431,78 @@ "csstype": "^3.0.2" } }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "electron": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-16.0.1.tgz", - "integrity": "sha512-6TSDBcoKGgmKL/+W+LyaXidRVeRl1V4I81ZOWcqsVksdTMfM4AlxTgfaoYdK/nUhqBrUtuPDcqOyJE6Bc4qMpw==", + "version": "16.2.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-16.2.5.tgz", + "integrity": "sha512-kjfcnanb8IPE/EWcmmcGuhl+I8vIKZiJYlu3clOctiwh02Nl3HGzIplbyTtBAbIC8gg3MXa+kZl9kQMk5N0WgQ==", "dev": true, "requires": { "@electron/get": "^1.13.0", "@types/node": "^14.6.2", "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.18.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.16.tgz", + "integrity": "sha512-X3bUMdK/VmvrWdoTkz+VCn6nwKwrKCFTHtqwBIaQJNx4RUIBBUFXM00bqPz/DsDd+Icjmzm6/tyYZzeGVqb6/Q==", + "dev": true + } + } + }, + "electron-devtools-installer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz", + "integrity": "sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==", + "requires": { + "rimraf": "^3.0.2", + "semver": "^7.2.1", + "tslib": "^2.1.0", + "unzip-crx-3": "^0.2.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, "electron-notarize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.1.1.tgz", - "integrity": "sha512-kufsnqh86CTX89AYNG3NCPoboqnku/+32RxeJ2+7A4Rbm4bbOx0Nc7XTy3/gAlBfpj9xPAxHfhZLOHgfi6cJVw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.2.1.tgz", + "integrity": "sha512-u/ECWhIrhkSQpZM4cJzVZ5TsmkaqrRo5LDC/KMbGF0sPkm53Ng59+M0zp8QVaql0obfJy9vlVT+4iOkAi2UDlA==", "dev": true, "requires": { "debug": "^4.1.1", @@ -9173,12 +13571,13 @@ } }, "electron-packager": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.4.0.tgz", - "integrity": "sha512-JrrLcBP15KGrPj0cZ/ALKGmaQ4gJkn3mocf0E3bRKdR3kxKWYcDRpCvdhksYDXw/r3I6tMEcZ7XzyApWFXdVpw==", + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.5.1.tgz", + "integrity": "sha512-9/fqF64GACZsLYLuFJ8vCqItMXbvsD0NMDLNfFmAv9mSqkqKWSZb5V3VE9CxT6CeXwZ6wN3YowEQuqBNyShEVg==", "dev": true, "requires": { "@electron/get": "^1.6.0", + "@electron/universal": "^1.2.1", "asar": "^3.1.0", "cross-spawn-windows-exe": "^1.2.0", "debug": "^4.0.1", @@ -9242,9 +13641,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -9259,18 +13658,18 @@ } }, "electron-rebuild": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.5.tgz", - "integrity": "sha512-U9dKi10V9w/BdIVB8a8dTKYLK3Q1d2WZ+Yo5qfM3XX/O4jI7KpnwgvWgGoVv0jTWPC2NlebF00ffWS/8NfUAtA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-3.2.7.tgz", + "integrity": "sha512-WvaW1EgRinDQ61khHFZfx30rkPQG5ItaOT0wrI7iJv9A3SbghriQGfZQfHZs25fWLBe6/vkv05LOqg6aDw6Wzw==", "dev": true, "requires": { "@malept/cross-spawn-promise": "^2.0.0", - "colors": "^1.3.3", + "chalk": "^4.0.0", "debug": "^4.1.1", "detect-libc": "^1.0.3", "fs-extra": "^10.0.0", "got": "^11.7.0", - "lzma-native": "^8.0.1", + "lzma-native": "^8.0.5", "node-abi": "^3.0.0", "node-api-version": "^0.1.4", "node-gyp": "^8.4.0", @@ -9280,10 +13679,19 @@ "yargs": "^17.0.1" }, "dependencies": { + "@malept/cross-spawn-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", + "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true }, "@szmarczak/http-timer": { @@ -9295,6 +13703,15 @@ "defer-to-connect": "^2.0.0" } }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, "cacheable-request": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", @@ -9310,6 +13727,42 @@ "responselike": "^2.0.0" } }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -9326,9 +13779,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "requires": { "graceful-fs": "^4.2.0", @@ -9364,6 +13817,18 @@ "responselike": "^2.0.0" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -9381,11 +13846,12 @@ } }, "keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.2.2.tgz", + "integrity": "sha512-uYS0vKTlBIjNCAUqrjlxmruxOEiZxZIHXyp32sdcGmP+ukFrmWUnE//RcPXJH3Vxrni1H2gsQbjHE0bH7MtMQQ==", "dev": true, "requires": { + "compress-brotli": "^1.3.6", "json-buffer": "3.0.1" } }, @@ -9401,6 +13867,12 @@ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -9423,26 +13895,99 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "universalify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true } } }, "electron-to-chromium": { - "version": "1.3.904", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz", - "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==" + "version": "1.4.136", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.136.tgz", + "integrity": "sha512-GnITX8rHnUrIVnTxU9UlsTnSemHUA2iF+6QrRqxFbp/mf0vfuSc/goEyyQhUX3TUUCE3mv/4BNuXOtaJ4ur0eA==", + "dev": true }, "emoji-regex": { "version": "8.0.0", @@ -9461,7 +14006,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "optional": true, "requires": { "iconv-lite": "^0.6.2" @@ -9476,9 +14020,9 @@ } }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -9507,16 +14051,72 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz", + "integrity": "sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.1", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + } + }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", "dev": true }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -9527,12 +14127,39 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } + } }, "eslint-scope": { "version": "5.1.1", @@ -9545,9 +14172,9 @@ } }, "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=" }, "esrecurse": { "version": "4.3.0", @@ -9569,8 +14196,12 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "events": { "version": "3.3.0", @@ -9579,35 +14210,71 @@ "dev": true }, "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "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" }, "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" } } }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, "expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, "extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -9637,16 +14304,20 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -9670,8 +14341,12 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fastest-levenshtein": { "version": "1.0.12", @@ -9688,6 +14363,33 @@ "reusify": "^1.0.4" } }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "requires": { + "fbjs": "^3.0.0" + } + }, + "fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "requires": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -9697,6 +14399,29 @@ "pend": "~1.2.0" } }, + "ffi-napi": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/ffi-napi/-/ffi-napi-4.0.3.tgz", + "integrity": "sha512-PMdLCIvDY9mS32RxZ0XGb95sonPRal8aqRhLbeEtWKZTe2A87qRFG9HjOhvG8EX2UmQw5XNRMIOT+1MYlWmdeg==", + "requires": { + "debug": "^4.1.1", + "get-uv-event-loop-napi-h": "^1.0.5", + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.1", + "ref-napi": "^2.0.1 || ^3.0.2", + "ref-struct-di": "^1.1.0" + } + }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, + "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==" + }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -9726,16 +14451,16 @@ "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" } }, "flora-colossus": { @@ -9761,18 +14486,46 @@ } } }, + "flux": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.3.tgz", + "integrity": "sha512-yKAbrp7JhZhj6uiT1FTuVMlIAT1J4jqEyBpFApi1kxpGZCvacMVc/t1pMQyotqHhAgvoE3bNvAykhCo2CLjnYw==", + "requires": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "requires": { - "graceful-fs": "^4.2.0", + "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } @@ -9789,14 +14542,50 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, "galactus": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz", @@ -9831,24 +14620,22 @@ } }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", + "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", + "ansi": "^0.3.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" + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" } }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, "peer": true }, "get-caller-file": { @@ -9857,6 +14644,16 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-package-info": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", @@ -9890,11 +14687,49 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, "requires": { "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-symbol-from-current-process-h": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.2.tgz", + "integrity": "sha512-syloC6fsCt62ELLrr1VKBM1ggOpMdetX9hTrdW77UQdcApPHLmf7CI7OKcN1c9kYuNxKcDe4iJ4FY9sX3aw2xw==" + }, + "get-uv-event-loop-napi-h": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.6.tgz", + "integrity": "sha512-t5c9VNR84nRoF+eLiz6wFrEp1SE2Acg0wS+Ysa2zF0eROes+LzOfuTaVHxGy8AbS8rq7FHEJzjnCZo1BupwdJg==", + "requires": { + "get-symbol-from-current-process-h": "^1.0.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "requires": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -9904,7 +14739,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9929,6 +14763,15 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "global-agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", @@ -9945,9 +14788,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "optional": true, "requires": { @@ -9973,6 +14816,7 @@ "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, "peer": true }, "globalthis": { @@ -9986,15 +14830,15 @@ } }, "globby": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.0.2.tgz", - "integrity": "sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", "dev": true, "requires": { "array-union": "^3.0.1", "dir-glob": "^3.0.1", "fast-glob": "^3.2.7", - "ignore": "^5.1.8", + "ignore": "^5.1.9", "merge2": "^1.4.1", "slash": "^4.0.0" } @@ -10019,11 +14863,30 @@ } }, "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -10032,12 +14895,38 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -10047,6 +14936,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, "requires": { "react-is": "^16.7.0" }, @@ -10054,7 +14944,8 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true } } }, @@ -10081,6 +14972,16 @@ "debug": "4" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "http2-wrapper": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", @@ -10092,9 +14993,9 @@ } }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "requires": { "agent-base": "6", @@ -10120,7 +15021,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -10139,31 +15039,45 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz", - "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, + "image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "requires": { + "@types/node": "16.9.1" + }, + "dependencies": { + "@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } } }, "import-local": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", - "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -10192,7 +15106,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -10208,36 +15121,91 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-core-module": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", - "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, "requires": { "has": "^1.0.3" } }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" }, "is-extglob": { "version": "2.1.1", @@ -10253,6 +15221,11 @@ "number-is-nan": "^1.0.0" } }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -10268,18 +15241,41 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-iojs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-iojs/-/is-iojs-1.1.0.tgz", + "integrity": "sha1-TBEDO11dlNbqs3dd7cm+fQCDJfE=" + }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -10289,11 +15285,65 @@ "isobject": "^3.0.1" } }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", + "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-unicode-supported": { "version": "0.1.0", @@ -10301,19 +15351,40 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, "requires": { "is-docker": "^2.0.0" } }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "isbinaryfile": { "version": "3.0.3", @@ -10327,8 +15398,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", @@ -10336,10 +15406,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "jest-worker": { - "version": "27.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", - "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "requires": { "@types/node": "*", @@ -10347,6 +15422,12 @@ "supports-color": "^8.0.0" }, "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -10358,6 +15439,23 @@ } } }, + "jimp": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.1.tgz", + "integrity": "sha512-+EKVxbR36Td7Hfd23wKGIeEyHbxShZDX6L8uJkgVW3ESA9GiTEPK08tG1XI2r/0w5Ch0HyJF5kPqF9K7EmGjaw==", + "requires": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.1", + "@jimp/plugins": "^0.16.1", + "@jimp/types": "^0.16.1", + "regenerator-runtime": "^0.13.3" + } + }, + "jpeg-js": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz", + "integrity": "sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -10370,12 +15468,25 @@ "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "peer": true }, "json-buffer": { @@ -10393,39 +15504,71 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "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 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "peer": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } }, + "jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", + "requires": { + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, "junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -10447,10 +15590,63 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=" + }, + "load-bmfont": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", + "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + } + } }, "load-json-file": { "version": "2.0.0", @@ -10464,6 +15660,15 @@ "strip-bom": "^3.0.0" }, "dependencies": { + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -10473,18 +15678,19 @@ } }, "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^4.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -10492,12 +15698,43 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.curry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha1-JI42By7ekGUB11lmIAqG2riyMXA=" + }, + "lodash.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha1-h79AKSuM+D5OjOGjrkIJ4gBxZ1o=" + }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", "dev": true }, + "lodash.pad": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", + "integrity": "sha1-QzCUmoM6fI2iLMIPaibE1Z3runA=" + }, + "lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=" + }, + "lodash.padstart": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", + "integrity": "sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs=" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -10506,6 +15743,57 @@ "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "loose-envify": { @@ -10526,15 +15814,14 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } }, "lzma-native": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.1.tgz", - "integrity": "sha512-Ryr9X3yDVZhRYOxR8QhUBCNe6GdEfy9BvFDIFtUvEkocvSvnrYt9lRm6FR1z0eQn0QSMenrgrDIJRMgUf9zsKQ==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-8.0.6.tgz", + "integrity": "sha512-09xfg67mkL2Lz20PrrDeNYZxzeW7ADtpYFbwSQh9U8+76RIzx5QsJBMy8qikv3hbUPfpy6hqwxt6FcGK81g9AA==", "dev": true, "requires": { "node-addon-api": "^3.1.0", @@ -10542,6 +15829,12 @@ "readable-stream": "^3.6.0" }, "dependencies": { + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -10595,6 +15888,37 @@ "escape-string-regexp": "^4.0.0" } }, + "memory-stream": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-0.0.3.tgz", + "integrity": "sha1-6+jdHDuLw4wOeUHp3dWuvmtN6D8=", + "requires": { + "readable-stream": "~1.0.26-2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -10608,28 +15932,31 @@ "dev": true }, "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "mime-db": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", - "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.34", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", - "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", - "dev": true, + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -10644,24 +15971,31 @@ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, "minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -10726,12 +16060,11 @@ } }, "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, + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "requires": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" } }, "mkdirp-classic": { @@ -10750,9 +16083,9 @@ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, "napi-build-utils": { @@ -10761,9 +16094,9 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "neo-async": { @@ -10772,19 +16105,24 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "node-abi": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.5.0.tgz", - "integrity": "sha512-LtHvNIBgOy5mO8mPEUtkCW/YCRWYEKshIvqhe1GHHyXEHEB5mgICyYnAcl4qan3uFeRROErKGzatFHPf6kDxWw==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.15.0.tgz", + "integrity": "sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA==", "dev": true, "requires": { "semver": "^7.3.5" }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -10792,11 +16130,15 @@ } } }, + "node-abort-controller": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", + "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" + }, "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz", + "integrity": "sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg==" }, "node-api-version": { "version": "0.1.4", @@ -10808,9 +16150,9 @@ }, "dependencies": { "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -10818,10 +16160,18 @@ } } }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "node-gyp": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.0.tgz", - "integrity": "sha512-Bi/oCm5bH6F+FmzfUxJpPaxMEyIhszULGR3TprmTeku8/dMFcdTcypk120NeZqEt54r1BrgEKtm2jJiuIKE28Q==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "dev": true, "requires": { "env-paths": "^2.2.0", @@ -10829,29 +16179,123 @@ "graceful-fs": "^4.2.6", "make-fetch-happen": "^9.1.0", "nopt": "^5.0.0", - "npmlog": "^4.1.2", + "npmlog": "^6.0.0", "rimraf": "^3.0.2", "semver": "^7.3.5", "tar": "^6.1.2", "which": "^2.0.2" }, "dependencies": { + "are-we-there-yet": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", + "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.4.0.tgz", + "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==" }, "node-irsdk-2021": { "version": "0.0.1", @@ -10864,9 +16308,10 @@ } }, "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz", + "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==", + "dev": true }, "noop-logger": { "version": "0.1.1", @@ -10926,23 +16371,28 @@ } }, "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^3.0.0" + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + } } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "integrity": "sha1-KOe+YZYJtT960d0wChDWTXFiaLY=", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "ansi": "~0.3.0", + "are-we-there-yet": "~1.0.0", + "gauge": "~1.2.0" } }, "number-is-nan": { @@ -10950,17 +16400,50 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" }, "once": { "version": "1.4.0", @@ -10979,6 +16462,19 @@ "mimic-fn": "^2.1.0" } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -10996,45 +16492,92 @@ "wcwidth": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "has-flag": "^4.0.0" } } } }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^2.2.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -11047,15 +16590,21 @@ } }, "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==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" } @@ -11069,26 +16618,52 @@ "author-regex": "^1.0.0" } }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, + "parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" } }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "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 + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -11099,24 +16674,14 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pend": { "version": "1.2.0", @@ -11124,15 +16689,26 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, "pify": { @@ -11142,6 +16718,14 @@ "dev": true, "optional": true }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -11149,27 +16733,83 @@ "dev": true, "requires": { "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "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 + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "plist": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", - "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz", + "integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==", "dev": true, "requires": { "base64-js": "^1.5.1", "xmlbuilder": "^9.0.7" } }, + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + }, "postcss": { - "version": "8.3.11", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", - "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", + "version": "8.4.13", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.13.tgz", + "integrity": "sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.3.3", "picocolors": "^1.0.0", - "source-map-js": "^0.6.2" + "source-map-js": "^1.0.2" } }, "postcss-modules-extract-imports": { @@ -11209,9 +16849,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", - "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "requires": { "cssesc": "^3.0.0", @@ -11219,9 +16859,9 @@ } }, "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "prebuild-install": { @@ -11246,6 +16886,40 @@ "which-pm-runs": "^1.0.0" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "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" + } + }, "node-abi": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", @@ -11254,19 +16928,48 @@ "semver": "^5.4.1" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } } } }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -11278,6 +16981,14 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -11295,13 +17006,13 @@ } }, "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" }, "dependencies": { "react-is": { @@ -11318,6 +17029,11 @@ "dev": true, "optional": true }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -11330,8 +17046,17 @@ "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 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4=" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "queue-microtask": { "version": "1.2.3", @@ -11383,6 +17108,17 @@ "object-assign": "^4.1.1" } }, + "react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha1-7yFW1mz0E5aVyKFniGy2nqZgeSw=", + "requires": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, "react-dom": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", @@ -11396,7 +17132,34 @@ "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "react-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "requires": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + } + }, + "react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "react-textarea-autosize": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", + "requires": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.0.0", + "use-latest": "^1.0.0" + } }, "react-transition-group": { "version": "4.4.2", @@ -11418,6 +17181,23 @@ "load-json-file": "^2.0.0", "normalize-package-data": "^2.3.2", "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "read-pkg-up": { @@ -11428,57 +17208,6 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "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 - } } }, "readable-stream": { @@ -11493,6 +17222,13 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } } }, "rechoir": { @@ -11504,11 +17240,77 @@ "resolve": "^1.9.0" } }, + "ref-napi": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ref-napi/-/ref-napi-3.0.3.tgz", + "integrity": "sha512-LiMq/XDGcgodTYOMppikEtJelWsKQERbLQsYm0IOOnzhwE9xYZC7x8txNnFC9wJNOkPferQI4vD4ZkC0mDyrOA==", + "requires": { + "debug": "^4.1.1", + "get-symbol-from-current-process-h": "^1.0.2", + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.1" + } + }, + "ref-struct-di": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ref-struct-di/-/ref-struct-di-1.1.1.tgz", + "integrity": "sha512-2Xyn/0Qgz89VT+++WP0sTosdm9oeowLP23wRJYhG4BFdMUrLj3jhwHZNEytYNYgtPKLNTP3KJX4HEgBvM1/Y2g==", + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -11522,12 +17324,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-alpn": { @@ -11543,12 +17347,20 @@ "dev": true, "requires": { "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "responselike": { @@ -11586,7 +17398,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -11604,6 +17415,15 @@ "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true, + "optional": true + } } }, "run-parallel": { @@ -11615,6 +17435,14 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", + "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", + "requires": { + "tslib": "^2.1.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -11623,9 +17451,12 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "scheduler": { "version": "0.20.2", @@ -11637,20 +17468,51 @@ } }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } } }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true }, "semver-compare": { "version": "1.0.0", @@ -11659,6 +17521,11 @@ "dev": true, "optional": true }, + "sendkeys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sendkeys/-/sendkeys-1.1.1.tgz", + "integrity": "sha512-gULQPxLKyfNRb83XWXAA0eJu8J+uwY6my1oI1+efN8rH6AUX6KgayweI+yn2qX1fL4iBibS59L1SO2qXukTPnA==" + }, "serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -11683,6 +17550,16 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -11707,10 +17584,20 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", - "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "simple-concat": { "version": "1.0.1", @@ -11718,9 +17605,9 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", + "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", "requires": { "decompress-response": "^4.2.0", "once": "^1.3.1", @@ -11755,36 +17642,36 @@ "dev": true }, "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.0.tgz", - "integrity": "sha512-57e7lwCN4Tzt3mXz25VxOErJKXlPfXmkMLnk310v/jwW20jWRVcgsOit+xNkN3eIEdB47GwnfAEBLacZ/wVIKg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dev": true, "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" } }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-support": { @@ -11795,6 +17682,14 @@ "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" + }, + "dependencies": { + "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 + } } }, "spdx-correct": { @@ -11829,12 +17724,31 @@ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", "dev": true }, + "splitargs": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/splitargs/-/splitargs-0.0.7.tgz", + "integrity": "sha1-/p965lc3GzOxDLgNoUPPgknPazs=" + }, "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } }, "ssri": { "version": "8.0.1", @@ -11845,6 +17759,14 @@ "minipass": "^3.1.1" } }, + "static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", + "requires": { + "escodegen": "^1.8.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -11861,14 +17783,50 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" } }, "strip-bom": { @@ -11877,6 +17835,11 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -11915,7 +17878,8 @@ "stylis": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz", - "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" + "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==", + "dev": true }, "sumchecker": { "version": "3.0.1", @@ -11927,14 +17891,20 @@ } }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -11942,24 +17912,58 @@ "dev": true }, "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" }, "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -12006,41 +18010,107 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", + "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", "dev": true, "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", + "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "dependencies": { + "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 + }, "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } } } }, "terser-webpack-plugin": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.2.5.tgz", - "integrity": "sha512-3luOVHku5l0QBeYS8r4CdHYWEGMmIj3H1U64jgkdZzECcSOJAyJ9TjuqcQZvw1Y+4AOBN9SeYJPJmFn2cM4/2g==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", "dev": true, "requires": { - "jest-worker": "^27.0.6", + "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "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 + } } }, + "timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" + }, + "tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + }, "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=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-readable-stream": { "version": "1.0.0", @@ -12057,6 +18127,25 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" + }, "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -12075,9 +18164,9 @@ } }, "ts-loader": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.6.tgz", - "integrity": "sha512-QMTC4UFzHmu9wU2VHZEmWWE9cUajjfcdcws+Gh7FhiO+Dy0RnR1bNz0YCHqhI0yRowCE9arVnNxYHqELOy9Hjw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.0.tgz", + "integrity": "sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==", "dev": true, "requires": { "chalk": "^4.1.0", @@ -12086,21 +18175,70 @@ "semver": "^7.3.4" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } } } }, "ts-node": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", - "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", "dev": true, "requires": { "@cspotcode/source-map-support": "0.7.0", @@ -12114,19 +18252,31 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.0", "yn": "3.1.1" } }, "tsconfig-paths": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz", - "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", "dev": true, "requires": { "@types/json5": "^0.0.29", "json5": "^1.0.1", - "minimist": "^1.2.0", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } } }, "tsconfig-paths-webpack-plugin": { @@ -12138,8 +18288,64 @@ "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" + }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -12155,6 +18361,19 @@ "safe-buffer": "^5.0.1" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, "type-fest": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", @@ -12169,11 +18388,32 @@ "dev": true }, "typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", "dev": true }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -12195,18 +18435,83 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unzip-crx-3": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/unzip-crx-3/-/unzip-crx-3-0.2.0.tgz", + "integrity": "sha512-0+JiUq/z7faJ6oifVB5nSwt589v1KCduqIJupNVDoWSXZtWDmjDGO3RAEOvwJ07w90aoXoP4enKsR7ecMrJtWQ==", + "requires": { + "jszip": "^3.1.0", + "mkdirp": "^0.5.1", + "yaku": "^0.16.6" + } + }, + "unzipper": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.8.14.tgz", + "integrity": "sha512-8rFtE7EP5ssOwGpN2dt1Q4njl0N1hUXJ7sSPz0leU2hRdq6+pra57z4YPBlVqm40vcgv6ooKZEAx48fMTv9x4w==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "~1.0.10", + "listenercount": "~1.0.1", + "readable-stream": "~2.1.5", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", + "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=", + "requires": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } }, + "url-join": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-0.0.1.tgz", + "integrity": "sha1-HbSK1CLTQCRpqH99l73r/k+x48g=" + }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -12216,11 +18521,52 @@ "prepend-http": "^2.0.0" } }, + "use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "requires": {} + }, + "use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "requires": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "dependencies": { + "use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "requires": {} + } + } + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -12231,10 +18577,27 @@ "spdx-expression-parse": "^3.0.0" } }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "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=" + } + } + }, "watchpack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", - "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -12250,14 +18613,19 @@ "defaults": "^1.0.3" } }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, "webpack": { - "version": "5.64.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.64.2.tgz", - "integrity": "sha512-4KGc0+Ozi0aS3EaLNRvEppfZUer+CaORKqL6OBjDLZOPf9YfN8leagFzwe6/PoBdHFxc/utKArl8LMC0Ivtmdg==", + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", "dev": true, "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -12265,12 +18633,12 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", + "graceful-fs": "^4.2.9", "json-parse-better-errors": "^1.0.2", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", @@ -12278,20 +18646,33 @@ "schema-utils": "^3.1.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.2.0", - "webpack-sources": "^3.2.2" + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } } }, "webpack-cli": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", - "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.1.0", - "@webpack-cli/info": "^1.4.0", - "@webpack-cli/serve": "^1.6.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", "colorette": "^2.0.14", "commander": "^7.0.0", "execa": "^5.0.0", @@ -12307,6 +18688,44 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } } } }, @@ -12321,24 +18740,68 @@ } }, "webpack-sources": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.2.tgz", - "integrity": "sha512-cp5qdmHnu5T8wRg2G3vZZHoJPN14aqQ89SyQ11NpGH5zEMDCclt49rzo+MaRazk7/UeILhAI+/sEtcM+7Fr0nw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==" + }, + "which-typed-array": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", + "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.5", + "foreach": "^2.0.5", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.7" + } }, "wide-align": { "version": "1.1.5", @@ -12354,47 +18817,36 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^2.0.0" } } } @@ -12404,76 +18856,82 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "yaku": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/yaku/-/yaku-0.16.7.tgz", + "integrity": "sha1-HRlceKqbW/hHnIlblQT9TwhHmE4=" }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true }, "yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" } }, "yargs-parser": { diff --git a/package.json b/package.json index 7f5df8c..8c4c4ad 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,26 @@ "dev": "electron -r ./register ." }, "dependencies": { + "@nut-tree/nut-js": "^2.0.1", + "@types/jsonpath": "^0.2.0", + "deep-equal": "^2.0.5", + "electron-devtools-installer": "^3.2.0", + "ffi-napi": "^4.0.3", + "jsonpath": "^1.1.1", "lodash": "^4.17.21", - "node-irsdk-2021": "^0.0.1" + "node-irsdk-2021": "^0.0.1", + "react-json-view": "^1.21.3", + "react-transition-group": "^4.4.2", + "rxjs": "^7.5.5", + "sendkeys": "^1.1.1" }, "devDependencies": { "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@mui/icons-material": "^5.2.1", "@mui/material": "^5.2.3", + "@types/deep-equal": "^1.0.1", + "@types/ffi-napi": "^4.0.5", "@types/lodash": "^4.14.177", "@types/react": "^17.0.35", "@types/react-dom": "^17.0.11", diff --git a/tsconfig.json b/tsconfig.json index 33cb7d2..2c9678f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "exclude": ["build"], "ts-node": { "files": true }, - "files": ["index.ts", "./app/irsdk.d.ts"], + "files": ["index.ts", "app/irsdk.d.ts", "app/sendkeys.d.ts"], "compilerOptions": { "target": "es2016", "outDir": "./build", diff --git a/ui/components/App.tsx b/ui/components/App.tsx index e4538fc..49a0a82 100644 --- a/ui/components/App.tsx +++ b/ui/components/App.tsx @@ -2,32 +2,91 @@ import React, { useEffect, useState } from 'react'; import _ from 'lodash'; import sdk from '../sdk'; -import Incident from './Incident'; -import CarIncidents from './Car'; +import IncidentView from './Incident'; import Header from './Header'; -import { Incident as BackendIncident } from '../../common/incident'; -import { ReplayTime } from '../../common/index'; +import Pacing from './Pacing'; +import TelemetryViewer, { SelfBoundJSONViewer } from './JSONViewer'; -import { Grid, Stack, Typography, IconButton } from "@mui/material"; -import CloseIcon from '@mui/icons-material/CancelOutlined'; +import { Incident } from '../../common/incident'; +import { ClockState } from '../../common/ClockState'; +import { PaceState } from '../../common/PaceState'; -// return a copy of array with element at index replaced by supplied element -function replace(array: T[], index: number, element: T): T[] { - return _.tap([...array], arr => arr.splice(index, 1, element)); -} +import { IncidentRecord, Resolution } from '../types/Incident'; -// use ./test-utils/TEST_INCIDENT for ui work -const INITIAL_INCIDENTS: BackendIncident[] = []; -const DEFAULT_CLOCK: ReplayTime = { - liveSessionNum: 0, - liveSessionTime: 0, - camSessionNum: 0, - camSessionTime: 0, - camCarNumber: "---", - camDriverName: "None", - camPaused: false +import { Stack, Typography, IconButton, Tabs, Tab, Box, Collapse, Divider } from "@mui/material"; +import CloseIcon from '@mui/icons-material/CancelOutlined'; +import { TransitionGroup } from 'react-transition-group'; + +import SelfBoundDriverList from './DriverList'; +import { DriverState } from '../../common/DriverState'; +import { CameraState } from '../../common/CameraState'; + + +const INITIAL_INCIDENTS: IncidentRecord[] = []; +const DEFAULT_CLOCK: ClockState = { + camCar: { + driverName: "unknown", + index: -1, + number: "---", + }, + camSpeed: 0, + live: { + num: -1, + time: -1, + }, + replay: { + num: -1, + time: -1, + } +} +const DEFAULT_TELEMETRY_JSON: any = {}; +const DEFAULT_PACE_STATE: PaceState = { + grid: [], + pits: [], + oneToGo: false, +} +const DEFAULT_DRIVERS: DriverState[] = []; +const DEFAULT_CAMERA: CameraState = { + cameraGroups: [{ + cameras: [{ + name: "NONE", + num: -1, + }], + name: "NONE", + num: -1 + }], + cars: [{ + class: { + color: "#FFFFFF", + name: "NONE", + }, + color: { + primary: "#000000", + secondary: "#000000", + tertiary: "#000000", + }, + driverName: "NONE", + idx: -1, + number: "---", + teamName: "NONE" + }], + current: { + cameraGroupNum: -1, + cameraNum: -1, + carIdx: -1, + speed: 0, + isLive: true, + }, + sessions: [{ + lapLimit: -1, + name: "NONE", + num: 0, + timeLimt: -1, + type: "NONE" + }], } + function formatTime(seconds: number) { seconds = Math.round(seconds); let hours = (seconds / (60 * 60)) | 0; @@ -40,116 +99,118 @@ function formatTime(seconds: number) { (seconds.toString().padStart(2, "0")); } -// App - the main UI component - takes no props -// has state for incidents and selected car - re-renders on state changes -// listens for new incidents (listener bound on first render) - changes incident state -// listens for click events to select car - changes selected car state -// renders many Incidents -// renders many IncidentCounts +/** + * App is the main UI component. In addition to organizing the layout and other sub components, + * it is also responsible for: + * - Maintaining a "database" of incidents and allowing for their resolution (see "addIncident") + * - setting up listeners for new incident events and state changes from the backend (see "listen") + * + */ export function App() { // any time we call a setter here, getter is updated and App re-renders // any child components with changed props also re-render const [incidents, setIncidents] = useState(INITIAL_INCIDENTS); - const [clock, setClock] = useState(DEFAULT_CLOCK); - - function listen() { - sdk.receive('incident-created', (message: BackendIncident) => { - console.log('incident', message); - - setIncidents((prev) => { - if(prev.find(({id}) => id === message.id)) - return prev; - - return [...prev, message].filter(inc => inc.resolution !== "Deleted"); - }); - }); - - sdk.receive('incident-resolved', (message: BackendIncident) => { - console.log("got incident resolved: " + message.id); - - setIncidents((prev) => { - return prev.map((inc) => { - if (inc.id == message.id) { - return message; - } else { - return inc; - } - }).filter((inc) => inc.resolution !== "Deleted"); - }); + const [paceState, setPaceState] = useState(DEFAULT_PACE_STATE); + + function addIncident(incident: Incident) { + setIncidents((prevIncidents) => { + const id = Math.max(0, ...(prevIncidents.map(inc => inc.id))) + 1; + + let resolveIncident = (res: Resolution) => { + setIncidents((incs) => { + return incs.map((inc) => { + if (inc.id === id) { + return { ...inc, resolution: res } + } else { + return inc; + } + }) + }) + } + + return [...prevIncidents, { + data: incident, + id: id, + resolution: 'Unresolved', + resolve: resolveIncident, + }] }); + } - sdk.receive('clock-update', (message: ReplayTime) => setClock(message)); - sdk.connect(); + function listen() { + sdk.receive('incident-data', addIncident); + sdk.receive('pace-state', setPaceState); } // clear all incidents, triggering a re-render function clearIncidents() { if (window.confirm("Are you sure? You should only do this when a session changes.")) - sdk.clearIncidents(); + setIncidents([]); } // only listen on the first render useEffect(listen, []); let acknowledgedIncidents = _.filter(incidents, i => i.resolution == "Acknowledged" || i.resolution == "Penalized") - let acknowledgedIncidentsByCarNumber = _.groupBy(acknowledgedIncidents, i => i.data.car.number); - - let resolvedIncidents = incidents.filter((inc) => { - return inc.resolution != "Unresolved" && inc.resolution != "Deleted"; - }); let unresolvedIncidents = incidents.filter((inc) => { return inc.resolution == "Unresolved"; }); - const playPause = (ev: React.MouseEvent) => { - ev.preventDefault(); - // sdk.camPlayToggle(); + const [selectedTab, setSelectedTab] = useState(0); + const handleTabSwitch = (ev: React.SyntheticEvent, newTab: number) => { + setSelectedTab(newTab); } - const liveReplay = (ev: React.MouseEvent) => { - ev.preventDefault(); - // sdk.camLive(); - } - - return -
- - - - - Incident Feed - - - - - { - unresolvedIncidents.map((incident) => - ) - } - - - - - Drivers + return +
+ + + + + Incident Feed + + + + + { - Object.keys(acknowledgedIncidentsByCarNumber).map(num => + unresolvedIncidents.map((incident) => + + + ) } - - - {/* - - Pacing Order - (coming soon) - - */} - - + + + + + + + + + + + + + + + } \ No newline at end of file diff --git a/ui/components/Car.tsx b/ui/components/Car.tsx deleted file mode 100644 index e0fbcb0..0000000 --- a/ui/components/Car.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import React, { useState } from 'react'; - -import * as sdk from '../sdk'; -import { Incident, IncidentCar as Car } from '../../common/incident'; -import { getIncidentIcon } from './Incident'; -import { Accordion, AccordionDetails, AccordionSummary, Avatar, Badge, Typography, List, IconButton, ListItem, ListItemIcon, ListItemText, ButtonGroup, Stack } from '@mui/material'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import UndoIcon from '@mui/icons-material/Undo'; -import SearchIcon from '@mui/icons-material/Search'; - -// Displays a list of incidents for a specific driver - -export default function CarIncidents(props: { incidents: Incident[]}) { - const [expanded, setExpanded] = useState(false); - - const car = props.incidents[0].data.car; - const incidents = props.incidents; - - // sort by timestamp (i.e., sessionNum first, then sessionTime) - incidents.sort((a, b) => { - const sessionDiff = a.data.sessionNum - b.data.sessionNum; - if (sessionDiff !== 0) - return sessionDiff; - - return a.data.sessionTime - b.data.sessionTime; - }); - - const acknowledgedIncidents = incidents.filter((inc) => inc.resolution === "Acknowledged"); - const toggleAccordion = (_: any, newVal: boolean) => setExpanded(newVal) - - return - }> - - {car.number} - - - {car.driverName} - {"Team: " + car.teamName} - - - - - - { - acknowledgedIncidents.map(inc => ) - } - - - -} - - -function formatPct(lapPct: number, decimals: number = 2) { - const rounded = (lapPct * 100).toLocaleString('en-US', { - maximumSignificantDigits: 2 + decimals - }) - - return `${rounded}%` -} - -function CarIncident(props: { incident: Incident}) { - // call back to main process, which calls irsdk to jump to correct car/time - const showReplay = (ev: React.MouseEvent) => { - ev.preventDefault() - sdk.replay(props.incident.data) - } - - const unresolveIncident = (ev: React.MouseEvent) => { - ev.preventDefault() - sdk.unresolveIncident(props.incident.id); - } - - const inc = props.incident; - - return - - - - - - - - } - > - - { getIncidentIcon(inc) } - - - - - Lap: {inc.data.car.currentLap} / {formatPct(inc.data.car.currentLapPct)} - - { inc.data.description && inc.data.description } - - } - /> - - - // return
- // { - //
- //

{getIncidentIcon(inc) + - // " " + inc.data.type + - // " (Lap: " + inc.data.car.currentLap + - // ")"}

- //
- // 🔍 - /// ↩️ - //
- //
- // - // } - //
; -} \ No newline at end of file diff --git a/ui/components/CircularIncidentMap.tsx b/ui/components/CircularIncidentMap.tsx new file mode 100644 index 0000000..9c8ecb8 --- /dev/null +++ b/ui/components/CircularIncidentMap.tsx @@ -0,0 +1,99 @@ +import React from "react"; + +import { Avatar, Box, CircularProgress, SvgIcon, SxProps } from "@mui/material" + +export type IncidentIcon = { + /** A unique ID for the incident */ + incidentId: number, + /** An emoji, or other text, to be used as the icon's main content. May be null if {icon} is defined. */ + emoji?: string, + /** An Icon to use as the icon's main content. May be null if {emoji} is defined */ + icon?: typeof SvgIcon, + /** The position (from 0 to 1) around the circle that the incident icon should be placed */ + trackPositionPct: number, + /** True if the icon should be emphasized */ + highlighted?: boolean, +} + +/** + * CircularIncidentMap displays a "track map" in the form of a circle, with icons + * @param props + * @returns + */ +export function CircularIncidentMap(props: { + size: number, + icons: IncidentIcon[], + color?: string +}) { + + // separate icons into highlighted and non-highlighted. Draw highlighted ones second + const regularIcons: IncidentIcon[] = []; + const highlightedIcons: IncidentIcon[] = []; + props.icons.forEach(icon => { + if(icon.highlighted) { + highlightedIcons.push(icon); + } else { + regularIcons.push(icon); + } + }); + + const color = props.color ?? "#808080"; + + return + + { /* draw start/finish line */ } + + { /* draw individual icons */ + regularIcons.map(icon => + {icon.emoji ?? icon.icon} + ) + } + { /* draw highlighted icons over regular ones */ + highlightedIcons.map(icon => + {icon.emoji ?? icon.icon} + ) + } + +} + diff --git a/ui/components/DenseCameraControls.tsx b/ui/components/DenseCameraControls.tsx new file mode 100644 index 0000000..e0bf701 --- /dev/null +++ b/ui/components/DenseCameraControls.tsx @@ -0,0 +1,211 @@ +import React, { useEffect, useState } from 'react'; + +import { Avatar, Box, Fab, FormControl, InputLabel, MenuItem, Select, Typography } from "@mui/material"; +import { CameraState } from "../../common/CameraState"; +import FastRewindIcon from "@mui/icons-material/FastRewind"; +import FastForwardIcon from "@mui/icons-material/FastForward"; +import ChevronLeftIcon from "@mui/icons-material/ChevronLeft"; +import ChevronRightIcon from "@mui/icons-material/ChevronRight"; +import PlayArrowIcon from "@mui/icons-material/PlayArrow"; +import PauseIcon from "@mui/icons-material/Pause"; +import sdk from '../sdk'; + +function formatTime(time: number) { + + let millis = (time * 1000) | 0; + const hours = (millis / (1000 * 60 * 60)) | 0; + millis -= hours * 60 * 60 * 1000; + const minutes = (millis / (1000 * 60)) | 0; + millis -= minutes * 1000 * 60; + const seconds = (millis / 1000) | 0; + millis -= seconds * 1000; + + return hours + ':' + ("" + minutes).padStart(2, '0') + ':' + ("" + seconds).padStart(2, '0') + '.' + ("" + millis).padStart(3, '0'); +} + + +export default function CameraControls(props: { camState: CameraState }) { + + let sortedCars = [...props.camState.cars]; + sortedCars.sort((a, b) => parseInt(a.number) - parseInt(b.number)); + + function rewind() { + const speed = props.camState.current.speed; + if (speed > -1) { + sdk.replaySpeed(-1); + } else { + sdk.replaySpeed((speed | 0) * 2); + } + } + + function fastForward() { + const speed = props.camState.current.speed; + if (speed < 1) { + sdk.replaySpeed(1); + } else { + sdk.replaySpeed((speed | 0) * 2); + } + } + + + const isPaused = props.camState.current.speed == 0; + + const camCar = props.camState.cars.find((car) => car.idx == props.camState.current.carIdx); + + return + + + sdk.replaySearch("PrevSession")}> + + Session + + sdk.replaySearch("PrevLap")}> + + Lap + + + + + + + Car + + + + + { + if (isPaused) { + sdk.playReplay(); + } else { + sdk.pauseReplay(); + } + }}> + { + isPaused ? : + } + + sdk.replaySearch("ToEnd")} + sx={{ borderRadius: "25%", height:24}}> + Live + + + + + = 16}> + + + sdk.replaySearch("NextLap")}> + Lap + + + sdk.replaySearch("NextSession")}> + Session + + + + + Camera + + + + +} + + +const DEFAULT_CAMERA: CameraState = { + cameraGroups: [{ + cameras: [{ + name: "NONE", + num: -1, + }], + name: "NONE", + num: -1 + }], + cars: [{ + class: { + color: "#FFFFFF", + name: "NONE", + }, + color: { + primary: "#000000", + secondary: "#000000", + tertiary: "#000000", + }, + driverName: "NONE", + idx: -1, + number: "---", + teamName: "NONE" + }], + current: { + cameraGroupNum: -1, + cameraNum: -1, + carIdx: -1, + speed: 0, + isLive: true, + }, + sessions: [{ + lapLimit: -1, + name: "NONE", + num: 0, + timeLimt: -1, + type: "NONE" + }], + } + +export function SelfBoundCameraControls(props: { + channelName: string +}) { + const [camera, setCamera] = useState(DEFAULT_CAMERA); + + useEffect(() => { + return sdk.receive(props.channelName, setCamera); + }, [setCamera, props.channelName]); + + return +} \ No newline at end of file diff --git a/ui/components/DriverList.tsx b/ui/components/DriverList.tsx new file mode 100644 index 0000000..76fc004 --- /dev/null +++ b/ui/components/DriverList.tsx @@ -0,0 +1,513 @@ +import { CarSessionFlag, DriverState } from "../../common/DriverState"; +import { IncidentRecord, Resolution } from "../types/Incident"; +import { Table, TableCell, TableRow, Paper, TableContainer, TableHead, Typography, IconButton, Avatar, Collapse, TableSortLabel, TableBody, Box, Menu, MenuItem, Backdrop, Button, FormControl, FormLabel, RadioGroup, FormControlLabel, TextField, Radio, Modal, Container, Dialog, DialogTitle, DialogActions } from "@mui/material"; +import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp"; +import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import Incident, { getIncidentEmoji } from "./Incident"; +import React, { useEffect, useState } from "react"; +import { CircularIncidentMap } from "./CircularIncidentMap"; +import sdk, { sendChatMessages } from "../sdk"; + + +type SortColumn = "name" | "class" | "incidents" | "position" | "class-position"; + +/** + * DriverList displays a compact, expandable table of all drivers currently in the session. + * + * At a glance, it includes information about their official and class positions, any + * flags they might have, and the total number of incidents they have marked against them. + * + * @param props.drivers a list of all drivers in the session + * @param props.incidents a list of all incidents in the session + */ +export function DriverList(props: { drivers: DriverState[], incidents: IncidentRecord[] }) { + + // Display a list of drivers in an "accordion" format. + // The header of the accordion should contain + // - Number & class color + // - Team name + // - Flags + // - Count of tallied incidents + + // The body of the accordion contains individual incidents, including + // - the type of incident (icon) + // - where it occurred on track + // - buttons to view or unresolve + + const incidentsByDriver: Map = new Map(); + props.incidents.forEach(inc => { + const incs = incidentsByDriver.get(inc.data.car.idx) ?? []; + incs.push(inc); + incidentsByDriver.set(inc.data.car.idx, incs); + }); + + const [sortColumn, setSortColumn] = useState("name" as SortColumn); + const [sortAscending, setSortAscending] = useState(true); + + let driverComparator = (d1: DriverState, d2: DriverState) => { + switch (sortColumn) { + case "class": { + // sort by class first, then by car number + const classCompare = d1.car.class.name.localeCompare(d2.car.class.name); + if (classCompare !== 0) return classCompare; + return d1.car.number.localeCompare(d2.car.number); + } + case "class-position": { + // sort by class first, then by car class position + const classCompare = d1.car.class.name.localeCompare(d2.car.class.name); + if (classCompare !== 0) return classCompare; + return d1.classPosition - d2.classPosition; + } + case "position": { + return d1.position - d2.position; + } + case "incidents": { + const d1Incs = (incidentsByDriver.get(d1.car.idx) ?? []).length; + const d2Incs = (incidentsByDriver.get(d2.car.idx) ?? []).length; + return d1Incs - d2Incs; + } + case "name": { + return d1.car.teamName.localeCompare(d2.car.teamName); + } + default: { + throw Error("assertion sort order"); + } + } + } + + const driverComparatorDesc = (d1: DriverState, d2: DriverState) => driverComparator(d2, d1); + + const sortedDrivers = [...(props.drivers)]; + sortedDrivers.sort(sortAscending ? driverComparator : driverComparatorDesc); + + function requestSortColumn(col: SortColumn) { + // if it was just picked, sort ascending. if it was already selected, invert the sort order + const setAscending = sortColumn !== col || !sortAscending; + setSortAscending(setAscending); + setSortColumn(col); + } + + const [menuAnchorElement, setMenuAnchorElement] = useState(null as null | HTMLElement); + + function handleOpenMenu(event: React.MouseEvent) { + setMenuAnchorElement(event.currentTarget); + } + + function handleCloseMenu() { + setMenuAnchorElement(null); + } + + async function handleClearAllBlackFlags() { + await sendChatMessages(["!clearall"]); + handleCloseMenu(); + } + + return + + + + + + + + + + + requestSortColumn("class")}>Class + + + requestSortColumn("name")}>Driver + + + requestSortColumn("incidents")} title="Tallied Incidents">I + + + requestSortColumn("class-position")} title="Position in Class">C + + + requestSortColumn("position")} title="Position Overall">R + + + + + + + Clear All Black Flags + + + + + + { + sortedDrivers.map(driver => ) + } + +
+
+} + +/** + * DriverRow is a table fragment containing two "rows", one with the driver's details at a glance, and a collapsed section that contains detailed information about the incidents a driver has accrued. + * + * @param props + * @returns + */ +function DriverRow(props: { driver: DriverState, incidents: IncidentRecord[] }) { + const [expanded, setExpanded] = useState(false); + const [showDismissedIncidents, setShowDismissedIncidents] = useState(false); + + const shownIncidents = props.incidents.filter(inc => ( + inc.resolution === "Acknowledged" || + inc.resolution === "Penalized" || + (showDismissedIncidents && inc.resolution === "Dismissed") + )); + + // driver options menu + const [menuAnchorElement, setMenuAnchorElement] = useState(null as (null | HTMLElement)); + function handleMenuClick(event: React.MouseEvent) { + setMenuAnchorElement(event.currentTarget); + } + + if (shownIncidents.length === 0 && expanded) { + setExpanded(false); + } + + return + *': { borderBottom: 'unset' } }}> + + setExpanded(!expanded)} + disabled={shownIncidents.length === 0}> + {expanded ? : } + + + + + {props.driver.car.number} + + + + {props.driver.car.teamName} + + + + {shownIncidents.length} + + + {props.driver.classPosition} + + + {props.driver.position} + + + + + + setMenuAnchorElement(null)} + showHiddenIncidents={showDismissedIncidents} + setShowHiddenIncidents={setShowDismissedIncidents} + /> + + + + + + + + + + +} + +function DriverMenu(props: { + driver: DriverState, + anchorEl: Element | null, + onClose: () => void, + showHiddenIncidents: boolean, + setShowHiddenIncidents: (_: boolean) => void +}) { + + // give penalty backdrop + const [showPenaltyBackdrop, setShowPenaltyBackdrop] = useState(false); + + // Disqualify modal + const [showDisqualifyModal, setShowDisqualifyModal] = useState(false); + + function handleGivePenalty() { + setShowPenaltyBackdrop(true); + props.onClose(); + } + function handleShowDisqualify() { + setShowDisqualifyModal(true); + props.onClose(); + } + + function handleToggleHiddenIncidents() { + props.setShowHiddenIncidents(!props.showHiddenIncidents); + props.onClose(); + } + + + async function handleClearBlackFlags() { + const carNumber = props.driver.car.number; + await sendChatMessages([`!clear #${carNumber}`]); + props.onClose(); + } + + return + {props.showHiddenIncidents ? "Hide" : "Show"} Dismissed Incidents + Clear Black Flags + Issue Penalty... + Disqualify... + + + setShowPenaltyBackdrop(false)} /> + setShowDisqualifyModal(false)} /> + +} + +function PenaltyModal(props: { driver: DriverState, open: boolean, onClose: () => void }) { + type PenaltyDurationType = "driveThrough" | "time"; + const [penaltyDurationType, setPenaltyDurationType] = useState("driveThrough" as PenaltyDurationType); + const [penaltyDurationTime, setPenaltyDurationTime] = useState(0); + const [penaltyDurationTimeError, setPenaltyDurationTimeError] = useState(false); + const [penaltyInProgress, setPenaltyInProgress] = useState(false); + + function handlePenaltyTimeChange(ev: React.ChangeEvent) { + try { + const time = parseInt(ev.target.value); + setPenaltyDurationTime(time); + setPenaltyDurationTimeError(false); + } catch (e) { + setPenaltyDurationTimeError(true); + } + } + + async function handleIssuePenalty() { + const carNumber = props.driver.car.number; + const duration = penaltyDurationType == "driveThrough" ? "D" : penaltyDurationTime; + setPenaltyInProgress(true); + await sendChatMessages([`!black #${carNumber} ${duration}`]); + setPenaltyInProgress(false); + props.onClose(); + } + + return + Give penalty to {props.driver.car.driverName} + + + } + label="Drive-Through" + onClick={() => setPenaltyDurationType("driveThrough")} /> + } + label={ + setPenaltyDurationType("time")} + onChange={(ev) => setPenaltyDurationTime(parseInt(ev.target.value))} /> + } /> + + + + + + + +} + +function DisqualifyModal(props: { driver: DriverState, open: boolean, onClose: () => void }) { + const [disqualifyInProgress, setDisqualifyInProgress] = useState(false); + + async function handleDisqualify() { + const carNumber = props.driver.car.number; + setDisqualifyInProgress(true); + await sendChatMessages([`!dq #${carNumber}`]); + setDisqualifyInProgress(false); + props.onClose(); + } + + return + Disqualify {props.driver.car.driverName}? + Are you sure? + + + + + +} + +type FlagElements = { + [key in CarSessionFlag]?: JSX.IntrinsicElements['img'] +} + +const FLAG_ELEMENTS_BY_NAME: FlagElements = { + "Black" : , + "Repair": , + "Disqualify": , + "Checkered": +} + +function DriverFlags(props: { driver: DriverState }): JSX.Element { + return + {props.driver.flags.map((flag) => FLAG_ELEMENTS_BY_NAME[flag])} + +} + +function DriverDetails(props: { incidents: IncidentRecord[] }) { + const [hoveredIncident, setHoveredIncident] = useState(-1); + + return + { + return { + emoji: getIncidentEmoji(inc), + trackPositionPct: inc.data.trackPositionPct, + highlighted: hoveredIncident === inc.id, + incidentId: inc.id, + }; + }) + } /> + + Incidents: + { + props.incidents.map(incident => { + setHoveredIncident((oldId) => { + if (over) { + return incident.id; + } else { + if (oldId === incident.id) { + return -1; + } else { + return oldId; + } + } + }) + }} />) + } + + + Penalties: + + + +} + +function IncidentListItem(props: { incident: IncidentRecord, hovered?: (over: boolean) => void }) { + + const hover = props.hovered ?? ((over: boolean) => { }); + + const incident = props.incident; + return hover(true)} onMouseOut={() => hover(false)}> + + +} + +const DEFAULT_DRIVERS: DriverState[] = []; +function fSelfBoundDriverList(props: {driverChannelName: string, incidents: IncidentRecord[]}) { + + const [drivers, setDrivers] = useState(DEFAULT_DRIVERS); + useEffect(() => { + return sdk.receive(props.driverChannelName, setDrivers); + }, [props.driverChannelName, setDrivers]); + + return +} + +const SelfBoundDriverList = React.memo(fSelfBoundDriverList, (oldProps, newProps) => { + if(oldProps.driverChannelName != newProps.driverChannelName) return false; + if(oldProps.incidents.length != newProps.incidents.length) return false; + const resolutionsById = new Map(); + oldProps.incidents.forEach(inc => { + resolutionsById.set(inc.id, inc.resolution); + }); + + if(newProps.incidents.some((inc) => inc.resolution != resolutionsById.get(inc.id))) return false; + + return true; +}); +export default SelfBoundDriverList; \ No newline at end of file diff --git a/ui/components/Header.tsx b/ui/components/Header.tsx index 393f23a..01cef0d 100644 --- a/ui/components/Header.tsx +++ b/ui/components/Header.tsx @@ -1,40 +1,53 @@ import React from 'react'; -import { ReplayTime } from '../../common/index' -import * as sdk from '../sdk'; -import { formatTime } from '../clock'; +import { Typography, Box, Fab, Tooltip } from '@mui/material'; -import { Stack, Typography, IconButton } from '@mui/material'; -import SkipNextIcon from '@mui/icons-material/SkipNext'; -import PlayArrowIcon from '@mui/icons-material/PlayArrow'; -import PauseIcon from '@mui/icons-material/Pause'; +import { CameraState } from '../../common/CameraState'; +import { Flag } from '@mui/icons-material'; +import DenseCameraControls, { SelfBoundCameraControls } from './DenseCameraControls'; +import TrafficLight from './TrafficLight'; -export default function Header(props: { - time: ReplayTime -}) { +/** + * Header shows information about the session as a whole and allows for some control over the camera and session state. + * + * Features: (not all implemented yet) + * - Session state including + * - elapsed time + * - session type (practice, qualifying, warm up, race, etc) + * - status (gridding, starting, racing, caution, finished, etc.) + * - flags (green, caution, etc. Probably considered part of "status") + * - Replay camera controls + * - play/pause + * - jump to live + * - current camera time + * - currently viewed driver + */ +function Header() { - const togglePlayPause = () => { - if (props.time.camPaused) { - sdk.playReplay(); - } else { - sdk.pauseReplay(); - } - }; + return + 👮 Stuart - return - 👮 Stuart - - {props.time.camPaused ? : } - - - - - - Live: S{props.time.liveSessionNum} {formatTime(props.time.liveSessionTime)} - Replay: S{props.time.camSessionNum} {formatTime(props.time.camSessionTime)} - Driver: #{props.time.camCarNumber} {props.time.camDriverName} - - -} \ No newline at end of file + + + + + + + + + +} + +export default React.memo(Header); \ No newline at end of file diff --git a/ui/components/Incident.tsx b/ui/components/Incident.tsx index 954cba9..0f493a3 100644 --- a/ui/components/Incident.tsx +++ b/ui/components/Incident.tsx @@ -1,76 +1,116 @@ import React from 'react'; import * as sdk from '../sdk'; -import { Incident as BackendIncident, IncidentClass } from '../../common/incident'; +import { IncidentRecord } from "../types/Incident"; -import { Card, CardHeader, ButtonGroup, Avatar, IconButton } from '@mui/material'; -import SearchIcon from '@mui/icons-material/Search'; +import { Avatar, IconButton, Paper, Box, Typography } from '@mui/material'; +import VideocamIcon from '@mui/icons-material/Videocam'; import ClearIcon from '@mui/icons-material/Clear'; -import CheckIcon from '@mui/icons-material/Check' +import CheckIcon from '@mui/icons-material/Check'; +import UndoIcon from '@mui/icons-material/Undo'; + import { formatTime } from '../clock'; -// a component for displaying an incident -// allows tally/dismiss/resolve via props.onTally, props.onDismiss, props.onResolve +// a component for displaying an incident in the incident feed // prop: incident, a record for an incident including its resolution state -export default function Incident(props: { - incident: BackendIncident +export function FlexBoxIncident(props: { + incident: IncidentRecord, + compact?: boolean, }) { - const car = props.incident.data.car; + + const incident = props.incident; + const car = incident.data.car; // call back to main process, which calls irsdk to jump to correct car/time const showReplay = (ev: React.MouseEvent) => { ev.preventDefault() - sdk.replay(props.incident.data) + sdk.replay(incident.data) } const acknowledgeIncident = (ev: React.MouseEvent) => { ev.preventDefault() - sdk.acknowledgeIncident(props.incident.id); + incident.resolve("Acknowledged"); } const dismissIncident = (ev: React.MouseEvent) => { ev.preventDefault() - sdk.dismissIncident(props.incident.id); + incident.resolve("Dismissed"); } - const unresolveIncident = (ev: React.MouseEvent) => { - ev.preventDefault() - sdk.unresolveIncident(props.incident.id); + const unresolveIncident = () => { + incident.resolve("Unresolved"); } - return - { getIncidentIcon(props.incident) } - } - title={`#${car.number} ${car.driverName}`} - subheader={[props.incident.data.type, '/', formatTime(props.incident.data.sessionTime)].join(' ')} - action={ - - - - - - - - - - - - } - /> - + return + {getIncidentEmoji(incident)} + + {!props.compact && + + + {car.number} + + {car.driverName} + } + {[props.incident.data.type, '/', formatTime(props.incident.data.time.time)].join(' ')} + + + + + + {incident.resolution == "Unresolved" && + + + + + + + + } + {incident.resolution != "Unresolved" && + + + } + + +} +export function getIncidentAvatar(incident: IncidentRecord) { + return {getIncidentEmoji(incident)} } -export function getIncidentIcon(incident: BackendIncident) { +export function getIncidentEmoji(incident: IncidentRecord) { let icon = "🚨"; switch (incident.data.type) { case "Track Limits": icon = "⛐"; break; case "Incident Count": - icon = incident.data.car.incidentCount + "x"; + icon = incident.data.description!; break; case "Off-Track": icon = "🌳"; @@ -83,4 +123,6 @@ export function getIncidentIcon(incident: BackendIncident) { break; } return icon; -} \ No newline at end of file +} + +export default React.memo(FlexBoxIncident); \ No newline at end of file diff --git a/ui/components/JSONViewer.tsx b/ui/components/JSONViewer.tsx new file mode 100644 index 0000000..5c65688 --- /dev/null +++ b/ui/components/JSONViewer.tsx @@ -0,0 +1,78 @@ +import React, {useEffect, useState} from 'react'; +import ReactJson from 'react-json-view'; +import JsonPath from 'jsonpath'; +import { IconButton, Stack, TextField } from '@mui/material'; +import PlayArrow from '@mui/icons-material/PlayArrow'; +import Pause from '@mui/icons-material/Pause'; +import sdk from '../sdk'; + +/** + * Renders an object as json in a browseable form, with json path support + */ +export default function JSONViewer(props: { + sourceJson: any +}) { + + // the viewer can be "paused", in which case it will not update based on the props, but will be based on this object. + // So, if this is null: + // - use the sourceJson property as the item to display + // - show a button that will let the user "pause" the feed + // if it is not null: + // - display this item instead of the sourceJson property + // - show a button that lets the user "resume" the feed + const [paused, setPaused] = useState(false); + const [json, setJson] = useState({}); + const [path, setPath] = useState(""); + + // display a text box for the JSON query, and a "play/pause" button for whether to save the current object or to use the object from the props + + const handlePlayPause = (ev: React.MouseEvent) => { + ev.preventDefault(); + if(!paused) { + setJson(props.sourceJson); + setPaused(true); + } else { + setPaused(false); + } + } + + const handleTextChange = (ev: React.ChangeEvent) => { + const p = ev.target.value; + if(!p || p.trim() == "") { + setPath(""); + } else { + setPath(ev.target.value); + } + } + + const baseJson = (paused) ? json : props.sourceJson; + let pathJson = baseJson; + let pathIsValid = true; + try { + if(path != "") { + pathJson = JsonPath.query(baseJson, path); + } + } catch (err) { + pathIsValid = false; + } + + return + + + + { paused ? : } + + + + +} + +export function SelfBoundJSONViewer(props: {channelName: string}) { + const [sourceJson, setSourceJson] = useState({} as any); + + useEffect(() => { + return sdk.receive(props.channelName, setSourceJson); + }, [setSourceJson, props.channelName]); + + return +} \ No newline at end of file diff --git a/ui/components/Pacing.tsx b/ui/components/Pacing.tsx new file mode 100644 index 0000000..dcfdfbc --- /dev/null +++ b/ui/components/Pacing.tsx @@ -0,0 +1,533 @@ +import { Card, CardHeader, Stack, Typography, Avatar, IconButton, ButtonGroup, Table, TableBody, TableCell, TableRow, Paper, TableContainer, TableHead, Button, Grid, CircularProgress, Box, Divider, Tooltip } from '@mui/material' +import EndOfLine from '@mui/icons-material/VerticalAlignBottom'; +import WaveAround from '@mui/icons-material/UTurnLeft'; +import MoveUp from '@mui/icons-material/KeyboardArrowUp'; +import MoveDown from '@mui/icons-material/KeyboardArrowDown'; +import React, { useState } from 'react' +import { PaceCarInfo, PaceState } from "../../common/PaceState"; +import sdk from "../sdk"; + +let TEST_PACE_ORDER: PaceState = { + oneToGo: false, + grid: [ + { + car: { + idx: 1, + driverName: "Joey Logano", + number: "68", + officialPosition: 1, + class: { + color: "#0000FF", + name: "Street Stock", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + teamName: "Team JL Racing", + }, + line: 0, + row: 0 + }, { + car: { + idx: 2, + driverName: "Suzie Queue", + number: "9", + officialPosition: 2, + class: { + color: "#0000FF", + name: "Street Stock", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + teamName: "SuperSuze Motorsports" + }, + line: 1, + row: 0, + }, { + car: { + idx: 3, + driverName: "Mike Racecar", + number: "18", + officialPosition: 4, + class: { + color: "#0000FF", + name: "Street Stock", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + teamName: "Gabir Motors" + }, + line: 0, + row: 1, + }, { + car: { + idx: 4, + driverName: "Someone Else", + number: "000", + officialPosition: 3, + class: { + color: "#0000FF", + name: "Street Stock", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + teamName: "Half-fast Endeavors" + }, + line: 1, + row: 2 + } + ], + pits: [{ + idx: 5, + driverName: "Mister Lazy", + number: "12", + officialPosition: 5, + class: { + color: "#0000FF", + name: "Street Stock", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + teamName: "TEST TEAM PLEASE IGNORE" + }] +} + +function GridStackCar(props: { + car: PaceCarInfo +}) { + return + + {props.car.number} + + {props.car.driverName} + +} + +/** + * GridStack is a component that displays the cars currently in grid, as well as + * those in the pits. Cars in grid may be immediately issued "end of line" or + * "wave around" commands, but those in the pits may not. + */ +function GridStack(props: { + grid: PaceState, + width: number, +}) { + + // display a grid of cars that are currently on track, then a space, then cars currently in the pits + + // display cars in a stack, with margins indicating left or right, if double-file + let doubleFile = props.grid.grid.some(spot => spot.line != 0); + + let row = 0; + let gridStack: JSX.Element[] = []; + for(let i=0; i); + row = spot.row; + } + // if double file, add a margin on the proper side + const paddingLeft = (doubleFile && spot.line == 1) ? 2 : 0; + const paddingRight = (doubleFile && spot.line == 0) ? 2 : 0; + gridStack.push( + + ); + } + + return + Current Grid Order + {gridStack} + Cars In Pits + { + props.grid.pits.map(pitCar => ) + } + +} + +type GridCommand = { + // The type of commands to issue + // end_of_line: move the given cars back to the end the line in order + // wave_around: issue wave-bys to the cars in order + // set_order_to: is just an "end_of_line" command that is guaranteed to contain all of the cars. + // this could be done more intelligently. but who cares. + type: "set_order_to" | "wave_around" | "end_of_line", + // The car numbers to issue the command to, in order + carNumbers: string[], +} + +type DesiredPaceOrderSpot = { + // the car in this spot + car: PaceCarInfo, + // the number of extra laps this car will get because of wave-arounds + additionalLaps: number, +} + +type DesiredPaceOrder = { + // The target order of the cars + cars: DesiredPaceOrderSpot[], + // The commands necessary to issue in order to achieve the desired order + commands: GridCommand[], +} + +const INITIAL_DESIRED_PACE_ORDER: DesiredPaceOrder | null = null; + +/** + * Calculates the initial desired pace order from the current order + */ +function createDesiredPaceOrder(pace: PaceState): DesiredPaceOrder { + // start with the cars actually in grid + + // no need to sort, cars are guaranteed to be in the appropriate order + // order is determined by app/state/views/pacing.ts + let grid = [...pace.grid]; + let pits = [...pace.pits]; + + let cars = [ + ...(grid.map((gs) => gs.car)), + ...pits + ]; + + return { + cars: cars.map((car) => { + return { + car, + additionalLaps: 0, + } + }), + commands: [ + { + type: "set_order_to", + carNumbers: cars.map(c => c.number), + } + ] + }; +} + +function moveCarUp(paceOrder: DesiredPaceOrder, carId: number): DesiredPaceOrder { + let newOrder: DesiredPaceOrderSpot[] = [...paceOrder.cars]; + + // find the car to change + let targetCarIndex = newOrder.findIndex((car) => car.car.idx == carId); + + // -1 if not found, can't move car 0 up anyway + if (targetCarIndex > 0) { + const t = newOrder[targetCarIndex]; + newOrder[targetCarIndex] = newOrder[targetCarIndex - 1]; + newOrder[targetCarIndex - 1] = t; + + // update the previous command with either the new order, or by adding an additional command + let newCommands = [...paceOrder.commands]; + let lastCommand = newCommands[newCommands.length - 1]; + + let newCommand: GridCommand = { + type: "set_order_to", + carNumbers: newOrder.map(spot => spot.car.number), + } + + if (lastCommand.type === "set_order_to") { + // replace the previous end of line command with this new one + newCommands.pop(); + } + + newCommands.push(newCommand); + + return { + cars: newOrder, + commands: newCommands, + } + } else { + return paceOrder; + } +} + +/** + * Moves the car identified by the given carIdx down one spot in the pace grid + * + * @param paceOrder the pace order to modify + * @param carId the index of the car to move down one spot in the pace grid + * @returns a new DesiredPaceOrder with the resulting order and commands necessary to achieve this order + */ +function moveCarDown(paceOrder: DesiredPaceOrder, carId: number): DesiredPaceOrder { + // find the target car; + let targetCarIndex = paceOrder.cars.findIndex(car => car.car.idx === carId); + + if (targetCarIndex === -1 || targetCarIndex === (paceOrder.cars.length - 1)) { + // can't do anything if it's the last car or if it's not in the grid + return paceOrder; + } else { + // find the car below and move it up + return moveCarUp(paceOrder, paceOrder.cars[targetCarIndex + 1].car.idx); + } +} + +function moveToEnd(paceOrder: DesiredPaceOrder, carId: number, waveAround: boolean): DesiredPaceOrder { + + // find our car and pull it out + let targetCar: DesiredPaceOrderSpot | null = null; + let restOfTheCars: DesiredPaceOrderSpot[] = []; + + for (const car of paceOrder.cars) { + if (car.car.idx === carId) { + targetCar = car; + } else { + restOfTheCars.push(car); + } + } + + if (targetCar === null) { + return paceOrder; + } else { + // pop our car on the end + restOfTheCars.push({ + car: targetCar.car, + additionalLaps: targetCar.additionalLaps + (waveAround ? 1 : 0), + }); + + return { + cars: restOfTheCars, + commands: [...paceOrder.commands, { + carNumbers: [targetCar.car.number], + type: waveAround ? "wave_around" : "end_of_line", + }], + }; + } +} + +function DesiredPaceOrderTable(props: { + currentPaceOrder: PaceState, + desiredOrder: DesiredPaceOrder, + setDesiredOrder: (_: DesiredPaceOrder) => void, +}) { + + // TODO lots of stuff to do in here, mostly figuring out where the state for desiredOrder should live + // it needs to be mutable by buttons in each row. + // maybe add methods to the "grid" array entries in DesiredPaceOrder? + + // Big ol table + // Columns: + // - move car up/down buttons + // - old vs new grid spot + // - current official position? + // - eol/wb buttons + + // Rows are colored red if the driver is technically being penalized (new grid order > old grid order and no additional laps) + // Green if driver is gaining grid spots? + + // figure out old grid positions of cars + type OldGridPosition = number | "P"; + const gridPositionByIdx: OldGridPosition[] = []; + props.currentPaceOrder.grid.forEach((spot, index) => { + gridPositionByIdx[spot.car.idx] = index + 1; + }); + props.currentPaceOrder.pits.forEach(car => { + gridPositionByIdx[car.idx] = "P"; + }); + + function handleMoveCarUp(idx: number): (ev: any) => void { + return (ev) => { + props.setDesiredOrder(moveCarUp(props.desiredOrder, idx)); + } + } + function handleMoveCarDown(idx: number): (ev: any) => void { + return (ev) => { + props.setDesiredOrder(moveCarDown(props.desiredOrder, idx)); + } + } + function handleMoveCarEOL(idx: number): (ev: any) => void { + return (ev) => { + props.setDesiredOrder(moveToEnd(props.desiredOrder, idx, false)); + } + } + function handleMoveCarWB(idx: number): (ev: any) => void { + return (ev) => { + props.setDesiredOrder(moveToEnd(props.desiredOrder, idx, true)); + } + } + + return + + + + Move {/* up/down buttons */} + Grid + Race + Driver + Send to Back {/* left/right buttons */} + + + + { + props.desiredOrder.cars.map((car, index) => { + const originalPosition = gridPositionByIdx[car.car.idx]; + const newPosition = index + 1; + + const carIsBeingPenalized = originalPosition != "P" && originalPosition > newPosition; + + // TODO turn red if being penalized? + return + + + + + + + + + + + + {(newPosition != originalPosition) + ? originalPosition + ">" + newPosition + : newPosition} + + + {car.car.officialPosition} + + + {`#${car.car.number} ${car.car.driverName}`} + + + + + + + + + + + + + + + + + }) + } + +
+
+} + +async function sendIRCommands(commands: string[]): Promise { + await sdk.sendChatMessages(commands); + return true; +} + +/** + * Pacing is responsible for displaying the current caution status and pace order, + * and for allowing a steward to reorganize the pace line as they see fit + * (via end-of-line penalties and wave-arounds) + * + * The current pace order of the cars in-sim will be displayed on the left, and will + * show both pace lines as well as cars that are in the pits. From this view, cars + * can be issued "end of line" or "wave by" actions immediately. + * + * To edit the pacing order, first the current order must be copied into a "desired" + * pace order window on the right. The order is based on the pace lines first, alternating + * left and right, followed by any cars currently in the pits ordered by "official position". + * From here, cars can be shifted up and down single spots a a time, may be sent to the back, + * or may be waved around, with the "desired order" window updating appropriately. + * + * @param props + * @returns + */ +export default function Pacing(props: { + paceOrder: PaceState +}) { +// let [paceOrder, setPaceOrder] = useState(TEST_PACE_ORDER); + let paceOrder = props.paceOrder; + + let [desiredPaceOrder, setDesiredPaceOrder] = useState(INITIAL_DESIRED_PACE_ORDER); + let [executingCommands, setExecutingCommands] = useState(false); + + // left to do: + // - display desired order stuff on the right + // - a button to copy the current order to the desired order ("edit") + // - drag and drop items in the ordering + // - wave-around + + function handleCopyPaceOrder(ev: any) { + // copy from current order + setDesiredPaceOrder(createDesiredPaceOrder(paceOrder)); + } + + function handleCommitPaceOrder(ev: any) { + // TODO wire this up to the actual SDK + + if (desiredPaceOrder != null) { + // TODO move this logic somewhere else + const irCommands: string[] = []; + desiredPaceOrder.commands.forEach(command => { + command.carNumbers.forEach(carNumber => { + let c = null; + switch (command.type) { + case "end_of_line": + case "set_order_to": + c = "!eol"; + break; + case "wave_around": + c = "!waveby"; + break; + } + + if (c != null) { + irCommands.push(`${c} ${carNumber}`); + } + }); + }); + let commandsSent = sendIRCommands(irCommands); + setExecutingCommands(true); + commandsSent.then((success) => { + setExecutingCommands(false); + setDesiredPaceOrder(null); + }) + } + } + + // display current pacing order on the left + // display edit buttons and target pacing order on the right + return + + + + + + + + + + {desiredPaceOrder != null && + } + + +} \ No newline at end of file diff --git a/ui/html/main.html b/ui/html/main.html index 8b5fd63..dd6e236 100644 --- a/ui/html/main.html +++ b/ui/html/main.html @@ -7,7 +7,7 @@ Stuart - +
diff --git a/ui/html/static/flag_black.png b/ui/html/static/flag_black.png new file mode 100644 index 0000000..1d76447 Binary files /dev/null and b/ui/html/static/flag_black.png differ diff --git a/ui/html/static/flag_checkered.png b/ui/html/static/flag_checkered.png new file mode 100644 index 0000000..c2b6632 Binary files /dev/null and b/ui/html/static/flag_checkered.png differ diff --git a/ui/html/static/flag_disqualify.png b/ui/html/static/flag_disqualify.png new file mode 100644 index 0000000..16dff89 Binary files /dev/null and b/ui/html/static/flag_disqualify.png differ diff --git a/ui/html/static/flag_meatball.png b/ui/html/static/flag_meatball.png new file mode 100644 index 0000000..77a331c Binary files /dev/null and b/ui/html/static/flag_meatball.png differ diff --git a/ui/sdk.ts b/ui/sdk.ts index fe71c80..e9e7aa2 100644 --- a/ui/sdk.ts +++ b/ui/sdk.ts @@ -1,7 +1,5 @@ -// override / extend default window object - -import { IncidentData } from "../common/incident"; - +import { Incident } from "../common/incident"; +import { SearchMode, WindowWithSDK} from "./types/api"; // see ui/types/api.d.ts declare var window: WindowWithSDK @@ -9,29 +7,23 @@ declare var window: WindowWithSDK const sdk = window.api; export default sdk; +// from irsdk.d.ts + function toMS(seconds: number): number { return (seconds * 1000) | 0 } -export function replay({ car, sessionNum, sessionTime }: IncidentData) { - const ms = toMS(Math.max(sessionTime - 2.0, 0)); - window.api.replay(car.number, sessionNum, ms); -} - -export function acknowledgeIncident(id: number) { - window.api.acknowledgeIncident(id); +export function replay(incident: Incident) { + const ms = toMS(Math.max(incident.time.time - 2.0, 0)); + window.api.replay(incident.car.number, incident.time.num, ms); } -export function dismissIncident(id: number) { - window.api.dismissIncident(id); +export function replaySearch(mode: SearchMode) { + window.api.replaySearch(mode); } -export function unresolveIncident(id: number) { - window.api.unresolveIncident(id); -} - -export function clearIncidents() { - window.api.clearIncidents(); +export function replaySpeed(speed: number) { + window.api.replaySpeed(speed); } export function pauseReplay() { @@ -44,4 +36,8 @@ export function playReplay() { export function liveReplay() { window.api.liveReplay(); +} + +export function sendChatMessages(messages: string[]) : Promise { + return window.api.sendChatMessages(messages); } \ No newline at end of file diff --git a/ui/styles/app.css b/ui/styles/app.css index 7b48c56..b54ff42 100644 --- a/ui/styles/app.css +++ b/ui/styles/app.css @@ -2,73 +2,3 @@ body { font-family: Arial, Helvetica, sans-serif; } -.app-main { - display: flex; -} - -.incidents, .incident-counts { - margin: 1em; -} - -.incidents { - min-width: 500px; -} - -.incident { - padding: 1em; - margin: 1em 0em; - border: 1px solid grey; -} - -.incident.resolved { - opacity: 0.5; - background-color: lightgray; -} - -.incident.resolved.tallied { - background-color: lightcyan; -} - -.incident-header { - display: flex; - justify-content: space-between; - align-items: baseline; -} - -.incident-deets { - display: flex; - align-items: baseline; -} - -.incident-header h2, h4, h5 { - margin-right: 1em; - margin-bottom: 0; - margin-top: 0.25em; -} - -.incident-count { - color: limegreen; -} - -.incident-controls a { - opacity: 0.66; - margin: 0.33em -} - -.incident-controls a:hover { - opacity: 1.0; - cursor: pointer; -} - -.incident-counts { - max-width: 30%; -} - -.car-incident-count { - display: flex; - align-items: center; - border: 1px solid black; - padding: 0.25em; - margin: 0.2em; -} - diff --git a/ui/test-utils.ts b/ui/test-utils.ts index 7b2c554..f51a968 100644 --- a/ui/test-utils.ts +++ b/ui/test-utils.ts @@ -1,54 +1,92 @@ -const TEST_INCIDENTS = [ + +import { ClockState } from "../common/ClockState" +import { Incident } from "../common/incident" + +const TEST_INCIDENTS: Incident[] = [ { - sessionNum: 0, - sessionTime: 45.5016098234, - resolved: false, - tallied: false, - key: 1, + lap: 3, + time: {num:1, time:10.0}, + trackPositionPct: 0.5, car: { - index: 0, - driverName: 'Brian Pratt2', - number: '21', - teamName: 'Powell Autosport', - incidentCount: 3, - currentLap: 4, - currentLapPct: 0.4205678 - } - }, - { - sessionNum: 0, - sessionTime: 49.5016098234, - resolved: false, - tallied: false, - key: 2, + class: { + color: "#2020FF", + name: "Car!", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + driverName: "Zach C Miller", + idx: 1, + number: "49", + teamName: "Zach C Miller", + }, + type: "Incident Count", + description: "1x", + }, { + lap: 4, + time: {num:1, time:15.0}, + trackPositionPct: 0.53, car: { - index: 0, - driverName: 'Brian Pratt2', - number: '21', - teamName: 'Powell Autosport', - incidentCount: 5, - currentLap: 4, - currentLapPct: 0.4405678 - } - }, - { - sessionNum: 0, - sessionTime: 58.591304598, - resolved: false, - tallied: false, - key: 3, + class: { + color: "#2020FF", + name: "Car!", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + driverName: "Zach C Miller", + idx: 1, + number: "49", + teamName: "Zach C Miller", + }, + type: "Incident Count", + description: "2x", + }, { + lap: 4, + time: {num:1, time:20.0}, + trackPositionPct: 0.12, car: { - index: 1, - driverName: 'Mike Racecar', - number: '18', - teamName: 'Gabir Motors', - incidentCount: 7, - currentLap: 3, - currentLapPct: 0.6958742 - } + class: { + color: "#2020FF", + name: "Car!", + }, + color: { + primary: "#FF0000", + secondary: "#00FF00", + tertiary: "#0000FF", + }, + driverName: "Brian Pratt2", + idx: 1, + number: "21", + teamName: "Brian Pratt2", + }, + type: "Incident Count", + description: "4x", } ] +const TEST_CLOCK_STATE: ClockState = { + camCar: { + driverName: "Zach C Miller", + index: 1, + number: "49", + }, + camSpeed: 1, + live: { + num: 1, + time: 60, + }, + replay: { + num: 1, + time: 40 + } +} + export { - TEST_INCIDENTS + TEST_INCIDENTS, + TEST_CLOCK_STATE, } \ No newline at end of file diff --git a/ui/types/Incident.ts b/ui/types/Incident.ts new file mode 100644 index 0000000..b4f8f81 --- /dev/null +++ b/ui/types/Incident.ts @@ -0,0 +1,14 @@ +import { Incident } from '../../common/incident'; + +export type Resolution = "Unresolved" | "Acknowledged" | "Dismissed" | "Penalized" | "Deleted"; + +export type IncidentRecord = { + // a unique ID for this incident + id: number; + // the current status of this incident + resolution: Resolution; + // the details of this incident + data: Incident; + // changes the resolution of this incident to the given value, updating any state as necessary. + resolve: (_: Resolution) => void; +}; diff --git a/ui/types/api.d.ts b/ui/types/api.d.ts index aeb8262..a1c3b0b 100644 --- a/ui/types/api.d.ts +++ b/ui/types/api.d.ts @@ -1,7 +1,10 @@ +export type SearchMode = "ToStart" | "ToEnd" | "PrevSession" | "NextSession" | "PrevLap" | "NextLap" | "PrevFrame" | "NextFrame" | "PrevIncident" | "NextIncident"; + interface APIBridge { - receive(msgName: string, handler: (any) => void); + // returns unsubscriber function + receive(msgName: string, handler: (any) => void): () => void; replay(carNumber: string, sessionNum: number, sessionTime: number); - focusCamera(carNumber: string); + focusCamera(carNumber: string, cameraGroup?: number); jumpToTime(sessionNum: number, sessionTime: number); acknowledgeIncident(incidentId: number); dismissIncident(incidentId: number); @@ -11,6 +14,9 @@ interface APIBridge { pauseReplay(); playReplay(); liveReplay(); + replaySearch(mode: SearchMode); + replaySpeed(speed: number); + sendChatMessages(messages: string[]) : Promise; } interface WindowWithSDK extends Window { diff --git a/ui/types/penalty.ts b/ui/types/penalty.ts new file mode 100644 index 0000000..8b6ffb3 --- /dev/null +++ b/ui/types/penalty.ts @@ -0,0 +1,59 @@ +import { DriverCar } from "../../common/DriverState"; +import { sendChatMessages } from "../sdk"; + +/** + * 'd' for a drive-through, positive integer for hold time in pits. + */ +export type HoldTime = "d" | number; + +export class Penalty { + constructor(private car: DriverCar, hold: HoldTime, public id: number) { + if (typeof hold === "number") { + if (hold < 0) throw new Error("Penalty time cannot be negative"); + this.hold = (hold | 0); + } else { + this.hold = hold; + } + this.resolution = "none"; + } + private hold: HoldTime; + private resolution: "none" | "issued" | "dismissed"; + + public getDescription(): string { + if (this.hold === 'd') { + return "Drive Through"; + } else if (this.hold === 0) { + return "Stop-and-Go"; + } else { + return `Hold for ${this.hold}s`; + } + } + + public getChatCommand(): string { + if (this.hold === 0) { + return `!black #${this.car.number}`; + } else { + return `!black #${this.car.number} ${this.hold}`; + } + } + + /** + * Issues this penalty to the driver in question, if it has not already been issued or dismissed + */ + public async execute(): Promise { + if (this.resolution == "none") { + await sendChatMessages([this.getChatCommand()]); + this.resolution = "issued"; + } + } + + public getResolution() { + return this.resolution; + } + + public dismiss() { + if(this.resolution == "none") { + this.resolution = "dismissed"; + } + } +} \ No newline at end of file